ZenWalk - Grub vs. Lilo

Dieser Artikel ist eine Ergänzung von ZenWalk - Suspend2disk. Alle notwendigen Schritte zur Installation von Grub erfolgen komplett mit der Shell. Alle Befehle in der Shell sind als root auszuführen.

In der Shell als root arbeiten. Shell als User öffnen und dann eingeben

su

gefolgt von einem ENTER. Nun erfolgt die Frage nach dem root-Passwort - eingeben und erneut ENTER. Jetzt arbeitet man in der Shell als root.
Von root zurück zu einem User mit

su username

1. Vorraussetzungen

Das Paket Grub herunterladen von [1]. Installieren:

installpkg /pfad-zum-paket/grub-version.tgz

Bei der Installation des Paketes Grub sind keine Abhängigkeiten zu erfüllen.

Beispiel einer Grub Paketinstallation:

root[zenwalk]# installpkg /home/siggi/incomming/downloads/zenwalk/grub-0.97-i486-2.tgz
root[zenwalk]# installpkg /home/siggi/incomming/downloads/zenwalk/grub-0.97-i486-2.tgz
Installing package grub-0.97-i486-2...
PACKAGE DESCRIPTION:
grub: grub (GNU GRUB Legacy bootloader)
grub:
grub: This is the legacy (0.9x) version of GNU GRUB, the GRand Unified
grub: Bootloader. GRUB is an alternative to other familiar bootloaders
grub: such as LILO. Unlike LILO, it loads a kernel through direct file-
grub: system support rather than a block list so it does not need to be
grub: updated if a new kernel is installed.
grub:
grub: Also included is Kent Robotti's 'grubconfig' tool (similar to the
grub: Slackware 'liloconfig' setup tool).
grub:

2. Grub vorbereiten

Im Verzeichnis /boot ein neues Verzeichnis grub anlegen:

mkdir /boot/grub

Grub benötigt verschiedene "stage"-Dateien. Diese Dateien befinden sich nach der Installation irgendwo im System und müssen in das Verzeichnis /boot/grub kopiert werden. Diese Dateien suchen:

find / -name *stage*

Beispiel eines Suchergebnisses:

root[zenwalk]# find / -name *stage*
/usr/lib/grub/i386-pc/e2fs_stage1_5
/usr/lib/grub/i386-pc/stage2_eltorito
/usr/lib/grub/i386-pc/ufs2_stage1_5
/usr/lib/grub/i386-pc/iso9660_stage1_5
/usr/lib/grub/i386-pc/jfs_stage1_5
/usr/lib/grub/i386-pc/xfs_stage1_5
/usr/lib/grub/i386-pc/minix_stage1_5
/usr/lib/grub/i386-pc/fat_stage1_5
/usr/lib/grub/i386-pc/vstafs_stage1_5
/usr/lib/grub/i386-pc/stage1
/usr/lib/grub/i386-pc/stage2
/usr/lib/grub/i386-pc/reiserfs_stage1_5
/usr/lib/grub/i386-pc/ffs_stage1_5

Die stage-Dateien stage1 und stage2 nach /boot/grub kopieren:

cp /usr/lib/grub/i386-pc/stage1 /boot/grub

cp /usr/lib/grub/i386-pc/stage2 /boot/grub

Weiterhin benötigt Grub zwei Konfigurationsdateien im Verzeichnis /boot/grub. Die Hauptkonfigurationsdatei ist die Datei "menu.lst". Eine weitere Konfigurationsdatei ist die Datei "device.map" - mit ihr wird Grub mitgeteilt welche Festplatten sich im Rechner befinden und von Grub verwendet werden sollen. Die beiden Dateien erstellen:

touch /boot/grub/menu.lst

touch /boot/grub/device.map

Nun muss das Verzeichnis /boot/grub diesen Inhalt haben:

