引導失敗:核心找不到系統設備
更新。此問題已通過 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
。)這是我啟動時發生的事情(正如我所解釋的那樣)。
引導載入程序階段。
- Libreboot 成功載入 GRUB。
- 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⟩
incryptomount -u ⟨uuid of the encrypted partition⟩
閱讀時應不帶連字元。(此行將替換
cryptomount -a
原始問題中的行。)
猜測是您依賴於 initramfs 中不存在的一些 udev 命名。即加密的分區被解密,但沒有連結到/dev/aether/core。
我建議嘗試通過 UUID 或名稱指定根分區,或者使用您用於 chroot 的設備名稱。
所有這一切,假設您沒有在加密之上使用 LVM。