今までずっとインセキュアおじさんでした。
本日、某弊社チャットでFedora 39からsystemd-bootが使えるよっという情報が流れてきました。私はsystemd-bootがgummibootだったころからお世話になっていたので颯爽と会話に参加したのですが、「た◯かさん、セキュアブートどうしてんの?」っと聞かれて「切ってます」と答えるとGRUBはセキュアブートできるんだぜっという情報が・・・
悔しいのでセキュアブートをオンにしていきます。
前提条件
- systemd-bootでブートローダーをセットアップしている方
インセキュアからの脱却
こちらを参考に進めていきます。
Unified Extensible Firmware Interface/セキュアブート - ArchWiki
っといっても今回やることはsbctl
を使用して、鍵の作成から鍵の登録
、署名といった手順だけですので、そこまで大変ではありません。
インストール
ThinkPad T460s以外の環境であれば、こちらを参考にインストールしても大丈夫だと思います。
執筆時点で公開されているバージョンにはバグが存在します。
PRはすでにマージされているのですがリリースがまだされていないのでpacman
やapk
でインストールしてしまうとUEFIに鍵の登録ができないかもしれません。私は登録ができなくて少しハマりました。
バグの内容はこちらです。
簡単に説明すると、sbctlが証明書を生成するときにKeyUsageを設定してしまっているのでUEFIに登録できない状況となっていたようです。PRはKeyUsageを省略するための修正が入っていました。
KeyUsageを設定してしまうと、その用途以外では使用できない(とかでしたっけ?)ので、T460sのUEFIと相性が悪いんでしょうね、きっと。VirtualBoxでセキュアブートをオンにした時は、この問題は起きませんでした。
masterでビルドする場合は以下の手順です。
git clone https://github.com/Foxboron/sbctl.git cd sbctl make make install PREFIX=/usr
PREFIXは好きな位置を指定しても大丈夫ですし、make install
せずにビルドされたバイナリを./sbctl
のように直接実行しても大丈夫です。
セットアップ
※ ここからは自己責任で行なってください。何があっても責任は負いかねます。
BIOSからセキュアブートをDisabled
、Platform ModeをSetup Mode
にします。
以下の作業はroot
で実行します。
- 状態を確認
# sbctl status Installed: ✗ sbctl is not installed Setup Mode: ✗ Enabled Secure Boot: ✗ Disabled Vendor Keys: none
- 鍵の作成
# sbctl create-keys Created Owner UUID hoge-hoge-hoge-hoge-hoge Creating secure boot keys...✓ Secure boot keys created!
- 鍵をファームウェアに登録
# sbctl enroll-keys -m Enrolling keys to EFI variables... With vendor keys from microsoft...✓ Enrolled keys to the EFI variables!
-m
はMicrosoftの鍵も一緒に登録するというオプションです。一部のファームウェアがMicrosoftの鍵で署名されているようで、一緒に登録してあげないとそのファームウェアが実行できないんだとか。Microsoftの鍵を登録しないという方法もあるようですが、何をしようとしているか理解してる人だけ実行してねっと書いてありますね。くわばらくわばら
- 署名する
まずはどの鍵に署名したらいいのか確認してみましょう。
# sbctl verify Verifying file database and EFI images in /boot... ✗ /boot/EFI/BOOT/BOOTX64.EFI is not signed ✗ /boot/EFI/systemd/systemd-bootx64.efi is not signed ✗ /boot/vmlinuz-linux is not signed
3ファイルくらい「署名されてないよ」っと言われたと思います。それぞれ署名します。
# sbctl sign -s /boot/EFI/BOOT/BOOTX64.EFI ✓ Signed /boot/EFI/BOOT/BOOTX64.EFI # sbctl sign -s /boot/EFI/systemd/systemd-bootx64.efi ✓ Signed /boot/EFI/systemd/systemd-bootx64.efi # sbctl sign -s /boot/vmlinuz-linux ✓ Signed /boot/vmlinuz-linux
- 状態を確認
# sbctl status Installed: ✓ sbctl is installed Owner GUID: hoge-hoge-hoge-hoge-hoge Setup Mode: ✓ Disabled Secure Boot: ✗ Disabled Vendor Keys: microsoft
Setup Mode
がDisabled
になりました。これでセットアップは完了です。
セキュアブートをオンにする
# sbctl status Installed: ✓ sbctl is installed Owner GUID: hoge-hoge-hoge-hoge-hoge Setup Mode: ✓ Disabled Secure Boot: ✓ Enabled Vendor Keys: microsoft
Secure BootがEnabledになっていれば成功です。bootctlからも見てみます。
# bootctl status System: Firmware: UEFI 2.40 (Lenovo 0.5424) Firmware Arch: x64 Secure Boot: enabled (user) TPM2 Support: no Boot into FW: supported ...
こちらから見ても大丈夫そうです。
まとめ
セキュアブートの設定は思っていたよりも簡単でした。これで今日から私もセキュアおじさんです。
もし文鎮になってしまったという方は書道の時に半紙を押さえるのに使ってみてください。