root[zenwalk]# ls -l /boot/grub
-rw-r--r-- 1 root root 0 2006-09-27 20:14 device.map
-rw-r--r-- 1 root root 0 2006-09-27 20:14 menu.lst
-rw-r--r-- 1 root root 512 2006-09-27 20:16 stage1
-rw-r--r-- 1 root root 116786 2006-09-27 20:17 stage2

2.1. Datei /boot/grub/device.map bearbeiten

Die Festplatten in device.map definieren? Gibt es eine Festplatte (IDE) bekommt diese die Bezeichnung "hda". Eine weitere Festplatte (IDE) heißt "hdb". SATA-Platten bekommen die Bezeichnung "sda" usw.

Eine Platte (IDE) in device.map eintragen:

echo "(hd0) /dev/hda" > /boot/grub/device.map

Eine weitere Platte (SATA) eintragen:

echo "(hd1) /dev/sda" >> /boot/grub/device.map

Hinweis: Grub beginnt beim Zählen der Festplatten mit der Ziffer 0. Also entspricht (hd0) der Platte /dev/hda usw.

Wer sich im unklaren über seine Festplatten ist kann sich recht einfach mit fdisk Informationen darüber ansehen. Beispiel in einem Rechner mit einer IDE-Platte:

root[zenwalk]# fdisk -l /dev/hda
Platte /dev/hda: 80.0 GByte, 80054059008 Byte
16 Köpfe, 63 Sektoren/Spuren, 155114 Zylinder
Einheiten = Zylinder von 1008 × 512 = 516096 Bytes

Gerät boot. Anfang Ende Blöcke Id System
/dev/hda1 1 1939 977224+ 82 Linux Swap
/dev/hda2 1940 155114 77200200 83 Linux

Die Einträge in device.map prüfen:

cat /boot/grub/device.map

Beispiel möglicher Einträge in einer device.map, hier jetzt keine Shell:

(fd0) /dev/fd0
(hd0) /dev/hda
(hd1) /dev/hdb
(hd2) /dev/sda
(hd3) /dev/sdb

2.2. Datei /boot/grub/menu.lst bearbeiten

Mein favorisierter Editor für die Shell ist der Editor nano: Zenwalk - den Editor nano installieren. Nun die Datei "menu.lst" bearbeiten:

nano /boot/grub/menu.lst

Ein typischer Eintrag für ZenWalk 3.0 in der "menu.lst" kann so aussehen:

# /boot/grub/menu.lst

default=0
color yellow/blue red/black
timeout=5

title ZenWalk 3.0 - 2.6.17.11
kernel (hd0,1)/boot/vmlinuz-2.6.17.11 root=/dev/hda2 quiet resume2=swap:/dev/hda1 vga=794 splash=silent
initrd (hd0,1)/boot/initrd.splash

Wichtig:
Grub fängt bei den Festplatten und deren Partitionen mit der Ziffer 0 zu zählen an. Die Partition (hd0,1) - die 1 nach dem Komma - entspricht also /dev/hda2. Die Platte hd0 enspricht /dev/hda.

default=0

bedeutet, daß als zu startendes Betriebssystem der erste title-Eintrag verwendet wird wenn es mehrere dieser Einträge gibt und vom Anwender innerhalb der Zeit

timeout=5

kein anderer Eintrag gewählt wird.

color yellow/blue red/black
sind die Farben des Bildschirmes während der Anzeige des Auswahlmenü der zu startdenden Betriebssysteme. Mit diesen Angaben kann man spielen. Wird dabei eine Farbkombination gewählt mit der Grub nichts anfangen kann ist es so, als hätte man den Parameter color nicht verwendet - die Anzeige erfolgt mit weißer Schrift auf Schwarz.

2.3. Die einzelnen Parameter in der kernel-Zeile

(hd0,1)
ist die Partition der Festplatte auf der sich root befinder. ABER: Grub beginnt beim Zählen mit der Ziffer 0. Also an dieser Stelle sehr genau aufpassen - hier ist eine häufige Quelle für Fehler.

