Fix “Unable to find root device” Error in Arch Linux

Fix "Unable to find root device" Error in Arch Linux

After a recent major update on Arch Linux which included a new kernel my system became unbootable. It is yet another lesson to be careful with Arch Linux. Thankfully regardless of how serious the issue seemed it can be solved with relative ease. You will need to boot Arch Linux from USB or CD and enter Chroot environment in Arch Linux to fix the issue.

 

The updating to the latest packages available on from 28th January 2015 caused the issue that made the system unbootable. The kernel 3.18.4-1 along with many other updates were available.

sudo pacman -Syu

 

After rebooting the system the system would no longer boot and displayed an error message.

ERROR: Unable to find root device 'UUID: de305d54-75b4-431b-adb2-eb6b9e546013'.
You are being dropped into recovery shell.
    Type 'exit' to try and continue booting
sh: can't access tty: job control turned off
[rootfs /]#

Worst thing is that the keyboard while working during BIOS splash screen, stopped responding after the error message was displayed making any direct recovery impossible.

 

Issue seems to be with corruption or removal of certain packages. Re-installing the troublesome packages is probably the easiest option. To do that first boot Arch Linux from USB or CD and enter Chroot environment in Arch Linux. Once in chroot environment any commands executed are applied to the underlying installation.

 

Refresh all pacman repositories and upgrade.

pacman -Syyu

 

Re-install udev package.

pacman -S udev

 

Re-install mkinitcpio package.

pacman -S mkinitcpio

 

Regenerate the default Linux image.

mkinitcpio -p linux

 

Exit chroot.

exit

 

Reboot the system and remove the install medium.

reboot

 

If the issue was fixed your system should now boot normally as it did before the upgrade. Note that many of the steps may not be required but since there may be multiple issues it is simply less tedious to run all commands as opposed to running them one by one and then rebooting after each command.

 

Quick Reference

Boot Arch Linux from USB or CD.

Enter Chroot environment in Arch Linux.

pacman -Syyu
pacman -S udev
pacman -S mkinitcpio
mkinitcpio -p linux
exit
reboot
  • Nacho Amelivia

    Hey! Thank you very much for this quick guide, it helped me out bringing my home server back to life.
    I would just like to comment something, when running the pacman updates or the mkinitcpio commands, they should be executed using chroot /mn/arch and then the command.
    If not the system will use the pendrive or live usb / as the root instead of /mnt/arch.

    mkinitcpio would look for kernel images in /boot so it “should believe” that /mnt/arch/boot is /boot, the pacman -Syyu command I also recommend running it using chroot to prevent filling the pendrive/cd storage space before updating since it will try to store the packages first in /var/cache/pacman/pkg and depending on the size of the update it may require a lot of space.

    Thanks!

    • Glad it was helpful to you! Regarding running the commands under chroot, yes, it’s true but in “enter Chroot environment in Arch Linux” post additional commands are executed that mount the filesystem directories.

  • Justin

    I am aware that this is a very old post, but I made an account just to thank you for this. I thought I would have to start from scratch on my arch netbook. I would have lost so much having to do that but you really saved my butt with this. Thank you again, so very very much!

    • Glad it was helpful, I suspect this may be a fix to many issues not just the particular update that got me.

  • Awesome. This works for me.