Rescuing a Broken Archlinux System
Prolog
It’s one of these days again: you unplugged your laptop’s power supply, started a system update (pacman -Syu
) and left to do something else.
Upon your return you notice your laptop is suspiciously quiet. Fear starts creeping through your veins. You frantically try to boot up your system, but to no avail. Everything fades to black as your system keeps refusing to boot.
If this sounds familiar to you, you should first and foremost rethink your power management strategy, and secondly follow these 6 simple steps to rescue your system.
Step 1: Find a USB stick
Since your system won’t boot by itself, it needs a little help from a friend, i.e. a live USB stick. Go find it!
Step 2: Download an Archlinux ISO
To be able to boot into Arch, we need to have Arch. You can download an image from https://www.archlinux.org/download/.
Step 3: Flash Installation Medium
To create a bootable USB stick, we need to flash the ISO to it.
First, find the stick’s block device (and make really, really sure it’s the right one).
lsblk
can be helpful here:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 7.3T 0 disk
|-sda1 8:1 0 5M 0 part
`-sda2 8:2 0 7.3T 0 part
`-crypt_hd 253:0 0 7.3T 0 crypt /mnt/HD
sdb 8:16 1 7.5G 0 disk # <-- here it is
|-sdb1 8:17 1 679M 0 part
`-sdb2 8:18 1 64M 0 part
mmcblk0 179:0 0 14.8G 0 disk
|-mmcblk0p1 179:1 0 100M 0 part /boot
`-mmcblk0p2 179:2 0 14.7G 0 part /
Next, flash the ISO:
$ dd if=/path/to/arch.iso of=/dev/sdb bs=1M
Step 4: Boot USB Stick on Computer
How this works depends on your hardware. Good luck!
Step 5: Access Filesystem
It is now time to mount your lost system’s partition.
You can again look for it using lsblk
and then mount it:
$ mount /dev/sda2 /mnt
We can then chroot into the system:
$ arch-chroot /mnt
arch-chroot
will take care of various steps needed to make the chrooted environment feel like a proper one (e.g. mount /proc
).
Note: if your /boot
folder lives on a separate partition you need to mount it in manually (after mounting /dev/sda2
):
$ mount /dev/sda1 /mnt/boot
Step 6: Fix your System
Now you get to play detective, as many things could have broken. Here are a few suggestions:
As
pacman
was interrupted quite rudely, you might have to manually delete/var/lib/pacman/db.lck
.The packages involved in the update are most likely in a broken state. Identify them by looking at pacman’s logs (
/var/log/pacman.log
) and subsequently reinstall them.In some cases the initramfs can become corrupted. Run
mkinitcpio -p linux
to rebuild it.