首页 > 其他分享 >群晖ds1517+解决第三方Marvell AQC107 10Gbe网卡驱动问题

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

时间:2024-05-16 18:20:46浏览次数:30  
标签:Marvell 编译 3.10 网卡 10Gbe 108 内核 linux 群晖

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

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

说明

这是网友 mohawk 解决问题的经过,征得同意后,贴在这里。 给大家参考。

背景

  • 好友打算升级到全屋有线万兆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次系统更新,顺利升级到最新版本DSM7.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+型号较老,既使系统升级到最新的7.2.1,内核仅从3.10.105升级到3.10.108,聊胜于无,但内置了更多的内核变量。稍新款的群晖,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
    

下载kernel.org官方Linux 3.10.108内核

  • 放在/usr/src下(以下未作定义时,/usr/src作为编译默认根目录)
    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.zip
    tar 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.bak
    mv 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.ko
    mv /lib/modules/atlantic.ko atlantic.ko.bak
    cp anywhere/atlantic.ko /lib/modules
    /sbin/insmod /lib/modules/atlantic.ko
    /sbin/ifconfig eth4 up
    
  • 如顺利,在群晖控制面板-网络-网络界面下,应能看到“局域网5“
    在群晖控制面板-任务计划,新增-触发的任务-用户自定义的脚本下,将上述指令最后2行输入,作为网卡开机指令。

资源及参考链接:

----end----


转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/18196358.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .


标签:Marvell,编译,3.10,网卡,10Gbe,108,内核,linux,群晖
From: https://www.cnblogs.com/osnosn/p/18196358

相关文章

  • mac指定虚拟网卡访问某个域名
    通过ifconfig命令,一般会显示很多个虚拟网卡(冒号左边的就是网卡名)。有些情况下,只能特定的网卡才能访问网站,所以需要指定网卡去访问。指定网卡访问的命令(新增路由表)sudorouteadd-host目标地址-interface网卡名删除指定网卡访问网站命令sudoroutedel-net目标地址......
  • 随笔-网络-Linux多网卡同网段解决方法(配置IP路由)
    系统配置:多网口情况下,假设各个网口ip在同一网段;此时,由于默认路由规则,从不同网口的ip访问,服务器依旧会返回默认网口的mac地址,配置方式如下:sysctl-wnet.ipv4.ip_forward=1#开启ip转发规则net.ipv4.conf.X.rp_filter=0#X填alldefault各个网卡路由设置:假设默认网卡......
  • Mellanox网卡开启SRIOV
    Mellanox网卡开启SRIOVSRIOV是网卡虚拟化的一个重要功能。本文讲介绍如何在Mellanox网卡上开启SRIOV,并创建一些VF。参考:Mellanox网卡开启SRIOV方法简介-天翼云开发者社区-天翼云(ctyun.cn)在BIOS中开启IOMMU先查看是否已经开启了IOMMU。$dmesg|grep-idmar什么输......
  • 物理机centos7.9扩展网卡
    前段时间装了一台机器,系统是centos7.9,主板自带两个网口,不够用,又插了一块Inter芯片的4口pcie网卡,重启系统后,使用ipa查看ip信息,网卡直接识别到了,但/etc/sysconfig/network-scripts/目录里没有网卡配置文件,需要手动创建这些文件:#进入目录[root@localhost~]#cd/etc/sysconfig......
  • Linux之手把手教会修改网卡名称【转载】
    一、为什么要修改网卡名称在早期的linux系统中,网卡名称常常以传统的命名方式eth0、eth1、eth2来命名。例如,CentOS6之前,网络接口使用连续号码命名:eth0、eth1等,但是,如果再新增硬件设备,也有可能会被识别成eth0,eth1等。CentOS7开始,改变了网卡设备命名规则,基于硬件生成网卡名,例如......
  • Linux 7修改网卡名称后,配置文件中的默认网关不生效【转载】
    背景 为了系统统一管理在创建了系统后统一将网卡名称修改为eth0,eth1等格式,并在修改完网卡名称重新编译grub配置文件重启后,添加了静态路由,使用route-n查看系统发现路由可以生效,但是配置的默认网关不生效,记录下排查过程。检查网卡配置文件并手动配置默认网关 在检查了网卡配......
  • 多网卡设置----bond
    bond将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址Bonding聚合链路工作模式-mod=0,即:(balance-rr)Round-robinpolicy(**轮询**)......
  • C#获取当前激活网卡的速度计 - 开源研究系列文章
          以前用C#编写过一个网络速度计,用于监控计算机当前网卡的上传和下载速度。不过当时这个小应用没有完成,主要是那个获取网络速度的类库没有完成。这次趁有空,就把这个小应用进行了编写。其中涉及到的获取网络速度的代码整理出来了,于是就有了此博文。 1、项目目录......
  • OpenWRT_2.5G_USB3_网卡_测速太慢
    OpenWRT_装上_2.5G_USB3_网卡_测速太慢转载注明来源:本文链接来自osnosn的博客,写于2024-04-29.现象Openwrt裸装在机器N3160机器上。有4核。原机有两个网卡,一个是板载,一个是mimiPCIE。都是千兆。使用没发现问题,两张网卡都能跑满千兆。升级2.5G网卡。把miniPCIE的网卡......
  • centos7虚拟机配置ens网卡静态地址还是会dhcp分配一个地址?
    centos7虚拟机配置ens网卡静态地址还是会dhcp分配一个地址?问题现象[root@cent0s7~]#ipa1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8s......