UEFINVRAMにGrubエントリを追加するbashスクリプトを作成しました。スクリプトは、起動可能なUSBLinuxによって呼び出されます。このコマンドはエントリを追加します:
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)なしでWindows From Grub EFI(セキュアブート)を実行することは可能ですか?
何か考えはありますか?
WindowsがNVRAMに書き込んだりEFI変数を変更したりするのを防ぐ方法がわかりません。ただし、他にもできることがあります。
役立つ可能性のあるいくつかのツールについては、 この質問 に対する私の回答を参照してください。 bcdedit
は、この点で役立つ可能性が最も高いです。 EasyUEFI を試すこともできます。これは、以前の応答を書いたときには使用していませんでした。
もう1つのオプションは、目的のブート構成を自動的に復元するシステムの起動スクリプトやシャットダウンスクリプトを作成することです。これにはWindowsでbcdedit
を使用しますが、詳細を提供するのに十分なWindowsユーザーではありません。 Linuxは原因ではないため、Linuxでこれを行う必要はほとんどありません。ただし、そうである場合は、efibootmgr
を使用できます。または、少し軽いタッチの場合は、次のバージョンに追加する refind-mkdefault
スクリプトを使用できます。 rEFIndの。デフォルトでは、このスクリプトはrEFIndをデフォルトのブートプログラムとして設定しますが、-L
オプションを介して別のツールの名前(ファイル名または説明)を渡すと、スクリプトは代わりにそれをデフォルトとして設定します。
最悪のシナリオでは、Windowsブートローダーファイル(ESPではEFI\Microsoft\Boot\bootmgfw.efi
)の名前を変更するか、別のファイルに移動して、GRUBのコピーを使用してShimをその場所に配置できます。これにより、Windowsブートローダーの代わりにGRUBが起動します。ただし、Windowsブートローダーを正しく起動するには、GRUBセットアップを再構成する必要があります。 ブート修復 ツールはこれを自動的に行うことができます。このオプションは[詳細設定]メニューにあり、「Windowsブートファイルのバックアップと置換」に沿って呼ばれます(正確な名前は思い出せません)。このアプローチの主な欠点は、Windowsがブートローダーを更新する場合、この修正を再適用する必要があることです。また、混乱を招きます。ディスクファイル名とNVRAMブートエントリは誤解を招く可能性があり、将来の修復を複雑にする可能性があります。