如何在 GUID 分区设备上的 LUKS 上的 LVM 精简 LV 上安装 Arch Linux 根文件系统?

如何在 GUID 分区设备上的 LUKS 上的 LVM 精简 LV 上安装 Arch Linux 根文件系统?

我无法启动新安装的 Arch Linux 系统,其根文件系统驻留在 GUID 分区设备上 LUKS 加密分区上的 LVM 精简配置逻辑卷上。

当 Systemd 的引导加载程序systemd-boot加载我的引导条目时Arch Linux,它会要求我输入 LUKS 加密分区的密码,但 10 秒后,无法激活 Arch Linux 根文件系统所在的 LVM 卷组。最终它把我扔进了救援壳里rootfs

如果我想用 Arch Linux 实现我想要实现的目标,有什么想法吗?

注意我是 Arch Linux 的新手,因此仔细阅读了所有与在特定存储配置上安装 Arch Linux 系统相关的 Arch Wiki 文章。

我专门配置的启动项Arch Linux/boot/loader/entries/arch.conf)如下所示:

title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options cryptdevice=PARTUUID=<of /dev/sda3>:system root=UUID=<of /dev/system/arch.root> rootfstype=ext4 add_efi_memmap

为了完整起见,以下是我如何配置存储设备的要点:

$ parted —align optimal
(parted) unit MiB
(parted) select /dev/sda
(parted) mklabel gpt
(parted) mkpart primary 1 2
(parted) name 1 bios
(parted) set 1 bios_grub on
(parted) mkpart primary 2 1026
(parted) name 2 uefi
(parted) set 2 boot on
(parted) mkpart primary 1026 103426
(parted) name 3 system
(parted) quit
$ mkfs -t vfat -n UEFI -F 32 /dev/sda2
$ cryptsetup luksFormat —hash sha512 —cipher aes-xts-plain64  —key-size 512 /dev/sda3
$ cryptsetup open /dev/sda3 system
$ pvcreate /dev/mapper/system
$ vgcreate system /dev/mapper/system
$ lvcreate —type thin-pool —name pool —size 75G system
$ lvcreate —type thin —name swap —virtualsize 4G —thinpool system/pool
$ mkswap -L swap /dev/system/swap
$ lvcreate —type thin —name arch.root —virtualsize 20G —thinpool system/pool
$ mkfs -t ext4 -L arch.root /dev/system/arch.root

答案1

看起来在 Arch Linux 的初始 RAM 文件系统阶段期间lvm2在钩子之后运行的钩子encrypt无法激活精简配置的逻辑卷。

使用与我的问题中描述的相同的存储配置,除了正常的逻辑卷而不是精简配置的逻辑卷之外,包含这些卷的卷组可以毫无问题地激活。通过此更改,Arch Linux 成功启动。

因此,不要创建精简逻辑卷:

$ lvcreate —type thin-pool —name pool —size 75G system
$ lvcreate —type thin —name swap —virtualsize 4G —thinpool system/pool
$ mkswap -L swap /dev/system/swap
$ lvcreate —type thin —name arch.root —virtualsize 20G —thinpool system/pool
$ mkfs -t ext4 -L arch.root /dev/system/arch.root

必须创建正常的逻辑卷:

$ lvcreate —name swap —size 4G system
$ mkswap -L swap /dev/system/swap
$ lvcreate —name arch.root —size 20G system
$ mkfs -t ext4 -L arch.root /dev/system/arch.root

相关内容