web-dev-qa-db-ja.com

プレリリースのLinuxカーネルをSecureBoot(Fedora 26)で動作させる方法

Fedora 26を実行していますが、サスペンドして作業を再開するには、Rawhideカーネル(4.13.rc-1以降)を使用する必要があります( カーネルの問題を参照 )。

これらの手順 を使用して、Rawhideカーネル(4.13.rc-4)を正常にインストールしました。残念ながら、そのページに記載されているように、これらのカーネルは、SecureBootを無効にしないとシームレスに機能しません。

残念ながら、BIOSのバグのため、SecureBootを無効にできません( Dellフォーラムを参照 )。

起動しようとすると、ブートローダーは次のように表示します。

...無効な署名があります。最初にカーネルをロードする必要があります。

SecureBootを有効にしてRawhide /プレリリースカーネルを使用するにはどうすればよいですか?

1
Jason O'Neil

この質問は、FedoraのQ&Aサイトで回答されました。

https://ask.fedoraproject.org/en/question/109564/how-to-get-rawhide-kernel-to-work-with-secureboot-in-f26/?answer=109840#post-id -10984

基本的に:

  • Rootとして、mokutil --disable-validationを実行し、パスワードを設定します。
  • 再起動すると、grubが読み込まれると、MOKutilを実行するかどうかを尋ねられます。ユーティリティに入ったことを確認するために、10秒以内にキーを押す必要がありました。
  • ユーティリティに入ると、「MOK構成の変更」を選択し、パスワードを入力して、SecureBootを無効にすることを選択しました。これはBIOSSecureBootを無効にしないことに注意してください-GRUBが署名されていないカーネルをロードすることを許可するだけです(GRUBはまだ署名されていると思います)。
3
Jason O'Neil

Shim/mokutilを介してセキュアブートを無効にすることを含む解決策を見つけたと思います。ただし、別の方法があります。カーネルに自分で署名することができます。

大まかに言えば、手順は次のとおりです。

  1. 独自のセキュアブートキーを生成します。これは、opensslプログラムを使用して行います。公開鍵DERファイルをEFIシステムパーティション(ESP)にコピーする必要があります。ESPは通常/boot/efiにマウントされています。
  2. カーネルファイルに署名します。これを行うには、sbsignというツールを使用します。 IIRC、Fedoraは、私が最後にチェックした、使用がより複雑な別のプログラムを支持しています。現在のカーネルの名前を変更して署名済みバージョンをその場所に配置するか、新しいカーネルの新しいGRUBエントリを作成する必要があります。
  3. EFIを再起動し、MokManagerを起動します。私自身のrEFIndのようないくつかのブートローダーは、MokManagerに手動で入る方法を提供します。そうでない場合は、それを機能させるためにいくつかのフープを飛び越える必要があるかもしれません。 MokManagerに入ったら、ESPにコピーしたDERファイルを見つけて、MOKリストに追加する必要があります。
  4. この時点で、再起動すると、セキュアブートがアクティブな場合でも、新しく署名されたカーネルを起動できるはずです。

この手順については、私のこのページ で詳しく説明しています。 面倒で、セキュアブートを無効にするのに比べて努力する価値がない場合があります。繰り返しますが、多分そうです。 Secure Bootをアクティブにして起動を続けるには、これらのフープをジャンプするかどうかを判断する必要があります。

REFIndをインストールすると、セキュアブートキーのセットが生成され、それらが/etc/refind.d/keys/refind_local.*として保存される場合があることにも注意してください。 (refind-installスクリプトは、必要なユーティリティが利用できる場合はこれを実行しますが、利用できない場合は実行しません。)したがって、rEFIndをインストールしたことがある場合は、手順1がすでに実行されている可能性があります。その後、ローカルのrEFIndキーを使用してカーネルに署名できます。

この手順の変形もあります。 ShimとMokManagerの最近のバージョンでは、バイナリのハッシュを認証する方法として登録できます。これは、署名されていないバイナリでも機能します。したがって、カーネルのハッシュを登録して、カーネルを起動できるようにすることができます。これに伴う問題は、起動するすべての署名されていないカーネルのハッシュを登録する必要があることです。動作するカーネルが1つだけで、それを更新する予定がない場合、これは大したことではないかもしれません。ただし、数週間ごとにカーネルを更新すると、新しいハッシュを永久に登録することになります。これは面倒であり、限られたNVRAMスペースを大量に消費します。したがって、このアプローチは、場合によっては少し簡単ですが、他の場合にははるかに悪くなります。

1
Rod Smith