更新。这个问题已通过 2017 年 12 月的内核更新得到解决。我无法弄清楚问题出在哪里——但事后看来,来自我同时遇到的另一个问题,它可能源于写入磁盘 UIID 时的兼容性问题有还是没有连字符:Linux 需要连字符,但 GRUB 不需要。
我跑抛物线Linux与 linux-libre 内核4.11.9-gnu-1
和自由引导在我的电脑上。
问题:我最近更新了我的系统 (
pacman -Syu
),自从我的启动过程失败后。具体来说,内核似乎无法找到我的实际系统所在的逻辑卷。我得到的错误是ERROR: device '/dev/aether/core/' not found. Skipping fsck.
非常感谢任何解决或诊断此问题的帮助。我的理解太少,无法自己解决这个问题,我非常绝望。
接下来我将更详细地描述该问题,然后,我将描述到目前为止我所做的事情。
这是我的设置core
:我有一个带有单个完全加密分区的固态磁盘,在其顶部有一个名为 的卷组中命名的逻辑卷aether
。我的系统/根目录位于逻辑卷上core
。 (磁盘用 加密cryptsetup
,逻辑卷用 管理lvm
。)
这是我启动时发生的情况(按照我的解释)。
引导加载阶段。
Libreboot 成功加载 GRUB。
GRUB 要求我提供密码来解密加密分区。
A。我输入密码。
b. GRUB 成功解密加密分区。
GRUB 成功加载内核映像和 initramfs。
内核阶段。发生以下情况:
…
:: running early hook [udev]
…
:: running early hook [lvm2]
…
:: running hook [encrypt]
Waiting 10 seconds for device /dev/aether/core ...
[ 4.250559] sd 4:0:0:0: [sdb] No Caching mode page found.
[ 4.250612] sd 4:0:0:0: [sdb] Assuming drive cache: write through
ERROR: device '/dev/aether/core/' not found. Skipping fsck.
:: mounting '/dev/aether/core' on real root
mount: you must specify the filesystem type
You are now being dropped into an emergency shell.
sh: can't access tty; job control turned off
[rootfs ]#
我遗漏了一些消息,用 表示…
。完整的日志是这里,但我认为其余的没有帮助。
GRUB 在 Libreboot 的固件上配置。这是我的相关部分grub.cfg
:
cryptomount -a
set root=lvm/aether-core
linux /boot/vmlinuz-linux-libre root=/dev/aether/core cryptdevice=/dev/disk/by-uuid/〈uuid of the encrypted partition〉:core cryptkey=rootfs:/etc/〈keyfile〉
initrd /boot/initramfs-linux-libre.img
不过,我认为问题不在于 GRUB 本身。
我做过的事。我已经成功地进入我的系统。从内部来看,/dev/aether/core
确实存在。密码和密钥文件都成功解锁了加密分区。我还尝试将内核降级到4.10.*-
(我知道可以启动的某个版本),但也无济于事:问题仍然存在。
这个问题涉及类似的问题。我的不同之处在于,一方面,错误消息中引用了正确的设备名称,但无论如何都找不到;而且,我可以输入紧急 shell。
这里有什么问题?我怎样才能解决这个问题?
答案1
猜测是您依赖于一些 initramfs 中不存在的 udev 命名。即加密分区被解密,但未链接到 /dev/aether/core。
我建议尝试通过 UUID 或名称指定根分区,或者使用您用于 chroot 的设备名称。
所有这些,假设您没有在加密之上使用 LVM。
答案2
正如更新中所说:
这个问题已通过 2017 年 12 月的内核更新得到解决。我无法弄清楚问题出在哪里——但事后看来,来自我同时遇到的另一个问题,它可能源于写入磁盘 UIID 时的兼容性问题有还是没有连字符:Linux 需要连字符,但 GRUB 不需要。
但更有可能的是,这只是一个内核错误。
然而,我同时也遇到了类似的问题。 (或者甚至可能完全相同,我不记得了。)解决方案是在 GRUB 配置中使用不同的 UUID - 一种用于 GRUB,另一种用于 Linux。具体来说,在该行
linux /boot/vmlinuz-linux-libre root=/dev/aether/core cryptdevice=/dev/disk/by-uuid/〈uuid of the encrypted partition〉:core cryptkey=rootfs:/etc/〈keyfile〉
应该⟨uuid of the encrypted partition⟩
读和连字符,而⟨uuid of the encrypted partition⟩
in
cryptomount -u ⟨uuid of the encrypted partition⟩
应该读没有连字符。 (此行将替换cryptomount -a
原始问题中的行。)