Warning
修改驱动然后安装的操作很危险,最好在实验的虚拟机环境中搞
查看当前网卡驱动
$ ethtool -i ens33 # 替换成自己要查询的网络接口名
我这里显示是使用的 pcnet32 驱动
移动并卸载原有网卡驱动
$ cd /lib/modules/$(uname -r)
$ find -name "pcnet32.ko"
$ cp kernel/drivers/net/ethernet/amd/pcnet32.ko kernel/drivers/net/ethernet/amd/pcnet32.ko.backup # 备份原有驱动
$ modprobe -r pcnet32 # 移除已加载驱动
$ cd - # 回到原工作目录
下载 Linux 内核源码
$ apt-get source linux-image-unsigned-$(uname -r) # 这里是 ubuntu 20.04.3 的实验环境
$ cd linux-xxx # 根据实际下载的名字进入到源码目录
$ grep -rsn "\<pcnet32\>" # 查找驱动对应的源代码
$ cp drivers/net/ethernet/amd/pcnet32.c .. # 将源代码单独移出到某一目录
$ cd ..
$ vim drivers/net/ethernet/amd/pcnet32.c # 做些自己的更改,如加点打印等
$ vim Makefile # 添加 Makefile,内容见下文
$ make
TARGET_MODULE:=pcnet32
ifneq ($(KERNELRELEASE),)
obj-m := $(TARGET_MODULE).o
else
BUILDSYSTEM_DIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(BUILDSYSTEM_DIR) M=$(PWD) modules
clean:
$(MAKE) -C $(BUILDSYSTEM_DIR) M=$(PWD) clean
endif
安装新的驱动
$ cp pcnet32.ko /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/amd
$ depmod
$ modprobe pcnet32
$ dmesg # 如加了打印,可查看到此打印信息
本文来自博客园,作者:Legend_Lone,转载请注明原文链接:https://www.cnblogs.com/sun-ye/p/15750198.html