2025年6月10日

Arch Linux (LVM on LUKS)をTPM2を使って起動させる

奥さんがPCを使うにあたって、パスワード入力だと不便。

せっかくTPM2が使える機種(ThinkPad X13 Gen2)なので使えるようにしてみる。

(テスト運用として、とりあえず使えれば良しとする)

 

1. ブートローダーの変更

ブートローダーをgrub から systemd-bootに変更する。

以下のコマンドでインストールする。

# bootctl install

grubと両存可能だったので、こちらも念の為残しておくことにする。


以下のようにエントリファイルを作成する。

{UUID}の部分はlsblk -fで確認する。 

$ cat /boot/loader/entries/arch.conf

title    Arch Linux
linux    /vmlinuz-linux
initrd    /initramfs-linux.img
options    luks.name={UUID}=cryptroot root=/dev/mapper/System-root rw
 
最後のoptionsの行は、busybox initを使うかsystemd initを使うかでフォーマットが変わるらしい。おそらくsystemd initじゃない場合は以下になる。
(systemd-bootを使ってsystemd initじゃないということがあるのかわからないけど)
options cryptdevice=UUID={UUID}:cryptroot root=/dev/mapper/System-root rw
 
 
2. mkinitcpio フックの変更
systemd initベースにするため、/etc/mkinitcpio.confのフックを変える
 
・before
HOOKS=(base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck)
 
・after
HOOKS=(base systemd autodetect modconf sd-vconsole block sd-encrypt lvm2 filesystems keyboard fsck)
 
変更点
udev -> systemd
sd-vconsoleの追加(英字キーマップなので不要かも)
encrypt -> sd-encrypt
 
編集後は、
# mkinitcpio -p linux
しておく
 
 
3. TPM2デバイスを登録する
systemd-cryptenrollを使って、LUKSボリュームにTPM2デバイスを追加する。
あらかじめ、tpm2-tssパッケージを入れておく
 
# systemd-cryptenroll --tpm2-device=auto /dev/sdX 
TPM2デバイスが1つであれば、上記で完了するはず
 
# cryptsetup luksDump /dev/sdX
これで確認できる 
 

上記によって、通電してそのままLightDMまで到達することを確認した。
UEFI設定でgrubから起動すると、従来通りパスワードを求められる。
 
実際は色々試行錯誤したので、別の設定が効いている可能性も否定はできない。 
(一応、Clevisを始めとするその他の設定やパッケージはすべて消したつもりではあるが)