現在、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 ファームウェアが Clover ではなく GRUB を起動してしまうことです。
これは、GRUB セットアップが EFI 変数を変更して、それ自体をデフォルトのブートローダーにするために発生すると理解しています。具体的には、--no-nvram
grub-install に渡されません。
GRUB EFIパッケージを作成するにはどうすればいいですかないgrub-install 経由で EFI ブート変数を変更して、Clover がデフォルトのブートローダのままになるようにしますか?
答え1
自分の質問に答えると、grub-efi-amd64 の postinst スクリプトには私が求めていた機能があります。debconf--no-nvram
変数grub2/update_nvram
が false の場合、grub-install バイナリに渡されます。
実行し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 スクリプトを手動で変更しない限り、この動作を防ぐことは不可能です。