やるきなし

2013/06/08 16:54 / dm-crypt 関連メモ (cryptroot)

/ 自体を暗号化してしまう場合の話.この場合,key を /boot/luks_key に置いて(/boot は暗号化しない),

[/etc/crypttab]
hoge_crypt UUID=(略) /boot/luks_key luks

だと,key file が initrd から見えず,/ を mount できない状態になる.

を想定する場合,/boot/luks_key に key を置くことにすると,

[/etc/crypttab]
sda5_crypt UUID=(sda5 uuid) /dev/disk/by-uuid/(sda1 uuid):luks_key luks,keyscript=/lib/cryptsetup/scripts/passdev

という設定で /dev/sda5 の luksOpen が initrd の段階で可能になる.passdev に /dev/disk/by-uuid/(sda1 uuid):luks_key という引数が渡され,passdev は /dev/disk/by-uuid/(sda1 uuid):luks_key の中身を返す(?)らしい.

あとは

% sudo update-initramfs -u -k all

で initrd の中の conf/conf.d/cryptroot が

[conf/conf.d/cryptroot]
target=sda5_crypt,source=UUID=(sda5 uuid),key=/dev/disk/by-uuid/(sda1 uuid):luks_key,rootdev,lvm=hoge-root,keyscript=/lib/cryptsetup/scripts/passdev
target=sda5_crypt,source=UUID=(sda5 uuid),key=/dev/disk/by-uuid/(sda1 uuid):luks_key,lvm=hoge-swap_1,keyscript=/lib/cryptsetup/scripts/passdev

という感じで適切に生成され,あとは起動時に initrd 中の scripts/local-top/cryptroot が適切に処理してくれる.

追記(2017/4/18)

逆に / として利用しない crypt device を起動時に自動 open するには passdev を使ってはいけない(使えない).sda5_crypt に / があるとすると,

[/etc/crypttab]
sda5_crypt UUID=(sda5 uuid) /dev/disk/by-uuid/(sda1 uuid):luks_key luks,keyscript=/lib/cryptsetup/scripts/passdev
sda6_crypt UUID=(sda6 uuid) /dev/disk/by-uuid/(sda1 uuid):luks_key luks,keyscript=/lib/cryptsetup/scripts/passdev

これだと sda6_crypt が open されない.以下のようにする必要がある.

[/etc/crypttab]
sda5_crypt UUID=(sda5 uuid) /dev/disk/by-uuid/(sda1 uuid):luks_key luks,keyscript=/lib/cryptsetup/scripts/passdev
sda6_crypt UUID=(sda6 uuid) /boot/luks_key luks

Related articles