Arch: Fixing Boot Issues After Kernel Updates

This post logs the fix for me to the boot issue of Arch Linux after kernel updates.

The Problem

After some rolling updates, my computer running Arch Linux fails to boot up. It turns out to be pretty hard to lock down the specific update that is causing the problem, since rebooting is done only once several weeks. After trying different things, I finally fixed it using what is described below.

The Error comes after a warning saying “modules.devname not found – ignoring”. Then “ERROR: Unable to find root device” pops out and it drops into a recovery shell, where even the keyboard does not work.

In my case, the kernel gets installed to /boot, so after a kernel update, so until manually updated, mkinitcpio will generate incorrect initramfs files.

The Fix

If your computer is still on, simply run as root

mkinitcpio -p linux

and the problem will be gone (supposed to be handled automatically by pacman maybe??

However, if you did not realise doing so until the computer fails to boot up like in my case, you will have to boot into a live CD or live USB, chroot into the system, and excute the command above.

Fixing with Chroot

Using chroot is kind of the last resort. To do that, you may follow the following steps:

  • Step 1: Prepare a live USB using Arch Linux ISO (can be downloaded from Arch download site)
  • Step 2: Boot into the live USB and chroot into the system (follow for example this link.
  • Step 3: Do the dirty things and reboot.

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax