8.4. Mittels Grub das System startklar machen

8.4.1. Einführung

GNU GRUB ist ein Multiboot Bootloader. Er wurde von GRUB abgeleitet. Kurz gesagt ein Bootloader ist die erste Software, die beim Starten eines Computers ausgeführt wird. Sie ist für das Laden und Ausführen des Kernels verantwortlich (wie Hurd oder Linux). Der Kernel initialisiert seinerseits das restliche Betriebssystem (z.B. GNU).

Grub2 zählt die Festplattenpartitionen nicht von 0 an sondern von 1. Somit wäre /dev/sda3 => (hd0,3), wie im Beispiel unten, die Festplatten selber werden aber weiterhin von 0 ab gezählt.

Erstmal erstellen wir die Datei device.map:

grub-mkdevicemap --device-map=device.map

Den Inhalt dieser Datei schauen wir uns an:

cat /boot/device.map

Der Inhalt sollte in etwa dem folgenden gleichen:

(hd0)   /dev/sda

Natürlich könnten dort noch weitere Laufwerke vorhanden sein, wichtig ist aber das die Festplatte auf der unser Molli installiert ist dabei ist.

8.4.2. Konfigurations Datei erstellen

Mit Hilfe der obigen Informationen können wir nun GRUB in das Verzeichnis /boot/grub installieren:

grub-install --grub-setup=/bin/true /dev/sda

Der Parameter --grub-setup=/bin/true verhindert das Grub den Master Boot Record (MBR) jetzt überschreibt.

Erzeuge die Datei /boot/grub/grub.cfg:

grub-mkconfig -o /boot/grub/grub.cfg

Das Kommando grub-mkconfig nimmt an das der Kernel vmlinux-* heißt. Da das bei uns nicht der Fall ist führen wir das Kommando zwar aus aber die erzeugte Datei /boot/grub/grub.cfg ist ziemlich nutzlos. Sie sieht in etwa so aus:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

Rechte der Datei /boot/grub/grub.cfg ändern:

chmod 0644 /boot/grub/grub.cfg

Wir öffnen diese Datei nun im Editor vi und versehen sie mit sinnvollen Einträgen:

#
### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5

insmod font
font (hd0,2)/boot/grub/unifont.pff
insmod terminal
insmod gfxterm
insmod vbe

set gfxmode=1024x768x32
set menu_color_normal=blue/black
set menu_color_highlight=light-green/black
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Linux 3.1.5 MOLLI Version 1" {
  set root=(hd0,2)
  linux (hd0,2)/boot/kern_3.1.5-1 root=/dev/sda2 vga=792 hpet=force fastboot
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

Wichtig ist das Du den Wert für die Festplatte und die Partition anpasst. Im Beispiel oben ist es die 2. Partition auf der ersten Festplatte.

8.4.3. Testen der Konfiguration

Grub ist ein Multiboot Kernel, wenn Du auf Deiner Festplatte bereits Grub installiert hast kannst du mit seiner Hilfe den neuen Grub testen. Dazu verlassen wir den chroot und starten den Computer neu.

/sbin/reboot
...
grub> root (hd0,2)
grub> kernel /boot/grub/core.img
grub> boot

Nun gibst Du am Grub Bootprompt die obigen Kommandos ein, schreib sie Dir auf bevor Du den Computer neustartest.

8.4.4. Den Master Boot Record neu schreiben

Wenn du Grub getestet hast und alles einwandfrei läuft betrittst Du wieder die chroot Umgebung wie auf dieser Seite Abschnitt 6.88, „Aufräumen“ beschrieben.

[Warnung]

Warnung

Das folgende Kommando überschreibt den vorhandenen MBR!

Aktualisiere den MBR wie folgt:

grub-setup '<DEVICE>'

Ändere den Platzhalter DEVICE zu dem Wert Deiner Festplatte, für unser Beispiel wäre dies '(hd0)'. Vergiss bitte nicht die einfachen Anführungszeichen, da die Shell sonst die Klammer interpretiert und das Kommando fehlschlägt.