web-dev-qa-db-ja.com

ファイルがパスワードで保護されたパーティションにあるキーファイルで保護されたパーティションのロックを解除するにはどうすればよいですか?

(パスフレーズ)暗号化されたパーティションである/ dev/sda5にあるキーファイルを使用して、起動時に/ dev/sdb3を自動的に復号化したいのですが。 「自動的に」とは、「起動時、/ dev/sda5パスフレーズの入力を求められた後」を意味します。

私はDebianストレッチを使用しており、現在次の設定を行っています。

/ etc/crypttab:

sda5_crypt UUID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa none luks
sdb3_crypt UUID=bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb /etc/sdb3_key luks

/ etc/fstab:

/dev/mapper/lv_sda5-lv_rootfs               /               ext4            discard,noatime,nodiratime,errors=remount-ro    0       1
UUID=cccccccc-cccc-cccc-cccc-cccccccccccc   /boot           ext2            noatime,nodiratime                              0       2
/dev/mapper/lv_sdb3-lv_home                 /home           ext4            defaults                                        0       2
/dev/mapper/lv_sdb3-lv_swap                 none            swap            sw                                              0       0

これから、起動時に/ dev/sda5を復号化するためのパスフレーズの入力を求められ、次のメッセージが約30秒間繰り返されます。

警告:lvmetadへの接続に失敗しました。デバイススキャンにフォールバックします。

ボリュームグループ「lv_sdb3」が見つかりません

ボリュームグループlv_sdb3を処理できません

私が最終的に得るまで

デバイスの一時停止/再開を待つのをあきらめました

/ dev/mapper/lv_sda5-lv_rootfs:クリーン、.。

そして、私のDebianは完全に起動し、/ homeとSWAPビーイングは正しくマウントされました。

どうすればそれを正しく達成できますか?

編集

問題はlvmに起因し、/ etc/crypttab、/ etc/fstabとは関係がないようです。/etc/crypttabおよび/ etc/fstabからsdb3_cryptエントリを削除しても、エラーメッセージループは変更されません。 (私はupdate-initramfsupdate-grubで、その変更を/ boot/initrdで再実行します)

ここで、initramfsがlv_sdb3ボリュームグループが存在することをどのように認識できるのか疑問に思います。 /etc/lvm/lvm.confにuse_lvmetad = 0を設定し、/ dev/sdb3 LUKSパーティションを開かなかったため、lv_sda5ボリュームグループのみを検出するpvscan --cacheを実行しました。では、initramfsはlv_sdb3ボリュームグループに関する/ deprecated /情報をどこで読み取りますか?

1
omega

/ boot/initrdをzcatでダンプすると、lv_sdb3がRESUME=/dev/mapper/lv_sdb3-lv_swapの形式でクリアASCIIで一度表示されます。

これは、/ etc/initramfs-tools/conf.d/resumeをバックアップディレクトリに移動してから、update-initramfs -u -k allを移動して/ boot/initrdを書き換えることで削除できます。これで、ブートプロセスはエラーなしで、時間のかかるループなしで実行されます。

0
omega