Arch Linux Systemd upgrade issues

After an update of my Arch OS over the weekend, my system refused to boot with this error:

Error: Root device mounted successfully, but /sbin/init does not exist. Bailing out, you are on your own. Good luck.

I should admit that I love the unassuming tone of the message.

For the latest update to happen, a bit of manual intervention is required.  More details on that here. Once the update is done, the machine will refuse to boot when restarted. To get your system running again edit the grub entry in the grub menu, find the line init=/bin/systemd and replace it with init=/usr/lib/systemd/systemd and continue to boot the system with modified init parameter.

To make the change permanent, modify the /etc/default/grub file, and change the value of GRUB_CMDLINE_LINUX_DEFAULT by appending init=/usr/lib/systemd/systemd to it. On my machine, it looks like this:

GRUB_CMDLINE_LINUX_DEFAULT="init=/usr/lib/systemd/systemd"

And generate a new grub.cfg by running grub-mkconfig. Make sure that you replace your existing grub.cfg (typically in /boot/grub/) with the new one.

The reason for this problem is that with the latest version of systemd (version 204-1) on Arch, the symbolic link that existed earlier to /bin doesn’t anymore, since /bin doesn’t exist anymore (read this post, for the reason behind that).

5 thoughts on “Arch Linux Systemd upgrade issues

  1. Any other ideas? I think the problem will persist for anyone (like me) who has a seperate partition for /usr (and perhaps even /boot, /tmp, and /var). I’d like to know how to get those partitions mounted at the same time as /… The root partition is getting mounted alright, but the system wants to go straight to the systemd call without at least mounting the equally important /usr and /var partitions.

    But thanks anyway, your article pointed me to what I think is the real reason I can’t get this distro to boot.

      • Actually, I have solved the problem. I had already tried including the shutdown and usr hooks in the mkinitcpio.conf but realized after reading through this monster:

        https://wiki.archlinux.org/index.php/Mkinitcpio

        Buried down toward the end was the key:
        “/usr as a separate partition
        “If you keep /usr as a separate partition, you must adhere to the following requirements:
        “-Add the shutdown hook. The shutdown process will pivot to a saved copy of the initramfs and allow for /usr (and root) to be properly unmounted from the VFS.
        “-Add the fsck hook, mark /usr with a passno of 0 in /etc/fstab. While recommended for everyone, it is mandatory if you want your /usr partition to be fsck’ed at boot-up. Without this hook, /usr will never be fsck’d.
        “-Add the usr hook. This will mount the /usr partition after root is mounted. Prior to 0.9.0, mounting of /usr would be automatic if it was found in the real root’s /etc/fstab.”
        And never forget to run mkinitcpio -p linux every time after you make changes to mkinitcpio.conf to actually create the new images and get them the right place. Oops, don’t forget that or you’ll like a dork.

  2. I had a similar problem. I booted into the grub shell without getting the “you’re on your own” message. I found that /boot/grub/menu.lst had been (non-)replaced with /boot/grub/menu.lst.pacsave. I was able to `cat’ the contents of the .pacsave file and use that for booting from the grub shell, while adding “init=/usr/lib/systemd/systemd” to the kernel line.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s