
一開始一切都很好,我的 SSD 有 2 個 EFI 分割區,我通常使用 f12 鍵在作業系統之間切換,將 Linux 保留為預設值。但是,在我清除 NVRAM 後,Windows 啟動管理員仍然存在,但 Linux EFI 消失了。如何將其添加回啟動選單?
答案1
我猜 Windows 啟動管理員也消失了,但要么 UEFI 韌體包含自動將其添加回來的程式碼,要么 Windows 首先使用後備 UEFI 啟動載入程式路徑 ( \EFI\boot\bootx64.efi
) 啟動,並將正確的NVRAM 啟動變數添加回來作為完全自動化的“自癒”操作。
使用可啟動的 Linux 即時啟動媒體來修復此問題是最簡單的UEFI 本機模式。這將允許您使用該efibootmgr
命令。
從即時媒體啟動 Linux 後,您應該先將 Linux 安裝的 EFI 系統分割區(簡稱 ESP)掛載到 Linux 發行版的慣用位置(通常是/boot/efi
,但某些發行版可能只使用/boot
)。然後,您應該在該目錄中找到 UEFI 引導程式目錄/boot/efi/EFI/<name of your Linux distribution>/
以及類似shimx64.efi
和/或 的檔案。bootx64.efi
很可能還有其他文件。
如果bootloader目錄包含,則在下一步中shimx64.efi
使用它;<bootloader file>
如果沒有,則使用(grubx64.efi
如果存在)。
假設 Linux ESP 位於磁碟上/dev/sda
,efibootmgr
重新建立韌體選單啟動項目的指令為:
efibootmgr -c -d /dev/sda -l \\EFI\\<name of your distribution>\\<bootloader file> -L "<the name you want to see in the firmware menu>"
由於同一磁碟上有多個 ESP,因此您可能必須指定正確的 ESP 裝置名稱,而不僅僅是指定磁碟(即類似-d /dev/sda5
而不是僅指定-d /dev/sda
)。
之後,用於efibootmgr -v
查看啟動設定。您可能必須使用efibootmgr --bootorder
調整開機順序以使 Linux 成為預設值,或存取 BIOS 設定來執行相同的操作(某些 UEFI 韌體可能會拒絕使用所做的開機順序變更efibootmgr --bootorder
- 這可能是韌體錯誤)。
如果您想讓 Linux 在 NVRAM 重設時成為“倖存者作業系統”,您可以--force-extra-removable
在作業系統成功啟動後使用該選項重新安裝 UEFI GRUB,命令如下:
sudo grub-install --force-extra-removable --uefi-secure-boot /dev/sda
(如果您的系統上停用了安全啟動,並計劃保持停用狀態,則可以根據--uefi-secure-boot
需要省略該選項。)