UEFI 和 Grub 有什麼關係?
我在同一個ssd上安裝了win10和一個用於雙啟動的Linux,在安裝Linux的過程中,它包含一個grub。安裝後,我可以看到 ESP 分區中添加了一個新的 Linux efi 文件。現在我決定完全刪除 Linux,我做的第一步是使用一個名為 EasyUEFI 的工具刪除 efi 啟動項。當我重新啟動並按 F11 時,該條目消失了。
但是有兩部分讓我感到困惑:
- 刪除該條目後Linux efi文件仍在ESP分區中,我認為這些efi文件的存在是UEFI如何知道使用者在啟動時按F11時是否有這樣的啟動選項。現在這意味著啟動選項記錄在其他地方,EasyUEFI 工具簡單地刪除了它。它在哪裡,在 ESP 分區中嗎?
- 我不太確定我是否理解正確,現在 UEFI 引導(efi 文件和它在安裝過程中添加的任何其他引導記錄)和 grub 是否相同?或者當使用者選擇一個 efi 啟動項時,它會進入 grub 啟動菜單,這是一個單獨的東西?如果 efi boot 已經可以處理引導選擇,那麼之後有一個 grub 不是沒有意義嗎?
比你
1.) 使用 EasyUEFI,您將編輯 UEFI 啟動變數。這些儲存在系統 NVRAM 中,就像 BIOS 設置一樣。在 Linux 中,您可以使用
efibootmgr
實用程序編輯它們;在普通的 Windows 中,bcdedit /enum FIRMWARE
可以列出它們並且可以使用其他選項來編輯它們。如果未定義引導變數,則 UEFI 會自動查看特定的回退路徑:對於 64 位 x86 硬體,此路徑為
\EFI\boot\bootx64.efi
. 如果此文件存在於 ESP 分區或任何 FAT32 可移動媒體中,則磁碟或其他媒體會自動被視為原生 UEFI 樣式的“可引導”。2.) UEFI 是系統韌體(如 BIOS,但更新)。GRUB 是一個引導載入程序,因此它必須符合相關硬體架構的韌體所期望的任何形式,否則韌體將無法載入 GRUB。
因此,GRUB 的核心可以採用多種形式:在 BIOS 中,GRUB 採用 MBR 中的一些引導程式碼 + 更多嵌入到 MBR 和第一個分區開頭之間的磁碟塊中的程式碼的形式。使用 UEFI,GRUB 的核心(甚至全部)可以採用
grubx64.efi
ESP 分區內的單個文件的形式。GRUB 有自己的體系結構標識符:BIOS 的 GRUB 版本稱為
i386-pc
版本,64 位 x86 硬體上的 UEFI 版本稱為x86_64-efi
版本。例如,如果您正在對舊系統進行映像並將映像恢復到新硬體,並且您會發現新系統使用不同的韌體樣式(即舊系統使用傳統 BIOS 而新系統將是 UEFI),那麼您通常必須添加 ESP 分區,將i386-pc
GRUB 包的版本替換為該版本x86_64-efi
,然後重新安裝 GRUB。