完全加密系統的 debootstrap chroot 中的 Initramfs
我正在編寫一個腳本,以從 debootstrap 創建一個完全加密的可清洗系統。它做了一些好事,但是
initramfs
出來的圖像並沒有正確地提取 cryptroot。使用 qemu 啟動映像後,我進入了一個 busybox 外殼,我必須使用以下命令手動解鎖 luks 加密cryptsetup
:cryptsetup luksOpen /dev/sda1 system /scripts/local-premount/flashback exit
(閃回做了一些 btrfs 快照魔術來忘記每次啟動時所做的更改)
在此之後,在 qemu 中的引導會繼續正常進行,然後我就可以生成一個好的
initramfs
鏡像了。我將它複製到 btrfs @root.base 子卷,從那時起一切都很好。我需要幫助弄清楚為什麼 cryptsetup/cryptroot 部分沒有在 chroot 環境中被拾取
update-initramfs
: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 subvol=@root.curr 0 0" >> "$rootmount/etc/fstab" echo "UUID=$decruuid /home btrfs subvol=@home 0 0" >> "$rootmount/etc/fstab"
原則上的問題是:如何在debootstrapped debian的加密chroot 中生成功能正常的 initramfs 映像?
謝謝一堆
使用
/etc/initramfs-tools/conf.d/cryptsetup
在拉伸中被棄用。新的首選方法是設置
"CRYPTSETUP=y"
在/etc/cryptsetup-initramfs/conf-hook
.在 buster 及更高版本中,此配置參數似乎是多餘的,因為預設行為似乎是在 initramfs 中配置 cryptsetup IFF 安裝了 initramfs-cryptsetup 包。
這將始終有效,即使是空的 crypttab:
echo 'export CRYPTSETUP=y' > /etc/initramfs-tools/conf.d/cryptsetup
或者,您可以將其添加到 /etc/environment:
CRYPTSETUP=y