Linux

引導失敗:核心找不到系統設備

  • December 15, 2018

更新。此問題已通過 2017 年 12 月的核心更新解決。我無法弄清楚問題出在哪裡 - 但事後看來,來自我同時遇到的另一個問題,它可能源於編寫磁碟 UIID 時的兼容性問題帶或不帶連字元:Linux 需要連字元,但 GRUB 不需要。


我在我的電腦上執行帶有 linux-libre 核心和Libreboot的Parabola Linux 。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 要求我輸入密碼來解密加密分區。

一種。我輸入密碼。

灣。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 本身。


我做過的事情。我已成功 chroot 到我的系統。從內部來看,/dev/aether/core確實存在。密碼和密鑰文件都成功解鎖了加密分區。我也嘗試將核心降級到4.10.*-(我知道可以啟動的某個版本),但也無濟於事:問題仍然存在。

這個問題涉及一個類似的問題。我的不同之處在於,一方面,我的錯誤消息中引用了正確的設備名稱,但無論如何都找不到;而且,我可以輸入緊急外殼。


這裡有什麼問題?我怎樣才能解決這個問題?

正如更新中所說:

此問題已通過 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原始問題中的行。)

猜測是您依賴於 initramfs 中不存在的一些 udev 命名。即加密的分區被解密,但沒有連結到/dev/aether/core。

我建議嘗試通過 UUID 或名稱指定根分區,或者使用您用於 chroot 的設備名稱。

所有這一切,假設您沒有在加密之上使用 LVM。

引用自:https://unix.stackexchange.com/questions/381270