我正在寻找一种方法在 Gentoo 中进行以下设置:
/dev/sda1 -> /boot (ext2)
/dev/sda2 -> Luks encrypted
|
+-lvm-vg1
|
+- /dev/mapper/root-fs -> / (ext4)
+- /dev/mapper/swap -> (swap)
它与 Ubuntu 进行图形安装时的设置基本相同。
我确实知道如何手动设置 LUKS 甚至 LVM 设置,但在启动时将它们组合在一起时我遇到了困难。如何告诉内核和 grub 解锁 LUKS 分区并挂载正确的 LVM 分区?
答案1
所以我确实弄清楚了:
我按照手册对磁盘进行了部分分区:
# parted -a optimal /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)mklabel gpt
(parted)unit mib
(parted)mkpart primary 1 3
(parted)name 1 grub
(parted)set 1 bios_grub on
(parted)mkpart primary 3 131
(parted)name 2 boot
(parted)mkpart primary 131 -1
(parted)name 3 lvm
(parted)set 2 boot on
(parted)q
我所做的唯一更改是没有创建交换分区和根分区,而是创建一个分区并将其命名为 lvm(名称并不重要)。接下来我设置了 LUKS:
# Load the dm-crypt module (probably not nessesary)
modprobe dm-crypt
# Crypt the partition we named lvm (in my case that would be /dev/sda3)
cryptsetup -c aes-cbc-essiv:sha256 -v luksFormat -s 256 /dev/sda3
# Open the luks volume
cryptsetup luksOpen /dev/sda3 sda3-luks
# Setup a LVM physical volume
lvm pvcreate /dev/mapper/sda3-luks
# Setup a volume group
lvm vgcreate vg0 /dev/mapper/sda3-luks
之后设置实际卷:
# Fist setup the swap volume
lvm lvcreate -L 2048M vg0
# Then check how many 'extends' are free (Free PE) using lvm vgdisplay
# use that number to use up the rest of the space:
lvm lvcreate -l 7809 vg0
对于其余部分,我们基本上遵循手册,除了您通常为/dev/sda3
(swap) 或/dev/sda4
(root) 执行操作的地方,您现在将使用/dev/mapper/vg0-lvol0
(swap) 和/dev/mapper/vg0-lvol1
。
重要的是,在生成内核(我用于genkernel
此)时首先使用emerge -av cryptsetup
.然后genkernel
使用以下参数运行:
genkernel --luks --lvm --busybox --menuconfig all
请务必设置内核以支持 LVM 以及所选的散列和加密算法(在我的例子中aes
和sha256
)。然后继续按照手册进行操作,直到启动grub
-config。
在运行之前,grub2-mkconfig
您应该编辑该文件/etc/defaults/grub
。 (我应该声明,作为记录,我不确定这是否是最好的解决方案,但它对我有用)。
在该文件中,我放置了以下内容(查找并取消注释该参数):
GRUB_CMDLINE_LINUX="crypt_root=UUID=<uuid of sda3> dolvm"
您可以使用 找到正确的 UUID ls -l /dev/disk/by-uuid
。之后grub2-mkconfig
应该会发现内核和 initramfs 中的麻烦/boot
。再次按照手册操作,重新启动后您应该会收到密码提示。
希望这对其他人有帮助。