Letztens hatte ich Probleme von einer Platte, die an einen externen Controller angeschlossen war zu booten. Bis dahin war mir grub so ziemlich ein Buch mit sieben Siegeln. Aber es ist ein mächtiges tool. Man muß sich nur ein wenig damit beschäftigen.
Wenn man Startprobleme mit Linux hat ist das zu 99% kein Problem von grub - sondern ein Problem daß irgendwelche Konfigurationen bzw StartmenuEinträge bei grub nicht stimmen.
 
Eine wichtige Rolle spielt /boot/grub/devices.map. In ihr steht z.B.
(hd1)   /dev/hdb
(hd0)   /dev/hda
Das heisst, dass grub die erste Platte auf /dev/hda und die zweite auf /dev/hdb mapped. Wenn eine weitere Platte eingebaut wurde kennt grub die nicht so ohne weiteres. Entweder fügt man diese Plattendefinition dann manuell in der devices.map ein
(hd2)    /dev/hde 
 oder man benutzt den Parameter --recheck bei grub-install.
 
Ich hatte dann auf der /dev/hde2 ein weiteres Linux installiert - aber irgendwie gab es immer Fehlermeldungen beim Starten des OS vom grub Startmenu. Das OS wurde einfach nicht gefunden. 
 
Daraufhin habe ich mal grub auf Diskette installiert.  
fdformat /dev/fd0h1440
mkfs -t ext2 /dev/fd0
mount /dev/fd0 /mnt/floppy
mkdir -p /mnt/floppy/boot/grub
cp /boot/grub/* /mnt/floppy/boot/grub
grub-install --root-directory=/mnt/floppy /dev/fd0
Dann kann man jederzeit grub von Diskette starten und in der grub shell ausprobieren, was man später in die menu.lst schreiben muss. Die ist zwar etwas gewöhnungsbedürftig. Aber sie ist auch sehr mächtig. Übrigens kann man die grub shell auch vom boot menu aus erreichen wenn man 'c' drückt. Auch 'e' ist sehr komfortabel. Wenn man z.B. einige Zeilen in /boot/grub/menu.lst falsch eingegeben hat kann man diese dadurch schnell zum Testen korrigieren.
 
Will man nun wissen wo sich bootable Linux OS auf welchen Platten befinden kann man das ganz einfach herausbekommen:
 find /boot/vmlinuz 
Man erhält dann eine Liste der Platten (hd0, hd1, ...). Diese können dann mit ein paar weiteren Befehlen aktiviert und manuell gestartet werden. 
 
Das Installieren von grub geht entweder aus der grub shell 
grub> root (hd0,1) # die Partition mit dem /boot/grub Verzeichnis, /dev/hda1
grub> setup (hd2) # die Partition wo grub installiert werden soll
oder mit 
grub-install --root-directory=/mnt/hda1 /dev/hde
Im folgenden Beispiel gehe ich davon aus, dass sich das zu bootende OS auf der Platte hd2 in der ersten Partition befindet. Dann kann man auf folgende Art das darauf befindliche OS starten:
grub> root (hd2,0)          # alle folgenden Befehle beziehen sich auf die hd2
Filesystem type is ext2fs, partition type 0x83 
grub> kernel /boot/vmlinuz root=/dev/hde2      # der zu ladende Kernel
[Linux-bzImage, setup=0x1e00, size=0x1661b6]
grub> initrd /boot/initrd            # die boot initrd
[Linux-initrd @ 0x2b0000, 0x13fbf8 bytes] 
 
Falls man sich aus Versehen den mbr mit grub zerschossen hat hilft eine Linux life CD (Knoppix, Kanotix, SuSE Install CD #1, ...). Von der starten und wie oben beschrieben den mbr wieder installieren. Alternativ geht das natürlich auch mit einer boot diskette.
Kommentar schreiben
Hinweis:
Die eMail ist versteckt und nicht öffentlich sichtbar. Sie wird benutzt um über neue Kommentare zu informieren.