安装第2块scsi卡和新的磁盘阵列柜后系统无法启动

系统是一台HP LH-6000,好像已经买了好多年,安装的是redhat 7.2, 一直运行正常。由于原来的硬盘空间不够,所以,给机器加了一张scsi卡,原来已经内置有一张(设置为raid5), 然后,插入一个外置的磁盘阵列柜。那知道,重新开机出现如下错误:
Mounting root filesystem
mount: error 6 mounting ext3
pivotroot: pivot_root(/sysroot, /sysroot/initrd) failed: 2
Freeing unused kernel memory: 240K freed
kernel panic: NO init found. Try passing init= option to kernel.

硬件在其它地方测试都是没问题的,如果将外置的磁盘阵列柜的关闭电源,重新开机又可以正常进入!

在网上查找,一般“mount: error 6 mounting ext3”都是说没有把ext3驱动编译到内核,但,原来的硬盘,已经是ext3格式了,可能性不大。

中间走了些弯路。不过,最后,似乎还是解决了。

主要是,开机自检的时候,先出现那种内置的scsi卡,然后,再检到新插进去的那张卡,所以,开始没想到“盘符”调乱了。

解决方法,很简单,如下:


· 在出现GRUB引导画面时,按字母e键,进入GRUB编辑状态。
· 按↑键或↓键选择相应的引导项,并再接字母e键进入命令行编辑。
· 在出现的命令行,将原来的
         kernel /vmlinuz-2.4.7-10 ro root=/dev/sdb2
        修改为:
         kernel /vmlinuz-2.4.7-10 ro root=/dev/sdc2
         并按回车键,返回GRUB编辑状态。
· 按字母b键,引导进入单用户模式。
·      过来自检,提示无法装载某些分区,按要求输入root密码进入管理模式
·      编辑/etc/fstab, 修改分区对应到新的转载点,保存
·      重新启动
·      修改 grub.conf 文件

ixpub.net 的 nntp 提了另外一种解决方法:

1. rescue mode login
2. adjust the order in your /etc/modules.conf, (RHEL4 改为:/etc/modprobe.conf)

3. rebuild initrd (参考:http://www.cn.redhat.com/kbase/2521.php)

 

修改文件以后,需要重新编译initrd文件,使得在启动时该模块被正确插入到模块中。

# cp /boot/initrd-(kernel-version).img /boot/initrd-(kernel-version).img.bak
# mkinitrd -f initrd-$(uname -r).img $(uname -r)

例如

 
cp /boot/initrd-2.4.21-27.0.2.ELsmp.img /boot/initrd-2.4.21-27.0.2.ELsmp.img.bak
mkinitrd -v -f /boot/initrd-2.4.21-27.0.2.ELsmp.img 2.4.21-27.0.2.ELsmp

这个例子对一个运行2.4.21-27.0.2smp内核的系统重建了initrd.img,根据自己系统的实际运行版本自行条成mkinitrd的参数(可以使用uname -r得到本机运行的内核版本号)。

   * mkinitrd的-v参数可以显示initrd.img中包括的所有模块。
   * mkinitrd的-f参数可以强制覆盖initrd.img中已有的同名模块。

或者参考这里:外部存储抢占sda设备号的解决办法http://www.chinaunix.net/jh/34/823626.html

linux系统加载存储时,时常会出现本地的设备好sda被存储抢占,而本地变成sdb、sdc等。这种现象是因为连接外部存储的适配器的优先级比本地的scsi/fc的适配器的优先级高造成的。出现这种情况os启动时会有swap报错,给系统管理带来一些麻烦,但这个问题可以通过更改os的内核实现改变驱动顺序,具体过程如下。
1、修改/etc/modules.conf将本地的scsi卡或者光纤卡放置在后加的板卡后面.
   alias eth0 tg3
   alias eth1 tg3
   alias scsi_hostadapter1 aic79xx
   alias scsi_hostadapter qla2300 #再有些情况下修改这个文件就能解决问题。
2、如果修改modules.conf没有解决问题,开始下面的操作:
   # cp /boot/initrd-2.4.21-el.img /root/
   # file initrd-2.4.21-el.img -----该文件是一个压缩文件;
   # mv initrd-2.4.21-el.img initrd-2.4.21.img.gz
   # gzip -d initrd-2.4.21-el.img.gz
   # file initrd-2.4.21-el.img
    initrd-2.4.21-el.img:linux rev 1.0 ext2 filesystem data(mount or unclean)
   # mount initrd-2.4.21-el.img /mnt -o loop
   #cd /mnt
   #ls
    bin dev etc lib linuxrc loopfs proc sbin sysroot
   #vi linuxrc
    echo "loading aic79xx.o module"
    insmod /lib/aic79xx.o
    echo "loading qla2300.o module"
    insmod /lib/qla2300.o
  变更aic79xx和qla2300的上下位置。然后保存。
3、# cd /root
   # umount /mnt
   #gzip -9 initrd-2.4.21-el.img
   #mv initrd-2.4.21-el.img.gz initrd-2.4.21-el.img
   #cp initrd-2.4.21-el.img /boot
   #reboot
4、fdisk -l 完成操作。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值