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-efi
,refind-install
rEFInd 已安装,然后我重新启动。 Windows 将启动,但当我尝试启动 Arch 时,出现该错误。
我跑过mkinitcpio -p linux
很多次了/etc/fstab
看起来完全正常。
这是我尝试过的:
在自动检测之前移动块,没有效果
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"
保存文件并重新启动系统,现在应该可以正常工作了!
脚注
当然,创建文件还有很长的路要走。您不必使用 来
mkrlconf
生成它,您可以自己手动创建它。更重要的是它会自动填充磁盘 UUID(我不想手动复制和键入)。存根加载器技术细节(上面链接)中的步骤 5 概述了如果不
refind_linux.conf
存在文件,rEFInd 将如何在/etc/fstab
.尽管卷配置很奇怪,但这不太可能起作用。
答案2
Chroot 您的分区并尝试 FIFO 脚本“安装/配置引导加载程序”部分https://github.com/helmuthdu/aui
如果这没有帮助。我会备份我的/home
分区(就像 Elronnd 建议的那样)并尝试使用 FIFO / LILO 脚本进行全新安装。
祝你好运!
答案3
我刚刚删除了整个分区并重新安装。 LVM 一直把事情搞砸了。现在工作完美。