grub
(ブートホールセキュリティの問題を解決するために)再インストールする必要があります。間違いをしたくなかったし、慣れていなかったので、自分のコンピュータに現在のバージョンをインストールするためのコマンドを見つけるgrub
方法があるかどうか自分に尋ねました。grub-install
grub
ご協力ありがとうございます。
環境:Grub 2、Manjaro(Arch Linux)、EFIブート
答え1
ルートとして実行しますefibootmgr -v
。最初の行はBootCurrent: NNNN
4桁の16進数のNNNNです。
その「BootNNNN」行を見つけます。次のように見えます。
BootNNNN* Manjaro HD(X,GPT,11111111-2222-3333-4444-555555555555,0x800,0x82000)/File(\...\something.efi)
NNNN
は最初の行の数であり、Manjaro
人間が読める実行項目の説明文字列です(何でも可能)。X
UEFIファームウェアによって検出されたディスクのシリアル番号。11111111-2222-3333-4444-555555555555
ブートローダがインストールされているEFIシステムパーティションのPARTUUID。\...\something.efi
使用するブートローダファイルを識別するEFIシステムパーティションのWindowsスタイルパス名。 GRUB + Secure Bootの場合、通常はSecure Boot shimブートローダを参照して、同じディレクトリに指定されたファイルをshimx64.efi
ロードします。shim.efi
grubx64.efi
EFIシステムパーティションは/boot/efi
、/boot
またはまったくマウントされないことがあります。他のディストリビューションはここで他のタスクを実行します。インストールされている場合は、そのファイルの長さを次に識別されたブートローダパスのファイルの長さと/boot/efi
実行して比較します。一致する場合は、代替ブートローダも更新する必要があることがわかります。 (この点を念頭に置いてください。これについては後で詳しく説明します。)ls -l /boot/efi/EFI/BOOT/BOOTX64.efi
efibootmgr -v
PARTUUIDがわかったら、EFIシステムパーティション(ESP)に対応するLinuxデバイス名を使用またはblkid
識別できます。lsblk -o +PARTUUID
これで、コマンドを再構築するために必要なすべての部分が準備されましたgrub-install
。
しかし、セキュアブートを使用するときにシステムのNVRAMに登録された最初の「ブートローダ」は、実際にはGRUBではなくセキュアブートシムです。あなたはその事実を変えたくありません。
--no-nvram
したがって、NVRAMブート変数の変更を防ぐためにこのオプションを使用できます。したがって、GRUBを再インストールするコマンドは次のようになります。
grub-install --no-nvram /dev/<the disk device corresponding to your ESP partition>
GRUBが現在\EFI\BOOT\BOOTX64.efi
ESPの代替ブートローダパスにインストールされている場合は、--force-extra-removable
このオプションをコマンドに追加してgrub-install
このオプションも更新する必要があります。
Secure Boot shim ブートローダを使用している場合は、ESP で shim を更新することも重要です。システムを再起動する前に、GRUBとESPのシムが十分に最新のタイムスタンプを持っていることを確認してください。 2020年7月28日以降は何でもいいでしょう。 shimパッケージがESPのshimファイルを自動的に更新しない場合は、パッケージのインストールプロセスで更新されたshimを見つけて、ESPの以前のshimの上にコピーできます。
セキュアブートとGRUBを使用する場合、ESPの一般的なレイアウトは次のとおりです。
<ESP mountpoint>/EFI/<name of distro>/grubx64.efi
=実際のGRUB<ESP mountpoint>/EFI/<name of distro>/shimx64.efi
=安全始動ガスケット<ESP mountpoint>/EFI/BOOT/BOOTX64.efi
= shimのバックアップブートコピー<ESP mountpoint>/EFI/BOOT/grubx64.efi
= GRUBの代替ブートコピー
コンポーネントへのパスは<name of distro>
通常デフォルトブートローダと見なされますが、UEFIファームウェアアップデート(「BIOS」とも呼ばれる)など、システムが何らかの理由でNVRAM設定を「忘れた」場合は、代替コピーが便利です。できます。 。 「設定」)を選択して工場出荷時の設定に戻します。
答え2
この脆弱性を解決するために GRUB を再インストールする必要はありません。パッケージを更新するだけで十分です。 GRUBが唯一のブートローダの場合は、アップデートを希望する場合があります/boot/efi/EFI/Boot/BOOTX64.EFI
。 grub-installはこれを行いません。
grub-install
UEFI対応デバイスは、実際には不要になったレガシーMBRシステムでも機能します。
詳細については、/boot/efi/EFIでgrubファイルの日付を確認してください。ファイルがどこにインストールされているかわからないので、このコマンドを実行して出力を公開してください。
find /boot \( -iname grubx64.efi -o -iname 'shim*.efi' \) -exec ls -l '{}' \;