![如何在 GUID 分区设备上的 LUKS 上的 LVM 精简 LV 上安装 Arch Linux 根文件系统?](https://linux22.com/image/87966/%E5%A6%82%E4%BD%95%E5%9C%A8%20GUID%20%E5%88%86%E5%8C%BA%E8%AE%BE%E5%A4%87%E4%B8%8A%E7%9A%84%20LUKS%20%E4%B8%8A%E7%9A%84%20LVM%20%E7%B2%BE%E7%AE%80%20LV%20%E4%B8%8A%E5%AE%89%E8%A3%85%20Arch%20Linux%20%E6%A0%B9%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%EF%BC%9F.png)
我无法启动新安装的 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