GRUB auf CD
Aus Lowlevel
Inhaltsverzeichnis |
Vorwort
Ich gehe hier davon aus, dass ihr schon einen funktionierenden Kernel habt. Sollte das nicht der Fall sein, schaut lieber hier: C-Kernel mit GRUB
Benötigt
Ihr braucht eigentlich nur stage2_eltorito von GRUB und mkisofs. stage2_eltorito sollte bei eurem Linux dabei sein. Wenn nicht müsst ihr euch GRUB runterladen.
CD-Image bauen
Als erstes sollte man die Dateien, die nachher auf der CD landen sollen, in einen Ordner stecken. Dazu gehören auch die von GRUB benötigten Dateien und zwar menu.lst und stage2_eltorito. Diese gehören in den Ordner (relativ von der CD aus) /boot/grub/. Man kann sie auch in einen beliebigen anderen Ordner packen, dann muss man allerdings mit den Hexeditor an stage2_eltorito. Wenn die Dateien dann alle fertig sein, baut man das CD-Image. Das geht folgendermaßen:
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o cdrom.iso cdrom_files/
Dies erzeugt ein CD-Image namens cdrom.iso aus den Dateien des Ordners cdrom_files. boot/grub/stage2_eltorito ist dabei ein relativer Pfad von der CD aus auf den Bootloader.
Mögliche Probleme
- Die menu.lst kann nicht geladen werden, d.h. es erscheint nur der GRUB-Prompt. Schuld an diesem Fehler ist ein falscher Pfad in stage2 (der Pfad ist Lowercase, aber ISO-Level-1 speichert nur Uppercase). Abhilfe schafft entweder GRUB gepatcht neu bauen, oder einfach den Pfad im Binary zu ändern:
sed -i "s/boot\/grub\/menu.lst/BOOT\/GRUB\/MENU.LST/g" stage2_eltorito
- Es gibt Systeme die nicht von ElTorito-CDs booten können. Abhilfe schafft hier manchmal, statt ElTorito die Floppyemulation zum Booten zu verwenden. Einfach ein Floppyimage mit allen benötigten Treibern erstellen, welches dann von CD weiterlädt. Das CD-Image hierfür wird dann via
mkisofs -b floppy.img -o cdrom.iso cdrom_files/
erstellt. ACHTUNG, man braucht wenn man nicht alles im Speicher hat wirklich eigene Treiber, das Floppy-Image ist ab Protected Mode verloren (es werden Interrupts umgeleitet).

