ERROR: device '' not found. Skipping fsck.
ERROR: Unable to find root device ''.
You are being dropped to recovery shell
I've been trying to install Arch Linux for some time, and keep running into this error. I seriously have no idea what to do.
A little background:
My computer originally had a dual boot with Fedora and Windows 10 (both 64-bit), Windows being installed first. I decided to replace Fedora with Arch. There are separate partitions for root, /boot/efi
and /home
, and I only overwrote root. I mounted the partitions, deleted everything except for /home
(and /boot
, which I mistakenly kept). I ran pacstrap -i /mnt base
, installed the system and rebooted. It booted fine, but it used the Fedora bootloader, with the Fedora loading animation and everything. There were a few issues with the system, including certain services failing to start, and I suspected the Fedora bootloader was to blame. I booted back into the Arch installation USB, deleted everything, this time including /boot
(but not /boot/efi
, I didn't mount that.) I reinstalled again, and grub wouldn't recognize the vmlinuz image thingy. So I decided to boot back into the USB, chroot into the new Arch partition, and install rEFInd, my personal favourite bootloader. After installing rEFInd with pacman -S refind-efi
and refind-install
rEFInd was installed, and I rebooted into it. Windows will start, but when I try to start Arch, I get that error.
I've run mkinitcpio -p linux
multiple times. /etc/fstab
looks completely normal.
Here's what I've tried:
Moved block before autodetect, no effect
http://www.linuxforums.org/forum/arch-linux/199189-error-device-not-found-skipping-fsck.html
Fiddled around with refind.conf and refind_linux.conf, nothing I did worked
https://superuser.com/questions/835120/error-unable-to-find-root-device-dropped-to-recovery-shell
Double-checked, initramfs-linux.img is in the correct directory
I've seen similar issues but none of their fixes worked for me. Any ideas on how I can get arch to boot?
EDIT: I discovered I'm using an LVM thing. So yeah. My home, root and swap partitions are little LVM thingies (i don't know what to call them) in /dev/sda8. I don't know if this affects anything
Best Answer
The problem appears to be that rEFInd isn't automatically creating the
refind_linux.conf
file in the/boot
directory.From step 4 of the "EFI Stub Loader Support Technical Details" from the rEFInd documentation:
I'm not sure why it isn't creating this file, but it's highly likely you can solve the problems you're having by creating it.
Creating the
refind_linux.conf
fileThe Arch Linux wiki has an excellent entry on how to do this, but essentially you place it in the same directory as your kernel (usually in
/boot
, either by creating it automatically or manually). The first uncommented line of the file will be the default parameters for booting the kernel.I created my file using the
mkrlconf
command, and the resulting file at/boot/refind_linux.conf
looked like this:We're getting somewhere, but this didn't work yet. Because I created it from the live USB, the first two entries are not correct as they refer to ISO on the USB instead. The final entry is actually correct though, and this is because like the error you received, it sets the root device from
''
to the UUID of your/
disk.So to set it as the primary boot option just delete the other lines and change the label.
Save the file and restart the system, it should now work correctly!
Footnotes
This is of course a long way to go about creating the file. You don't have to use the
mkrlconf
to generate it, you could manually create it yourself. It's more that it auto-populates the disk UUID (which I do not want to have to copy and type out manually).Step 5 from the Stub Loader Technical Details (linked above) outlines how, if no
refind_linux.conf
file is present, rEFInd will look for a kernel entry in/etc/fstab
. With a weird volume configuration though it's unlikely this will work.