Grub

Centos 5.5 將不再啟動;可怕的“找不到文件系統 /dev/root”錯誤

  • August 21, 2016

通常我在網上找到我的答案沒有問題,但我已經嘗試修復我的宕機伺服器 3 天了,而且我沒有更進一步。

有問題的伺服器是執行 openvz 核心的 Centos 5.5 機器,更準確地說是 2.6.18-194.8.1.el5.028stab070.5。我們沒有對伺服器的物理訪問,也沒有某種串列/網路控制台。我們確實有一個通過 pxe 載入的基於 debian 的救援磁碟。

伺服器有兩個磁碟,SDA:

Disk /dev/sda: 320.0 GB, 320071851520 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *         524        1193     5381775   83  Linux
/dev/sda2               1         523     4200997   82  Linux swap / Solaris
/dev/sda3            1194       38913   302985900   83  Linux

Partition table entries are not in disk order

和 SDB:

Disk /dev/sdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       38913   312568641   83  Linux

sda1 有文件系統,sda2 是交換空間,sda3 和 sdb1 一起形成掛載在 /vz 上的 md0。這是 fstab。

/dev/sda1               /                       ext3    defaults        1 1
proc                    /proc                   proc    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
/dev/sda2               swap                    swap    defaults        0 0
/dev/md0                /vz                     ext3    defaults        0 0

和 menu.lst/grub.conf

boot=/dev/sda
default=0
timeout=15
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title CentOS (2.6.18-194.8.1.el5.028stab070.5)
       root (hd0,0)
       kernel /boot/vmlinuz-2.6.18-194.8.1.el5.028stab070.5 ro root=/dev/sda1
       initrd /boot/initrd-2.6.18-194.8.1.el5.028stab070.5.img
title CentOS (default)
       root (hd0,0)
       kernel /boot/bzImage ro root=/dev/sda1

現在由於某種原因伺服器出現故障,我們無法再次使其正常工作。我們的提供者試圖通過在安裝 sda1 @ /mnt 時通過前面提到的救援磁碟重新安裝 grub 來“解決”我們的問題。

grub-install --root-directory=/mnt '(hd0)'

http://i.stack.imgur.com/1FRi6.jpg

這是啟動時伺服器的監視器輸出的照片。現在它可以清楚地載入 /etc/fstab,因為它試圖從我們的交換分區恢復。

現在因為我們無法訪問伺服器,我們正在使用 Qemu 來嘗試調試問題,但我們永遠無法確定它的行為方式是否相同,而且每次我們在 sda1 上進行更改時,我們都需要重新啟動伺服器以便 qemu 看到更改,任何以其他方式執行此操作的指針都是受歡迎的。我們使用 qemu 的方式如下。

qemu-system-x86_64 -vnc :0 -hda /dev/sda -hdb /dev/sdb

我們已嘗試重新安裝最新的核心。試圖在沒有 raid-support 和強制 ext3 支持的情況下創建一個新的 initrd。從具有相同設置的伺服器複製 /boot。在幾乎所有可能的磁碟/分區上安裝 grub。

我不知道我還能嘗試什麼。非常感謝任何提示。

tl;dr:伺服器出現故障,由於“找不到文件系統錯誤”而無法重新啟動

你的 grub.conf 是什麼樣的?也許突然有一個錯誤配置的 root= 或 init= 參數?

如果不是這樣,當您通過基於 Debian 的救援系統掛載 CentOS / 分區時,是否存在 /dev 目錄?如果有,它是什麼樣子的?stat如果您使用or簽出,它是否與 /dev/sda1 資訊匹配ls -lah?也許 /dev/root 指向錯誤的位置(或者,已使用錯誤的 mknod 參數創建)。

是的,這些天 /dev 應該是非常動態的,但你永遠不會知道……在核心 2.4 天,我沖洗了我的一個 Gentoo 系統,並在我手動重新創建了一些設備節點後讓它啟動。

將 grub.conf 添加到原始問題後進行編輯

grub.conf 的第一行 (boot=/dev/sda) 看起來很可疑。嘗試將其註釋掉並重新啟動。

如果這不起作用,您可能還想/dev/sda1ls -lah. 它應該如下所示:

brw-r----- 1 root disk 104, 1 Sep 29 01:23 /dev/sda1

觀察類似於104, 1的值。然後創建*/dev/root*與

mknod -m 640 /dev/root b 104 1

根據您的更改 104 和 1 值。

希望這可以幫助!

引用自:https://serverfault.com/questions/185756