|
|
|
Inhaltsverzeichnis:
- Einführung
- Abbilder
- Konfiguration von ISOLINUX und MEMDISK
- ISO-Abbild erzeugen
- Alternativen
- Hinweise zum Booten von anderen Wechselmedien
- Tips und Tricks
- Weiterführende Informationen
- Anhang
Diese Seite beschreibt das Zusammenfassen von mehreren bootfähigen
Disketten auf einer CD, so daß diese Disketten bzw. deren Abbilder frei
wählbar gebootet werden können.
Eine solche CD könnte zum Beispiel die Boot-Disketten mit den
Programmen zur Überprüfung der Festplatte oder des Hauptspeichers
enthalten und es damit ermöglichen, die persönliche
Diskettensammlung weiter aufzulösen. Diese CD ist bei Notebooks
ohne Diskettenlaufwerk besonders hilfreich.
Oder man nutzt das Image einer solchen CD oder einer
(zusammengefaßten) Diskette um Server zu booten.
Wer sich diese Arbeit sparen möchte, findet auf Seiten wie
http://www.ultimatebootcd.com das Abbild einer CD mit fast allen
erdenklichen Programmen.
Dieser Artikel beschreibt nicht die verschiedenen Verfahrensweisen um
unterschiedliche Betriebsysteme auf CD zu brennen und davon zu booten.
Der "El Torito"-Standard beschreibt das
Booten von CD. Dabei können drei unterschiedliche Methoden zum Einsatz
kommen.
Booten einer Diskette
Beim Booten vom Abbild einer Diskette simuliert das BIOS eine physisch
nicht vorhandene Diskette, daher muß die Größe des
Abbildes genau der Größe einer Diskette entsprechen.
Zulässig sind die Größen von 1,2MB, 1,44 MB und 2,88 MB.
Alle Zugriffe werden auf die CD umgeleitet und die Daten aus dem Abbild
gelesen.
Mit dieser Methode können unterschiedliche Systemkonfigurationen
gebootet werden. Jede davon kann individuelle Einstellungen enthalten und
auf die CD zugreifen, als wäre es eine normal gebootete Umgebung.
Booten einer Festplatte
Hierbei wird das Abbild einer Festplatte von CD gestartet. Dabei sollte
beachtet werden, daß dieses Abbild einen Master Boot Record (MBR)
enthält und in der Partitionstabelle nur eine Partition eingetragen
ist und diese an erster Stelle steht.
Hinweis: Die Zugriffe auf das Abbild erfolgen über das BIOS
via INT13h. Daher funktioniert diese Bootvariante nur
mit DOS-basierten Abbildern.
No Emulation Booting
Diese Methode lädt Programmcode direkt von der CD, schreibt ihn in
einem Bereich des Hauptspeichers und führt ihn aus. Interessant ist
dieses Verfahren für Bootloader oder rein binäre Anwendungen.
Die Größe des Programmcodes ist auf 640k beschränkt.
Als Bootloader wird ISOLINUX verwendet. Er wird via No Emulation Booting
geladen und bietet neben der Möglichkeit, eigene einfache textbasierte
Menüs und Grafiken anzuzeigen, verschiedenen Modulen mit
Erweiterungen. Mit einem dieser Module davon lassen sich komfortable
Textmenüs im Stil der unter DOS verbreiteten
"Turbo Visions"-Oberfläche erzeugen. Ein anderes Module -
"MEMDISK" - erzeugt eine RAM-Disk, in die das Abbild vor dem
Starten geladen wird. Damit lassen sich verschiedenste Abbilder einfach
und schnell booten.
ISOLINUX wird in diesem Beispiel verwendet, da es im Gegensatz zu anderen
Bootloadern schlank ist, sich einfach bedienen und konfigurieren
läßt und dadurch übersichtlicher ist.
-
Abbild (Neudeutsch: Image)
Ist die vollständige binäre Repräsentation eines
Datenträgers in einer einzigen Datei.
-
Kernel
Ein Kernel ist ein eigenständiges Programm, das auf einer
spezifischen Hardware läuft und die Basis für weitere
Programme bildet. Er wird meist von einem speziellen Code, dem
(Boot)-Loader, geladen und gestartet.
Wenn der Kernel als Datei vorliegt, spricht man von einem
"image" oder einem "kernel image".
-
Diskette
Disketten werden für das hier erklärte Verfahren mit dem
DOS-Dateisystem formatiert. Für die meisten Beispiele wird dabei
Bootfähigkeit vorausgesetzt.
Um die Disketten von einer CD zu booten, benötigt man ihre Abbilder.
Auf diese kann während des Bootvorganges über den absoluten Pfad
zugegriffen werden. Dadurch können die Abbilder an einer beliebigen
Stelle im Verzeichnisbaum der CD abgelegt werden.
Ein Abbild läßt sich am einfachsten mit dem Programm dd
auf der Kommandozeile herstellen. Dabei wird dd die
Daten von einer Quelle (if), in unserem Fall die
Gerätdatei des Diskettenlaufwerkes, lesen und in das Ziel
(of) schreiben.
Beispiel: Sektorweises Kopieren einer Diskette in die Datei
myfloppy.img:
dd if=/dev/fd0 of=meinediskette.img bs=512
Einige Programme sind auf 2 oder mehreren Disketten verteilt. Diese lassen
sich meistens in einem größeren Abbild vereinen.
Dieses Abbild läßt sich auf 4 verschiedenen Wegen erzeugen:
-
Das gute alte DOS booten, eine 2,88MB-Diskette einlegen und
bootfähig formatieren. (Ich gebe zu, daß dies
ziemlich unwahrscheinlich ist, da 2,88MB-Laufwerke kaum
verbreitet sind.)
-
Mit Qemu, Bochs, VMWare o.ä. ein virtuelles Diskettenlaufwerk in
der richtigen Größe anlegen, das passende Betriebsystem
booten und die Diskette oder besser deren Abbild formatieren. (Schon
besser!)
-
Der Einsatz des Windowsprogrammes WinImage (Shareware) um ein passendes Abbild zu
erzeugen.
-
Das Abbild skriptgesteuert vergößern.
mkfloppyimg.sh ist ein Shellskript, das
ein größeres Abbild anlegt und den Inhalt der ersten
Abbildes in das Neue kopiert. Das neu erzeugte Abbild ist ebenfalls
bootfähig.
Der wahrscheinlich einfachste Weg ist das Skript mkfloppyimg.sh.
Beispiel: Vergrößern des 1440k großen Abbildes
"AbbildDiskette1.img" auf 2880k.
./mkfloppyimg.sh -2880 AbbildDiskette1.img NeuesGroesseresAbbild.img
Je nach verwendeter Methode müssen alle Disketten oder alle
außer der ersten Diskette in das neue Abbild kopiert werden.
Unter Umständen sind dabei Änderungen an den Startdateien
(autoexec.bat und in seltenen Fällen
config.sys) oder an anderen Batch-Dateien notwendig.
Weiterhin ist es möglich die Abbilder mit zip oder
gzip zu komprimieren, um Platz auf der CD zu sparen. Die
Endung des Archives hat für MEMDISK keine Bedeutung, denn das Format
wird automatisch erkannt, wenn das Abbild in die RAM-Disk kopiert wird.
Das Entpacken erfolgt transparent und bei Bedarf.
Die Steuerung von SYSLINUX erfolgt über die Datei
isolinux.cfg.
ISOLINUX sucht sie während des Bootens im eignenen Verzeichnis,
unter /boot/isolinux und /isolinux.
Dies ist eine funktionierende Beispielkonfiguration.
# dieses Label automatisch booten
default 0
# 30 Sekunden warten
timeout 300
# immer "boot: " anzeigen
prompt 1
# Menue anzeigen
display boot.msg
# boote naechstes im Bios eingestelltes Geraet
label 0
localboot -1
# memtest starten
label 1
kernel memtest
# mein Abbild booten
label 2
kernel memdisk
append initrd=/images/testdisk/testdisk.img
Neben den nachfolgend aufgeführten Optionen gibt es noch weitere. Diese
werden in der SYSLINUX-Dokumentation beschrieben.
-
label NAME
Kennzeichnet die Optionen mit einem eindeutligen Namen, über den
der Kernel aufgerufen wird. Die Label werden intern auf ein
Schema umgesetzt, daß DOS-Dateinamen entspricht.
Daher sollte man darauf achten, daß die Label immer eindeutig
sind. Innerhalb des 8.3-Schemas sind alle Freiheiten erlaubt.
-
default LABEL [Optionen]
Über default wird die Kommandozeile angegeben, die
automatisch nach Ablauf der Zeit ausgeführt wird.
Hinweis: Wenn ISOLINUX keine Konfigurationsdatei findet, oder
wenn default nicht gesetzt ist, wird
automatisch linux auto ausgeführt.
-
kernel IMAGE
Hierüber wird der zu startende Kernel spezifiziert. Dabei ist es
möglich beliebige Kernel zu starten. Dies können auch
spezielle binäre Programme wie MemTest86 sein.
MEMDISK läd das über initrd angewählte
Abbild in eine RAM-Disk mit passender Größe und bootet es.
Das Kernelimage wird aus dem gleichen Verzeichnis geladen, in dem sich
auch isolinux.bin befindet. Ein anderes Verzeichnis ist
nicht wählbar.
-
append PARAMETER
Über diese Option können einem Kernel verschiedene Parameter
übergeben werden. Der wahrscheinlich wichtigste Parameter dabei ist
initrd. Er enthält den Namen inklusive des vollen
Pfades zu dem Abbild, das in die RAM-Disk geladen werden soll. Der Pfad
bezieht sich dabei auf die Wurzel des Dateisystems auf der CD und nicht
auf der Festplatte.
-
timeout ZEIT
Zeit in 1/10 Sekunden, die ISOLINUX am Bootprompt (boot:)
auf eine Benutzereingabe wartet.
Hinweis: Ein Wert on 0 deaktiviert diese Option.
Das ist auch die Standardeinstellung.
-
#
Alle Zeilen, die mit einer Raute ("#") oder auch Doppelkreuz
genannt, anfangen, sind Kommentarzeilen und werden ignoriert. Leerzeilen
werden ebenfalls übergangen.
-
localboot TYP
Bootet das über den Typ spezifizierte Gerät. ISOLINUX kennt
folgende Typen:
-
-1
Meldet den BIOS einen Fehler während des Bootvorganges.
Neuere BIOSe versuchen danach vom nächsten Gerät in der
Bootreihenfolge zu booten.
-
0x00
bootet vom primären Diskettenlaufwerk
-
0x80
bootet von der primären Festplatte
Die Optionen für MEMDISK werden via append übergeben.
Zum Booten von virtuellen Disketten mit der Standardgröße von
1,2 MByte, 1,44 MByte oder 2,88 MByte werden keine zusätzlichen
Parameter benötigt.
-
initrd /Pfad/zum/Abbild
Spezifiziert das zu ladende Abbild. Wenn dies im gleichen Verzeichnis
wie MEMDISK liegt, kann auf die Pfadangabe verzichtet werden.
-
floppy
das angegebene Abbild ist eine Diskette.
-
harddisk
das angegebene Abbild ist eine Festplatte
-
c=xx h=yy s=zz
Für nicht standardisierte Abbilder von Disketten und Festplatten
benötigt MEMDISK Angaben zur virtuellen Geometrie.
c=xx Anzahl der Zylinder (maximal 1024)
h=yy Anzahl der Köpfe (maximal 256)
s=zz Anzahl der Sektoren (maximal 63)
Hinweis: MS-DOS erlaubt nur maximal 255 Köpfe und 255
Zylinder bei Disketten.
Die Konfigurationsstile von LILO und SYSLINUX ähneln sich sehr. Die
folgende Tabelle stellt den Syntax von LILO und ISOLINUX gegenüber:
/etc/lilo.conf |
isolinux.cfg |
image = /Pfad/zu/meinKernel
label = meinLabel
append = "meineKernelParameter"
|
label meinLabel
kernel meinKernel
append meineKernelParameter
|
Um nochmals darauf hinzuweisen, bei SYSLINUX muß der Kernel im gleichen
Verzeichnis wie isolinux.bin liegen. LILO dagegen akzeptiert
ein absoluten Pfad zum Kernelimage. Bei beiden Programmen wird das zu
bootende Abbild über den absoluten Pfad angesprochen.
ISOLinux bietet die Möglichkeit die CD mit einem einfachen
text- und seitenbasierten Menü zu versehen. Dazu wird für jede
Seite eine eigene Textdatei angelegt. Jede dieser Textdateien kann
man nach eigenen Wünschen gestalten. Sind die Texte zu lang, laufen
sie automatisch am oberen Rand aus dem Bildschirm. 21, 22 Zeilen sind
ein gutes Maß.
Unabhängig von der aktuell angezeigten Seite, können alle in
isolinux.cfg mit label aufgezählten
Kommandos ausgeführt werden.
Für die Steuerung der Menüs bietet ISOLINUX folgende Befehle,
die mit in die isolinux.cfg aufgenommen werden.
-
display DATEINAME
Zeigt den Inhalt der angegebenen Datei beim Booten, bevor die
Eingabeaufforderung boot: angezeigt wird.
-
say NACHRICHT
Gibt die Nachricht aus
-
prompt (0|1)
Zeigt (1) oder unterdrückt (0) die
Eingabeaufforderung boot:.
-
f1 DATEINAME
f2 DATEINAME
...
f9 DATEINAME
f0 DATEINAME
Zeigt die angegebene Datei, wenn die passende Funktionstaste
gedrückt wird. Der Text für die Taste F10
läßt sich über den Befehl f0 angeben.
| Hinweis 1: |
Die Funktionstasten F11 und F12
lassen sich nicht belegen.
|
| Hinweis 2: |
Beim Zugang über eine serielle Konsole können die
einzelnen Seiten über Steuerung-F +
Nummer abgerufen werden.
Beispiel: Steuerung-F + 5
zeigt die für F5 hinterlegte Datei.
Um sich die für F10 hinterlegte Seite anzeigen
zu lassen, muß man Steuerung-F +
0 drücken.
|
Über Steuerzeichen innerhalb der Menüdateien lassen sich, die
Farben des Textes wählen, der Bildschirm löschen, speziell
formatierte Bilder ausgeben sowie das Ausgabegerät des Textes
wählen. Dadurch läßt sich zum Beispiel auf einem VGA-kompatiblen
Bildschirm ein Bild ausgeben, während ein beschreibender Text
über die serielle Konsole ausgegeben wird. Mehr Informationen dazu
bietet die Datei syslinux.doc, die ein Teil der Dokumentation
von SYSLINUX ist.
Beispiel: Die Datei
boot.msg enhält ein einfaches Bootmenü, das
sich über eine Seite erstreckt.
Menue
=====
0) Boote naechstes im Bios angegebenes Geraet (Standard)
1) Startet memtest86
2) Starte meine Testdiskette
Weiter geht es in 30 Sekunden oder wenn eine Auswahl getroffen wurde ...
Bitte Kommando eingeben ...
Über die Erweiterung
comboot
kann man ein eigenes Menü mit Radiobuttons, Checkboxen und
ähnliches schreiben. Dafür sind grundlegenden C++-Kenntnisse nötig.
Folgende Verzeichnistruktur dient als Basis dieser Beispiel-CD:
./data
./data/isolinux
./data/isolinux/boot.msg
./data/isolinux/isolinux.cfg
./data/isolinux/memdisk
./data/isolinux/isolinux.bin
./data/images
./data/images/myfloppy.img
Unterhalb von ./data/isolinux/ befindet sich ISOLINUX selbst
(isolinux.bin), das Modul MEMDISK (memdisk), die
Konfigurationsdatei für ISOLINUX (isolinux.cfg) sowie
eine beliebig gestaltbare Meldung (boot.msg), die beim
Booten angezeigt wird.
Alle Dateien und Verzeichnisse unterhalb von data werden auf
auf die CD gebrannt. Die Struktur des Verzeichnisbaumes kann beliebig an
die eigenen Bedürfnisse und Wünsche angepaßt werden. Dabei sollte
darauf geachtet werden, daß die Dateien boot.msg,
isolinux.cfg, isolinux.bin sowie
memdisk im selben Verzeichnis liegen.
Alle Datei- und Verzeichnisnamen folgen dem 8.3-Schema, denn der
ISO 9660-Standard beruht in seiner untersten
Ebene auf 8.3-Dateinamen (8 Zeichen für den Dateinamen und 3 für
die Dateiendung).
Das bootfähige Image wird mit mkisofs erzeugt. Dabei
sind die im Beipiel aufgeführten Optionen zwingend erforderlich.
Zusätzlich können zum Beispiel noch mit -J
Joliet-Verzeichniseinträge und mit -r
Rock-Ridge-Verzeichniseinträge angelegt werden. Selbstverständlich
können auch alle weiteren Optionen von mkisofs verwendet
werden.
Beispiel: Erzeugen des bootfähigen Abbildes
MeinAbbild.iso mit dem Inhalt der Verzeichnisstruktur
unter data.
mkisofs -b isolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 \
-boot-info-table -o MeinAbbild.iso data
Hinweis: Das Verzeichnis isolinux muß sich unterhalb
von data befinden.
In der manpage von mkisofs sind die Optionen und deren
Zusammenspiel ausführlich erklärt.
Nachdem das Abbild erfolgreich mit mkisofs erzeugt wurde,
kann man es vor dem Brennen in das Dateisystem einbinden, um die
Vollständigkeit der CD zu überprüfen.
Beispiel: Einbinden des Abbildes MeinAbbild.iso
unterhalb des Verzeichnisses /mnt
mount -o loop MeinAbbild.iso /mnt
und das Lösen dieser Bindung
umount /mnt
Hinweis: Für das Einbinden sind root-Rechte erforderlich.
Für das Lösen auch.
Vor und nach dem Brennen der CD kann man mit einer virtuellen Maschine
wie Bochs, VMWare oder QEMU die CD testweise booten und die Funktionsweise
sowie das gewünschte Verhalten und Aussehen testen. Damit kann man
sich häufiges Herunterfahren und wieder Neustarten des Rechners
sparen. Diese Tests können wahlweise mit dem ISO-Abbild oder mit der
fertig gebrannten CD erfolgen. Weiterhin können die ersten Versuche auch
mit CD-RWs durchgeführt werden, da man bei Fehlschlägen keinen Rohling
geopfert hat.
Eine CD läßt sich auf unterschiedliche Weisen brennen. Eine
komfortable Möglichkeit bieten grafische Werkzeuge wie k3b. Eine
andere Variante ist, die CD direkt auf der Kommandozeile via
cdrecord zu brennen.
Beispiel: MeinAbbild.iso auf eine CD schreiben.
cdrecord -v dev=SCSIBUS,ID,LUN -data MeinAbbild.iso
Hinweis: Die genauen Werte für SCSIBUS,
ID und LUN lassen sich mit
cdrecord -scanbus ermitteln.
Mit CD Shell und Bootable CD Wizard bieten sich zwei weitere Programme an, um
menü-basierende bootfähige CDs zu generieren. Die Menüs
lassen sich einfach und mit viel Gestaltungsfreiraum skriptbasiert erzeugen
und steuern.
Auch der "El Torito"-Standard bietet
die Möglichkeit über ein einfaches Menü beim Booten aus
mehreren Abbildern auszuwählen. Zwei Einschränkungen sind dabei
allerdings zu beachten:
-
Das BIOS muß den kompletten
"El Torito"-Standard unterstützen,
damit nicht nur das erste Abbild gebootet wird. (Zum Beispiel
unterstützen die BIOS-Simulation von QEMU und
verschiedene Laptops dies nicht.)
-
Das vom BIOS dargestellte Menü enthält keine Dateinamen, somit
muß man sich die Position der Abbilder merken, um das Richtige
ohne zusätzliche Versuche zu booten.
Beispiel: Mit mkisofs kann man eine solche CD einfach
erstellen. In diesem Beispiel werden beim Booten 4 unterschiedliche Abbilder
zur Verfügung stehen.
mkisofs -J -r -b bootdisk1.img \
-eltorito-alt-boot -b bootdisk2.img \
-eltorito-alt-boot -b bootdisk3.img \
-eltorito-alt-boot -b bootdisk4.img \
-c boot/boot.catalog -o bootcdiso data
Hinweis: Die Datei boot.catalog wird automatisch
erzeugt.
Eine weitere Möglichkeit bietet das DOS-Programm
makebt, mit dessen Hilfe einem ISO-Image die
Fähigkeit zum Booten gegeben werden kann. Dieses Abbild ist danach
ebenfalls konform mit dem "El Torito"-Standard und den damit
verbundenen Einschränkungen bei mehreren bootfähigen Abbildern.
ISOLINUX wurde geschrieben um von CD zu booten. Für den Einsatz auf
USB-Sticks und anderen Wechselmedien sind andere Bootloader wie
GNU GRUB oder LILO besser geeignet,
denn der Zugriff auf beide Medien gleicht dem auf Festplatten.
Wichtig ist, daß die Hardware das Booten von einem solchen Wechselmedium
unterstützt.
Viele Schritte die in diesem Artikel aufgeführt sind, kann man auch
zum Erstellen eines derartigen bootfähigen Mediums verwenden. Die
Schritte zum Erzeugen des Abbildes entfallen dabei und es muß ein
anderer Bootloader verwendet werden. Das Internet hält dafür
eine Menge Tips und Tricks bereit.
Sonstige Resourcen
Dieses Werk ist unter einem Creative Commons Namensnennung-Keine
kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0
Deutschland Lizenzvertrag lizenziert. Um die Lizenz anzusehen, gehen Sie
bitte zu
http://creativecommons.org/licenses/by-nc-sa/3.0/de/
oder schicken Sie einen Brief an Creative Commons, 171 Second Street,
Suite 300, San Francisco, California 94105, USA.
Änderungen:
Version 11 02.04.2010
-
Kleine Korrekturen in den Abschnitten "Veröffentlichungen"
und "Software"
Version 10 31.05.2009
-
Lizenz auf Creative Commons BY-NC-SA Version 3.0 geändert
Version 9 18.08.2005
-
Lizenzsymbole rechts oben eingefügt
Version 8 07.07.2005
-
Korrektur: Memtest kann nicht im No Emulation Mode gestartet werden
(Dank an Gentscho)
Version 7 28.03.2005
-
Neue Formulierung des Verweises auf die Lizenz, die Lizenz hat sich nicht
geändert
-
Änderung des Titels in >MultiBoot-CDs aus mehreren
Disketten erstellen<
Version 6 04.01.2005
-
fehlerhafter Link korrigiert
Version 5 16.11.2004
-
Hinweise zum Booten von anderen Wechselmedien hinzugefügt
Version 4 10.11.2004
-
Schreibfehler Version durch Revision ersetzt
Version 3 07.11.2004
-
fehlerhafte Verweise korrigiert
Version 2 07.11.2004
-
Artikel unter Creative Commons-Lizenz gestellt
Version 1 01.11.2004