linux编译内核之后 还是没有新模块

linux编译内核之后 还是没有新模块,第1张

图片好小...

不过依稀看到了是加载一个内核模块(dm-region-hash)错误,这个模块应该是和文件系统相关的,然后后面mount 文件系统的时候就找不到磁盘...

你更新了的内核出了问题...加载模块的时候显示这个模块已经存在,所以就没法insmod这个模块, *** 作不成功了。大概是重复加载了...

然后给你搜索了下,这个问题好像比较常见,这里面有人给出了解决方案:

地址:

把有用的给你贴出来吧...

insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists

这一句是说你把dm-region-hash编译进内核,却没有生成dm-region-hash.ko文件,可能是有些需要的项没选上,我也是遇到这种问题,一直没解决 [/quote]

是因为重复加载了/lib/dm-region-hash.ko

可以解决的,步骤如下

1,解压initrd文件

[root@bogon ~]# cp /boot/initrd-2.6.30.4.img /tmp

[root@bogon ~]# cd /tmp/

[root@bogon tmp]# ls

initrd-2.6.30.4.img

[root@bogon tmp]# mkdir newinitrd

[root@bogon tmp]# cd newinitrd/

[root@bogon newinitrd]# zcat ../initrd-2.6.30.4.img |cpio -i

11537 blocks

释放之后看到如下内容

[root@bogon newinitrd]# ls

bin dev etc init lib proc sbin sys sysroot

2,ok,下边就是编辑init,删掉其中重复的四行中的两行

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

3,重新打包initrd

[root@bogon newinitrd]# find .|cpio -c -o >../initrd

11538 blocks

[root@bogon newinitrd]# cd ..

[root@bogon tmp]# gzip -9 <initrd >initrd.img

[root@bogon tmp]# ls

initrd-2.6.30.4.img initrd initrd.imgnewinitrd

好了,initrd.img就是重新打包的initrd了,然后把initrd.img拷贝到/boot,更改grub.conf里边的initrd-2.6.30.4.img为initrd.img就可以了,

这样“insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists” 就不会有了

其实将init文件的第二行“setquiet” 去掉,你就知道initrd文件到底在做什么了

我觉得吧 很明显的报错是解析 您可以看看报错文件的内容,是flex相关, parser

make oldconfig

先装个开发环境 apt install build-essential ncurses flex等装好

此外,也别用root去编译东西,不好。root只是安装的时候用。

make oldconfig 相当与你把/boot/config-xxx 拷贝到当前路径中然后改名为.config

然后make menuconfig 定制内核


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8370698.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存