はじめに
皆さんは「Ubuntuとか他のディストロはセキュアブートに標準で対応していたりするのに、CachyOS(Arch Linux)だと標準で対応していない!!」と嘆いたことはありませんか?セキュアブートが使えないとPCゲームのアンチチートに弾かれてプレイできなかったりして困りますよね。そこで、CachyOSでセキュアブートを有効化する手順をまとめました。
環境(参考)
.-------------------------: cadestoria@tofu-gaming-a14
.+=========================. --------------------------
:++===++==================- :++- OS: CachyOS x86_64
:*++====+++++=============- .==: Host: ASUS TUF Gaming A14 FA401UV_FA401UV (1.0)
-*+++=====+***++==========: Kernel: Linux 7.1.1-2-cachyos
=*++++========------------: Uptime: 21 mins
=*+++++=====- ... Packages: 1256 (pacman)
.+*+++++=-===: .=+++=: Shell: fish 4.7.1
:++++=====-==: -*****+ Display (NE140QDM-NX7): 2560x1600 @ 1.45x in 14", 1]
:++========-=. .=+**+. DE: KDE Plasma 6.7.0
.+==========-. . WM: KWin (Wayland)
:+++++++====- .--==-. WM Theme: Breeze
:++==========. :+++++++: Theme: Breeze (Dark) [Qt], Breeze-Dark [GTK2], Bree]
.-===========. =*****+*+ Icons: Papirus-Dark [Qt], Papirus-Dark [GTK2/3/4]
.-===========: .+*****+: Font: Noto Sans (10pt) [Qt], Noto Sans (10pt) [GTK2]
-=======++++:::::::::::::::::::::::::-: .---: Cursor: breeze (24px)
:======++++====+++******************=. Terminal: konsole 26.4.2
:=====+++==========++++++++++++++*- CPU: AMD Ryzen 7 8845HS (16) @ 5.14 GHz
.====++==============++++++++++*- GPU 1: AMD Radeon 780M Graphics [Integrated]
.===+==================+++++++: GPU 2: NVIDIA GeForce RTX 4060 Max-Q / Mobile [Disc]
.-=======================+++: Memory: 5.07 GiB / 30.63 GiB (17%)
.......................... Swap: 1.61 MiB / 30.63 GiB (0%)
Disk (/): 20.09 GiB / 238.02 GiB (8%) - btrfs
Local IP (wlan0): ███.██.██.███/23
Battery (GA40347): 96% [Discharging]
Locale: ja_JP.UTF-8
セキュアブートに対応させる手順
Cachy OSのインストールやセットアップの方法については割愛します。
この記事は、CachyOS公式のwikiを参考に書きました。また、ブートローダーにGRUBを使用しているした前提で書いています。他のブートローダーを使っている場合は一部操作の異なる箇所があるため、公式のwikiを見てください。
この記事に書かれた操作を行うことにより、データやファームウェアに損害を与える可能性があります。
すべての操作は自己責任でお願いします。
Windows等とデュアルブートしている場合、Windowsを起動する際にBitLockerの回復キーを求められることがあります。該当する場合、事前にBitLockerの回復キーをメモしておくことを強くおすすめします。
準備
1. GRUBのセキュアブートサポートを有効化
次のコマンドを実行してGRUBのセキュアブートのサポートを有効化します。
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=cachyos --modules="tpm" --disable-shim-lock
2. セットアップモードの有効化
UEFIでセットアップモードを有効にします。セットアップモードは
以下のコマンドでUEFIに飛ぶこともできます。
systemctl reboot --firmware-setup
セットアップモードの有効化方法は使用しているPCメーカーによって異なります。多くの場合、セットアップモードの項目を選択するか既存のキーをリセットすることで有効化できます。有効化できたら変更を保存して再起動しましょう。
sbctlを使ってキーを登録する
sbctlというセキュアブートキーマネージャーを使ってセキュアブートを設定していきます。私の環境の場合sbctlがインストールされていなかったため、以下のコマンドを実行してインストールします。
sudo pacman -S sbctl
1. セットアップモードが有効になっているかを確認する
以下のコマンドを実行して、セットアップモードが有効になっているかを確認します。
sudo sbctl status
出力に以下のような結果が含まれていたらセットアップモードが正常に有効化されています。
Installed: ✘ sbctl is not installed
Setup Mode: ✘ Enabled
Secure Boot ✘ Disabled
2. カスタムセキュアブートキーを作成する
以下のコマンドを実行してセキュアブートキーを作成します。
sudo sbctl create-keys
出力に以下のような結果が含まれていたら成功です。
Created Owner UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Creating secure boot keys...✔
Secure boot keys created!
3. Microsoftのキーとファームウェアの組み込みキーを使用してキーを登録する
以下のコマンドを実行してキーを登録します。
sudo sbctl enroll-keys --microsoft --firmware-builtin
ASUS、Gigabyteなどの一部のマザーボードでは--firmware-builtinを使用すると重複して登録されることがあります。ASUSやGigabyteのマザーボードを使用している場合は--firmware-buildinを削除してコマンドを実行する必要があるようです。
例:
sudo sbctl enroll-keys --microsoft
出力に以下のような結果が含まれていたら成功です。
Created Owner UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Creating secure boot keys...✔
Secure boot keys created!
ファイルに署名する
wikiには記載がありませんでしたが、私の環境の場合以下のファイルに署名しないとセキュアブートに失敗したためファイルへ署名していきます。
1. 署名が必要なファイルを確認する
以下のコマンドを実行して署名が必要なファイルを確認します。
sudo sbctl verify
通常、GRUB環境では以下のファイルに署名が必要です。
/boot/efi/EFI/boot/bootx64.efi
/boot/efi/EFI/cachyos/grubx64.efi
/boot/vmlinuz-linux-cachyos
私の環境の場合、コマンドを実行しても/boot/vmlinuz-linux-cachyosは表示されませんでしたが、署名が必要でした。
2. ファイルに署名する。
以下のコマンドを実行してファイルに署名していきます。-sをつけることによって、今後アップデートされても自動的に署名されます。
sudo sbctl sign -s 署名するファイル
UEFIに戻ってセキュアブートを有効化する
再び以下のコマンドを実行してsbctlのステータスを確認し、キーが登録されていてセットアップモードが無効になっていることを確認します。
sudo sbctl status
以下のように出力されたら大丈夫です。
Installed: ✔ sbctl is installed
Owner GUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Setup Mode: ✔ Disabled
Secure Boot ✘ Disabled
Vendor Keys: microsoft
それでは最後の手順です。
PCを再起動してUEFIを開き、セキュアブートが有効になっているか確認します。有効になっていない場合、手動で有効化します。
お疲れ様でした!
これでセキュアブートの有効化は完了です。
PCを起動して以下のコマンドを再び実行すると
以下のようにセキュアブートが有効化されていることが確認できると思います。
sbctl status
Installed: ✓ sbctl is installed
Owner GUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Setup Mode: ✓ Disabled
Secure Boot: ✓ Enabled
Vendor Keys: microsoft
sbctlの登録をやり直したい場合
sbctlでのセキュアブートの設定をやり直したい場合、BIOSでキーをリセットしてからsbctlのファイルを削除することで、クリーンな状態に戻すことができます。
rm -rf /var/lib/sbctl
おわりに
どうでしたでしょうか。初めての記事だということもあって誤字や表現の分かりづらいところがあるかもしれません。
この記事が誰かの役に立てたら幸いです。