24 网卡驱动移植
网卡驱动移植
型号确认及模式设置
在移植网卡驱动前,首先得知道它的型号。如果是USB网卡的话,可以通过lsusb命令查看
1 | lsusb |
很多网卡在未使用时,可能被初始化成U盘的模式,这时还需要我们将其转成网卡模式
这里RTL8188GU并不是真正的型号,因为它此时不是真正的网卡模式,RTL8188GU是Realtek常用“老型号马甲”
可以通过以下的指令,将USB网卡切换到真正的网卡模式
1 | sudo apt install usb-modeswitch usb-modeswitch-data |
-v/-p是当前 VID/PID(MSC 模式)-M是发送给设备的切换命令(MessageContent)
执行完后再执行lsusb,就可以发现USB设备的vendor_id、pid、描述符都变了
1 | lsusb |
0bda→ Realtek 官方 VIDb851→ Realtek RTL8851BU 专用 PID
驱动签名
如果编译Linux内核时开了内核模块签名校验,那么在驱动安装之前,需要手动对驱动进行签名操作,不然驱动会安装失败
如何看Linux内核到底看没开驱动签名校验
1 | zcat /proc/config.gz | grep MODULE_SIG |
CONFIG_MODULE_SIG=y:启用模块签名支持CONFIG_MODULE_SIG_FORCE=y:强制所有模块必须签名才能加载CONFIG_MODULE_SIG_KEY="...":内核自带签名密钥
要进行驱动签名,需要以下准备文件
密钥对:
私钥(Private Key):用于给模块生成签名,只能被开发者或受信任方持有,一般是
.pem格式公钥(Public Key):内核用它来验证模块签名,一般是
.x509或.der格式一般放在
/lib/modules/$(uname -r)/build/certs/下
签名工具(由Linux提供):
- 一般放在路径
/lib/modules/$(uname -r)/build/scripts/sign-file下
- 一般放在路径
准备好后,通过下面指令进行驱动签名
1 | cd /lib/modules/6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511/build |
驱动安装
驱动签名完之后,就可以直接将驱动加载进内核了,有2种方式
1 | # 法1 |
如果签名失败,会报以下错误
1 | sudo modprobe 8851bu modprobe: ERROR: could not insert '8851bu': Key was rejected by service |
网卡状态验证
1 | # 查看网卡接口 |
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.



