Wir brauchen für eine Grub-Bootdiskette eine leere formatierte Diskette. Die Diskette können Sie ganz einfach mit dem Befehl fdformat (10.4.2) formatieren.
defiant:~ # fdformat /dev/fd0
Der Befehl badblocks (11.2.3) wird zum Testen von Datenträgern verwendet. Wird badblocks mit dem Schalter -w zusammen verwendet, so wird ein destruktiver Schreib- und Lesetest des Datenträgers durchgeführt. Danach wissen wir ob die Diskette in Ordnung ist, und daß sie auf jeden Fall keine Daten mehr enthält.
defiant:~ # badblocks -w /dev/fd0
Wir schreiben zuerst den ersten Teil von GRUB in den MBR der Diskette. Dazu wechseln wir zuerst in das GRUB-Verzeichnis. Das GRUB-Verzeichnis nach der Anleitung /usr/share/grub/i386-pc. Bei SuSE finden Sie bis Version 9.0 die GRUB-Dateien im Verzeichnis /usr/lib/grub/, ab Version 9.1 im Verzeichnis /usr/lib/grub/i386-pc.
enterprise:~ # cd /usr/lib/grub/ enterprise:/usr/lib/grub # ls -l insgesamt 212 -rw-r--r-- 1 root root 8544 2002-09-11 01:56 e2fs_stage1_5 -rw-r--r-- 1 root root 8176 2002-09-11 01:56 fat_stage1_5 -rw-r--r-- 1 root root 7520 2002-09-11 01:56 ffs_stage1_5 -rw-r--r-- 1 root root 9248 2002-09-11 01:56 jfs_stage1_5 -rw-r--r-- 1 root root 7712 2002-09-11 01:56 minix_stage1_5 -rw-r--r-- 1 root root 10432 2002-09-11 01:56 reiserfs_stage1_5 -rw-r--r-- 1 root root 512 2002-09-11 01:56 stage1 -rw-r--r-- 1 root root 105124 2002-09-11 01:56 stage2 -rw-r--r-- 1 root root 7168 2002-09-11 01:56 vstafs_stage1_5 -rw-r--r-- 1 root root 10024 2002-09-11 01:56 xfs_stage1_5
Mit dem Befehl dd können wir das Images des Grub-MBR (stage1) in den MBR der Diskette spielen.
enterprise:/usr/lib/grub # dd if=stage1 of=/dev/fd0 bs=512 count=1 1+0 Records ein 1+0 Records aus
Der zweite wesentlich größere Teil des Bootloaders (stage2) wird in die Blöcke dahinter geschrieben.
enterprise:/usr/lib/grub # dd if=stage2 of=/dev/fd0 bs=512 seek=1 205+1 Records ein 205+1 Records aus
Wenn wir jetzt den Rechner runterfahren und dann von der Diskette booten, sollte die Grub-Shell erscheinen. Gehen wir mal davon aus, daß der Linux-Kernel auf der zweiten Partition der ersten Platte im Verzeichnis /boot liegt. Dann können wir in der GRUB-Shell mit den folgenden Kommandos das Linux-System starten.
grub> root (hd0,1) grub> kernel /boot/vmlinuz root=/dev/hda2 grub> boot
Und schon bootet das Linux-System.
Der Windows-Kernel ist leider nicht multibootfähig und daher kann GRUB ihn auch nicht direkt starten. Um trotzdem mit diesen Betriebssystemen arbeiten zu können greift GRUB zu einem Hilfsmittel. Mit einem sogenannten Chain-Loading startet GRUB einfach den Bootloader des Betriebssystem und startet damit die Bootsequenz. Als erstes wird das GRUB-Wurzelverzeichnis auf die entsprechende Partition gelegt. Hier ist es die erste Partition der ersten Platte. Dann wird diese Partition aktiv geschaltet. Dann wird der Bootsektor und damit der Bootloader gelesen. Nun besitzt GRUB alle Informationen um den Bootvorgang einzuleiten.
grub> rootnoverify (hd0,0) grub> makeactive (hd0,0) grub> chainloader +1 grub> boot