内核升级至2.6.22.6以后不能启动,似乎是找不到硬盘?

purewinter 2007-09-08 09:59:20
我现在用的系统是在VM 5.5下面装的Red Hat Enterprise AS 4,内核版本2.6.9-42.EL。
硬盘设置为SCSI,8G.
在kernel.org里下下来2.6.22.6版本的内核以后,
解压,make menuconfig,使用的是2.6.9-42.EL留下的设置,
make, make modules_install, make install均没有问题(make install自动设置grub启动和img文件等,没有出现问题)。
但是make install最后一行有一个warning,大概是mptscsi driver for kernel 2.6.22.6 not found.
但是我在2.6.22.6内核对应的modules对应目录下面看到了mptscsih.ko啊。

重新启动,进入新内核。到uncompressing Linux这一行都是正常的。
但是后面显示:
Red Hat nash version 4.2.1.8 starting
Reading all physical volumes. This may take a while...
No volume groups found
Volume group "VolGroup00" not found
ERROR: /bin/lvm exited abnormally! (pid 342)
mount: error 6 mounting ext3
mount: error 2 mounting none
switchroot: mount failed: 22
umount /initrd/dev failed: 2
Kernel panic - not syncing: Attempted to kill init!

但是进入原来的内核一切正常。而且在Reading all physical volumes一行前会有两行
sda: assuming drive cache: write through,
VolGroup00也可以顺利找到。

请问这是什么问题?果然是mptscsi吗?应该如何解决?
另外是不是在编译安装新内核前要安装什么软件?

附:我现在的grub.conf:
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux AS (2.6.22.6)
root (hd0,0)
kernel /vmlinuz-2.6.22.6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.22.6.img
title Red Hat Enterprise Linux AS (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.9-42.EL.img
...全文
1199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
#Page# 2010-03-31
  • 打赏
  • 举报
回复
我的还是不行,日哦
hefuhua 2007-09-10
  • 打赏
  • 举报
回复
恭喜...学习ing
:)
purewinter 2007-09-10
  • 打赏
  • 举报
回复
解决了。。。在chianunxi.net里看到了,原来是VM的bug。。。
内核2.6.21、2.6.22使用Fusion MPT 3.04.04有问题,使用原来的3.04.03即可(至少LSI53C1030可以正常加载)


另一解决方法.
Edit /usr/src/linux/drivers/message/fusion/mptbase.c to match the following

--- drivers/message/fusion/mptbase.orig.c 2007-07-20 18:47:21.000000000 +0000
+++ drivers/message/fusion/mptbase.c 2007-07-20 11:23:32.000000000 +0000
@@ -2564,6 +2564,10 @@
pfacts->IOCStatus = le16_to_cpu(pfacts->IOCStatus);
pfacts->IOCLogInfo = le32_to_cpu(pfacts->IOCLogInfo);
pfacts->MaxDevices = le16_to_cpu(pfacts->MaxDevices);
+ /* Fix VMware bug */
+ if(pfacts->MaxDevices == 0) {
+ pfacts->MaxDevices = 16;
+ }
pfacts->PortSCSIID = le16_to_cpu(pfacts->PortSCSIID);
pfacts->ProtocolFlags = le16_to_cpu(pfacts->ProtocolFlags);
pfacts->MaxPostedCmdBuffers = le16_to_cpu(pfacts->MaxPostedCmdBuffers);

这是VMware的模拟lsi的一个bug.
我照方法二改源代码,然后重新编译生成就可以了。。。
晕。。。
lsyer 2007-09-09
  • 打赏
  • 举报
回复
也可能是侦测时将VolGroup00换为其它的名字了,试试进入init 3,看看dev中设备是什么写法,我上次升级内核也遇到类似的问题。
hefuhua 2007-09-08
  • 打赏
  • 举报
回复
问题是出在LVM驱动上
用mkinitrd重新建立initrd-2.6.22.6.img
man mkinitrd看看具体用法
purewinter 2007-09-08
  • 打赏
  • 举报
回复
重新建立了一样报错。是不是还需要修改什么?
并且,然后我把下面的设为*以后再编译,再重建img,仍然出错。而且出错的提示一模一样,就是我顶楼贴的。
Device Drivers --->SCSI device support ---><*>SCSI disk support

Device Drivers--->SCSI device support --->SCSI low-level drivers---><*>BusLogic SCSI support

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