root auf LVM und RAID: waiting for device /dev/[vg]/[lv] to appear ...
SuSE 10.2: Falls das Wurzelverzeichnis trotz Autodetection beim booten nicht initialisiert wird, liegt es vermutlich an einer fehlenden /etc/mdadm.conf, die 'eigentlich' dank Autodetection nicht mehr benötigt werden sollte [1], zumindest für alle Partitionen außer dem Wurzelverzeichnis. Ins Spiel kommt die /etc/mdadm.conf vor allem bei dem erzeugen der initrd. Angelegt werden kann die Datei z.B. mit dem Befehl
mdadm --detail --scan >> /etc/mdadm.conf
Anschließend kann mit mkinitrd die initrd erzeugt werden (Abweichungen je nach Distribution):
mkinitrd -k [/path/to-kernel] -i [/path/to-initrd]
Wichtig ist, dass die entsprechenden Module und Programme in der initrd abgelegt sind. Geprüft werden kann der Inhalt der initrd wie folgt:
mkdir /tmp/initrd
cd /tmp/initrd
zcat /boot/initrd... | cpio -div
Im Verzeichnis ist jetzt der Inhalt zu finden. Vorhanden sein sollten mdadm und lvm in sbin/ , sowie die etc/mdadm.conf usw.
Die Spur des Fehlers
Das System wurde vom Rettungssystem aus von 'physikalischen' Partitionen auf ein Software-Raid mit LVM migriert. Das chroot mit
mount -t proc none /[mountpoint/new-system]/proc
mount -o bind /dev /[mountpoint/new-system]/dev
vorbereitet. Mit
chroot /[mountpoint/new-system]/
in das neue System gewechselt und mit oben genannten Befehl die initrd erzeugt:
mkinitrd -k [/path/to-kernel] -i [/path/to-initrd]
Falls die Werkzeuge für LVM und RAID nicht in der initrd landen, kann das unter SuSE mit den Parametern -f lvm -f md erzwungen werden. Im Zweifel den Inhalt prüfen, siehe oben.
Boot.
Das System bleibt mit einem
Waiting for device /dev/vol01/root to appear: ................ not found -- exiting to /bin/sh
stehen und landet nach einer Weile in einer Shell.
cat /proc/mdstat
zeigt kein RAID und auch /dev/md0 ist nicht vorhanden ist, jedoch
cat /proc/modules
zeigt dass das Modul raid1 geladen ist.
Das fehlende Block-Device (b) mit mknod erzeugen, Major 9 Minor 0 (siehe KernelQuelltext/Documentation/devices.txt,Abschnitt "9 block ... Metadisk (RAID) devices":
mknod /dev/md0 b 9 0
RAID als /dev/md0 initialisieren
mdadm -Ac partitions -m0 /dev/md0
Antwort positiv, überzeugt mit:
cat /proc/mdstat
welches nun das zu Grunde liegende RAID anzeigt, welches nun auch im LVM zu sehen ist:
lvm pvscan
Jedoch sind die Logical Volumes noch inaktiv:
lvm lvscan
aktiviert mit:
lvm lvchange -ay vol01/root
Nun ist alles vorhanden, mit exit beenden, der Boot-Vorgang geht weiter.
Jetzt wie oben beschreiben die /etc/mdadm.conf anlegen und die initrd erneuern (Erfolgskontrolle!).
[1] http://linux-raid.osdl.org/index.php/RAID_setup#The_Persistent_Superblock

