将一块包含有RHEL5.6系统的硬盘换到另外一台pc时,发生下面panic情况
panic信息:
Unable to access resume device (/dev/sda2)
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 !
思路:
1.无法访问/dev/sda2,sda2是swap分区,将/etc/fstab中swap分区注释掉,尝试一下,发现没有作用。
2.猜测是不是没有驱动,无法使用sda硬盘:用可以启动该pc的硬盘启动,检查硬盘控制器驱动,
通过sysfs文件系统,发现sda对应的控制器该驱动时ata_piix.ko,检查另一块RHEL5.6的initrd文件解压方法
见下面,解压后发现它lib目录下的模块中没有ata_piix.ko这个驱动。判断原因可能就是因为这个。
3.将该驱动加入RHEL5.6的initrd文件中,从
RHEL5.6系统的/lib/modules/`uname -r`/
目录中搜索
ata_piix.ko驱动,
将其加入initrd解压后的lib目录中,在initrd解压出的init文件中加入insmod 该模块的
操作。使用压缩命令,生成
新的initrd文件,替换/boot下的旧文件。压缩命令见下面。
4.重启后发现又报了这样的错误:
insmod : error inserting '/lib/ata_piix.ko': -1 Unknown symbol in module
原因分析:插入模块失败,可能由于依赖性,检查RHEL5.6的/lib/modules/`uname -r`/目录总的modules.dep文件
发现ata_piix