UEFI NVRAM に Grub エントリを追加する bash スクリプトを作成しました。スクリプトは起動可能な USB Linux によって呼び出されます。このコマンドはエントリを追加します:
efibootmgr -c -d /dev/sda -p 2 -L "Grub2" -l "\EFI\Boot\shimx64.efi"
スクリプトは正常に動作します。しかし、後で Partclone イメージから Windows をインストールしました。
Windows はブート順序を上書きし、新しいエントリを追加します。これは Windows の読み込み中に発生します。再起動後、Grub2 は消えます。
準備完了イメージ(partclone で作成)があるため、Windows に変更を加えたくありません(bcdedit bootmgr)。
UEFI NVRAM への Windows アクセスを無効にすることは可能ですか? Windows ブート マネージャーを使用せずに (つまり直接 winload.efi を使用せずに) Grub EFI (セキュア ブート) から Windows を実行することは可能ですか?
何か考えはありますか?
答え1
Windows が NVRAM に書き込み、EFI 変数を変更するのを防ぐ方法はわかりませんが、他にできることはあります...
私の回答をご覧くださいこの質問役に立つかもしれないツールについては、こちらを参照してbcdedit
ください。この点ではおそらく役に立つでしょう。簡単UEFI、これは以前の回答を書いたときには使用していませんでした。
もう 1 つのオプションは、システムの起動スクリプトやシャットダウン スクリプトを作成して、必要なブート構成を自動的に復元することです。Windowsbcdedit
ではこれを使用しますが、私は Windows ユーザーではないため、詳細を説明することはできません。Linux では、Linux が原因ではないため、これを行う必要はほとんどありません。ただし、必要になった場合は、efibootmgr
-- または、もう少し簡単な操作として、refind-mkdefault
スクリプトは、rEFInd の次のバージョンに追加する予定です。デフォルトでは、このスクリプトは rEFInd をデフォルトのブート プログラムとして設定しますが、オプションを使用して別のツールの名前 (ファイル名または説明) を渡すと-L
、スクリプトは代わりにそれをデフォルトとして設定します。
最悪のシナリオでは、Windows ブートローダーファイル ( EFI\Microsoft\Boot\bootmgfw.efi
ESP 上) の名前を変更するか別の場所に移動し、その場所に Shim を配置して GRUB のコピーを配置します。これにより、Windows ブートローダーの代わりに GRUB が起動します。ただし、Windows ブートローダーを正しく起動するには、GRUB の設定を再設定する必要があります。ブーツ修理ツールはこれを自動的に実行できます。オプションは [詳細設定] メニューにあり、「Windows ブート ファイルのバックアップと置換」のような名前です (正確な名前は覚えていません)。この方法の主な欠点は、Windows がブート ローダーを更新する場合、この修正を再度適用する必要があることです。また、ディスク ファイル名と NVRAM ブート エントリが紛らわしく、将来の修復が複雑になる可能性があります。