Howto:grub
Inhaltsverzeichnis |
GRUB
Einleitung
Grub (http://www.gnu.org/software/grub/) ist ein Bootlader, der verschiedenste Betriebssystem laden kann. Er bietet darüber hinaus einige interessante Möglichkeiten, die andere Bootlader nicht bieten.
Mittlerweile gibt es 2 Versionen von Grub, die sich unterscheiden.
Konfiguration
Grub 1
Die Konfiguration erfolgt über die Konfigurationsdatei /boot/grub/menu.lst:
default 0 timeout 5 color cyan/blue white/blue title Debian GNU/Linux, kernel 2.6.33 root (hd0,4) kernel /boot/vmlinuz-2.6.33 root=/dev/sda5 ro vga=791 initrd /boot/initrd.img-2.6.33 title Debian GNU/Linux, kernel 2.6.33 (single-user mode) root (hd0,4) kernel /boot/vmlinuz-2.6.33 root=/dev/sda5 ro vga=791 single initrd /boot/initrd.img-2.6.33 title Other operating systems: root title Microsoft Windows XP rootnoverify (hd0,0) makeactive savedefault chainloader +1
Grub 2
Die Konfiguration erfolgt über die Konfigurationsdatei /boot/grub/grub.cfg. Diese wird meistens generiert. Hier jedoch ein Beispiel:
### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then load_env fi set default="0" if [ ${prev_saved_entry} ]; then set saved_entry=${prev_saved_entry} save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi function savedefault { if [ -z ${boot_once} ]; then saved_entry=${chosen} save_env saved_entry fi } insmod ext2 set root='(hd0,5)' search --no-floppy --fs-uuid --set 3dc97ecc-263d-407e-9890-d8a154cf2777 if loadfont /usr/share/grub/unicode.pf2 ; then set gfxmode=640x480 insmod gfxterm insmod vbe if terminal_output gfxterm ; then true ; else # For backward compatibility with versions of terminal.mod that don't # understand terminal_output terminal gfxterm fi fi insmod ext2 set root='(hd0,5)' search --no-floppy --fs-uuid --set 3dc97ecc-263d-407e-9890-d8a154cf2777 set locale_dir=($root)/boot/grub/locale set lang=de insmod gettext set timeout=5 ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=cyan/blue set menu_color_highlight=white/blue ### END /etc/grub.d/05_debian_theme ### ### BEGIN /etc/grub.d/10_hurd ### ### END /etc/grub.d/10_hurd ### ### BEGIN /etc/grub.d/10_linux ### menuentry "Debian GNU/Linux, with Linux 2.6.33" --class debian --class gnu-linux --class gnu --class os { insmod ext2 set root='(hd0,5)' search --no-floppy --fs-uuid --set 3dc97ecc-263d-407e-9890-d8a154cf2777 echo Loading Linux 2.6.33 ... linux /boot/vmlinuz-2.6.33 root=UUID=3dc97ecc-263d-407e-9890-d8a154cf2777 ro vga=791 echo Loading initial ramdisk ... initrd /boot/initrd.img-2.6.33 } menuentry "Debian GNU/Linux, with Linux 2.6.33 (recovery mode)" --class debian --class gnu-linux --class gnu --class os { insmod ext2 set root='(hd0,5)' search --no-floppy --fs-uuid --set 3dc97ecc-263d-407e-9890-d8a154cf2777 echo Loading Linux 2.6.33 ... linux /boot/vmlinuz-2.6.33 root=UUID=3dc97ecc-263d-407e-9890-d8a154cf2777 ro single vga=791 echo Loading initial ramdisk ... initrd /boot/initrd.img-2.6.33 } ### END /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/30_os-prober ### menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" { insmod fat set root='(hd0,1)' search --no-floppy --fs-uuid --set 497c-5d11 drivemap -s (hd0) ${root} chainloader +1 } ### END /etc/grub.d/30_os-prober ###
Unter Debian/(K)Ubuntu erfolgt die Konfiguration über die Konfigurationsdatei /etc/default/grub:
GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX="vga=791"
Die Menueinträge wrden mit den Skripten unter /etc/grub.d/ erzeugt. Diese sind normale Shellskripte, die die jeweiigen Blöcke erzeugen. Man kann recht einfach neue Skripte hinzufügen. Die Zahl vorn im Skriptnamen bestimmt die Reihenfolge der Abarbeitung beim Erstellen von /boot/grub/grub.cfg.
Grub-Konsole
Die Grub-Konsole ist eine Art interaktive Shell, die man durch das Drücken von 'c' bekommt bzw wenn keine Konfiguration vorhanden ist. Man kann dort normale Grub-Befehle eingeben.
Bearbeiten von Einträgen zur Laufzeit
Es ist auch sehr nützlich, dass man bestehende Einträge zur Laufzeit ändern kann (also wenn Grub gestartet wurde). Zum Bearbeiten eines Eintrags drückt man e und kann dann den Eintrag bearbeiten.
Grub1
Man muss nun nochmals e für das Bearbeiten der jeweiligen Zeile drücken. Nach dem Bearbeiten drückt man ESC und befindet sich wieder im Eintrag, wo man alle Zeilen des Eintrags sehen kann (kernel, initrd, etc). Zum Booten des modifizierten Eintrags drückt man b.
Grub2
Hier sind alle Zeilen in einem Feld zum Bearbeiten aufgelistet. Nach dem Bearbeiten drückt man Strg+X.