使用复杂的分区方案进行 Debian 稳定安装 - 缺少物理卷

使用复杂的分区方案进行 Debian 稳定安装 - 缺少物理卷

我的个人系统运行于:

  1. 打开的 /boot 分区
  2. 分别使用随机密钥加密 /tmp 和 swap 分区,以及
  3. 一个包含其他所有内容的密码加密的 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 }

相关内容