问题现象:在ubuntu20.04系统下重新编译了一个PCI转I2C驱动,在用insmod命令安装ko模块时报“Invalid module format"错误无法安装
问题分析和解决方案:
1.网络上查询相关错误原因,基本是说应为编译驱动的源码版本与内核当前使用的源码版本不匹配导致。用"cat /proc/version"命令查看当前系统使用的内核版本:
Linux version 5.15.0-53-generic (buildd@lcy02-amd64-007) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #49~20.04.1-Ubuntu SMP Thu Aug 4 19:15:44 UTC 2022
核对编译内核驱动的内核头文件的版本也是一样的,目录下还有一个Linux version 5.15.0-46-generic
2.回想配置编译环境时安装内核头文件时,好像有提示过是否升级一些东西,当时选择的是,大概率就是这个原因导致。
3.为简单快速处理,把系统重装了一下,重新配置编译环境,安装一些基本工具:
(1)先更新包索引、包列表: sudo apt update
(2)安装vim: sudo apt install vim
(3)安装net-tools: sudo apt install net-tools
(4)安装gcc: sudo apt install build-essential
编译内核模块的内核头文件和库文件好像ubuntu安装完就自带了,直接就可以成功编译内核驱动,再次用insmod安装编译的ko文件,安装成功,没再报上面的错误。