我想做什么?
使用 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”
我偏离本教程的地方
我按照教程建议使用了 Grub 而不是 Syslinux (这似乎是症结所在),并且 Grub 的解决方案确实很模糊
我的分区方案由一个额外的 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
有匹配的:MyStorage
和MyStorage-
。那页专门针对grub
(而不是 Syslinux),LVM 位于 LUKS 之上。所以我会遵循这个设置。
你有一个额外的、未加密的分区并不重要。
答案2
感谢 Anthon 的上述回答,它对解决我的问题做出了很大贡献。
看来我的问题的解决方案分为两部分。
- /etc/default/grub 中的条目对我来说应该是:
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sdb2:lvmpool root=/dev/mapper/lvmpool-root"
cryptdevice 也由您应用加密的分区组成,在我的例子中是 /dev/sdb2 和 lvmpool (我的卷组)
root 只是指向我的加密根 lvmpool 的位置(位于 sdb2 上)
- 输入完成后(这对我来说是一个关键错误),你必须运行:
grub-mkconfig -o /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