20
2024
06
18:26:56

群晖ds1517+解决第三方Marvell AQC107 10Gbe网卡驱动问题

转载注明来源: 本文链接 来自osnosn的博客,写于 2024-05-15. 给大家参考。

背景

  • 好友打算升级到全屋有线万兆2.5g网络,陆续装备了路由器、交换机等,但家里的群晖ds1517+只支持千兆有线网络。

  • 经过查询,ds1517+可用群晖自家的E10G18-T1扩展卡升级到10Gbe,网购价¥940,好友嫌贵,向我咨询。我上网简单查了下,E10G18-T1采用Marvell AQC107 10Gbe芯片,凭windows的使用经验想当然地认为,只要是AQC107芯片的网卡都应该能兼容ds1517+。

  • 根据我的建议,好友花¥230购入第三方AQC107芯片网卡,到手插上开机,傻眼了:指示灯不亮,没任何反应,我远程到群晖系统后台察看,dmesg无提示,lspci -v能显示网卡信息。即该卡硬件已被识别,但无法驱动。

  • 上网详细了解并试着做了一些简单操作才发现,群晖对第三方扩展卡可谓严防死守,驱动pid、vid除自家产品外没有一处多余的定义,网上有人按群晖扩展卡的pid、vid制作的所谓定制卡,价格虽比原厂便宜,仍较第三方卡贵不少,且涉嫌制假。国内外网友穷尽手段,有以DSM系统自带驱动为基础修改pid、vid的,群晖后续系统更新已修补漏洞,内核参数设置了强制要求数字签名,修改过pid、vid的驱动拒绝加载,移除数字签名也不行;有下载芯片厂商官方Linux驱动源代码,想利用群晖内核源代码和编译工具链toolchain进行驱动编译的,无奈群晖DSM系统不具备编译环境,即使通过第三方optware装上编译环境,群晖公布的内核源代码残缺不全,Linux标头欠奉,驱动编译根本无法通过。

  • 好友找卖家退货,卖家以网卡已上过机、并无质量问题为由一口拒绝。尽管好友称用不了就算了,我依然感到压力巨大,并下定决心,一定要尽力解决这块网卡在群晖DSM系统下的驱动问题。

准备工作

升级DSM系统至最新版

  • 好友的群晖ds1517+在用DSM系统版本为6.2.4-25556 Update 7,因DSM6均不含AQC107网卡驱动,也不含该驱动必须的内核变量,直接安装驱动出错(大量的Unknow symbol错误),必须先将系统更新至最新版本。按官网说明,经3次系统更新,顺利升级到最新版本DSM-7.2.1-69057 Update 5:

安装Debian系统作为编译平台

  • 利用Unraid平台安装Debian 8.11.0到虚拟机(debian-live-8.11.0-amd64-standard.iso),系统内核版本是3.16.0-6,与ds1517+的3.10.108相对接近,Debian 7虽内核版本为3.20,更接近3.10,但系统更新、操作不太就手,故弃。ds1517+型号较老,既使系统升级到最新的DSM-7.2.1,内核仅从3.10.105升级到3.10.108,聊胜于无,但内置了更多的内核变量。稍新款的群晖,DSM-7.2.1固件内核已升级到4.4.x或5.10.x。

  • Debian8安装过程中,添加网络源全部失败,因为Debian9及以下已失去官方支持,软件源归入archive,可先跳过,待安装结束后手动修改源。修改时尽量使用Debian官方archive源,国内archive源支持不好,分配的服务器带宽低,延迟大,甚至卡住:

    cat /etc/apt/sources.list
    deb https://archive.debian.org/debian/ jessie main contrib non-free
    deb-src https://archive.debian.org/debian/ jessie main contrib non-free

linux-310108内核" style="margin: 10px 0px; font-size: 21px; line-height: 1.5; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);">下载kernel.org官方Linux 3.10.108内核

  • 放在/usr/src下(以下未作定义时,/usr/src作为编译默认根目录)
    mportant;">wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.10.108.tar.gz

下载Marvell AQC107最新Linux驱动


wget https://www.marvell.com/content/dam/marvell/en/drivers/marvell_linux_2.5.6.zip