vmlinuz-2.6.17.11
entspricht dem Kernel im Verzeichnis /boot. man könnte auch vmlinuz verwenden. Um bei späteren neuen bzw. eigenen weiteren Kernelversionen in der menu.lst den besseren Überblick zu wahren empfielt sich in der kernel-Zeile die Verwendung des Kernelnamens mit der Versionsbezeichnung.
Wichtig:
Auf jeden Fall muss in den einzelnen title-Bereichen der Name des Kernel, im Beispiel vmlinuz-2.6.17.11, mit dem Dateinamen des Kernel im Verzeichnis /boot übereinstimmen!

Hier der Inhalt einer frischen ZenWalk 3.0 Installation von /boot:

root[zenwalk]# ls -l /boot
insgesamt 5944
lrwxrwxrwx 1 root root 37 2006-09-25 00:07 README.initrd -> /usr/doc/mkinitrd-1.0.1/README.initrd
-rw-r--r-- 1 root root 839595 2006-09-25 00:20 System.map
-rw-r--r-- 1 root root 839595 2006-09-05 16:35 System.map-2.6.17.11
-rw-r--r-- 1 root root 512 2006-09-25 00:28 boot.0300
-rw-r--r-- 1 root root 168 2006-09-25 00:28 boot_message.txt
-rw-r--r-- 1 root root 46695 2006-09-25 00:20 config
-rw-r--r-- 1 root root 46695 2006-09-05 16:35 config-2.6.17.11
drwxr-xr-x 2 root root 82 2006-09-28 00:00 grub
-rw-r--r-- 1 root root 546619 2006-07-13 15:26 initrd.splash
-rw------- 1 root root 49664 2006-09-25 00:28 map
-rw-r--r-- 1 root root 10666 2006-07-01 10:32 splash.bmp
-r-------- 1 root root 1841869 2006-09-25 00:20 vmlinuz
-rw-r--r-- 1 root root 1841869 2006-09-05 16:35 vmlinuz-2.6.17.11

root=/dev/hda2
ist die "echte" root-Partition wie sie sich aus der Information mit fdisk -l /dev/hda ergibt. Dieser Parameter muss angegeben werden

quiet
ist ein optionaler Parameter für das Bootsplashimage. Schaltet die Ausgabe der Bootmessages ab und es werden nur die Startdienste gezeigt. Der Bildschirm bleibt einen Moment dunkel - Zeitraum in dem man ohne quiet die restlichen Bootmessages nach den Startdiensten auf dem Bildschirm sehen würde.

resume2=swap:/dev/hda1
ist ein Parameter für Suspend2disk. Auch wenn Suspend2disk nicht verwendet wird muss bei ZenWalk 3.0 zur Vermeidung von Fehlermermeldungen dieser Parameter angegeben werden. Ãœbrigens wird dieser Parameter in gleicher Form in der /etc/lilo.conf verwendet. Die Partitionsangabe /dev/hda1 ist die "echte" Swap-Partition wie sie sich aus der Information mit fdisk -l /dev/hda ergibt.

vga=794
ist ein optionaler Parameter für die Bildschirmauflösung während des gesamten Bootvorganges. Er kann mit bestimmten Werten beliebig gesetzt werden. Diese Auflösung muss nicht zwingend identisch mit der Auflösung des Xserver sein. Eine Übersicht zu möglichen Werten kann im Artikel ZenWalk - Suspend2disk nachgelesen werden.

splash=silent
ist ein optionaler Parameter für das Bootsplashimage. Die Bootmessages werden gezeigt. Danach schaltet der Bildschirm auf das silent-Image (mit Progressbar) um. Von dieser Imageansicht kann mit F2 zur Anzeige der Startdienste umgeschalten werden. Ein Zurückschalten ist nicht möglich.

