www.dpfeil.de
www.dpfeil.de

Erstellen einer Multiboot DVD aus mehreren CD-Images

Einleitung

Vorwort

Hier beschreibe ich, wie man mehrere CD Images auf eine DVD oder CD bringt und diese dann frei wählbar booten kann.
Im Internet habe ich nach längerem Suchen zwar eine möglickeit entdeckt aus CD Images eine Multiboot DVD zu machen, doch diese hat den Nachteil, dass das jeweilige Bootmenü des jeweiligen CD Image verlohren geht.

In dieser Anleitung beschränke ich mich auf CD Images von LiveCDs, die wie eine Knoppix CD aufgebaut sein müssen.

Wozu braucht man eine Multiboot DVD?

Eine Multiboot DVD könnte hilfreich sein, wenn man mehrere LiveCDs hat und diese auf eine DVD zusammen fassen möchte.
So könnte man auf eine DVD zum Beispiel folgende Live Systeme drauf haben: Alle Live Systeme lassen sich unabhängig von einander mit ihren eigenen Bootoptionen booten.
Hier gibt es einige Bilder, wie eine Multiboot DVD aussehen kann.

Bootloader

Als Bootloader wird Grub verwendet. Grub stellt ein einfaches Menü dar, in dem das zu bootendem CD Image dann nur noch ausgewählt werden muss.

Memdisk

Um die CD Images mit ihrem Bootloader booten zu können, brauch man noch Memdisk. Memdisk ermöglicht das Booten von Floppy und Harddisk Images von einer CD.

Wie wird das realisiert?

Der "El Torito"-Standard beschreibt, wie von einer CD gebootet wird. Leider ermöglicht dieser Standard nur das booten von Diskette Images, Festplatten Images und das No Emulation Booting (direktes Laden von Programmcode von der CD).
Aus diesem Grund muss der Umweg über ein Floppy Image erfolgen.
In dieses Floppy Image werden alle Dateien aus dem "boot" Verzeichnis der CD hinein kopiert. Anschließend wird das Floppy Image bootfähig gemacht.
Aus dem zu bootendem CD Image wird noch das eigentliche System, welches als kompriemiertes Image im Verzeichnis "KNOPPIX" liegt herauskopiert.

Beim booten wird mit Grub das Floppy Image mit hilfe vom Memdisk in den Ram geladen und gebootet.
Die initrd, die bei Knoppix verwendet wird, prüft sämtliche Laufwerke ob sie das Image "KNOPPIX" enthält und bootet es, wenn es gefunden wurde.
Damit dies mit mehreren Knoppix Derivate funktioniert, müssen die jeweiligen initrd Images noch leicht modifiziert werden.

Vorbereitung

Verzeichnisstruktur erstellen

Als erstes wird eine Verzeichnisstruktur benötigt. Am besten legen wir im "Home"-Verzeichnis einen Ordner mit dem Namen "MultibootDVD" an.
mkdir MultibootDVD
Dort werden dann alle Ordner, die für die Multiboot DVD benötigt werden angelegt. Dazu wechsel wir als erstes in den neu angelegten Ordner (bitte an Groß- und Kleinschreibung denken).
cd MultibootDVD
mkdir -p bootcd/boot/grub
Für jedes CD Image muß ein eigener Ordner angelegt werden. Dabei ist es wichtig, dass man bei den Ordner- und Dateinamen das 8.3 Schema verwendet. Sonnst passiert es, dass der Bootloader die Datei später nicht finden kann. Die Groß- und Kleinschreibung spielt aber eine Rolle.
Hier ein Beispiel für Knoppix und DSL.
mkdir bootcd/KNOPPIX
mkdir bootcd/DSL
Für Floppyimages müssen keine eigene Ordner angelegt werden. Diese werden direkt in dem Ordner bootcd abgelegt. Möchte man auf der Multiboot DVD auch Tomsrtbt mit drauf haben, dann muß kein eigener Ordner angelegt werden, da dies schon ein 2,88 MB Floppyimage ist.

Erstellen eines Floppyimage

Vom "El Torito"-Standard können drei verschiedene gößen von Floppyimages gebootet werden. Diese sind 1,2 MB 1,44 MB und 2,88 MB große Floppyimages.

Möchte man eine aktuelle Knoppix CD mit einer Diskette booten, dann benötigt man schon zwei Disketten. Deshalb muss man für die Knoppix ein 2,88 MB großes Floppyimage benutzen.
Bei DSL kann man sich schon ein fertiges Floppyimage mit runterladen. Dies hat eine größe von 1,44 MB.

