拯救 RAID+LVM 上的 grub
我有一個用於文件儲存/通用盒的雙 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 中重新安裝它。如果您給出確切的錯誤資訊,我們會嘗試查看。