This is how I fixed this problem :
I've booted into an arch installation CD and mounted my root partition under /mnt/arch.
mkdir /mnt/arch
mount /dev/sda4 /mnt/arch
I then ran the following commands:
cd /mnt/arch
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
Depending on your file system, you may need to bind-mount different partitions and folders. Don't forget to check if the boot partition is properly mounted:
ls /mnt/arch/boot
If the boot folder is empty, you need to find the partition lsblk -f
and mount (let's use sda1 as boot partition in this example:) mount /dev/sda1 /mnt/arch/boot
I then issued the chroot command and configured my network:
arch-chroot . /bin/bash
dhcpcd eth0
I'm not sure if all of these commands are required, but I didn't feel like continuously rebooting/chrooting, so I did them all at once and it fixed the issue we both were having:
pacman -Syy
pacman -Syu
pacman -S udev
pacman -S mkinitcpio
mkinitcpio -p linux
reboot
Remove the CD or USB drive and ta-da! Now, I'll be honest and admit that I don't fully understand this fix. Some of the posts also suggested doing a “pacman -S linux”, however that was not necessary for me.