Somit mus nur für die Knoppix ein Floppyimage erstellt werden. Das macht man so.
dd if=/dev/zero of=bootcd/knoppix.img bs=2880k count=1
Diese muss mit Fat formatiert werden, da hier der Bootloader syslinux zum einsatz kommt und dieser nur von Fat booten kann.
sudo mkdosfs bootcd/knoppix.img
Um nun die Dateien von dem CD Image in das Floppyimage kopieren zu können, müssen beide Images per Loop-Device gemountet werden. Dazu legen wir noch zwei Mountpunkte unter /mnt an.
sudo mkdir /mnt/floppyimage
sudo mkdir /mnt/cdimage
Dann mounten wir die Images.
Dabei wird unterstellt, das das CD Image (z.B. Knoppix CD Image) sich im Ordner MultibootDVD befindet.
sudo mount -o loop bootcd/knoppix.img /mnt/floppyimage
sudo mount -o loop cdimage.iso /mnt/cdimage
Nun werden alle Dateien aus dem Ordner boot/isolinux von dem CD Image ins Floppyimage kopiert.
sudo cp -av /mnt/cdimage/boot/isolinux/* /mnt/floppyimage/
Anschließend wird im Floppyimage die Datei isolinux.bin gelöscht und die Datei isolinux.cfg in syslinux.cfg umbenannt.
sudo rm /mnt/floppyimage/isolinux.bin
sudo mv /mnt/floppyimage/isolinux.cfg /mnt/floppyimage/syslinux.cfg
Jetzt wird das Floppyimage wieder ungemountet.
sudo umount /mnt/floppyimage
Um das Floppyimage bootfähig zu bekommen muß noch der folgende Befehl auf das Image angesetzt werden.
syslinux -s bootcd/knoppix.img

Kopieren des komprimierten Image vom CD Image

Nun wird das eigentlich benötigte komprimiertes Image aus dem CD Image in die Dateistruktur der Multiboot DVD kopiert.
Dabei wird das komprimierte Image "KNOPPIX" von dem CD Image in den Ordner, der für die jeweiligen LiveCD erstellten Ordner kopiert.
Also bei einer Knoppix CD, wird das Image "KNOPPIX" in den Ornder KNOPPIX kopiert. Bei DSL wird das Image "KNOPPIX" in den Ornder DSL kopiert.
cp -v /mnt/cdimage/KNOPPIX/KNOPPIX bootcd/KNOPPIX/
Jetzt kann das CD Image ungemountet werden.
sudo umount /mnt/cdimage

Modifizierung der initrd

Da die kompriemierten "KNOPPIX" Images in verschieden Ordner liegen (z.B. KNOPPIX und DSL) muss in der Initrd dies auch noch angepasst werden. In diesem Beispiel muss nur die Intrd vom DSL angepasst werden, da die Verzeichnisstruktur bei dem Knoppix Image sich nicht verändert hat.
Die Initrd, die verändert werden muss befindet sich in dem Floppyimage.
Um die Änderung in der Initrd vor zu nehmen, kopiert man diese z.B. nach /tmp. Anschließend wird diese mit gunzip entpackt und per Loopdevice gemountet. Die Initrd kann von LiveCD zu LiveCD unterschiedlich heißen. Bei DSL heißt die Initrd minirt24.gz bei der Knoppix 4.0.2 heißt sie minirt.gz.
sudo mkdir /mnt/initrd
sudo mount -o loop bootcd/dsl.img /mnt/floppyimage
cp /mnt/floppyimage/minirt24.gz /tmp/
gunzip /tmp/minirt24.gz
sudo mount -o loop /tmp/minirt24 /mnt/initrd
Die Änderung erfolgt in der Datei "linuxrc".
Man öffnet die Datei linuxrc mit seinem Liebliengseditor und sucht dort die Zeile KNOPPIX_DIR="KNOPPIX" und ersetzt das KNOPPIX durch den Ordnername des jeweiligen Image. Hier z.B durch DSL. Das sieht dann so aus: KNOPPIX_DIR="DSL".
editor /mnt/initrd/linuxrc
Nach dem die Änderung erledigt ist, wird die Initrd ungemountet, gezipt und in das Floppyimage zurück kopiert. Danach wird das Floppyimage ungemountet.
sudo umount /mnt/initrd
gzip -9 /tmp/minirt24
sudo cp /tmp/minirt24.gz /mnt/floppyimage/
sudo umount /mnt/floppyimage

Memdisk in die Dateistruktur kopieren

Damit das booten der Floppyimages von DVD funktioniert, brauch man das Programm Memdisk. Dieses Programm lädt das Floppyimage in eine Ramdisk und bootet es. Memdisk ist bei syslinux dabei. Nun kopiert man Memdisk nach bootcd/boot/
cp /usr/lib/syslinux/memdisk bootcd/boot/

Bootloader Grub konfigurieren

Als erstes muss die Datei stage2_eltorito in den Ordner bootcd/boot/grub kopiert werden.
cp /lib/grub/i386-pc/stage2_eltorito bootcd/boot/grub/
Anschließend wird die Datei bootcd/boot/grub/menu.lst mit dem Liebliengseditor erstellt und die verschiedene CD Images, die gebootet werden sollen als Bootoption eingetragen. Eine mögliche Konfiguration könnte wie folgt aussehen.
timeout 30
default 0

title Booting von Localer Harddisk
   root (hd0)
   chainloader +1

title Knoppix 4.0.2 CD
   kernel /boot/memdisk
   initrd /knoppix.img

title DSL 2.1
   kernel /boot/memdisk
   initrd /dsl.img

title Tomsrtbt 2.0.103
   kernel /boot/memdisk
   initrd /tomsrtbt.img
Der erste Booteintrag kann auch entfallen. Diese dient dazu, dass wenn nach 30 Sekunden keine Auswahl getroffen wurde, das installierte System auf der ersten Festplatte gebootet wird.

Übersicht der jetzigen Dateistruktur

Jetzt sollte die Dateistruktur wie folgt aussehen:
MultibootDVD/ -+- bootcd/ -+- boot/ -+- grub/ -+- menu.lst
                           |                   +- stage2_eltorito
                           |
                          -+- DSL/ -+- KNOPPIX
                           |
                          -+- KNOPPIX/ -+- KNOPPIX
                           |
                          -+- knoppix.img
                           |
                          -+- dsl.img
                           |
                          -+- tomsrtbt.img

MultibootDVD Image erstellen

Um das ISO Image zu erzeugen, muss man sich im Ordner "MultibootDVD" befinden. Dann gibt man den folgenden Befehl ein:
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
           -boot-load-size 4 -boot-info-table \
           -o multiboot.iso bootcd/
Das erstellte ISO Image kann nun mit growisofs oder k3b auf eine DVD gebrannt werden.



Kritik und Anregungen könnt Ihr mir per Kontaktformular oder Gästebuch zukommen lassen.
Valid HTML 4.01! Valid HTML 4.01 Valid CSS!