Grub

哪個命令用於安裝 grub?

  • August 17, 2020

我需要重新安裝grub(以修復引導孔安全問題)。我不想犯錯誤,而且因為我不太習慣grub,所以我問自己是否有辦法找到grub-install用於在機器上安裝 current 的命令grub

謝謝你的幫助。

環境:Grub 2、Manjaro(Arch linux)、EFI 引導

efibootmgr -v以 root 身份執行。第一行將是BootCurrent: NNNNNNNN 是一個十六進制的四位數字。

找到相應的“BootNNNN”行。它看起來類似於:

BootNNNN* Manjaro        HD(X,GPT,11111111-2222-3333-4444-555555555555,0x800,0x82000)/File(\...\something.efi)
  • NNNN是第一行的數字,
  • Manjaro是人類可讀的啟動項描述字元串(可以是任何內容),
  • X是 UEFI 韌體檢測到的磁碟順序,
  • 11111111-2222-3333-4444-555555555555是引導載入程序安裝到的 EFI 系統分區的 PARTUUID,
  • 並且\...\something.efi是 EFI 系統分區上的 Windows 樣式路徑名,標識要使用的引導載入程序文件。對於 GRUB + Secure Boot,它通常是shimx64.efishim.efi類似的,指的是 Secure Boot shim 引導載入程序,然後它將載入grubx64.efi同一目錄中命名的文件。

EFI 系統分區可能掛載為/boot/efi、 或/boot,或根本不掛載;不同的發行版在這裡做不同的事情。如果它安裝在/boot/efi,執行ls -l /boot/efi/EFI/BOOT/BOOTX64.efi該文件的長度並將其與efibootmgr -v: 標識的引導載入程序路徑中的文件進行比較,如果它們匹配,您就會知道您可能也應該更新備份引導載入程序。(記住這一點 - 稍後再詳細介紹。)

一旦知道了 PARTUUID,就可以使用blkidlsblk -o +PARTUUID辨識 EFI 系統分區(簡稱 ESP)對應的 Linux 設備名稱。現在您將擁有重建grub-install命令所需的所有部分。

**但是,**使用 Secure Boot,註冊到系統 NVRAM 的第一個“引導載入程序”實際上是 Secure Boot shim,而不是 GRUB。你不想改變這個事實。

因此,您可能希望使用該--no-nvram選項來避免更改 NVRAM 引導變數。因此,重新安裝 GRUB 的命令應該是:

grub-install --no-nvram /dev/<the disk device corresponding to your ESP partition>

如果 GRUB 目前也安裝到\EFI\BOOT\BOOTX64.efiESP 上的備份引導載入程序路徑中,您需要將--force-extra-removable選項添加到grub-install命令中,因此它也會更​​新。

請注意,如果您使用的是 Secure Boot shim 引導載入程序,那麼更新 ESP 上的 shim 也很重要。在重新引導系統之前,驗證 GRUB 和 ESP 上的 shim 是否具有足夠近期的時間戳。2020-07-28 之後的任何事情都應該是好的。如果 shim 包不會自動更新 ESP 上的 shim 文件,您可以在包安裝程序放置的任何位置找到更新的 shim,並將其複製到 ESP 上的舊 shim 上。

使用 Secure Boot 和 GRUB,ESP 的典型佈局如下所示:

  • <ESP mountpoint>/EFI/<name of distro>/grubx64.efi= 實際的 GRUB
  • <ESP mountpoint>/EFI/<name of distro>/shimx64.efi= 安全啟動墊片
  • <ESP mountpoint>/EFI/BOOT/BOOTX64.efi= 墊片的備份引導副本
  • <ESP mountpoint>/EFI/BOOT/grubx64.efi= GRUB 的備份引導副本

帶有組件的路徑<name of distro>通常應該是主引導載入程序,但如果系統出於任何原因“忘記”NVRAM 設置,例如重置所有韌體設置的 UEFI 韌體更新(又名“BIOS設置”)恢復為出廠預設值。

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