Chinaunix首页 | 论坛 | 博客
  • 博客访问: 299050
  • 博文数量: 40
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 535
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-17 14:08
文章分类

全部博文(40)

文章存档

2011年(1)

2010年(10)

2009年(29)

我的朋友

分类: LINUX

2010-11-14 10:39:33

vmware6.5下面装了centos5.5,因为centos默认内核太低,是2.6.18的,准备编译一个新内核版本上去,找了2.6.33.7。
编译成功后,启动时总有这样的错误
--------------------------
insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists
mount: could not find filesystem '/dev'root' x83
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!
--------------------------

这个很明显,是找不到根设备。一般遇到这种问题第一反映就是硬盘驱动没加进去。
解开initrd查看。
cp /boot/initrd-2.6.33.7.img ./initrd-2.6.33.7.img.gz
gunzip initrd-2.6.33.7.img.gz
cpio -i --make-directories
 
查看生成的init脚本
----------------------------
echo "Loading ext3.ko module"
insmod /lib/ext3.ko
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
insmod /lib/sd_mod.ko
echo "Loading scsi_transport_spi.ko module"
insmod /lib/scsi_transport_spi.ko
echo "Loading mptbase.ko module"
insmod /lib/mptbase.ko
echo "Loading mptscsih.ko module"
insmod /lib/mptscsih.ko
echo "Loading mptspi.ko module"
insmod /lib/mptspi.ko
echo "Loading libata.ko module"
insmod /lib/libata.ko
echo "Loading ata_piix.ko module"
insmod /lib/ata_piix.ko
echo "Loading dm-mod.ko module"
insmod /lib/dm-mod.ko
echo "Loading dm-log.ko module"
insmod /lib/dm-log.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo Waiting for driver initialization.
stabilized --hash --interval 1000 /proc/scsi/scsi
mkblkdevs
echo Scanning and configuring dmraid supported devices
resume LABEL=SWAP-sda2
echo Creating root device.
mkrootdev -t ext3 -o defaults,ro sda1
echo Mounting root filesystem.
mount /sysroot
echo Setting up other filesystems.
setuproot
echo Switching to new root and running init.
switchroot
-----------------------------------------
再查看lib,里面这些库都有啊,VMware下虚拟scsi设备是用的LSI的,应该是用的mpt*这几个驱动的。
 
折腾了好久,还是出不来,最后google到这个地方,才了解了
原来是CONFIG_SYSFS_DEPRECATED_V2 这个选项问题,还没仔细查,应该是lable引起的问题吧。
 
把新内核.config里的这个CONFIG_SYSFS_DEPRECATED_V2=y打开,再重新编译,安装,OK。
 
【附记,编译initrd时,如果需要哪些模块,可以通过--with加进去,如
mkinitrd /boot/initrd-2.6.33.7.img 2.6.33.7 --with-ata_piix --with-mptbase --with-libata --with-mptspi --with-ehci_hcd --with-ohci_hcd --with-uhci_hcd --with-jbd 】
 
【另,insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists
这一行错误是initrd里面的init脚本多了这一行,也不知道mkinitrd是怎么弄的,竟然多生成这一行,可以将initrd解开后,手工删除这一行,再重新打包回去就可以了。
-------------------------------
find . | cpio -c -o > ../initrd.img
cp ../initrd.img /boot/initrd-2.6.33.7.img
-------------------------------
阅读(4181) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-15 19:35:06

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com