我目前正在開發一個包含 Ubuntu 18.04、macOS 和 Windows 的三重啟動系統。韌體(ASUS Impact VII、基於 APTIO 的 EFI)應該啟動的標準引導程式是 Clover。然後 Clover 執行 GRUB 2、Apple 的 EFI 開機載入程式或 Windows 開機載入程式。
問題是,當我透過 apt/dpkg 更新 Ubuntu 18.04 系統上的 grub-efi 軟體包時,EFI 韌體將在下次重新啟動時繼續引導 GRUB 而不是 Clover。
據我了解,發生這種情況是因為 GRUB 設定更改了 EFI 變量,使其成為預設引導程式。更具體地說,它不會傳遞--no-nvram
給 grub-install。
如何製作 GRUB EFI 包不是透過 grub-install 修改 EFI 引導變量,以便 Clover 保持預設開機載入程式?
答案1
回答我自己的問題: grub-efi-amd64 的 postinst 腳本具有我要求的功能。當 debconf 變數為 false時,它將傳遞--no-nvram
給 grub-install 二進位。grub2/update_nvram
運行dpkg-reconfigure grub-efi-amd64
並在提示是否自動維護 nvram 條目時回答“否”。
答案2
grub-efi-amd64-signed 中有一個錯誤https://bugs.launchpad.net/ubuntu/+source/grub2-signed/+bug/1969845因此,如果不手動更改 grub-efi-amd64-signed 的 postinst 腳本,就不可能阻止這種行為。