科创园

科创园地,分享技术知识,为科技助力发展,贡献一己之力。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

内核编译常见错误

Posted on 2012-01-11 18:05  科创园  阅读(862)  评论(0编辑  收藏  举报

 

 

 

编译2.6.31内核后重启出现

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

解决方法:

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

2ok,下边就是编辑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.img          newinitrd 

好了,initrd.img就是重新打包的initrd了,然后把initrd.img拷贝到/boot,更改grub.conf里边的initrd-2.6.30.4.imginitrd.img就可以了,
这样insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists” 就不会有了

RedHat nash Version 5.1.19.6 startingrver(2.6.33.3)
mount: could not find filesystem /dev/root
setuproot: moving /dev failed: No such file or directory
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory
Kernel panic – not syncing: Attempted to kill init!
[Linux-initrd @ 0x1fc37000,0x228585 bytes]

于是在网上找了很多,也尝试了很多加模块、重编译了N次、改fstab等方法,都不行。最后在一个网站上找到解决方法。

方法:编译时修改.config文件中的CONFIG_SYSFS_DEPRECATED_V2,默认该选项为not set,被注释掉的,将其改为y。即修改为CONFIG_SYSFS_DEPRECATED_V2=y,修改后,再编译,重启即正常了。