web-dev-qa-db-ja.com

完全に暗号化されたシステムのdebootstrap chrootのinitramfs

私は debootstrapから完全に暗号化されたウォッシャブルシステムを作成するスクリプト に取り組んでいます。うまくいきますが、出力されるinitramfsイメージはcryptrootを適切に取得しません。 qemuでイメージを起動した後、busyboxシェルに移動し、cryptsetupを使用して手動でluks暗号化のロックを解除する必要があります。

cryptsetup luksOpen /dev/sda1 system
/scripts/local-premount/flashback
exit

(フラッシュバックは、ブートごとに行われた変更を忘れるために、いくつかのbtrfsスナップショットの魔法を行います)

この後、qemuでのブートは通常どおり続行され、適切なinitramfsイメージを生成できます。これをbtrfs @ root.baseサブボリュームにコピーし、それ以降はすべて順調です。

Cryptsetup/cryptrootの部分がupdate-initramfsによってchroot環境で取得されない理由を理解するのに助けが必要です。

echo "CRYPTSETUP=y" >> /usr/share/initramfs-tools/conf-hooks.d/cryptsetup
echo "export CRYPTSETUP=y" >> /usr/share/initramfs-tools/conf-hooks.d/cryptsetup
update-initramfs -ut

私は多くのことを試しましたが、良いfstabとcrypttabを書いて、grub.cfgでcryptdeviceを明示的に設定しようとしました。 特定のバージョンのスクリプトを参照

Fstabとcrypttabを作成する方法は次のとおりです。

export partuuid=$(blkid $partition | sed -re 's/.*: UUID="([^"]+)".*/\1/')
export decruuid=$(blkid /dev/mapper/$decrypted | sed -re 's/.*: UUID="([^"]+)".*/\1/')
echo "Adding flashback with uuid $partuuid"
echo "system UUID=$partuuid none luks" >> "$rootmount/etc/crypttab"
echo "UUID=$decruuid / btrfs [email protected] 0 0" >> "$rootmount/etc/fstab"
echo "UUID=$decruuid /home btrfs subvol=@home 0 0" >> "$rootmount/etc/fstab"

原則的には、次のとおりです。機能するinitramfsイメージをencryptedchrootでどのように生成しますか? debianstrapped debian?

本当にありがとう

7
Rbjz

これは、空のcrypttabがあっても常に機能します。

echo 'export CRYPTSETUP=y' > /etc/initramfs-tools/conf.d/cryptsetup

または、これを/ etc/environmentに追加できます。

CRYPTSETUP=y
2
MMGen

/etc/initramfs-tools/conf.d/cryptsetupの使用は、stretchでは非推奨です。

新しく推奨される方法は、"CRYPTSETUP=y"/etc/cryptsetup-initramfs/conf-hookを設定することです。

5