Arch-Linux

找不到根設備''

  • October 30, 2016
ERROR: device '' not found. Skipping fsck.
ERROR: Unable to find root device ''.
You are being dropped to recovery shell 

我已經嘗試安裝 Arch Linux 一段時間了,並且一直遇到這個錯誤。我真的不知道該怎麼辦。

一點背景知識:我的電腦最初使用 Fedora 和 Windows 10(均為 64 位)進行雙啟動,首先安裝的是 Windows。我決定用 Arch 代替 Fedora。/boot/efiroot和,有單獨的分區/home,我只覆蓋了 root。我安裝了分區,刪除了除了/home(和/boot,我錯誤地保留了)之外的所有內容。我執行pacstrap -i /mnt base,安裝系統並重新啟動。它啟動得很好,但它使用了 Fedora 引導載入程序,以及 Fedora 載入動畫和所有內容。系統存在一些問題,包括某些服務無法啟動,我懷疑 Fedora 引導載入程序是罪魁禍首。我重新啟動到 Arch 安裝 USB,刪除了所有內容,這次包括/boot(但不包括/boot/efi,我沒有安裝它。)我再次重新安裝,grub 無法辨識 vmlinuz 映像。所以我決定重新啟動到 USB,chroot 進入新的 Arch 分區,然後安裝我個人最喜歡的引導載入程序 rEFInd。安裝 rEFIndpacman -S refind-efi並安裝 rEFInd 後refind-install,我重新啟動它。Windows 將啟動,但是當我嘗試啟動 Arch 時,我得到了那個錯誤。

我跑了mkinitcpio -p linux很多次。/etc/fstab看起來完全正常。

這是我嘗試過的:

https://superuser.com/questions/769047/unable-to-find-root-device-on-a-fresh-archlinux-install#788480

在自動檢測之前移動塊,沒有效果

http://www.linuxforums.org/forum/arch-linux/199189-error-device-not-found-skipping-fsck.html

擺弄 refind.conf 和 refind_linux.conf,我沒有做任何工作

https://superuser.com/questions/835120/error-unable-to-find-root-device-dropped-to-recovery-shell

仔細檢查,initramfs-linux.img 在正確的目錄下

我見過類似的問題,但他們的修復都沒有對我有用。關於如何讓拱門啟動的任何想法?

編輯:我發現我正在使用 LVM 的東西。是的。我的 home、root 和 swap 分區是 /dev/sda8 中的小 LVM 東西(我不知道如何稱呼它們)。我不知道這是否會影響任何事情

問題似乎是 rEFInd 不會自動refind_linux.conf在目錄中創建文件/boot

rEFInd 文件中的“EFI Stub Loader Support Technical Details”的第 4 步開始:

rEFInd 在與核心文件相同的目錄中查找名為 refind_linux.conf 的文件。它由一系列行組成,每行都包含一個標籤,後跟一系列核心選項。第一行設置預設選項,後續行設置可從主菜單標籤的子菜單螢幕訪問的選項。如果您使用 refind-install 腳本安裝了 rEFInd,該腳本會在 /boot 中創建一個為您的電腦定制的範例 refind_linux.conf 文件。該文件在許多安裝中無需更改即可工作,但您可能需要對其進行一些調整。

我不確定它為什麼不創建此文件,但很可能您可以通過創建它來解決您遇到的問題。

創建refind_linux.conf文件

Arch Linux wiki 有一個很好的關於如何做到這一點的條目/boot,但基本上你將它放在與你的核心相同的目錄中(通常在 中,通過自動或手動創建它)。文件中未註釋的第一行將是引導核心的預設參數。

我使用mkrlconf命令創建了我的文件,生成的文件/boot/refind_linux.conf如下所示:

"Boot with standard options"  "archisobaseddir=arch archisolabel=ARCH_201610"
"Boot to single user mode"    "archisobaseddir=arch archisolabel=ARCH_201610 single"
"Boot with minimal options"   "ro root=UUID=514a997c-a921-403d-849f-d901d26a73db"

我們正在取得進展,但這還沒有奏效。因為我是從 live USB 創建的,所以前兩個條目不正確,因為它們指的是 USB 上的 ISO。最後的條目實際上是正確的,這是因為就像您收到的錯誤一樣,它將根設備設置為磁碟''的 UUID 。/

因此,要將其設置為主要引導選項,只需刪除其他行並更改標籤。

"Boot with standard options"  "ro root=UUID=514a997c-a921-403d-849f-d901d26a73db"

保存文件並重新啟動系統,它現在應該可以正常工作了!

腳註

  1. 當然,創建文件還有很長的路要走。您不必使用mkrlconf來生成它,您可以自己手動創建它。更重要的是它會自動填充磁碟 UUID(我不想手動複製和輸入)。
  2. Stub Loader Technical Details(上面連結)中的第 5 步概述瞭如果沒有refind_linux.conf文件存在,rEFInd 將如何在/etc/fstab. 使用奇怪的捲配置,儘管這不太可能奏效。

Chroot 您的分區並嘗試 FIFO 腳本“安裝/配置引導載入程序”部分https://github.com/helmuthdu/aui

如果這沒有幫助。我會備份我的/home分區(就像 Elronnd 建議的那樣)並嘗試使用 FIFO / LILO 腳本進行全新安裝。

祝你好運!

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