Dual-Boot

UEFI 和 Grub 有什麼關係?

  • June 13, 2019

我在同一個ssd上安裝了win10和一個用於雙啟動的Linux,在安裝Linux的過程中,它包含一個grub。安裝後,我可以看到 ESP 分區中添加了一個新的 Linux efi 文件。現在我決定完全刪除 Linux,我做的第一步是使用一個名為 EasyUEFI 的工具刪除 efi 啟動項。當我重新啟動並按 F11 時,該條目消失了。

但是有兩部分讓我感到困惑:

  1. 刪除該條目後Linux efi文件仍在ESP分區中,我認為這些efi文件的存在是UEFI如何知道使用者在啟動時按F11時是否有這樣的啟動選項。現在這意味著啟動選項記錄在其他地方,EasyUEFI 工具簡單地刪除了它。它在哪裡,在 ESP 分區中嗎?
  2. 我不太確定我是否理解正確,現在 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.efiESP 分區內的單個文件的形式。

GRUB 有自己的體系結構標識符:BIOS 的 GRUB 版本稱為i386-pc版本,64 位 x86 硬體上的 UEFI 版本稱為x86_64-efi版本。例如,如果您正在對舊系統進行映像並將映像恢復到新硬體,並且您會發現新系統使用不同的韌體樣式(即舊系統使用傳統 BIOS 而新系統將是 UEFI),那麼您通常必須添加 ESP 分區,將i386-pcGRUB 包的版本替換為該版本x86_64-efi,然後重新安裝 GRUB。

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