Linux驱动安装遇到的问题(Kernel configuration is invalid)(Invalid module format)
2023-12-14 15:28:44
Linux驱动编译安装遇到的问题(Kernel configuration is invalid)(Invalid module format)
前言
Linux驱动编译和安装经常会遇到各种问题,上篇帖子
ubuntu cp210x(USB转串口)驱动安装教程
介绍了下载某官方驱动编译时编译不通过的问题,原因是代码问题。本篇主要讲系统环境引起的安装失败的问题。主要涉及错误点:Kernel configuration is invalid;Invalid module format。
1. Kernel configuration is invalid
详细报错信息:
ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are missing.
Run ‘make oldconfig && make prepare’ on kernel src to fix it.
但是当执行make oldconfig && make prepare命令时可能仍会出错。如错误信息,缺少相关的系统配置文件,如果确实缺少可通过
make menuconfig #自己配置
然后在源码目录下执行 /usr/src/<kernel-version>
e.g. /usr/src/linux-headers-5.15.0-88-generic
make oldconfig
make prepare
make scripts
注:有时执行make menuconfig也会出错,错误如果类似
LEX scripts/kconfig/lexer.lex.c
/bin/sh: 1: flex: not found
make[1]: *** [scripts/Makefile.host:9: scripts/kconfig/lexer.lex.c] Error 127
此时可能因为缺少词法解析器flex,和语法解析器bison,可通过下述命令安装
sudo apt install flex
sudo apt install bison
2. Invalid module format
安装驱动文件可能会出现 Invalid module format现象
insmod: ERROR: could not insert module cp210x.ko: Invalid module format
出错后,使用dmesg查看错误日志,如下:
dmesg
module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1.....
2.1 第一种情况:内核模块编译的环境与现在insmod想要运行的环境不一致
也就是说,编译时内核的版本和现在安装的内核版本不一致。可能由于系统存在多个版本的内核,编译时运行的内核和安装时的内核版本不一致。可以检查是否出现编译后重启系统进入了其他版本的内核,或者makefile里面的内核是否写的正确,
KERNEL_DIR := /lib/modules/$(shell uname -r)/build
2.2 第二种情况:内核编译的问题
实际上,上述可能很多问题都是由于内核编译的问题,如果上述都不能解决问题,需要重新编译内核版本
sudo apt update && sudo apt upgrade
sudo apt remove --purge linux-headers-<kernel-version>
sudo apt autoremove && sudo apt autoclean
sudo apt install linux-headers-<kernel-version>
e.g. linux-headers-5.15.0-88-generic
结束
结束后重新编译和安装驱动即可
make
cp cp210x.ko to /lib/modules/<kernel-version>/kernel/drivers/usb/serial
insmod /lib/modules/<kernel-version/kernel/drivers/usb/serial/usbserial.ko
insmod cp210x.ko
文章来源:https://blog.csdn.net/Zander0/article/details/134871301
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!