0

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

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

问题
如何让新内核识别 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!

环境
我在运行 2.8 GHz Intel Core Duo 处理器的 OS X v10.5.8 的 MacBook Pro 上运行的 VMWare Fusion 版本 3.1.0 (261058) 下运行 Red Hat Enterprise Linux Server (2.6.18-194.3.1.el5PAE) 4GB 1067 MHz DDR3 内存。虚拟机分配有 2 个处理器内核和 2048 MB 内存。VM 硬盘设置指向文件“Red Hat Enterprise Linux 5.vmdk”,其中“总线类型”设置为“SCSI”,“磁盘大小”设置为 40Gb 并选中“拆分为 2Gb 文件”选项。

当我使用以下 /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 方面的内容吗?我想不通!

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

4

3 回答 3

6

我有一个类似的问题。

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

于 2013-10-02T16:58:57.167 回答
1

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

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

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

于 2010-07-08T02:30:01.683 回答
0

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

于 2016-09-25T06:04:15.287 回答