预置卷组中没有定义物理卷

预置卷组中没有定义物理卷

几周前我问过如何配置 Ubuntu preseed 来配置 LVM 分区。我没有得到任何回复。

我能够弄清楚如何在 Ubuntu 16.04 桌面的预置文件中为 UEFI 定义逻辑卷。现在,我正在尝试设置根逻辑卷 (/) 所在的物理卷。我不指望得到答案,但我必须尝试。:)

我的预置文件中的以下 di 指令用于在基于 UEFI 的虚拟机上配置 LVM 和我的所有文件系统。

# Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true
d-i partman/confirm_write_new_label boolean true
d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt

d-i partman-auto-lvm/guided_size string max
d-i partman-auto/method string lvm
d-i partman-auto-lvm/new_vg_name string vg00
d-i partman-auto/choose_recipe select gpt-boot-root-swap
d-i partman-auto/expert_recipe string \
    gpt-boot-root-swap ::             \
        512 512 512 fat32             \
            $primary{ }               \
            method{ efi } format{ } . \
        1024 1024 1024 ext2              \
            $primary{ } $bootable{ }  \
            method{ format } format{ } \
            use_filesystem{ } filesystem{ ext2 } \
            mountpoint{ /boot } .                \
        1000 1000 1000000000 ext4                \
            $defaultignore{ }                    \
            $primary{ }                          \
            method{ lvm } \
            device{ /dev/sda } \
            vg_name{ vg00 } \
            . \
        1024 3072 10240 ext4 \
            $lvmok{ } \
            in_vg{ vg00 } lv_name{ lv_root } \
            method{ format } format{ }           \
            use_filesystem{ } filesystem{ ext4 } \
            mountpoint{ / } .                    \
        1024 1024 1000000000 ext4                \
            $lvmok{ }                          \
            $defaultignore{ }                    \
            in_vg{ vg00 } lv_name{ lv_delete } \
            .

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

我一直在尝试对 /dev/sda3 添加加密,它是与创建 lv_root 的 vg00 卷组关联的物理卷。我已将以下指令添加到预置文件中

d-i partman-auto/method string crypto
d-i partman-crypto/create/partitions select /dev/sda3
d-i partman-crypto/keytype select passphrase
d-i partman-crypto/keyhash select sha512
d-i partman-crypto/keysize select 512
d-i partman-crypto/cipher select aes-xts-plain64
d-i partman-crypto/passphrase string ThisIsATest
d-i partman-crypto/passphrase-again string ThisIsATest

我通过网络搜索,把零散的信息拼凑在一起,找到了上述内容。

顺便说一句,Canonical,如果 Ubuntu 真的是你的收入来源,为什么你没有更好的文档?我找到的所有内容都来自 Ubuntu 网站以外的地方。

我知道有些东西缺失了,但我不知道这些 di 指令是什么。例如,di partman-crypto 指令是什么,用于命名加密卷?我确信这里需要这个。我确信这就是为什么当我尝试从自定义 ISO 启动时,我最终会收到错误消息

No physical volume defined in volume group
The automatic partitioning recipe contains the definition of a
volume group that does not contain any physical volume.
Please check the automatic partitioning recipe

就像我在开始时说的那样,我不指望有人能回答这个问题,因为它比我的自动分区 LVM 预置问题更小众,但我必须尝试。

提前感谢您提供的任何帮助。

答案1

你修好了吗?

d-i partman/early_command                         string \
vgs --separator=: --noheadings | cut -f1 -d: | while read vg ; do vgchange -an $vg ; done ; \
pvs --separator=: --noheadings | cut -f1 -d: | while read pv ; do pvremove -ff -y $pv ; done ; \
mdadm --detail --scan | cut -f2 -d' ' | while read array ; do umount -l $array ; done ; \
mdadm --detail --scan | cut -f2 -d' ' | while read array ; do mdadm --stop $array ; done ; \
mdadm --detail --scan | cut -f2 -d' ' | while read array ; do mdadm --remove $array ; done ; \
fdisk -l | grep 'Disk /dev/sd' | cut -f1 -d: | cut -f2 -d' ' | while read disk ; do mdadm --zero-superblock $disk ; done ; \
fdisk -l | grep 'Disk /dev/nvme' | cut -f1 -d: | cut -f2 -d' ' | while read disk ; do mdadm --zero-superblock $disk ; done ; \
fdisk -l | grep 'Disk /dev/sd' | cut -f1 -d: | cut -f2 -d' ' | while read disk ; do dd if=/dev/zero of=$disk bs=1M count=512 ; done ;
fdisk -l | grep 'Disk /dev/nvme' | cut -f1 -d: | cut -f2 -d' ' | while read disk ; do dd if=/dev/zero of=$disk bs=1M count=512 ; done ;
fdisk -l | grep 'Disk /dev/nvme' | cut -f1 -d: | cut -f2 -d' ' | while read disk ; do parted -s $disk mklabel gpt; done
# Partitioning
d-i   partman-auto/method string lvm

# If one of the disks that are going to be automatically partitioned
# contains an old LVM configuration, the user will normally receive a
# warning. Preseed this away
d-i     partman-lvm/device_remove_lvm boolean true

# And the same goes for the confirmation to write the lvm partitions.
d-i     partman-lvm/confirm boolean true

# Really, please don't prompt me!
d-i     partman-lvm/confirm_nooverwrite boolean true
# auto method must be lvm
d-i partman-auto/method string lvm
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-basicfilesystems/no_swap boolean false

# Keep that one set to true so we end up with a UEFI enabled
# system. If set to false, /var/lib/partman/uefi_ignore will be touched
d-i partman-efi/non_efi_system boolean true

# enforce usage of GPT - a must have to use EFI!
d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt
d-i partman-auto-lvm/new_vg_name                  string vg_root

d-i partman-auto/choose_recipe select boot-root-all
d-i partman-auto/expert_recipe string \
boot-root-all :: \
1024 1024 1024 free \
$iflabel{ gpt } \
$reusemethod{ } \
method{ efi } \
format{ } \
. \
1024 1024 1024 ext2 \
$defaultignore{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext2 } \
mountpoint{ /boot } \
. \
51200 51200 51200 xfs \
$lvmok{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ xfs } \
mountpoint{ / } \
. \
10240 10240 10240 xfs \
$lvmok{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ xfs } \
mountpoint{ /home } \
. \
10240 10240 10240 xfs \
$lvmok{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ xfs } \
mountpoint{ /tmp } \
. \
1 1 -1 xfs                             \
        $lvmok{ }                   \
        method{ format } format{ }              \
        use_filesystem{ } filesystem{ xfs }    \
        label{ liveperson }                            \
        mountpoint{ /test }                      \
.

相关内容