带有 spanning-lvm 和 LUKS 的 systemd-boot

带有 spanning-lvm 和 LUKS 的 systemd-boot

所以我按照以下布局安装了系统:

  • 创建了一个跨越两个 NVME 驱动器的 LV,名为spanned_vg-spanned_lv.
  • 我已经用 LUKS 格式化了 LV 并将其映射为cryptroot
  • cryptroot虚拟驱动器只有一个分区,我计划将其用作根分区。
  • 引导是其中一个驱动器上的单独分区。

lsblk:

NAME                      MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
loop0                       7:0    0   3.1G  1 loop  /mnt/livecd
sda                         8:0    1 119.3G  0 disk  
├─sda1                      8:1    1 119.2G  0 part  
│ └─ventoy                253:0    0   3.2G  1 dm    /mnt/cdrom
└─sda2                      8:2    1    32M  0 part  
nvme1n1                   259:0    0 476.9G  0 disk  
└─nvme1n1p1               259:1    0 476.9G  0 part  
  └─spanned_vg-spanned_lv 253:1    0   1.4T  0 lvm   
    └─cryptroot           253:2    0   1.4T  0 crypt /mnt/gentoo
nvme0n1                   259:2    0 931.5G  0 disk  
├─nvme0n1p1               259:3    0   512M  0 part  /mnt/gentoo/boot
└─nvme0n1p2               259:4    0   931G  0 part  
  └─spanned_vg-spanned_lv 253:1    0   1.4T  0 lvm   
    └─cryptroot           253:2    0   1.4T  0 crypt /mnt/gentoo

我在 luks 的 arch 上使用过很多 systemd-boot,但从来没有在 LVM 或 gentoo 上使用过(而且文档似乎确实使用了稍微不同的配置条目),所以我有点不知所措。我尝试按照我在网上找到的一些示例进行操作,到目前为止我已经了解了我的加载器条目:

tile Gentoo Linux
efi /vmlinuz-6.1.41-gentoo-x86_64
initrd /initramfs-6.1.41-gentoo-x86_64.img
options luks.name=/dev/mapper/spanned_vg-spanned_lv=cryptroot root=/dev/mapper/cryptroot init=/usr/lib/systemd/systemd ro dolvm

但是当我尝试启动时,我遇到了内核恐慌,因为它找不到根目录。

所以我猜测以下其中一项是正确的:

  • 我已经搞砸了生成我的虚拟磁盘,我习惯使用mkinitcpio所以完全有可能我使用genkernel错误。我的genkernel.conf是:
INSTALL="yes"
NOCOLOR="false"
LVM="yes"
LUKS="yes"
MICROCODE="amd"
GK_SHARE="${GK_SHARE:-/usr/share/genkernel}"
CACHE_DIR="/var/cache/genkernel"
DISTDIR="${GK_SHARE}/distfiles"
LOGFILE="/var/log/genkernel.log"
LOGLEVEL=1
DEFAULT_KERNEL_SOURCE="/usr/src/linux"
  • 在 systemd 尝试打开 cryptroot 之前,我的 lv 未被发现。不确定我该如何解决这个问题?
  • 我正在做的事情很愚蠢,而且这种布局实际上不受支持。

这里的任何帮助都会很棒,谢谢!

答案1

我没有使用过 gentoo,所以我可能是错的,因为这些内核参数实际上是由 initramfs 而不是内核本身解释的。然而...

看起来您可能错过了一个步骤。为此,cryptsetup 需要解锁 initramfs 中的 LUKS 驱动器:

root=/dev/mapper/

在其他发行版中,这要求您:

  • 安装一个软件包,将脚本添加到 initramfs 以解锁您的 LUKS 块设备。例如在 Ubuntu 中你可以安装cryptsetup-initramfs
  • 更新/etc/cryptab以包含解锁行/dev/mapper/cryptroot
  • 运行命令来重建 initramfs ( update-initramfs)

我怀疑gentoo需要类似的三个步骤

相关内容