ubuntu20.04编译的内核驱动模块安装时报“Invalid module format”错误

问题现象:在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文件,安装成功,没再报上面的错误。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
编译 Ubuntu 20.04 内核的步骤如下: 1. 获取内核源代码 可以从 Ubuntu 的官方网站上下载内核源代码,或使用 Git 从内核源代码仓库中下载。在终端中输入以下命令: ``` sudo apt-get update sudo apt-get install git git clone git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git ``` 2. 安装编译工具 编译 Ubuntu 内核需要安装一些编译工具和依赖项。在终端中输入以下命令: ``` sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev ``` 3. 配置内核 进入 Ubuntu 内核源代码目录并运行以下命令: ``` cd ubuntu-focal cp /boot/config-$(uname -r) .config sudo make oldconfig ``` 在运行 `sudo make oldconfig` 命令时,系统会提示你是否需要更改一些内核配置。如果你不确定,请保持默认设置。 4. 编译内核 在终端中输入以下命令开始编译内核: ``` sudo make -j $(nproc) ``` 这将使用系统上可用的所有处理器核心进行编译编译过程可能需要一些时间,具体时间取决于你的硬件配置和内核大小。 5. 安装内核 编译完成后,可以安装内核。在终端中输入以下命令: ``` sudo make modules_install sudo make install ``` 这将安装编译后的内核和模块。然后你需要更新 GRUB 配置以便引导新内核。在终端中输入以下命令: ``` sudo update-grub ``` 6. 重启系统 内核安装完成后,重启系统以使新内核生效。 ``` sudo reboot ``` 注意:编译安装内核可能会导致系统出现问题,因此在执行此操作之前,最好进行全面备份。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值