续上一篇成功编译出ko文件驱动编译失败,在sudo insmod xxx.ko文件时提示提示could not insert module hello.ko: Invalid module format。
也是波折了很多,检查了头文件类型是否兼容
uname -r
ls /usr/src/linux-headers-$(uname -r)
检查了gcc版本是否兼容
gcc --version
cat /proc/version
等等(中间吃了个饭忘记还检查了什么)
总而言之,最后检查到了模块签名(敲碗重点!)
grep CONFIG_MODULE_SIG /boot/config-$(uname -r)
如果输出:CONFIG_MODULE_SIG=y。说明你的内核强制要求签名。
这个时候有两种方案,一个是尝试暂时禁用模块签名验证:
sudo dmesg -n 1
sudo insmod yourkoname.ko
但素一般会失败。
那就修改文件吧。大功告成。✌!
#1.编辑/etc/default/grub
sudo nano /etc/default/grub
#2.找到GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash module.sig_enforce=0"
#3.更新 grub 并重启
sudo update-grub
sudo reboot
#4.重新尝试 insmod yourkoname.ko
sudo insmod xxx.ko