我的个人系统运行于:
- 打开的 /boot 分区
- 分别使用随机密钥加密 /tmp 和 swap 分区,以及
- 一个包含其他所有内容的密码加密的 btrfs lvm 卷。
我最近的项目是使用 Debian 安装程序的预置并尝试自动重新创建它。下面是我想到的。这失败了,错误是自动分区配方包含不包含任何物理卷的卷组的定义。
关于加密情况的文档特别少——有人能弄清楚如何修复这个设置吗?
感谢您的时间,Joh
d-i partman-auto/disk string /dev/sda
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/new_vg_name multiselect vg_crypto_swap, vg_crypto_tmp, \
vg_crypto_root
d-i partman-auto/expert_recipe string \
joh-complex :: \
100 150 200 ext3 \
$primary{ } \
$bootable{ } \
label{ boot_nocrypto } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext4 } \
mountpoint{ /boot } \
options/discard{ discard } \
options/relatime{ relatime } \
device{ /dev/sda1 } \
. \
1000 5000 5000 lvm \
$primary{ } \
$defaultignore{ } \
method{ lvm } \
device{ /dev/sda2 } \
vg_name{ vg_crypto_tmp } \
. \
1000 5000 5000 ext3 \
$lvmok{ } \
method{ format } \
format{ } \
in_vg{ vg_crypto_tmp } \
lv_name{ tmp_crypto } \
use_filesystem{ } \
filesystem{ ext2 } \
mountpoint{ /tmp } \
options/relatime{ relatime } \
options/noexec{ noexec } \
. \
100% 300% 300% lvm \
$primary{ } \
$defaultignore{ } \
method{ lvm } \
device{ /dev/sda3 } \
vg_name{ vg_crypto_swap } \
. \
100% 300% 300% linux-swap \
$lvmok{ } \
method{ swap } \
format{ } \
in_vg{ vg_crypto_swap } \
lv_name{ swap_crypto } \
. \
1000 10000 1000000000 lvm \
$primary{ } \
$defaultignore{ } \
method{ lvm } \
device{ /dev/sda4 } \
vg_name{ vg_crypto_root } \
. \
1000 10000 1000000000 ext3 \
$lvmok{ } \
method{ format } \
format{ } \
in_vg{ vg_crypto_root } \
lv_name{ root_crypto } \
use_filesystem{ } \
filesystem{ btrfs } \
mountpoint{ / } \
options/discard{ discard } \
options/relatime{ relatime } \
options/ssd{ ssd } \
. \
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
答案1
我使用下面的方法成功地在许多用户系统上自动创建了加密分区。此方法假定 /dev/sda 为要使用的卷,并使用 xfs 作为默认文件系统(我首选的文件系统)。
此外,它使用了一个简化的分区方案,即较小的 /boot、约 50 GB 的 /、约 200% 的 RAM 作为交换(如果系统 RAM > 32 GB,则可能将其限制为 64 GB),其余可用磁盘空间为 /home。如果您想创建更强大的系统,请为 /var、/usr、/tmp 等使用单独的分区。有关使用多个分区背后的逻辑,请参阅:https://www.debian.org/doc/manuals/securing-debian-howto/ch3.en.html#s3.2
需要注意的一点是,据我所知,您需要使用 lvm 才能使加密工作,或者至少我没有用其他方式使它工作。
d-i partman/default_filesystem string xfs
d-i partman-auto/disk string /dev/sda
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/method string crypto
d-i partman-auto/choose_recipe select boot-crypto
d-i partman-auto-lvm/new_vg_name string crypt
d-i partman-auto/expert_recipe string boot-crypto :: \
1000 2000 3000 xfs $primary{ } $bootable{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ xfs } \
mountpoint{ /boot } \
.\
45000 50000 55000 xfs $lvmok{ } lv_name{ root } \
in_vg { crypt } method{ format } format{ } \
use_filesystem{ } filesystem{ xfs } mountpoint{ / } \
.\
100% 200% 300% linux-swap $lvmok{ } lv_name{ swap } \
in_vg { crypt } method{ swap } format{ } \
.\
3000 35000 1000000000 xfs $lvmok{ } lv_name{ home } \
in_vg { crypt } method{ format } format{ } \
use_filesystem{ } filesystem{ xfs } mountpoint{ /home } \
.\
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
值得赞扬的是,我的想法来自于:http://ptomusk.blogspot.com/2012/09/ubuntu-preseedcfg-with-encrypted-lvm.html
答案2
对于d-i partman-auto/method string crypto
,需要在in_vg
和{
(括号)之间放置一个空格字符,如下所示:
in_vg{ vg_crypto_tmp } -> in_vg { vg_crypto_tmp }