Live-CDs/DVDs erstellen für Debian-/Ubuntu-basierende Distributionen



Nachdem man ein System in einer virtuellen Maschine installiert hat, alle notwendige Software installiert und das System nach den eigenen Wünschen vorkonfiguriert hat (Nutzer anlegen, Autologin anlegen etc. pp.), sind noch kleine Nacharbeiten im Gastsystem fällig.

Achtung: Als Dateisystem des Gastsystems ist btrfs in diesem Fall nicht geeiginet!

Zuerst einmal müssen die Pakete installiert werden, die zur Nutzung als Livesystem notwendig sind.

# apt-get install live-boot-initramfs-tools live-tools live-boot

Das initramfs baut man dann mittels

# update-initramfs -u

neu.

Außerdem solle aus Platzgründen der Paketcache geleert werden.

# apt-get clean

Im Hostsystem müssen noch die notwendigen Pakete zum Zugriff auf die virtuelle Maschine und die Nutzung des Bootloaders sowie zur Erstellung eines SquashFS installiert werden.

Für Debian-Versionen bis 7 und Ubuntu 12.04:

# apt-get install squashfs-tools libguestfs-tools guestmount syslinux syslinux-common dvd+rw-tools

Für Ubuntu 14.04:

# apt-get install squashfs-tools libguestfs-tools syslinux syslinux-common dvd+rw-tools

Für Debian-Versionen ab Debian 8 und Ubuntu 14.10:

# apt-get install squashfs-tools libguestfs-tools syslinux syslinux-common isolinux dvd+rw-tools

Die Abfrage, ob eine "supermin-appliance" erstellt werden soll, muss hierbei bejaht werden.

Danach kann die virtuelle Maschine eingebunden werden.

Hierfür wird ein neuer Einhängepunkt unterhalb von /media erstellt.

# mkdir -p /media/virtual

und danach wird die VM dank libguestfs wie ein normales Dateisystem eingebunden.

# guestmount -a /PFAD_ZUR_DATEI -i /media/virtual

Davon ausgehend, dass als Virtualisierungslösung mit VirtualBox gearbeitet wird, das Standardformat VDI gewählt wurde, der Standardordner für die virtuellen Maschinen genutzt wird und die VM den Namen "Debian" bekommen hat, wäre das im Beispiel also

# guestmount -a ~/VirtualBox\ VMs/Debian/Debian.vdi -i /media/virtual

Die Dateien sind jetzt unter /media/virtual zugreifbar.


Als nächstes wird ein Arbeitsordner für die Daten erstellt, in den die Daten aus der VM kopiert werden.

# mkdir tmplive

Anschließend werden die Datei dorthin kopiert.

# cp -a /media/virtual/* tmplive/

Danach kann das Dateisystem der VM wieder ausgehangen werden.

# guestunmount /media/virtual

Achtung: Das funktioniert erst ab Version 1:1.21.31-1, bei aktuell noch unterstützten Versionen also nicht bei Debian 7 (Version 1:1.18.1-1) und Ubuntu 12.04 (Version 1:1.14.8-1). Hier ist das Image bis zum nächsten Reboot eingebunden.

Die fstab im Arbeitsordner muss noch angepasst werden, damit das Livesystem booten kann.

# echo -e "overlayfs / overlayfs rw 0 0\ntmpfs /tmp tmpfs nosuid,nodev 0 0" > tmplive/etc/fstab

Und dann wird das SquashFS aus den Daten gebaut.
 
# mksquashfs tmplive/. filesystem.squashfs -comp xz

Für die Erstellung der ISO-Datei wird ein weiterer Arbeitsordner erstellt, hier liveiso. Dieser wird gleich mitsamt den benötigten Unterordnern erstellt.

# mkdir -p liveiso/{isolinux,live}

Dorthin wird erst einmal das erstellte SquashFS kopiert.

# cp filesystem.squashfs liveiso/live/

Anschließend noch die von Syslinux zum Starten benötigten Dateien in dessen Konfigurationsverzeichnis kopieren.

Hier wieder die Unterscheidung nach Syslinux 4.x und 6.x, also für Debian bis 7 und Ubuntu bis 14.04

# cp /usr/lib/syslinux/*.c32 liveiso/isolinux/
# cp /usr/lib/ISOLINUX/isohdpfx.bin liveiso/isolinux/ ä cp /usr/lib/ISOLINUX/isolinux.bin liveiso/isolinux/

und für Debian ab Version 8 und Ubuntu ab 14.10

# cp /usr/lib/syslinux/modules/bios/*.c32 liveiso/isolinux/
#
cp /usr/lib/ISOLINUX/isohdpfx.bin liveiso/isolinux/ # cp /usr/lib/ISOLINUX/isolinux.bin liveiso/isolinux/

Außerdem muss dort eine Konfigurationsdatei erstellt werden, hier ist wiederum kein Unterschied zwischen Syslinux 4.x und 6.x vorhanden.

# nano liveiso/isolinux/isolinux.cfg

(Statt nano kann natürlich auch jeder andere Editor verwendet werden.)

Der Inhalt:

default menu.c32
prompt 0
menu title ISOLINUX
timeout 100

label default
menu label DEBIAN-LIVE
kernel /vmlinuz
append initrd=/initrd boot=live

Die Punkte menu title und menu label können nach eigenen Wünschen beschriftet werden.

Es fehlen doch der Kernel und das initramfs. Beides aus dem Arbeitsordner in den Arbeitsordner für die ISO-Datei kopieren.

# cp tmplive/boot/KERNEL liveiso/vmlinuz
# cp tmplive/boot/INITRD liveiso/initrd

im hier genannten Debian-Beispiel also

# cp tmplive/boot/vmlinuz-3.16.0-4-amd64 liveiso/vmlinuz
ä cp tmplive/
boot/initrd.img-3.16.0-4-amd64 liveiso/initrd

Anschließend wird mit genisoimage eine ISO-Datei erstellt.

# genisoimage -o Debian-Live.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -r -V "Debian-Live" -cache-inodes -J -l liveiso

Der Name (Debian-Live.iso) und das Label ("Debian-Live") können dabei frei gewählt werden.

Die jetzt erstellte Datei "Debian-Live.iso" kann jetzt (je nach Größe) auf eine CD oder DVD gebrannt werden.

Bei installierten cdrtools für CDs und DVDs (wenn der Brenner /dev/sr0 ist):

# cdrecord -v dev=/dev/sr0 -eject Debian-Live.iso 

Bei installiertem wodim

# wodim -v dev=/dev/sr0 -eject Debian-Live.iso 

für CDs und bei installierten dvd+rw-tools

# growisofs -dvd-compat -Z /dev/sr0=Debian-Live.iso 

für DVDs.

Bei installiertem cdrskin

# cdrskin -v dev=/dev/sr0 -dao Debian-Live.iso

für CDs und DVDs.

Die ISO-Datei kann natürlich auch mit Programmen wie Xfburn, K3b oder Brasero auf eine CD/DVD gebrannt werden.