grub rescue ls – 沒有顯示分區?
我正在嘗試為 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
,同樣適用於模組目錄。GRUB
bootx64.efi
文件包含 GRUB 核心映像,以及可選的一些 GRUB 模組。如果這組嵌入式模組不包含part_gpt
,則 GRUB 將無法辨識 GPT 分區表,這將導致無法訪問包含其餘 GRUB 模組的文件系統。這將是進入 GRUB 救援模式的另一個可能原因。