Grub2

grub rescue ls – 沒有顯示分區?

  • April 21, 2020

我正在嘗試為 UEFI Windows/Linux 多重引導設置建構自定義 grub 菜單。我已經通過 USB 驅動器成功測試了菜單,其中包含:

/EFI/boot/BOOTX64.EFI
/grub/grub.cfg
/grub/x86_64-efi/*
…etc.

從這個驅動器啟動時,我可以毫無問題地訪問菜單。接下來,我將 grub 轉移到我的 PC 的 EFI 系統分區:

/boot/grub/bootx64.efi
/boot/grub/grub.cfg
/boot/grub/x86_64-efi/*
…etc.

該分區上還有 Windows 的引導載入程序,在/EFI/Microsoft/boot.

最後,我使用 Windows 實用程序 BOOTICE(或只是系統 BIOS)為\boot\grub\bootx64.efi. 我重新啟動,然後 grub 出現了。

…除了沒有調出菜單,我最終得到了救援提示。我的假設是我只是將 grub.cfg 和模組放在錯誤的位置 - 然而,真正奇怪的是它ls沒有顯示分區 - 只是(hd0) (hd1). 我的期望是類似的東西(hd0) (hd0,msdos1),等等——但 grub 救援似乎根本沒有ls任何分區。 ls (hd0)並且ls (hd1)都產生“文件系統未知”。

我的系統包含一個帶有分區的物理磁碟:

1 = EFI system partition (fat32)
2 = Veracrypted partition (with Windows installation)
3 = Veracrypted partition (data)
4 = Linux swap
5 = Linux root
6 = Linux home

為什麼 grub 能夠從 EFI 系統分區啟動 - 但無法看到該分區或任何其他分區?更重要的是,我怎樣才能讓它的菜單像從 USB 一樣從內部驅動器工作?

ls (hd0)意味著您正在嘗試將整個磁碟作為單個文件系統進行訪問;如果磁碟以任何方式分區,則該消息(hd0): Filesystem is unknown.是正常的和預期的。

相反,鍵入ls (hd0 不帶右括號,然後按 TAB。如果 GRUB 可以辨識分區類型,那麼它應該列出 GRUB 知道的分區及其文件系統類型。

您的問題可能是 GRUB 期望其配置文件位於<partition root>/grub/grub.cfg,而不是<partition root>/boot/grub/grub.cfg,同樣適用於模組目錄。

GRUBbootx64.efi文件包含 GRUB 核心映像,以及可選的一些 GRUB 模組。如果這組嵌入式模組不包含part_gpt,則 GRUB 將無法辨識 GPT 分區表,這將導致無法訪問包含其餘 GRUB 模組的文件系統。這將是進入 GRUB 救援模式的另一個可能原因。

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