type
Post
status
Published
date
Mar 4, 2025
slug
2025/03/04/How-to-Manually-Compile-and-Install-AMD-XGBE-10GB-NIC-Driver-on-Debian-11
summary
tags
Linux
category
Linux
created days
new update day
icon
password
Created_time
Mar 4, 2025 02:58 AM
Last edited time
Mar 4, 2025 06:54 AM

背景

在安装Debian 11时,我发现主板自带的AMD XGBE 10GB网卡并没有被Linux内核主线支持。这意味着每次安装系统时,我都需要手动编译和安装网卡驱动。然而,编译驱动所需的构建工具(如makeGCC等)在初始安装时并未预装,这给安装过程带来了不少麻烦。
为了简化这一过程,我决定记录下我的配置步骤。这不仅是为了给自己留个备忘,也希望能帮助到遇到类似问题的朋友。

第一步:安装操作系统

安装Debian 11的过程相对简单,但在配置网络时需要注意。尽管Debian 11提供了AMD XGBE网卡驱动的选项,但在我的情况下,选择这个选项后系统仍然提示找不到网卡。因此,我选择在没有网络连接的情况下继续安装,暂时不使用网络镜像源。

第二步:配置本地源

由于没有网卡驱动,我们无法连接到网络,也无法使用apt包管理器在线安装软件包。这时,我们可以将Debian的安装ISO镜像作为本地源,暂时用于安装必要的软件包。

1. 复制安装镜像到系统内部

首先,将Debian的安装ISO镜像复制到系统的/root/目录下:
cp debian-11.0.0-amd64-DVD-1.iso /root/

2. 挂载镜像

接下来,创建一个挂载点并挂载ISO镜像:
mkdir /mnt/cdrom && mount /root/debian-11.0.0-amd64-DVD-1.iso /mnt/cdrom

3. 配置APT源

备份原有的APT源列表,并编辑新的源列表文件,将本地镜像路径添加进去。注意,[trusted=yes]是必须的,以确保APT信任本地源。
cp /etc/apt/sources.list /etc/apt/sources.list.back
sources.list文件中,注释掉所有其他源,并添加以下内容:
vim /etc/apt/sources.list # deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 20210814-10:04]/ bullseye contrib main deb [trusted=yes] file:///mnt/cdrom bullseye contrib main

第三步:安装编译依赖

在编译网卡驱动之前,我们需要安装一些必要的构建工具和依赖项:
sudo apt install build-essential bc flex bison libssl-dev sudo apt install linux-headers-$(uname -r)
这些工具将帮助我们顺利编译和安装网卡驱动。

第四步:编译安装驱动

1. 编译驱动

进入驱动源码目录,设置内核源码路径,并执行编译命令:
export KSRC=/lib/modules/5.10.0-8-amd64/build make clean make
编译过程会生成一系列目标文件,并最终生成amd-xgbe.ko内核模块。
# make clean make[1]: Entering directory '/usr/src/linux-headers-5.10.0-8-amd64' CLEAN /root/driver/xgbe/Module.symvers make[1]: Leaving directory '/usr/src/linux-headers-5.10.0-8-amd64'
# make make[1]: Entering directory '/usr/src/linux-headers-5.10.0-8-amd64' CC [M] /root/driver/xgbe/xgbe-main.o CC [M] /root/driver/xgbe/xgbe-drv.o CC [M] /root/driver/xgbe/xgbe-dev.o CC [M] /root/driver/xgbe/xgbe-desc.o CC [M] /root/driver/xgbe/xgbe-ethtool.o CC [M] /root/driver/xgbe/xgbe-mdio.o CC [M] /root/driver/xgbe/xgbe-ptp.o CC [M] /root/driver/xgbe/xgbe-i2c.o CC [M] /root/driver/xgbe/xgbe-phy-v1.o CC [M] /root/driver/xgbe/xgbe-phy-v2.o CC [M] /root/driver/xgbe/xgbe-platform.o CC [M] /root/driver/xgbe/xgbe-pci.o CC [M] /root/driver/xgbe/xgbe-dcb.o CC [M] /root/driver/xgbe/xgbe-debugfs.o CC [M] /root/driver/xgbe/kver-compat.o LD [M] /root/driver/xgbe/amd-xgbe.o MODPOST /root/driver/xgbe/Module.symvers CC [M] /root/driver/xgbe/amd-xgbe.mod.o LD [M] /root/driver/xgbe/amd-xgbe.ko make[1]: Leaving directory '/usr/src/linux-headers-5.10.0-8-amd64'

2. 安装驱动内核模块

编译完成后,安装驱动模块并更新模块依赖关系:
make modules_install depmod -a

3. 检查安装结果

使用lsmod命令检查驱动是否成功加载:
lsmod | grep amd
如果看到amd-xgbe模块,说明驱动已成功安装。

重启验证

最后,重启系统以应用新的驱动:
sudo reboot now

注意⚠️

💡
重要提示:该驱动的安装位置与内核版本相关。如果后续更换了内核版本,必须重新编译并安装驱动,否则驱动将失效。
通过以上步骤,我成功地在Debian 11上手动编译并安装了AMD XGBE 10GB网卡驱动。希望这篇记录能帮助到有类似需求的朋友。如果你有任何问题或建议,欢迎在评论区留言讨论!
 
欢迎加入喵星计算机技术研究院,原创技术文章第一时间推送。
notion image
 
EtherCAT 主站 IgH 学习之 —— xenomai_posix 例程代码学习内核源码中为什么会存在同一个函数的多重定义?什么是符号的强弱性?