Wer Arch Linux verwendet kennt auch die wichtige Konfigurationsdatei /etc/mkinitcpio.conf, in dieser wird das Verhalten der Initial Ramdisk definiert. Effektiv sorgt diese Konfiguration dafür das z.B. zuerst die SATA Treiber, dann die Verschlüsselung und anschließend das LVM vor dem mounten der Dateisysteme an die Reihe kommt.

Das Ganze ist sehr modular aufgebaut und verzichtet auf unnötige Magie, es tut genau was man ihm sagt und auf keinen Fall mehr als das. Jedes dieser Module, auch Hooks genannt, stellt bestimmte Funktionen bereit.

Eine Liste der möglichen Hooks bekommt man mit dem Befehl:

mkinitcpio -L
Auf meinem System, hier am Desktop, sieht das so aus:
==> Available hooks
   autodetect      consolefont     fsck            keymap          mdadm_udev
   pata            sata            sleep           udev            usr
   base            encrypt         fw              lvm2            memdisk
   pcmcia          scsi            strip           usb             virtio
   btrfs           filesystems     ide             mdadm           mmc
   resume          shutdown        timestamp       usbinput
Ich werde an dieser Stelle nicht erklären was jeder dieser Hooks genau macht, dafür gibt es nämlich eine integrierte Hilfe:
mkinitcpio -H hookname

Wichtig ist aber das ihr bei der Verwendung dieser Hooks folgende Punkte unbedingt beachtet:

  1. Die Reihenfolge der Hooks ist wichtig, muss also zuerst eine Partition entschlüsselt werden muss auch der Hook zuerst kommen. Wird dann LVM gebraucht um die Dateisysteme erreichen zu können wäre dies der nächste…
  2. Vergessene Hooks sorgen dafür das ggf. bestimmte Treiber fehlen. Habt ihr also vergessen den lvm2 Hook zu definiern hat die Initial Ramdisk auch keine Treiber für LVM und auch dessen notwendige Tools werden fehlen. Es wird also ein Rescue System benötigt um dieses Problem zu fixen!
  3. Denkt bei den Hooks bitte auch an eure Eingabegeräte und dessen Keymap, nichts ist nerviger als eine Englische Belegung für eine Deutsche Tastatur ;-)
  4. Vergesst nicht nach jeder Änderung an dieser Datei die Initial Ramdisk neu zu bauen.
Ich selbst habe hierzu auf den meisten meiner Systeme folgende Zeile:
HOOKS="base udev autodetect usbinput keymap sata encrypt lvm2 filesystems"
Diese Zeile sorgt dafür das in jedem Fall bevor etwas an den Platten passiert auch alle Eingabegeräte richtig funktionieren. Wird also eine Platte oder Volume nicht gefunden kann ich manuell eingreifen ohne ein Rescue System bemühen zu müssen.

Das neu bauen der Initial Ramdisk geht übrigens mit diesem kleinen Befehl:

sudo mkinitcpio -p linux