Bootloader-CD mit GRUB

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

Um den Kernel auf einem Server, der seine Root-Partition auf einem RAID-1 hat, kontrolliert laden zu können, kann es manchmal empfehlenswert sein, eine Boot-CD mit GRUB zur Hand zu haben.

Wie eine solche CD erstellt wird, wird in der GRUB-Doku beschrieben. Hier ein konkretes Beispiel, für das die folgenden Angaben gelten:

  • Das Root-Filesystem befindet sich auf dem RAID-1-Volume md0, bestehend aus /dev/hda1 und /dev/hdc1.
  • Es ist keine gesonderte /boot-Partition vorhanden.
  • Der Kernel wurde selbst übersetzt und trägt den Namen /boot/vmlinuz bzw. /boot/vmlinuz.old, wie vom install-Target des Kernel-Makefile vorgesehen.
  • Alle erforderlichen Treiber (MD/RAID/Devicemapper, IDE, Filesystem, Serieller Port) wurden fest (d.h. nicht modular) in den Kernel eingebaut, damit keine Initial Ramdisk (initrd) benötigt wird.
  • Der Server soll überwiegend an einer seriellen Konsole laufen.

Anlegen der Verzeichnisstruktur:

$ mkdir -p iso/boot/grub

Auffinden und Kopieren der stage2 für CD-Filesysteme:

$ locate stage2_eltorito
/lib/grub/i386-pc/stage2_eltorito
$ cp /lib/grub/i386-pc/stage2_eltorito iso/boot/grub

Inhalt von iso/boot/grub/menu.lst:

color yellow/red white/red

timeout 10
default 1
fallback 2

serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1 
terminal --timeout=10 serial console

title ****** This is Grub loaded from CD ******
root

title Mirror 1 - current kernel
       root   (hd0,0)
       kernel /boot/vmlinuz root=/dev/md0 console=tty0 console=ttyS0,9600n8

title Mirror 2 - current kernel
       root   (hd1,0)
       kernel /boot/vmlinuz root=/dev/md0 console=tty0 console=ttyS0,9600n8

title *** Fallback kernels (previous version) ***
root

title Mirror 1 - old kernel
       root   (hd0,0)
       kernel /boot/vmlinuz.old root=/dev/md0 console=tty0 console=ttyS0,9600n8

title Mirror 2 - old kernel
       root   (hd1,0)
       kernel /boot/vmlinuz.old root=/dev/md0 console=tty0 console=ttyS0,9600n8

ISO-Image bauen:

$ mkisofs -R -b boot/grub/stage2_eltorito \
    -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso

Das so entstandene kann dann auf CD gebrannt werden und dauerhaft im CD-Laufwerk des Server gelassen werden oder nur zum Einsatz kommen, wenn das System nach einem Plattendefekt nicht mehr booten will.

Für den Fall, daÿ es am Ende das CD-ROM-Laufwerk ist, das den Geist aufgibt, lohnt es sich übrigens auch einen Bootloader auf der Festplatte zu haben. Das nur am Rande. ;-)