我想做什么?

我想做什么?

我想做什么?

使用 LVM 在外部硬盘驱动器 (sdb) 上的 LUKS 之上安装具有完整系统加密(无启动和媒体分区)的 Arch,使用:http://suddenkernelpanic.blogspot.com/2013/03/arch-linux-lvm-on-top-of-luks-2013-style.html

我的问题是什么:

系统启动 grub,并且似乎对在哪里找到 root 存在一些混乱

错误:找不到设备“uuid=f7153c4b-e6ea-48a2-9ee1-bf38c037173d”。跳过 fsck

错误:无法找到根设备“uuid=f7153c4b-e6ea-48a2-9ee1-bf38c037173d”

我偏离本教程的地方

  1. 我按照教程建议使用了 Grub 而不是 Syslinux (这似乎是症结所在),并且 Grub 的解决方案确实很模糊

  2. 我的分区方案由一个额外的 FAT32 分区组成,该分区不参与加密(似乎与问题无关)

/etc/default/grub 上的问题:

(我感觉这就是问题所在)

根据我所读到的内容,我需要特别更新此文件中的几个位置:

GRUB_CMDLINE_LINUX="root=/dev/mapper/lvmpool-root cryptdevice=/dev/sdb2:crypt ro"

我应该取消注释:

GRUB_DISABLE_LINUX_UUID=true

问题/etc/mkinitcpio.conf

我应该按如下方式添加挂钩

HOOKS="... encrypt lvm2 ... filesystems ..."

这是我的 root 的 fstab 条目

<filesystem>
/dev/mapper/lvmpool-root                                                 
UUID=f7153c4b-e6ea-48a2-9ee1-bf38c037173d / ext4 rw,relatime,data=ordered   0 1

当前的解决方法

我仍然可以使用该系统,因为在出​​现错误后,它会让我进入恢复 shell,在这种类型下我可以简单地执行以下操作:

cryptsetup luksOpen /dev/sdb2 crypt 
enter password

然后退出恢复 shell,它会让我回到正常的 arch 登录提示符。如果不是那么耗时的话,这也不会那么糟糕......(启动时永远出错,比如 20 秒)

我尝试过的其他资源

我也用过:

  • wiki.archlinux.org/index.php/Beginners%27_guide

  • wiki.archlinux.org/index.php/Gr … 加密

  • wiki.archlinux.org/index.php/Dm … oot_loader

  • wiki.archlinux.org/index.php/Dm … VM_on_LUKS

答案1

您的问题似乎在于:crypt作为卷组/dev/sdb2和使用lvmpool-卷组名称作为根参数的区别。

GRUB_CMDLINE_LINUX="root=/dev/mapper/lvmpool-root cryptdevice=/dev/sdb2:crypt ro"

这个例子这里:

cryptdevice=/dev/partition:MyStorage root=/dev/mapper/MyStorage-rootvol

有匹配的:MyStorageMyStorage-。那专门针对grub(而不是 Syslinux),LVM 位于 LUKS 之上。所以我会遵循这个设置。

你有一个额外的、未加密的分区并不重要。

答案2

感谢 Anthon 的上述回答,它对解决我的问题做出了很大贡献。

看来我的问题的解决方案分为两部分。

  1. /etc/default/grub 中的条目对我来说应该是:

    GRUB_CMDLINE_LINUX="cryptdevice=/dev/sdb2:lvmpool root=/dev/mapper/lvmpool-root"

分解每个条目:

cryptdevice 也由您应用加密的分区组成,在我的例子中是 /dev/sdb2 和 lvmpool (我的卷组)

root 只是指向我的加密根 lvmpool 的位置(位于 sdb2 上)

  1. 输入完成后(这对我来说是一个关键错误),你必须运行:

    grub-mkconfig -o /boot/grub/grub.cfg

这将使用您添加到 /etc/default/grub 的信息更新 /boot/grub/grub.cfg。

完成此操作后,系统直接启动并提示解锁根分区。

答案3

包括mkinitcpio.conf

MODULES="dm_mod dm_crypt ext4 aes_x86_64 sha256 sha512"

HOOKS="... encrypt lvm2 ..."

包括/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="... quiet "

GRUB_CMDLINE_LINUX="cryptdevice=/dev/sdX:name"

GRUB_ENABLE_CRYPTODISK="y"

运行命令:

sudo mkinitcpio -p linux

sudo grub-mkconfig -o /boot/grub/grub.cfg

sudo grub-install --recheck --target=i386-pc /dev/sda

sudo pacman -S linux linux-headers 

相关内容