安装内核编译所需软件包

apt-get install apt install kernel-package fakeroot build-essential ncurses-dev
安装screen用于后台编译,htop用于观察系统负荷等
apt-get install screen htop

下载群晖ds1517+对应的内核

wget https://global.synologydownload.com/download/ToolChain/Synology%20NAS%20GPL%20Source/7.2-64570/avoton/linux-3.10.x.txz

下载群晖ds1517+适用的最新toolchain

wget https://global.synologydownload.com/download/ToolChain/Synology%20NAS%20GPL%20Source/7.2-64570/avoton/linux-3.10.x.txz

编译及安装

解包

  • 分别解包kernel.org官方内核、群晖内核、toolchain、AQC107驱动包。AQC107驱动包zip取出atlantic_2.5.6.tar.gz后再次解包,生成的Linux目录也放在/usr/src下

    tar zxvf linux-3.10.108.tar.gz
    tar xvf linux-3.10.x.txz
    tar xvf avoton-gcc1220_glibc236_x86_64-GPL.txz
    unzip marvell_linux_2.5.6.ziptar atlantic_2.5.6.tar.gz

编译官方3.10.108内核

  • cd /usr/src/linux-3.10.108
    获取当前系统内核运行参数,并复制给3.10.108内核作为默认参数

    cat /boot/config-`uname -r` > .config
    make oldconfig
  • 将询问一大堆内核配置参数,按住回车不放全部默认即可,直到出现

    ## configuration written to .config#
  • 做一下源代码清理
    make-kpkg clean

  • 开始编译,time可进行编译计时,fakeroot可模拟root权限,-j2指定2颗CPU核心参与
    time fakeroot make-kpkg -j2 --initrd kernel_image kernel_headers

官方内核编译完成后,分别安装内核及标头

dpkg -i ../linux-image-3.10.108_3.10.108-10.00.Custom_amd64.deb
dpkg -I ../linux-headers-3.10.108_3.10.108-10.00.Custom_amd64.deb

重启系统

  • 进入启动画面后,尽快选中Advanced options,并手动选择3.10.108内核启动系统

设置交叉编译指令别名,x86_64-pc-linux-gnu即解包后的群晖toolchain所在目录

alias dsm6make='make ARCH=x86_64 CROSS_COMPILE=/usr/src/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-'

配置群晖内核

  • cd /usr/src/linux-3.10.x

  • 复制群晖官方ds1517+内核配置
    cp synoconfigs/avoton .config

  • 进入menuconfig界面后,直接Exit退出,按提示保存设置
    dsm6make menuconfig

编译网卡驱动

  • cd Linux
    dsm6make
  • 经过对编译出错信息的观察,发现编译指令被解析为:
    make -j4 -C /lib/modules/3.10.108/build M="/usr/src/Linux" modules

  • 将目录调整改名,指向群晖内核:

    mv linux-3.10.108 linux-3.10.108.bakmv linux-3.10.x linux-3.10.108
  • 再次编译仍然出错,提示缺少文件或目录generated/autoconf.h,经过检查,缺少的是/linux-3.10.108/include/generated整个目录。

  • 回到改名后的群晖内核,编译modules

    cd ../linux-3.10.108
    dsm6make modules
  • 编译顺利通过,缺少的generated目录及相关文件已生成,再次编译网卡驱动:

    cd ../Linux
    dsm6make
  • 编译顺利通过,生成网卡驱动atlantic.ko

安装网卡驱动

  • 卸载ds1517+的AQC107原驱动,装载新驱动:

    rmmod atlantic.komv /lib/modules/atlantic.ko atlantic.ko.bakcp anywhere/atlantic.ko /lib/modules
    /sbin/insmod /lib/modules/atlantic.ko
    /sbin/ifconfig eth4 up
  • 如顺利,在群晖控制面板-网络-网络界面下,应能看到“局域网5“
    在群晖控制面板-任务计划,新增-触发的任务-用户自定义的脚本下,将上述指令最后2行输入,作为网卡开机指令。

资源及参考链接:

----end----




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/6764.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: