无法找到根设备''

无法找到根设备''
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。 root/boot/efi和都有单独的分区/home,我只覆盖了 root。我安装了分区,删除了除/home(和/boot,我错误地保留了)之外的所有内容。我运行pacstrap -i /mnt base,安装系统并重新启动。它启动得很好,但它使用了 Fedora 引导加载程序,带有 Fedora 加载动画和所有内容。系统存在一些问题,包括某些服务无法启动,我怀疑是 Fedora 引导加载程序造成的。我重新启动到 Arch 安装 USB,删除了所有内容,这次包括/boot(但不是/boot/efi,我没有安装它。)我再次重新安装,grub 无法识别 vmlinuz 映像。所以我决定重新启动到 USB,chroot 到新的 Arch 分区,然后安装 rEFInd,我个人最喜欢的引导加载程序。安装 rEFInd 后pacman -S refind-efirefind-installrEFInd 已安装,然后我重新启动。 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 位于正确的目录中

我见过类似的问题,但他们的修复对我来说都不起作用。关于如何启动 arch 有什么想法吗?

编辑:我发现我正在使用 LVM 东西。嗯是的。我的主分区、根分区和交换分区都是 /dev/sda8 中的 LVM 小东西(我不知道该怎么称呼它们)。我不知道这是否会影响什么

答案1

问题似乎是 rEFInd 不会自动refind_linux.conf/boot目录中创建文件。

从“EFI Stub Loader 支持技术细节”的第 4 步开始rEFInd 文档

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"

我们正在取得进展,但这还没有奏效。因为我是从实时 USB 创建的,所以前两个条目不正确,因为它们引用的是 USB 上的 ISO。不过,最终条目实际上是正确的,这是因为就像您收到的错误一样,它将根设备设置''为磁盘的 UUID /

因此,要将其设置为主要启动选项,只需删除其他行并更改标签即可。

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

保存文件并重新启动系统,现在应该可以正常工作了!

脚注

  1. 当然,创建文件还有很长的路要走。您不必使用 来mkrlconf生成它,您可以自己手动创建它。更重要的是它会自动填充磁盘 UUID(我不想手动复制和键入)。

  2. 存根加载器技术细节(上面链接)中的步骤 5 概述了如果不refind_linux.conf存在文件,rEFInd 将如何在/etc/fstab.尽管卷配置很奇怪,但这不太可能起作用。

答案2

Chroot 您的分区并尝试 FIFO 脚本“安装/配置引导加载程序”部分https://github.com/helmuthdu/aui

如果这没有帮助。我会备份我的/home分区(就像 Elronnd 建议的那样)并尝试使用 FIFO / LILO 脚本进行全新安装。

祝你好运!

答案3

我刚刚删除了整个分区并重新安装。 LVM 一直把事情搞砸了。现在工作完美。

相关内容