在VMWare Fusion下的RedHat Linux中引导时出现内核严重错误:找不到文件系统

时间:2010-07-07 21:36:58

标签: linux linux-kernel redhat kernel vmware-fusion

这应该很简单。然而,它给了我地狱。

问题
我已经编译了最新的内核,当我重启我的盒子时,它会产生与文件系统相关的内核恐慌。

问题
如何让新内核识别VMWare文件系统?某些地方必须有一些设置让Linux安装知道“硬盘驱动器”不是真正的驱动器,而是实际上代表虚拟机的文件。

背景
首先,我不是Linux大师。这是我第一次编译内核。我为解决这个问题做了什么:

  • 从kernel.org下载内核版本2.6.34
  • 将源解压缩到目录
  • 按照安装说明进行操作:
  • http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html
  • 基本上,运行:make menuconfig,make,make modules,make modules_install,make install,reboot
  • 我没有真正改变make menuconfig部分中的任何内容

重启后,它失败并出现以下错误:

No volume groups found
Volume group "VolGroup00" not found
Unable to access resume device (/dev/VolGroup00/LogVol01)
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!

环境
我正在运行在MacBook Pro上的VMWare Fusion版本3.1.0(261058)下运行Red Hat Enterprise Linux Server(2.6.18-194.3.1.el5PAE),OS X v10.5.8运行2.8 GHz Intel Core Duo处理器,4GB 1067 MHz DDR3内存。虚拟机分配了2个处理器核心和2048 MB内存。 VM硬盘设置指向文件“Red Hat Enterprise Linux 5.vmdk”,“Bus Type”设置为“SCSI”,“Disk Size”设置为40Gb,“Split into 2Gb Files”选项已选中。

当我使用下面的/boot/grub/menu.lst文件时,除了引导到错误的内核(2.6.18-194.3.1.el5PAE而不是2.6.34)之外,一切都运行正常:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.34)
    root (hd0,0)
    kernel /vmlinuz-2.6.34 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.34.img
title Red Hat Enterprise Linux Server (2.6.18-194.3.1.el5PAE)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-194.3.1.el5PAE ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.18-194.3.1.el5PAE.img
title Red Hat Enterprise Linux Server (2.6.18-194.el5PAE)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-194.el5PAE ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.18-194.el5PAE.img

当我使用以下文件(最后一行被注释掉并进行其他一些小编辑)时,它会尝试启动正确的内核,但是启动失败并出现上述内核恐慌:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.34)
    root (hd0,0)
    kernel /vmlinuz-2.6.34 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.34.img
    savedefault
    boot
#title Red Hat Enterprise Linux Server (2.6.18-194.3.1.el5PAE)
#   root (hd0,0)
#   kernel /vmlinuz-2.6.18-194.3.1.el5PAE ro root=/dev/VolGroup00/LogVol00 rhgb quiet
#   initrd /initrd-2.6.18-194.3.1.el5PAE.img
#title Red Hat Enterprise Linux Server (2.6.18-194.el5PAE)
#   root (hd0,0)
#   kernel /vmlinuz-2.6.18-194.el5PAE ro root=/dev/VolGroup00/LogVol00 rhgb quiet
#   initrd /initrd-2.6.18-194.el5PAE.img

我不明白,在一种情况下,它可以弄清楚VMWare的文件系统就好了,而在另一种情况下,它不能。我错过了什么?是否应该选择一些与VMWare相关的特殊编译选项?我需要更改VMWare Fusion方面的内容吗?我无法弄清楚这一点!

非常感谢任何和所有建议!

3 个答案:

答案 0 :(得分:6)

我遇到了类似的问题。

内核比硬件要老得多。 SATA默认连接硬盘。我重新配置(在BIOS或VM.Properties中)硬件以通过IDE连接。它对我有用,我很高兴:)。

答案 1 :(得分:1)

您的内核可能无法加载定位卷所需的模块。

我最好的猜测是你的initrd不在正确的位置。它需要与已安装的内核位于同一目录中。

此外,遵循RedHat系统的Debian说明并不是一个好主意。一般来说没关系,但是你正在做一些相对分布特定的事情。

答案 2 :(得分:0)

我在不同的情况下收到内核恐慌。我有一台RHEL 5.5工作站,BIOS /主板出现故障。因此,我将操作系统驱动器移动到另一台相同的PC(Dell T5500)和另一台PC(Dell T5400)。我之前做过这个,因为Linux包含许多主板的驱动程序,而PC通常会启动。内核恐慌都是一样的。我很惊讶。我向朋友提到了你的解决方案,他记得一个可能导致这种情况发生的BIOS设置。我们更改了BIOS->驱动器 - > SATA操作 - > RAID SATA到RAID AHCI。更改此BIOS设置后,两台PC都使用RHEL5.5 OS HD启动!替换PC之前有Windows。他告诉我,Windows需要ATA BIOS设置,而Linux需要另一个。谁知道!