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.
