可能原因:
usbnet模块可能在系统启动后已经加载了,你不需要手动再次加载。这个又可能由两个原因造成:(1)你在menuconfig中选择USBNET模块为[*]模式(驱动集成到内核),而非[M]模式(驱动以模块方式动态插入内核);(2)你已经选择了[M]模式,但是按照系统的默认配置在系统启动过程中会自动动态加载这个驱动,无需手动加载;
虽然选择了USBNET模块并重新编译了内核,但是新编译的内核并没有更新到系统上,系统还是使用的老的内核。
现在你应该可以排除一下上面的猜测的几种可能原因吧?
路过看古董……gcc 现在最新版本是 4.4.3 ……
gcc 2 时代必须完全相同的 gcc 版本才行,gcc3 开始才允许不同 gcc 版本编译出来的程序可以混用。前提是都是 gcc3 编译出来的。
内核的要求附加一个是必须是调用对应版本的内核 header 编译出来的。
楼主你先升级你的系统吧……
比如 Fedora 12 什么的。
由于 linux 内核升级了 lockdown 功能,导致签名验证不过的内核模块在安装时会报:insmod: ERROR: could not insert module xxxxxxxx.ko: Operation not permitted
dmesg | grep secureboot
dmesg | grep lockdown
会打印相应的 lockdown 开启显示信息
将生成的密钥和证书改名为: signing_key.x509 和 signing_key.priv 放到 Linux kernel 源码根目录。
使用新编译的 kernel 重启系统后,使用如下命令查看已生效的签名证书:
dmesg | grep MODSIGN
会显示类似如下信息:
[2.450021] MODSIGN: Loaded cert 'GenFic: Kernel Signing Key: b923a5f44eae25bbad52c8bf2742e7b7e6fb0c0e'
可以将模块与内核一同编译,也可以以后单独编译,单独编译完的模块要用下面的命令对模块进行签名:
/usr/src/linux-headers-5.3.0-51-generic/scripts/sign-file sha512 /home/yangyuqi/ko_sign_key/private_key.priv /home/yangyuqi/ko_sign_key/public_key.der xxxxxxxx.ko
可以使用如下命令查看是否签名已添加到模块:
hexdump -C hello.ko | tail
可以使用如下命令移除签名:
strip --strip-debug hello.ko
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)