Mint系统编译4.15.0-54-generic内核ufs模块版本魔数不匹配如何解决
问题根源
你下载的内核源码版本匹配,但编译前未正确加载当前运行内核的配置、未设置正确的内核版本后缀,导致生成模块的vermagic(版本魔术)标识与运行内核要求不匹配,才会出现加载报错。
正确编译操作步骤
- 先安装编译依赖包
sudo apt install build-essential linux-headers-$(uname -r) libelf-dev bison flex
- 进入你下载的内核源码目录(apt下载的源码目录或者git拉的bionic目录都可以),先复制当前运行内核的配置文件到源码目录
cp /boot/config-$(uname -r) .config
- 修改配置,指定正确的版本后缀、关闭自动版本后缀生成
scripts/config --set-str CONFIG_LOCALVERSION "-54-generic" --disable CONFIG_LOCALVERSION_AUTO
- 同步配置,缺省项自动用默认值填充
make olddefconfig
- 验证版本是否正确,此时输出应该为
4.15.0-54-generic,确认无误后再继续
make kernelversion
- 只编译UFS模块,无需编译全量内核模块节省时间
make M=fs/ufs modules
- 编译完成后加载模块测试,未开启安全启动可直接执行:
sudo insmod fs/ufs/ufs.ko
如果开启了安全启动,需要先对模块签名后再加载,也可以将模块复制到内核模块目录后用modprobe加载:
sudo cp fs/ufs/ufs.ko /lib/modules/$(uname -r)/kernel/fs/ufs/ sudo depmod -a sudo modprobe ufs
注意事项
如果执行步骤前已经编译过一次,先执行make clean清理残留的编译缓存文件,避免旧文件干扰版本号生成。
内容的提问来源于stack exchange,提问作者Balobiana
相关产品推荐
相关产品推荐

