達成したいこと:
- 起動時に 1 回だけパスワードの入力を求められます。
- ディレクトリ内のキーファイルを使用する他の (ルート以外の) パーティション
/root/
。
これまでに達成したこと:
- (あ)システムは起動していますが、パスワードを 2 回要求します ( 用に 1 回
/
、 用に 1 回/usr
)。 - または:(バ)システムが起動せず、パスワードを一度要求しましたが、LVM グループ/ボリュームが見つからないためマウントを拒否しました
/usr
。シェルにドロップされ、/root/.keyfile
使用できないことがわかります。/
まだマウントされていません。
構成
ファイル:/etc/crypttab
ケースA
sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 none luks
ケースB
sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 /root/.keyfile luks
まったくうまくいかなかったこと
- 必要なドライブを手動で luksOpen するためのスクリプト ファイルを作成します。 内のものはが使用可能になる
/etc/initramfs-tools/scripts/local-premount
前に呼び出されます/
が、 内のものは/etc/initramfs-tools/scripts/local-bottom
が開こうとした後に呼び出されます/usr
(したがって、遅すぎます)。
答え1
の上このウィキページ(ドイツ語ですが、残念ながら英語では同等のものが見つかりませんでした)スクリプトを使用して、/lib/cryptsetup/scripts/decrypt_derived
開かれたルートデバイスからキーを生成することをお勧めします。重要な部分を翻訳しようとしますが、ない手順を試しました。
キーを追加するには、(ルートとして)実行する必要があります。
mkdir /mnt/ram && mount -t ramfs -o size=1m ramfs /mnt/ram && chmod 600 /mnt/ram
/lib/cryptsetup/scripts/decrypt_derived <root_dev> > /mnt/ram/tmp.key && cryptsetup luksAddKey <usr_dev> /mnt/ram/tmp.key && rm /mnt/ram/tmp.key
umount /mnt/ram && rmdir /mnt/ram
ここで、<root_name>
は に表示されているルート デバイスの名前/dev/mapper
(おそらくsdc3_crypt
) であり、は 上にある<usr_dev>
デバイス/usr
(おそらく/dev/md0
) です。
crypttabの行は
<usr_name> UUID=<UUID> <root_name> luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived
走ることを忘れない
update-initramfs -u -k all
crypttab を変更した後。
usr デバイスには「通常の」パスワードを保持する必要があります。そうしないと、ルート デバイスが破損した場合にデバイスを開くことができなくなります。