Der GRUB-Bootloader
Wenn ein Computer mit Linux eingeschaltet wird, wird das Betriebssystem über ein spezielles Programm namens Bootloader geladen. Ein Bootloader ist in der Regel auf der primären Festplatte des Systems oder auf einem anderen Mediengerät installiert und ist nur für das Laden des Linux-Kernels und seiner erforderlichen Dateien oder in manchen Fällen für das Laden anderer Betriebssysteme in den Speicher verantwortlich.
GRUB liefert auf x86-Rechnern eine echte, befehlsbasierte Prä-OS-Umgebung die das Starten des Systems mit Parametern von einer Befehlszeile aus ermöglicht.
Die eigentliche Konfiguration von GRUB basiert auf den im Folgenden beschriebenen drei Dateien:
/boot/grub/menu.lst
Diese Datei enthält sämtliche Informationen zu Partitionen oder Betriebssystemen, die mit GRUB gebootet werden können. Ohne diese Informationen kann die Systemsteuerung nicht an das Betriebssystem übergeben werden.
/boot/grub/device.map
Diese Datei übersetzt Gerätenamen aus der GRUB- und BIOS-Notation in Linux-Gerätenamen.
/etc/grub.conf
Diese Datei enthält die Parameter und Optionen, die die GRUB-Shell für das ordnungsgemäße Installieren des Bootloaders benötigt.
MBR neu schreiben
Mit folgendem Befehl wird Grub z.B. in den MBR des Master-IDE-Geräts auf dem primären IDE-Bus installiert.
/sbin/grub-install /dev/hda
Beim nächsten Systemstart wird das grafische Bootloader-Menü von GRUB angezeigt, bevor der Kernel in den Speicher geladen wird.
Startverhalten des OS verändern
Hierzu kann die datei menu.lst angepasst werden
vim /boot/grub/menu.lst
!!ACHTUNG !! Fehler in der Datei können dazu führen, dass der Bootvorgang zerstört wird.
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You do not have a /boot partition. This means that # all kernel and initrd paths are relative to /, eg. # root (hd0,1) # kernel /boot/vmlinuz-version ro root=/dev/sda2 # initrd /boot/initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,1)/boot/grub/splash.xpm.gz hiddenmenu title Scientific Linux (2.6.32-279.19.1.el6.i686) root (hd0,1) kernel /boot/vmlinuz-2.6.32-279.19.1.el6.i686 ro root=UUID=998822e2-948b-436f-b940-e3a6b938f6e3 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=de-latin1-nodeadkeys rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_NO_LVM LANG=de_DE.UTF-8 rd_NO_DM rhgb quiet crashkernel=auto initrd /boot/initramfs-2.6.32-279.19.1.el6.i686.img title Scientific Linux (2.6.32-279.el6.i686) root (hd0,1) kernel /boot/vmlinuz-2.6.32-279.el6.i686 ro root=UUID=998822e2-948b-436f-b940-e3a6b938f6e3 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=de-latin1-nodeadkeys rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_NO_LVM LANG=de_DE.UTF-8 rd_NO_DM rhgb quiet initrd /boot/initramfs-2.6.32-279.el6.i686.img
Beispiel einer Menü-Datei
Zum besseren Verständnis des Aufbaus einer GRUB-Menüdatei stellen wir ein kurzes Beispiel vor. Diese Beispiel-Installation beinhaltet eine Linux-Bootpartition unter /dev/hda5, eine Root-Partition unter /dev/hda7 und eine Windows-Installation unter /dev/hda1.
gfxmenu (hd0,4)/message color white/blue black/light-gray default 0 timeout 8 title linux kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791 initrd (hd0,4)/initrd title windows chainloader(hd0,0)+1 title floppy chainloader(fd0)+1 title failsafe kernel (hd0,4)/vmlinuz.shipped root=/dev/hda7 ide=nodma \ apm=off acpi=off vga=normal nosmp maxcpus=0 3 initrd (hd0,4)/initrd.shippedDer erste Block behandelt die Konfiguration des Splash-Screens:
gfxmenu (hd0,4)/message | Das Hintergrundbild liegt auf /dev/hda5 und trägt den Namen message |
color white/blue black/light-gray | Das Farbschema: weiss (Vordergrund), blau (Hintergrund), schwarz (Auswahl) und hellgrau (Hintergrund der Auswahl). Das Farbschema wirkt sich nicht auf den Splashscreen aus, sondern erst, wenn Sie diesen mit Esc verlassen. |
default 0 | Der erste Menüeintrag mit title linux soll standardmäßig gebootet werden. |
timeout 8 | Nach acht Sekunden ohne Benutzerfeedback bootet GRUB automatisch durch. |
Der zweite und größte Block listet die verschiedenen bootbaren Betriebssysteme auf.
Der erste Eintrag (title linux) ist für das Booten von SUSE LINUX zuständig. Der Kernel (vmlinuz) liegt auf der ersten Festplatte in den ersten logischen Partition (hier der Bootpartition). Kernelparameter wie zum Beispiel die Angabe der Rootpartition, des VGA-Modus etc. werden hier angehängt. Die Angabe der Rootpartition erfolgt nach dem Linux-Schema (/dev/hda7/) da diese Information für den Kernel bestimmt ist und nichts mit GRUB zu tun hat. Die initrd liegt ebenfalls in der ersten logischen Partition der ersten Festplatte.
Der zweite Eintrag ist für das Laden von Windows zuständig. Windows wird von der ersten Partition der ersten Festplatte aus gestartet (hd0,0). Mittels chainloader +1 wird das Auslesen und Ausführen des ersten Sektors der angegebenen Partition gesteuert.
Der nächste Abschnitt dient dazu, das Booten von Diskette zu ermöglichen, ohne dass dazu das BIOS umgestellt werden müsste.
Die Bootoption failsafe dient dazu, Linux mit einer bestimmten Auswahl an Kernelparametern zu starten, die selbst auf problematischen Systemen ein Hochfahren von Linux ermöglichen.
Ein wichtiger Parameter ist die Einstellunger der Auflösung VGA= . Hier eine Tabelle:
Colour depth | 640×480 | 800×600 | 1024×768 | 1280×1024 | 1400×1050 | 1600×1200 |
---|---|---|---|---|---|---|
8 (256) | 769 | 771 | 773 | 775 | ||
15 (32K) | 784 | 787 | 790 | 793 | ||
16 (65K) | 785 | 788 | 791 | 794 | 834 | 884 |
24 (16M) | 786 | 789 | 792 | 795 |
Weitere Bootoptionen wierden hier angesprochen: http://wiki.ubuntuusers.de/Bootoptionen?redirect=no