在使用加密 LVM 预置 Ubuntu 22.04 安装时如何解决“设备正在使用”错误

在使用加密 LVM 预置 Ubuntu 22.04 安装时如何解决“设备正在使用”错误

我正在尝试使用 Cubic 和 Ubiquity 的预置选项为 Ubuntu 制作自定义安装 ISO。我一直在绞尽脑汁尝试让它自动将整个磁盘分区为加密的 LVM,就像 GUI 安装程序允许的那样。我尝试了近十几个我在网上找到的预置配置示例,所有这些配置都以安装程序在分区过程中出错而告终,因为:

No modifications can be made to the device: Encrypted Volume (sda1p2_crypt) for the following reasons: In use by LVM module group crypt或者配方中为 LVM 组命名的任何名称。我假设这些配方适用于以前的 Ubuntu 版本。

起初,我以为这个错误只是因为磁盘上有一些预先存在的带有加密 LVM 的分区,所以我运行了一个sgdisk -Z /dev/sda,重新启动并重试,但问题仍然存在。

当然,我可以使用安装程序的 GUI 手动对磁盘进行分区。

以下是预种子中的一个示例部分:

d-i partman-auto/method string crypto
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true
d-i partman-auto-lvm/guided_size string max
d-i partman-auto-lvm/new_vg_name string crypt
d-i partman-auto/choose_recipe select root-encrypted
d-i partman-auto/expert_recipe string                         \
      root-encrypted ::                                       \
              500 500 500 ext4                                \
                      $primary{ } $bootable{ }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ /boot }                     \
              .                                               \
              2000 2000 2000 linux-swap                       \
                      $lvmok{ } lv_name{ swap }               \
                      in_vg { crypt }                         \
                      $primary{ }                             \
                      method{ swap } format{ }                \
              .                                               \
              500 10000 1000000000 ext4                       \
                      $lvmok{ } lv_name{ rootpart }           \
                      in_vg { crypt }                         \
                      $primary{ }                             \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                         \
              .                                               
d-i partman-md/device_remove_md boolean true
d-i partman-basicfilesystems/no_mount_point boolean false
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

另一个产生相同错误的方法。在这个方法中,我没有使用自定义配方,而是选择了内置配方。

#Get around the prompt for UEFI-only
d-i partman-efi/non_efi_system boolean true
d-i partman/default_filesystem string ext4

# In addition, you'll need to specify the method to use.
# The presently available methods are:
# - regular: use the usual partition types for your architecture
# - lvm:     use LVM to partition the disk
# - crypto:  use LVM within an encrypted partition
d-i partman-auto/method string crypto
d-i partman-crypto/passphrase password mypassword7
d-i partman-crypto/passphrase-again password mypassword7

# If one of the disks that are going to be automatically partitioned
# contains an old LVM configuration, the user will normally receive a
# warning. This can be preseeded away...
d-i partman-lvm/device_remove_lvm boolean true
# The same applies to pre-existing software RAID array:
d-i partman-md/device_remove_md boolean true
# And the same goes for the confirmation to write the lvm partitions.
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true

# For LVM partitioning, you can select how much of the volume group to use
# for logical volumes.
d-i partman-auto-lvm/guided_size string max

# You can choose one of the three predefined partitioning recipes:
# - atomic: all files in one partition
# - home:   separate /home partition
# - multi:  separate /home, /var, and /tmp partitions
d-i partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation, provided
# that you told it what to do using one of the methods above.
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

要实现这个功能需要什么样的 partman 配置?

答案1

经过大量的尝试、研究以及阅读其他人尝试实现此目的的经验后,我得出结论:由于安装程序中存在一些错误,这是不可能的。

带有自动安装和 subiquity 的 Ubuntu Server iso 可以通过自动安装功能非常干净地完成此操作,我建议任何人都可以采用这种方法,而不必深入研究如何解决此问题。

答案2

基于此文档

以下安装程序组件的预置密钥将不会在 Ubiquity 中使用,通常是因为它们不符合 Ubiquity 的操作模式:

网络配置

LVM 和 RAID 分区

基本安装程序

pkgsel/tasksel

完成安装

你是对的,没有办法LVM/crypto在 中使用食谱Ubiquity

相关内容