EXTLINUX: flexibler Bootloader für den Rootserver

Grub ist zu komplex und LILO zu umständlich? Warum nicht einmal den Bootloader EXTLINUX probieren? Der muss wie GRUB nicht nach jeder Kernel-Installation neu aufgerufen werden, ist aber so simpel handzuhaben wie LILO und bietet sogar Menüs. Die Bootloader der Syslinux-Familie kennt man sonst nur von Installations-CDs oder USB-Sticks. Absolut zu unrecht, denn auch auf einer EXT2/EXT3-Partition fühlt sich dieser Loader wohl.

Vor ein paar Tagen hatte ich die Aufgabe, ein Ubuntu auf einem Rootserver zu bootstrappen, nur leider war der Befehl grub-install des Rettungssystems defekt. LILO wollte ich nicht verwenden, weil mir der ständige Aufruf des Befehls lilo nach einer Konfigurationsänderung zuwider ist und dieser gerne vergessen wird. Weil ich bereits Erfahrungen mit SYSLINUX und ISOLINUX hatte, entschied ich mich für EXTLINUX.

EXTLINUX kann auf jeder aktiven Partition installiert werden. Der Autor beschreibt ihn als “Bootloader mit Benehmen”, denn EXTLINUX lässt den MBR unberührt, was aber eine generell andere Herangehensweise fpür die Installation als bei anderen Bootloadern erfordert.

Das Syslinux-Archiv, in dem extlinux, ein MBR, das Menümodul und der neue Lader für Xen enthalten sind, ist auf den offiziellen Mirrorservern des Linux-Kernels erhältlich und muss nur entpackt werden; alle Tools liegen bereits kompiliert bei.

Die Installation gestaltet sich einfach, im Gegensatz zu GRUB treten keine Probleme auf, wenn der von Linux als Bootplatte vermutete Datenträger nicht dem Startlaufwerk im BIOS entspricht:

  1. Die Bootpartition muss vom Typ 83 sein und als aktiv markiert werden. Sie muss nicht zwingend am Anfang der Festplatte liegen, einige BIOSe erfordern jedoch immer noch alle Bootdateien innerhalb der ersten 1024 Zylinder. Auf dem Testrechner habe ich die Bootpartition an den Anfang der Platte gelegt und 128MB groß gemacht.

  2. Die Boot-Partition muss mit dem Dateisystem ext2 oder ext3 formatiert sein, ext2 ist am pflegeleichtesten — schon wegen dem fehlenden Journaling empfiehlt sich eine eigene Partition nur für /boot.
  3. Zunächst wird der MBR der Startplatte durch einen DOS-MBR ersetzt. Sie können hierfür ms-sys verwenden oder den im Syslinux-Paket beiliegenden Loader auf Platte schreiben:

    cd syslinux-3.11
    cat mbr.bin > /dev/hda

  4. Den eigentlichen Loader schreiben Sie nun unter Angabe des Zielverzeichnisses auf die gemountete Startpartition. In der Regel ist das Zielverzeichnis /boot, wenn Sie vom Rettungssystem aus agieren, kann es auch mal /mnt/hda1 sein.

    cd syslinux-3.11/extlinux
    ./extlinux /boot

    Im Verzeichnis /boot finden Sie nun eine neue Datei extlinux.sys vor, die den Bootloader enthält.

  5. Sie benötigen nun eine Konfigurationsdatei extlinux.conf, die Sie in dem Verzeichnis anlegen, das den Bootloader enthält. Auf Rootservern mit serieller Konsole ist es ratsam, diese gleich beim Boot zu aktivieren. Den Timeout setzen wir auf zehn Sekunden. Die Initrd ist als Append-Parameter zu übergeben.

    SERIAL 0 57600
    DEFAULT ubuntu
    TIMEOUT 100
    PROMPT 1

    LABEL ubuntu
    KERNEL vmlinuz-2.6.16.27
    APPEND initrd=initrd-2.6.16.27 root=/dev/hda5 ro console=ttyS0,57600

    Wenn Sie nicht sicher sind, welche Parameter Sie an der Append-Zeile übergeben sollen, Lassen Sie sich die des aktuell gebooteten Systems anzeigen, lediglich der Parameter BOOT_IMAGE gehört nicht in die Append-Zeile:

    cat /proc/cmdline

  6. Deutlich hübscher und flexibler ist das einfache Menüsystem von extlinux. Um dieses nutzen zu können, kopieren Sie die Datei menu.c32 in das Bootverzeichnis. Der Default-Eintrag muss auf das Menü zeigen und der Prompt unterdrückt werden. Aussagekräftige Labels machen das Menü übersichtlicher:

    SERIAL 0 57600
    DEFAULT menu.c32
    TIMEOUT 100
    PROMPT 0
    MENU TITLE vbox04.meinedomain.xyz

    LABEL ubuntu01
    MENU LABEL Ubuntu + Vanilla 2.6.16.27
    KERNEL vmlinuz-2.6.16.27
    APPEND initrd=initrd-2.6.16.27 root=/dev/hda5 ro console=ttyS0,57600

    LABEL ubuntu02
    MENU LABEL Ubuntu + Vanilla 2.6.17.7
    KERNEL vmlinuz-2.6.17.7
    APPEND initrd=initrd-2.6.17.7 root=/dev/hda5 ro console=ttyS0,57600

    Beim nächsten Neustart wird das Bootmenü auf der seriellen Konsole angezeigt:

    Und mit TAB können Sie die Bootzeile des gewählten Eintrages editieren:

2 thoughts on “EXTLINUX: flexibler Bootloader für den Rootserver

  1. Pingback: Mattlog » Blog Archive » Schrott wird flott: Linux auf dem FSC B142

  2. Pingback: Das Rootserver-Experiment » Blog Archive » Welchen Bootloader verwende ich?

Comments are closed.