暗号化されたluksルートパーティション(暗号化されていないブート)とパスフレーズを備えたarch linuxを使用しています。
これで、USBに書き込まれたキーファイル(3072バイト)ができました-次のように貼り付けてください:
sudo dd if=tempKeyFile.bin of=/dev/sdd bs=512 seek=1 count=6
追加パスとしても設定
sudo cryptsetup luksAddKey /dev/sdb6 tempKeyFile.bin
手動でパーティションを開くと:
sudo cryptsetup --key-file tempKeyFile.bin open /dev/sdb6 luks_root
すべてが機能し、パーティションがマップされ、マウントできるようになります。
これで、grub.cfg
のkernel-parameter-lineが作成されました。 次のようになります:
linux /vmlinuz-linux root=UUID=$UUID_OF_luks_root$ rw cryptdevice=UUID=$UUID_OF_sdb6$:luks_root cryptkey=/dev/sdd:1:6
しかし、起動すると、次のエラーが発生します:
No key available with this passphrase.
Invalid Keyfile. Reverting to passphrase.
私はすでに1ではなくオフセット2を試しましたが、同じ結果になりました。キーファイルが見つからない/読み取れなかったとは言われていないことに気づきましたが、正しくありませんでした。
luksキーファイルを保存するこの方法に関するドキュメントはほとんどないようです。 Arch-wikiはそれについて言及していますが、ごく簡単に言えば、私は準拠しているように見えるので、それは可能であるはずだと思います。
私のmkinitcpio.conf
で モジュール、バイナリ、ファイルが空で、次のように設定しました:
HOOKS=(base udev autodetect keyboard modconf block encrypt filesystems fsck)
したがって、ブロックは暗号化の直前です。
ここでの問題は何ですか?
承認された回答:
ArchLinux暗号化フックから(/lib/initcpio/hooks/encrypt
):
*)
# Read raw data from the block device
# ckarg1 is numeric: ckarg1=offset, ckarg2=length
dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
;;
したがって、rawブロックデバイスからのキーの読み取りをサポートしますが、(デフォルトの512ではなく)1のブロックサイズを使用するため、機能させるには値に512を掛ける必要があります。
したがって、cryptkey=/dev/sdd:1:6
の代わりに cryptkey=/dev/sdd:512:3072
を試してください 。