我已经使用该设置安装了 Arch Linux。现在,我想与 gentoo 进行双启动。但是,当启动 gentoo 时,未检测到根 UUID(在 LVM 上)。我的分区方案是这样的:( lsblk -f
)
sda
├─sda1 vfat E3B9-CCB0 /boot
└─sda2 LVM2_member GwYKZG-fjl2-UV2L-KX57-1O8J-rBdp-fpdheC
├─lvm-arch ext4 67ce60f0-1a30-4da3-bb14-8dbfa0e4ea1d /
└─lvm-gentoo ext4 4db48ce0-3163-4a4d-ab8a-1961935cb680
我可以使用配置文件启动 Arch linux /boot/loader/entries/arch.conf
:
title Arch Linux (LVM)
linux /vmlinuz-arch
initrd /initramfs-arch.img
options root=UUID=67ce60f0-1a30-4da3-bb14-8dbfa0e4ea1d rw
完成gentoo安装后,我创建/boot/loader/entries/gentoo.conf
文件:
title Gentoo (LVM)
linux /vmlinuz-gentoo
initrd /initramfs-gentoo.img
options root=UUID=4db48ce0-3163-4a4d-ab8a-1961935cb680 rw
我用的/boot/EFI/systemd/systemd-bootx64.efi
是开机。 gentoo选项确实出现在启动菜单上,但是当我选择它时根本没有任何反应。只是空白。我尝试直接使用我的硬盘在 virtualbox 上启动,然后启动只能工作,直到找到rootfs
.不知何故,/dev/mapper/lvm-gentoo
无法找到UUID。仅/dev/sda2
检测到 UUID。
我的猜测是内核或 initramfs 有问题。但是,我确实使用设备映射器支持编译了内核。我没有去做:
genkernel --lvm --install initramfs
我错过了什么?
答案1
由于您不仅需要使用逻辑卷管理器(LVM),还需要使用通用唯一标识符(UUID),因此您应该向 genkernel 命令添加另一个选项,这--disklabel
将导致类似这样的结果
genkernel --lvm --disklabel --install initramfs
using--disklabel
选项将确保blkid
其他命令包含在 initramfs 中并且在引导阶段可用。
其他建议是尝试另一种选择,以确保所有驱动程序也可用。也许您已将它们构建为模块而不是在内核中。--all-ramdisk-modules
将包含 initramfs 映像中的所有内核模块。这不是强制性的,但您可以尝试一下以确保安全。
答案2
如果 root 位于逻辑卷上,则 systemd-boot 加载程序文件应如下所示:
title Debian10
linux /vmlinuz-4.19.0-4-amd64
initrd /initrd.img-4.19.0-4-amd64
options root=/dev/mapper/VG01-LV01 rw
要获取 LV 路径,请使用:(
lsblk --path --output name,kname,fstype,mountpoint,model
列name
)