grub-install は正しいモジュールで EFI バイナリを生成しません。

grub-install は正しいモジュールで EFI バイナリを生成しません。

KDE Neonシステムでフルディスク暗号化を設定しようとしています(もちろん次のようになります)。アーチウィキガイド このトピックについて)。設定に関するいくつかの関連情報:

  • システムには2つのトップレベルボリュームがあります。
    • ESPと同様に、EFIシステムパーティション
    • を含むシステム全体をホストするためにLVMがネストされたLUKS2ボリューム/boot
  • システムは、限られたLUKS2サポートを含むGRUB 2.06を使用します。 LUKS2ボリュームは、このGRUBバージョンと互換性があるように設定されています。
  • セキュアブートは現在無効になっていますが、後で有効にすることができます。

次のガイドラインによれば、基本的に期待どおりに動作するシステムがあります。 GRUBはドライブパスワードを要求し、正しいパスワードが入力されたら起動順序を完了し、オペレーティングシステムをロードして利用可能なグラフィカルセッションで起動します。

私の唯一の問題は、実行時にgrub-install(ユーザーが手動でまたはaptGRUBアップデートをインストールしたときに自動的に)この設定をサポートするために作成したGRUB手動EFIバイナリが、次のことを行うEFIバイナリで上書きされることです。サポートされています(具体的には、上記のリンクの後者のArch Wikiの記事で述べたように、モジュールはありませんluks2)。正しいGRUBバイナリを再ビルドしてインストールするスクリプトを持つことができ、実際にはありますが、grub-install最初はこのバイナリを正しくビルドしたいと思います。 ESPに格納されているEFIバイナリを制御するために使用できる一種のフックはありますか?

答え1

以下を使用して、dpkg-divertパッケージマネージャにパッケージをgrub-install非標準の場所に移動するように指示できます。

dpkg-divert --local --rename --add /usr/sbin/grub-install

grub-installこれはに移動され/usr/sbin/grub-install.divert、パッケージマネージャがGRUBを更新するたびに、更新されたファイルが変更された場所に配置されます。これはラッパースクリプトを/usr/sbin/grub-install

grub-installカスタムオプションを使用して呼び出しを行う必要があると仮定すると、--modules=ラッパースクリプトは次のようになります。

#!/bin/sh
/usr/sbin/grub-install.divert --modules=<your custom set of modules here> "$@"

grub-installパッケージが途中で更新されたときにカスタムオプション(またはあなたのケースに必要なもの)を自動化に注入することを可能にするパッケージ構成設定の追加を提案するために、「ウィッシュリスト」優先順位のバグレポートを送信することもできます。

これが複雑すぎると思われる場合は、パッケージ構成オプションを使用してgrub-installパッケージ更新の自動実行を無効にすることも代替手段です。 automatic の動作を修正する debconf オプションgrub2/force_efi_extra_removable(default=false) および (default=true) が既にあるので先例があります。grub2/update_nvramgrub-install

関連情報