所以我按照以下布局安装了系统:
- 创建了一个跨越两个 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需要类似的三个步骤