启动失败:内核找不到系统设备

启动失败:内核找不到系统设备

更新。这个问题已通过 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。)

这是我启动时发生的情况(按照我的解释)。

引导加载阶段

  1. Libreboot 成功加载 GRUB。

  2. GRUB 要求我提供密码来解密加密分区。

    A。我输入密码。

    b. GRUB 成功解密加密分区。

  3. 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原始问题中的行。)

相关内容