Erst die gemeinsame Verwendung der zwei Optionen "quiet" und "splash=silent" führt zum gewünschten Ergebnis mit einem Bootsplashimage. Keinerlei Messages - Bildschirm einen Moment dunkel und Splashscreen mit Progressbar.

Wer noch eine Partition mit Windows auf der Festplatte hat kann sie in der menu.lst ansprechen. Dazu wird unter dem bereits bestehenden Eintrag nach einer Leerzeile Folgendes eingetragen:

title WindowsXP
root (hd0,1)
makeactive
chainloader +1

Wichtig:
Für die Angabe in der root-Zeile wieder beachten, dass Grub bei den Platten und Partitionen mit der Ziffer 0 zu zählen beginnt. Im Falle des voran genannten Beispieleintrages entspricht (hd0,1) - die 0 vor dem Komma - der "echten" Platte /dev/hda und die 1 nach dem Komma der Partition /dev/hda2.

2.4. Die Parameter der initrd-Zeile

Für die Angaben der Fesplatte und Partition gilt das Gleiche wie in Pkt. 2.3. bereits gesagte. Wichtig: Auf jeden Fall muss der Name der initrd-Datei, im Beispiel initrd.splash, mit dem Namen der initrd-Datei in /boot übereinstimmen.

3. Den Bootmanager Grub installieren

Nachdem alle Vorbereitungen abgeschlossen sind kann Grub als Bootmanager installiert werden. In der Regel wird Grub in den MBR jener Festplatte installiert, die beim Starten des Rechners vom Bios als erste Platte erkannt bzw. angesprochen wird. In der Regel hda oder sda. Bei Rechnern mit mehreren Platten kann man mitunter im Bios die Reihenfolge der Platten beim Booten einstellen.

Für die Installation gibt es das Programm grub-install. Beim Aufruf dieses Programmes in der Shell wird als Parameter das Medium übergeben, auf dem Grub als Bootmanager installiert werden soll. Wird auf eine Festplatte installiert ist dieser Parameter in den meisten Fällen wohl /dev/hda oder bei SATA /dev/sda. Ein Beispiel:

grub-install /dev/hda

Der Installer prüft die Konfigurationen: Existieren die Dateien stage1, stage2, menu.lst und device.map. Entsprechend der Inhalte der menu.lst und device.map wird der Manager im MBR der genanten Platte installiert. Nach Abschluß erhält man eine Meldung, in welcher der Inhalt der Datei device.map zitiert wird und es wird zur Prüfung dieser Angabe gebeten. Dies ist eine rein informelle Sache und stellt das Ende der Installation von Grub dar wenn kein Fehler aufgetreten ist.

Gibt es wirklich ein Problem bei der Installation erhält man eine eindeutige Fehlermeldung. Wird kein Fehler gemeldet ist alles erledigt - der neue Bootmanager ist installiert.

ACHTUNG:

Folgendes habe ich bei der Ausführung des Befehles grub-install mit ZenWalk 3.0 auf 2 verschiedenen Rechnern festgestellt. Nach dem Ausführen von grub-install /dev/hda bleibt die Shell stehen - nichts passiert.
Keine Panik. In diesem Falle die stehengebliebene Befehlsausführung mit der Eingabe von CONTROL C (2 Tasten drücken) beenden UND grub-install /dev/hda erneut ausführen. Nach wenigen Augenblicken wird dann die Befehlsausführung beendet und die Shell meldet

Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(hd0) /dev/hda

Nun sollte sich beim Restart

shutdown -r now

der Bootmanager Grub melden.

Links

GRUB - GRand Unified Bootloader
Grub Wiki
auf deutsch

Ergänzende Artikel zum Beitrag auf dieser Website:

ZenWalk - Suspend2disk
Zenwalk - den Editor nano installieren

Grub will nicht booten

AnhangGröße
grub-0.97-i486-2.tgz335.37 KB
Powered by Drupal. Created with ZenWalk.