私はDebian Jessieを使用しています。ハードドライブが2つあり、各パーティションが2つのハードドライブ(RAIDではなく)に分散されています。それらはすべてLVMを使用して個別にLUKS暗号化を実行します。私の/boot
パーティションは、2つのハードドライブに含まれていない唯一のパーティションです。代わりに、暗号化されていないUSBスティックにあります。どちらのハードドライブも/boot
パーティションからロック解除する必要がありますmyKeyfile.key
(ただしそうではありません)。私の目標は、USBスティックなしでシステムを起動したときにディスクに完全にアクセスできない、または役に立たないようにすることです。
これを達成するために私がしたことは次のとおりです。使ったこの回答StackOverflowをガイドとして使用してください。
/etc/default/cryptdisks
# Mountpoints to mount, before cryptsetup is invoked at initscripts. Takes
# mountpoints which are configured in /etc/fstab/ as arguments. Separate
# mountpoints by space.
# original: CRYPTDISKS_MOUNT=""
CRYPTDISKS_MOUNT=/boot
コメントに基づいてで述べたように、マウントポイント名が正しいことを確認してくださいfstab
。完全性のために、関連する行は次のとおりです。
/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=<usb uuid> /boot ext4 defaults 0 2
/etc/crypttab
sda1_crypt UUID=<disk uuid> /boot/myKeyfile.key luks,keyscript=/bin/passphrase-from-usb
sda2_crypt UUID=<disk uuid> /boot/myKeyfile.key luks,keyscript=/bin/passphrase-from-usb
USBドライブのUUID(代わりに)を指定できますが、興味のあるファイルを/boot/myKeyfile.key
指定する方法がわかりません。myKeyfile.key
/etc/initramfs-tools/hooks/passphrase-from-usb
#!/bin/sh
PREREQ=""
prereqs() {
echo "$PREREQ"
}
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
. "${CONFDIR}/initramfs.conf"
. /usr/share/initramfs-tools/hook-functions
copy_exec /bin/passphrase-from-usb /bin
/bin/passphrase-from-usb
#!/bin/sh
set -e
if ! [ -e "$CRYPTTAB_KEY" ]; then
echo "Waiting for USB stick to be recognized..." >&2
sleep 5
fi
if [ -e "$CRYPTTAB_KEY" ]; then
echo "Unlocking the disk $CRYPTTAB_SOURCE ($CRYPTTAB_NAME) from USB key" >&2
echo "Using $CRYPTTAB_KEY as the key source" >&2
dd if="$CRYPTTAB_KEY" bs=1 count=256 2>/dev/null
exit
else
echo "Can't find $CRYPTTAB_KEY; USB stick not present." >&2
fi
/lib/cryptsetup/askpass "Manually unlock the disk ($CRYPTTAB_NAME)\nEnter passphrase: "
起動時に受け取るウェルカムメッセージは次のとおりです。
Loading, please wait...
Volume group "vg-root" not found
Skipping volume group vg-root
Unable to find LVM volume vg-root/lv-root
Volume group "vg-other" not found
Skipping volume group vg-other
Unable to find LVM volume vg-other/lv-swap
Waiting for USB stick to be recognized...
[ 3.159979] sd 7:0:0:0: [sdd] No Caching mode page found
[ 3.160152] sd 7:0:0:0: [sdd] Assuming drive cache: write through
Can't find /boot/myKeyfile.key; USB stick not present.
Manually unlock the disk (sda1_crypt)
Enter passphrase:
パスワードを入力すると、2番目のディスクでも同じスワップが発生しますsdb1_crypt
。
私は何か間違っているのですが、何か分かりません。CRYPTDISKS_MOUNT
「暗号化されたディスクを呼び出す前にマウントするマウントポイントを指定してください」なので、ロック解除プロセスが始まる前に追加できると/boot
思いました。/boot
ところで実行時にはインストールにならないようです/bin/passphrase-from-usb
。
myKeyfile.key
両方のドライブにLUKSキーとして追加され、initramfs
viaを更新したと確信していますupdate-initramfs -u
。
答え1
起動中、initramfsは/bootをマウントしません。 /bootにあるファイルを使用するには、/bootを手動でマウントできます。 passphrase-from-usbスクリプトに次のコマンドを追加できます。
mkdir -p /tmp-boot
mount <usb uuid> /tmp-boot -t ext4
dd if=/tmp-boot/myKeyfile.key bs=1 count=256 2>/dev/null
umount /tmp-boot
このhttp://wejn.org/how-to-make-passwordless-cryptsetup.htmlとても役に立ちます。