クイックスタート:5分でUKIに移行する
従来の方式ではなく、FedoraでUnified Kernel Image (UKI) ファイルを自動生成したいですか?私は実際にFedora 39と40で導入しましたが、システムは非常に安定して動作しています。設定はわずか数ステップで完了します。
まず、ukify と補助ツールをインストールします:
sudo dnf install systemd-ukify binutils
次に、UKIファイルを出力するように kernel-install に指示する必要があります。/etc/kernel/install.conf ファイルを開いてください:
sudo nano /etc/kernel/install.conf
以下の設定行を追加します:
layout=uki
確認のために、現在のカーネルを再インストールしてみましょう。EFIパーティションに .efi ファイルが表示されるはずです:
sudo kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz
/boot/efi/EFI/Linux/ ディレクトリを確認してください。そこに .efi 拡張子のファイルがあれば、成功です。これ以降、dnf update を実行するたびに、Fedoraが自動的に処理を行ってくれます。
なぜUKIはセキュリティにとって「理想的」なのか?
午前2時に grub rescue 画面を前にして固まったことはありませんか?私は以前、パーティションのサイズ変更後に「Initrd not found」エラーが発生し、古いLinuxブートアーキテクチャがいかにバラバラであるかを痛感しました。
通常、GRUBはカーネルを読み込み、次にInitrdを読み込み、コマンドラインをロードします。これら3つのコンポーネントは別々に存在しています。root権限を持つ攻撃者は /etc/default/grub を修正し、init=/bin/bash を追加することで、簡単にパスワードをバイパスできてしまいます。
UKI (Unified Kernel Image) はこの状況を完全に変えます。カーネル、Initrd、コマンドライン、そしてブートロゴを 単一のEFI実行ファイル (.efi) にまとめます。
すべてが1つの「パッケージ」に収まることで、Secure Bootを使用してデジタル署名を行うことができます。コマンドラインが1ビットでも異なれば、署名は無効になります。コンピュータは即座に起動を拒否し、あらゆる不正な介入を阻止します。
実践的な設定:よくある「落とし穴」を避ける
Fedoraをメインのマシンとして2年間使用してきて、注意を払わないとシステムが「死んで」しまう可能性のある、いくつかの細かい点に気づきました。
1. EFIパーティション:容量不足に注意
これは最もよくある間違いです。Fedoraのデフォルトの /boot/efi パーティションは通常200MBから600MB程度です。一方で、UKIファイルは通常80MB〜120MBほどあります(ドライバの量によります)。
3つのバージョンのカーネルを保存すると、容量はすぐに使い果たされます。私のアドバイスは、EFIパーティションを約1GBにすることです。ハードディスクの再パーティションができない場合は、/etc/dnf/dnf.conf の installonly_limit=2 を修正して、古いカーネルの数を制限してください。
2. コマンドラインのカスタマイズ
ブートパラメータは .efi ファイル内に「固定」されているため、GRUBで ‘e’ キーを押して一時的に修正することはできません。nvidia-drm.modeset=1 などのオプションを追加するには、ukify 用の設定ファイルを作成する必要があります。
/etc/kernel/uki-conf.conf ファイルを作成します:
[UKI]
Cmdline=root=UUID=xxxx-xxxx ro rhgb quiet
lsblk -f コマンドを実行してルートパーティションのパラメータを取得し、正しいUUIDに置き換えるのを忘れないでください。
応用:個人キーでUKIを自己署名する
UKIが真の力を発揮するのは、Secure Bootと組み合わせた時です。Microsoftのキーに依存する代わりに、ハードウェアの完全な制御権を握るために独自のキーを作成することをお勧めします。
セキュリティキーペア(秘密鍵/公開鍵)を作成します:
openssl req -new -x509 -newkey rsa:2048 -nodes -days 3650 -outform DER -keyout MOK.key -out MOK.der
次に、ビルドするたびに自動的に署名されるよう /etc/kernel/install.conf を設定します:
layout=uki
uki_generator=ukify
署名操作を行うために sbsigntools をインストールします:
sudo dnf install sbsigntools
最後に、mokutil を介してキーをBIOSにロードします:
sudo mokutil --import MOK.der
再起動後、青い画面(MOK Manager)が表示されます。「Enroll MOK」を選択し、作成したパスワードを入力します。それ以降、システムはあなたが自ら署名したカーネルのみを信頼するようになります。
トラブルシューティングの経験
開発チームのUKI導入をサポートする中で、いくつかの重要な注意点をまとめました:
- systemd-bootを優先する: UKIはsystemd-bootで最もよく動作します。GRUBを使用する場合は、従来の
linuxコマンドではなく、chainloaderコマンドを使用して直接.efiファイルを指すようにしてください。 - Initrdを最適化する: UKIファイルが150MBを超える場合は、dracutで
hostonlyモードを有効にしてください。これにより、不要なドライバが削除され、マシンが実際に必要とするものだけが保持されます。 - デバッグ: ブートに失敗した場合は、UKIをビルドする際に
quietパラメータを削除してください。その時画面に流れるログは、どんなドキュメントよりも価値があります。
UKIへの移行は、単に新しい技術を追いかけることではありません。これは現代的な考え方です。カーネルを統合された一つのブロックにすることで、管理が容易になり、侵入が極めて困難になります。機密データを含むラップトップでFedoraを使用しているユーザーにとって、UKIは不可欠なセキュリティの壁となります。

