ArchLinux - ERROR: Unable to find root device /dev/sda1 ...

Die Tage habe ich mir ein virtuelles ArchLinux aufgesetzt und nach der Installation erstmal mit Patches versorgt und VMware Tools installiert. Offensichtlich ist dabei etwas schief gelaufen - der nächste Boot führte nämlich ins Nirvana:

1ERROR: Unable to find root device /dev/sda1 ...
2You are being dropped to a recovery shell
3    Type 'exit' to try and continue booting
4sh: can't access tty; job control turned off
5[rootfs /]#

Das Problem ist: Beim Aktualisieren ist (warum auch immer) udev deinstalliert worden. Beim Aktualisieren des Kernels wurde udev also nicht berücksichtigt und somit auch irgendein Treiber vergessen.

Die Lösung: Um das Problem zu beheben muss mithilfe der ArchLinux CD in das System "gechrootet" und udev und der Linux-Kernel (re-)installiert werden - hierfür wird natürlich eine Verbindung zum Internet benötigt (die auch noch hergestellt werden muss):

 1# km
 2...
 3# mount /dev/sda1 /mnt
 4# swapon /dev/sda2
 5# mount --bind /dev /mnt/dev
 6# mount --bind /tmp /mnt/tmp
 7# mount -t proc proc /mnt/proc
 8# mount -t sysfs none /mnt/sys
 9# chroot /mnt /bin/bash
10# ip link set eth0 up
11# dhcpcd eth0
12# pacman -S udev
13# pacman -S linux

Nach einem Reboot sollte das Ganze wieder funktionieren - alternativ kann es auch helfen, das benötigte Controller-Modul in die /etc/mkinitcpio.conf aufzunehmen. Bei VMware VMs ist das wahrscheinlich (Workstation 7+, IDE-Konfiguration) ata_piix:

1# vim /etc/mkinitcpio.conf
2...
3MODULES="ata_piix"

In dem Fall müsste der Kernel auch neu gebaut werden:

1# pacman -S linux