Ubuntu-10.04

拯救 RAID+LVM 上的 grub

  • January 1, 2012

我有一個用於文件儲存/通用盒的雙 SATA 驅動器設置,其排列方式如下:

/dev/sda1 + /dev/sda1 = /dev/md0 RAID1 –> /boot

/dev/sda2 + /dev/sdb2 = /dev/md1 RAID1 –> 帶有 /、/usr、/var 等分區的 VG 和 LV 的 LVM。

我在 Ubuntu 安裝期間選擇了這個設置,它工作得很好,直到一些最新的更新顯然包括核心更新或類似的東西,這需要 GRUB 修改一些東西。

之後,我現在出現核心恐慌並且無法在啟動時掛載 FS。

我從 Live CD 啟動,在獲取 mdadm 和 lvm2 後,檢查文件系統是否正常,我可以組裝 MD 陣列和 LVM 掃描生成正確的 VG/LV 列表。

如果您能告訴我(或指向好的資源)如何在 Ubuntu 更新過程中從硬碟恢復引導,我將不勝感激。我一直在為 LILO 引導載入程序進行恢復,據我所知,它幾乎已經滅絕,而且我幾乎沒有 GRUB 經驗(而且它看起來比 LILO 複雜得多)。

編輯:我嘗試了https://help.ubuntu.com/community/Grub2#ChRoot程序,這似乎適用於某些人,即從 live cd chroot 到現有伺服器配置,然後嘗試 update-grub、grub -安裝 /dev/sdXX,但它不起作用。

具體來說,我嘗試執行“grub-install /dev/sda”,但重啟後我遇到了與以前相同的錯誤。

編輯(2):

根據 cstamas 的回答,您可以按照 ubuntu 社區連結中的說明使用帶有解除安裝和重新安裝開發服務的 Chroot 過程,然後一旦進入 chroot,update-initramfs(對於 -k 指定與 /lib/ 中的一個匹配的核心版本名稱) modules/) 和 update-grub2,不需要 grub-install。

我個人更喜歡 grml.org 的救援 CD。

首先最重要的是獲得一張與您的 $arch 相匹配的 CD,例如 i386/amd64。

  • 您啟動 cd 並組裝 raid/lvms。

  • 僅掛載根 fs

  • chroot 進入根 fs

  • 在 rootfs 之外停止 udevd

  • 在 rootfs 裡面啟動 udevd

  • 在 chroot 中組裝/掃描/掛載失去的文件系統(最重要的是 usr 和 boot)

  • 重建 initramfs

    • 在 debian 上(我認為在 ubuntu 上是一樣的)執行:
    • 更新-initramfs -uv -k $yourkernelversion
    • 更新-grub 或更新-grub2

如果出現其他錯誤,例如意外解除安裝 lvm2 或類似情況,您可以在 chroot 中重新安裝它。如果您給出確切的錯誤資訊,我們會嘗試查看。

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