Bearbeiten der initramfs (Kernelpakete 2.11.0 bis 3.16.0)

Mit dem Kernel-Paket 2.11.0 wurde vom initrd- auf initramfs-Format umgestellt, womit sich die Schritte zur manuellen Bearbeitung dieser Bootdatei grundsätzlich geändert haben.

Allerdings heißt die Bootdatei auch bei Verwendung des initramfs-Formats weiterhin initrd.gz.

  1. Entpacken der initrd.gz

    # cp /boot/initrd.gz /tmp
    # gzip -d /tmp/initrd.gz



  2. Auspacken der initramfs

    # mkdir /initramfs
    # cd /initramfs
    # cpio -i < /tmp/initrd



  3. Bearbeiten der initramfs

    Nun kann man sich das Verzeichnis /initramfs näher ansehen. Das Äquivalent zur linuxrc des initrd-Formats ist jetzt die Datei init. Am Anfang stehen die Lade-Befehle der Module, danach kommt das Skelett von init.

    Hier können nun also Änderungen an der Datei init vorgenomen werden und gegebenenfalls auch Dateien z. B. Kernelmodule hinzugefügt werden.

    Achtung: Immer komplette Pfade beim Starten von Befehlen verwenden! Sollen Kernelmodule der initramfs hinzugefügt werden, dann sind diese auch in den Verzeichniszweig /lib/modules/<kernelversion>/ zu kopieren. Im Init-Skript können keine Pfade auf das Modulverzeichnis des installierten Systems benutzt werden, da das Root-Device zu diesem Bootzeitpunkt noch nicht zur Verfügung steht.


  4. Einpacken der initramfs und kopieren ins Bootverzeichnis

    # cd /initramfs
    # find . | cpio -o -H newc --quiet | gzip -9 > /tmp/initrd.gz
    # cp /tmp/initrd.gz /boot



  5. Aktivierung  der neuen initramfs

    # lilo

    Achtung: Wird der Aufruf von lilo unterlassen, ist der Server über den Standard-Eintrag "eis" im Bootmenü nicht mehr bootbar, sondern nur noch über weitere Einträge des Bootmenüs z. B. "oldeis", solange diese funktionstüchtig sind.

    .

  6. Aufräumen

    # cd /
    # rm -rf /initramfs
    # rm /tmp/initrd.gz
    # rm /tmp/initrd