内核升级 CentOS 5.3 mount: 找不到文件系统‘/dev/root’

内核升级 CentOS 5.3 mount: 找不到文件系统‘/dev/root’

我们有一台 CentOS 5.3 x64 服务器,默认情况下运行内核版本 2.6.18-164.11.1,我们正尝试将该机器升级到 2.6.31.12。驱动器是 LVM +ext3,我遇到的问题是,当我升级内核并尝试从它启动时,无论我使用哪个版本的内核,在启动过程结束时都会出现未找到 /dev/root 的情况,内核会出现崩溃,然后重新启动。

我正在按照说明安装内核doc。我尝试了“centOS 方式”,使用 make rpm 然后安装它。我更新了我的 mkinitrd。这个问题最有趣的部分是,它太令人沮丧了,我决定尝试在没有 LVM 的相同机器上全新安装 centos,结果完全一样。升级内核后,我得到 /dev/root not found。有人知道如何修复这个问题吗,或者哪些信息与修复它有关?我现在愿意尝试任何方法。

关于这个问题还有一件有趣的事情是,在新版本的内核中,在启动过程中它会抱怨 dm-mapper 启动了两次,然后立即出现恐慌。我尝试过其他内核版本,结果是一样的。我在这里遗漏了什么?

如果您需要更多文件,请直接询问。

 Linux cg 2.6.18-164.11.1.el5 #1 SMP Wed Jan 20 07:32:21 EST 2010 x86_64 x86_64 x86_64 GNU/Linux

  /dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
    LABEL=/boot             /boot                   ext3    defaults        1 2
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0
    /dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.31.12-rt20) //NOT WORKING!!!!
        root (hd0,0)
        kernel /vmlinuz-2.6.31.12-rt20 ro root=/dev/VolGroup00/LogVol00 isolcpus=8,9,10,11,12,13,14,15 panic=10
        initrd /initrd-2.6.31.12-rt20.img
title CentOS (2.6.18-164.11.1.el5) //WORKING!!
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.11.1.el5 ro root=/dev/VolGroup00/LogVol00 isolcpus=8,9,10,11,12,13,14,15 panic=10
        initrd /initrd-2.6.18-164.11.1.el5.img

答案1

我将在此添加我之前的评论作为答案,因为此评论已用于悬赏。对于这种公然企图赚取声誉点数的行为,我深表歉意。

我遇到了同样的问题,并通过更改设置解决了

CONFIG_SYSFS_DEPRECATED_V2=Y

在 .config 文件中。正如 godpapa 在这个问题中提到的那样。

只需搜索 CONFIG_SYSFS_DEPRECATED_V2 并将其更改为 Y 并重建 RPM。然后安装 RPM。

我可以确认,使用“CentOS 方式”构建 2.6.33 内核时,这确实修复了 CentOS 5.4 上的问题。如果它对 CentOS 5.3 上的 2.6.31.12 不起作用,我会感到惊讶。

答案2

尝试启用 CONFIG_SYSFS_DEPRECATED_V2=y

答案3

您的卷似乎没有标签。

使用 e2label 命令标记它。找出你的根目录位于哪个 hda 或 sda 上,比如说 sda2

编辑 grub 配置,找到并编辑这部分

root=LABELNAME=/2

其中 2 是 hda/sda 号码,查看是否通过标签找到它。

否则,我会先查看已加载的模块,并检查您的存储控制器模块是否已加载。(SCSI,SATA,AHCI)这样做:

less /proc/modules

或者

lsmod

如果内核没有加载,你可能需要重建内核。

祝你好运。

答案4

据我理解,您正在从源代码构建自己的内核。您是否有什么特殊原因不继续使用 centos 提供的内核?

我猜测您的错误的原因是,您有一个不同的内核配置,并且缺少一个或多个模块,例如 lvm。当您真正需要自己构建内核时,请使用现有 centos 内核的内核配置。您会在目录中找到旧配置,/boot或者直接使用make oldconfig。但请注意,当您跳转多个内核版本时,这可能很危险。

当您只想向内核添加新驱动程序时,只需根据已安装的 centos 内核编译驱动程序并将其添加到模块中。

相关内容