前言:版本CentOS6.5 ,内核版本:2.6.32

场景说明:在内核源码的协助下,编译出网卡的驱动r8168.ko,安装手动安装网卡驱动的步骤如下:

虽然编译出r8168网卡驱动,然后存放在/lib/modules/'uname -r'/driver/net之下,但是无法自动加载,为什么??

解决方案:系统启动之后,通过查看lspci |grep ethernet 查看网卡型号,如果网卡型号是r8168,执行如下的指令:

rmmod r8169

insmod r8168 (必须指定目录)

步骤1:卸载旧的网卡r8169

rmmod r8169

步骤2:加载新的网卡驱动r8168.ko

错误提示:

Module signaed with unknow public key 

insmod -1 Required key not available

步骤3:取消模块签名

objcopy -R .note.module.sig r8168.ko

步骤4:加载

insmod r8158.ko

错误提示:-1 Unknown symbol in module

补充一下信息,在insmod出错后,在dmesg可查到:


ksign: module signed with unknown public key

- signature keyid: 63869bd3c84e7c71 ver=4

Module signed with unknown public key


有两种方法:

1)下载原始的内核源码,在编译配置时,有一个关于模块签名的选项(Module signature verification(EXPERIMENTAL)),

不选它。在insmod时就可以了,然后就可以了

2)驱动模块的编译不需要内核源代码的帮助,只需要内核头文件kernel-devel开发包

3)在内核中添加了驱动模块的签名,如果当前的驱动不是使用了相同内核的头文件编译而成,就无法加载成功