grubのインストールにはどのコマンドが使用されますか?

grubのインストールにはどのコマンドが使用されますか?

grub(ブートホールセキュリティの問題を解決するために)再インストールする必要があります。間違いをしたくなかったし、慣れていなかったので、自分のコンピュータに現在のバージョンをインストールするためのコマンドを見つけるgrub方法があるかどうか自分に尋ねました。grub-installgrub

ご協力ありがとうございます。

環境:Grub 2、Manjaro(Arch Linux)、EFIブート

答え1

ルートとして実行しますefibootmgr -v。最初の行はBootCurrent: NNNN4桁の16進数のNNNNです。

その「BootNNNN」行を見つけます。次のように見えます。

BootNNNN* Manjaro        HD(X,GPT,11111111-2222-3333-4444-555555555555,0x800,0x82000)/File(\...\something.efi)
  • NNNNは最初の行の数であり、
  • Manjaro人間が読める実行項目の説明文字列です(何でも可能)。
  • XUEFIファームウェアによって検出されたディスクのシリアル番号。
  • 11111111-2222-3333-4444-555555555555ブートローダがインストールされているEFIシステムパーティションのPARTUUID。
  • \...\something.efi使用するブートローダファイルを識別するEFIシステムパーティションのWindowsスタイルパス名。 GRUB + Secure Bootの場合、通常はSecure Boot shimブートローダを参照して、同じディレクトリに指定されたファイルをshimx64.efiロードします。shim.efigrubx64.efi

EFIシステムパーティションは/boot/efi/bootまたはまったくマウントされないことがあります。他のディストリビューションはここで他のタスクを実行します。インストールされている場合は、そのファイルの長さを次に識別されたブートローダパスのファイルの長さと/boot/efi実行して比較します。一致する場合は、代替ブートローダも更新する必要があることがわかります。 (この点を念頭に置いてください。これについては後で詳しく説明します。)ls -l /boot/efi/EFI/BOOT/BOOTX64.efiefibootmgr -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.efiESPの代替ブートローダパスにインストールされている場合は、--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-installUEFI対応デバイスは、実際には不要になったレガシーMBRシステムでも機能します。

詳細については、/boot/efi/EFIでgrubファイルの日付を確認してください。ファイルがどこにインストールされているかわからないので、このコマンドを実行して出力を公開してください。

find /boot \( -iname grubx64.efi -o -iname 'shim*.efi' \)  -exec ls -l '{}' \;

関連情報