Debian

如何檢查 grub2 實際安裝了 MBR 的驅動器?

  • December 18, 2021

我在一個 Debian/Squeeze 系統上(歷史至少可以追溯到 Woody),它作為 Squeeze 升級的一部分升級到 grub2。一切正常,但我要弄亂磁碟配置了。

目前,這台機器執行 2 個 80GB 驅動器,帶有 RAID1-ed /、/home 和 /boot 分區(還有另一對帶有 RAID1-ed“/data”和幾個交換的驅動器,以防有人想知道交換在哪裡,但我沒有碰那些)。

我添加了 2 個 130GB SSD,將它們分區為至少與 80GB 驅動器上的分區一樣大,並打算通過增加 RAID1 來切換到新的 SSD 驅動器以包含它們,等待同步,然後刪除舊的來自陣列的驅動器,因此只剩下 SSD(然後增長文件系統)。但是 mdadm/ext3 爭吵不是這個問題的意義所在……

這將給我留下 2 個過時的 80GB (IDE) 驅動器,我想將它們從機器中移除。我擔心刪除它們會帶來一些關鍵的 MBR。如何確保機器保持可啟動狀態?

進一步來說:

  • 當我進行 Squeeze 升級時,我記得有一些關於 grub2 應該安裝到哪個驅動器的選擇(我選擇了預設設置,即所有驅動器)。SSD 當時不在機器中。我怎樣才能重新執行它以讓 grub 安裝在 SSD MBR 上?(我猜這是某個包的 dpkg-reconfigure )。
  • 我怎樣才能找到 grub2 認為它安裝在哪個驅動器上?可惜現在 /boot/grub/ 下有將近 200 個文件!去哪裡看?此外,/boot/grub/device.map.auto 目前僅列出 3 個驅動器(80GB 中的 2 個,但僅列出另一個驅動器對中的一個,並且沒有 SSD),這似乎有點奇怪。我怎樣才能得到最新的?(**更新:**這是一條紅鯡魚;device.map.auto 似乎是多年前的遺物;在 grub-mkdevicemap 的更新中,device.map 看起來很明智。認為我在這方面的偏執源於舊主機板的 BIOS一時興起重新排列 GRUB 看到的設備順序)。

**結果:**一切順利,我現在有兩個開箱即用的舊 80GB IDE 驅動器,以及一個執行 RAID1 版 SSD 的快速啟動系統,所有文件系統都調整為新的分區大小。我一直在尋找的另一個“Grub 難題的缺失部分”是dpkg-reconfigure grub-pc提示哪些磁碟要維護 MBR。亞倫的回答實際上最能讓我放心,這是按預期工作的,因此接受了這個答案。

MBR 是 512 字節,因此可以快速查看 GRUB 是否存在…

dd if=/dev/sda bs=512 count=1 | xxd

這會轉儲 MBR,我在我的字節 0x17F = 383 處看到“GRUB”。

dd if=/dev/sda bs=1 count=4 skip=383

當我這樣做時,它會列印“ GRUB”,然後是dd輸出。

您可以將其包裝在 bashfor循環或其他東西中以跨越更多驅動器。如果您不想手動操作。

編輯:十多年後,我剛剛收到一條通知,說這又被投票了。偉大的!但是,老實說,我不知道GRUB 是否將自己安裝在現代 GPT 分區驅動器的“保護 MBR”中,因此請將此答案視為僅具有更現代 UEFI 引導的潛在答案。

引用自:https://unix.stackexchange.com/questions/16327