前言:版本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)在内核中添加了驱动模块的签名,如果当前的驱动不是使用了相同内核的头文件编译而成,就无法加载成功