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) |