奥さんが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を始めとするその他の設定やパッケージはすべて消したつもりではあるが)