Von Grub direkt auf CD-Boot umschwenken
Hinweis: Dieser Artikel handelt explizit von der Version GRUB Legacy. Das Programm wurde weiterentwickelt. Die Weiterentwicklung wird aufgrund von Inkompatibilitäten auf einer eigenen Seite behandelt: GRUB 2 |
Praktisch wäre, von GRUB aus direkt auf CD-Boot umschwenken zu können, falls man dies hin und wieder mal braucht, ohne immer erst ins BIOS Menü zu müssen.
Mittels MEMDISK und SmartBootManager (SBM) sollte das gehen.
Voraussetzungen
- ein Floppy-Laufwerk (heute leider oft eingespart)
- SmartBootManager (genauer gesagt, nur SBM.IMG, siehe Anmerkung)
- MEMDISK (z.B. im SYSLINUX-Paket enthalten)
Los geht's
1. Floppy vorher besser auf defekte Blöcke testen! Die Datei SBM.IMG auf die fehlerfreie Diskette bringen:
dd if=/verzeichnis_irgendwo/sbm.img of=/dev/fd0 bs=512
Anzahl Blöcke merken, bei mir im Beispiel 36. Nicht wundern, wenn beim Versuch, sich den Inhalt dieser Diskette anzusehen, nur "kryptisches Zeug" angezeigt wird!
2. Davon booten, im erscheinenden Bootmenü (erstmal testen ob's überhaupt geht!), alles bis auf das gewünschte CD-Laufwerk mit [Strg]+[D] entfernen, diesen Eintrag mit [F8] auf Default setzen, Timeout mit [Strg]+[T] auf Null bringen.
3. Speichern mit [F2], es wird etwas auf Diskette geschrieben!
4. Dann evtl. nochmal von Floppy booten, es sollte aber ebenfalls bereits eine bootfähige CD im LW liegen, und der Vorgang nahtlos an diese übergeben werden.
5. Wenn bis hierhin alles funktioniert, wieder ein Image von der Diskette erstellen:
dd if=/dev/fd0 of=/boot/sbm_cd2.img bs=512 count=36
Die Zahl 36 ist der gemerkte Beispielwert von 1., SBM_CD2.IMG wäre hier der neue Name. Dass diese Datei problemlos auf andere PC's übertragbar ist, glaube ich nicht, das müsste jedoch noch getestet werden!
6. Die gerade erzeugte Datei z.B. nach /boot/ kopieren, MEMDISK ebenfalls; so könnte beispielsweise der Eintrag in /boot/grub/menu.lst aussehen:
title Boot from CD (secondary master, using MEMDISK and SBM) kernel (hd0,0)/boot/memdisk floppy c=80 h=2 s=18 initrd (hd0,0)/boot/sbm_cd2.img
Pfade usw. natürlich anpassen, wenn das Ganze statt dessen auf einer anderen als der ersten Partition oder in einem anderen Verzeichnis gelandet ist.
7. Testen, neu installieren muss man ja hier nichts!
Mit LILO geht's aber auch, ab 6. sieht's dann so aus:
6. Die gerade erzeugte Datei z.B. nach /boot/ kopieren, der Eintrag in /etc/lilo.conf sieht bei mir so aus:
image = /boot/sbm_cd2.img label = CD
7. LILO neu schreiben, für den unter 6. erzeugten Eintrag wurden hier bei mir exotische Werte für CHS angegeben, das sollte jedoch der Funktion keinen Abbruch tun. Jedenfalls kam keine Fehlermeldung!
Anmerkung
Auf SBM bin ich eigentlich nur im Zusammenhang mit dem Linux-Rettungssystem "RecoveryIsPossible" gestossen,
da war es mit im Image "RIP-3.1-1680-XFS.bin" enthalten, und da man ja alles mal ausprobieren muss...
Es gibt aber sicher noch andere Download-Quellen...
Dank an die Macher von SBM und MEMDISK
- SBM Kernel programs and some utilities: Suzhe
- SBM Installation program and Makefile: Lonius
- SBM ATAPI Driver and debug/helptool for NASM: Christopher Li
- MEMDISK: Copyright (C) 2001-2004 H. Peter Anvin
Logischerweise hatte ich noch keine Möglichkeit, das auf Allgemeingültigkeit zu überprüfen. Aber nachdem ich alle diese Schritte hier genauso ein zweites Mal nachvollzogen hatte, klappte es auf Anhieb!
EINBINDEN in BOOT.INI -leicht gemacht
Mittlerweile dürfte das obige alles schon Geschichte sein, nur damit sich nicht jemand die Arbeit macht, und es geht vielleicht auch viel einfacher:
Unter http://sarovar.org/projects/grub4dos/ findet man Downloads, die offenbar jede Menge GRUB-Besonderheiten (z.B. das Booten von CD) unterstützen, sogar von DOS aus und selbst das Einbinden in den XP-Bootlader ist damit möglich.
In dem Paket grub_for_dos-0.4.1pre24.tar.gz befindet sich eine Datei namens GRLDR, welche das Einbinden von Linux in den XP-Bootlader kolossal erleichtern dürfte.
Man muss keine Bootsektoren mehr mittels dd auslesen, und in Dateien umwandeln!
Einfach die Datei GRLDR ins Hauptverzeichnis der Windows-Systempartition kopieren. Ans Ende der BOOT.INI (Attribute beachten) eine Zeile wie z.B. C:\GRLDR="Start Grub" anhängen.
Bei der Linux-Installation darauf achten, dass GRUB in die Root-Partition des Linux-Systems und nicht in den MBR geschrieben wird. Wichtig ist eigentlich nur, dass eine /boot/grub/menu.lst erzeugt wird. Sie braucht logischerweise nur noch einen Eintrag für's Linux-System zu enthalten, mehr stört aber nicht!
FERTIG! C:\GRLDR sucht auf allen Partitionen nach einer /menu.lst, wenn es diese nicht gibt nach /boot/grub/menu.lst und zu guter letzt noch nach /grub/menu.lst, und führt die erste gefundene aus. Wer will, kann, wenn's funktioniert, noch TIMEOUT auf 0 und DEFAULT wie gewünscht setzen, so bekommt man gar kein GRUB-Menü mehr zu sehen.
Weil das Ding alle Partitionen (auch NTFS) durchsucht, kann man sich es noch ein wenig zurecht patchen, damit es nach einer anderen Menüdatei oder in einer anderen Reihenfolge sucht, oder auch <linuxroot>/boot/grub/menu.lst als /menu.lst ins Wurzelverzeichnis der ersten Primärpartition der ersten Platte kopieren (wird dann logischerweise schneller gefunden).
Noch was anderes:
Aus der Tatsache, das es dort auch eine ntfs_stage1_5 gibt, schliesse ich mal, dass man diesen GRUB theoretisch auch komplett auf NTFS installieren könnte!?
MfG Taesi