Eigene Debian Live-CD mit live-helper
 

Eine eigene Debian Live-CD zu erstellen ist dank des Tools live-helper recht simpel. Ich erkläre hier die Erstellung einer Live-CD unter Debian lenny. In Debian squeeze sind die verwendeten Befehle etwas anders. Anstatt lh_config (live-helper config) schreibt man lb config (live-build -ohne Unterstrich- config).

Natürlich muß man vorher das entsprechende Paket mittels

# apt-get install live-helper

installieren. Da wir eine Live-CD erstellen, die wir an unsere persönlichen Bedürfnisse anpassen wollen, müssen wir die einzelnen Schritte separat durchführen und nicht die CD (was natürlich auch geht) in einem Rutsch erstellen lassen. Noch ein Hinweis: live-helper muß als root ausgeführt werden, da die Erstellung der Live-CD in einer chroot-Umgebung ausgeführt wird.

1. Die Ordner und Konfigurations-Dateien erstellen (lh_config)

Zuerst erstellt man für die Live-CD ein eigenes Verzeichnis und wechselt in selbiges.
# mkdir debian-live
# cd debian-live/

Die Konfigurationsdateien werden mittels folgendem, langem Befehl erstellt. Dabei ist darauf zu achten, daß der Befehl eigentlich nur eine Zeile darstellt und mittels des Backslash das Return Zeichen für die jeweils nächste Zeile deaktiviert wird. So kann man den Befehl über mehrere Zeilen eingeben und er wird durch den Backslash vor dem Return nicht sofort ausgeführt, sondern man kann munter in der nächsten Zeile weiterschreiben.

# lh_config -l de -d lenny -a i386 \
--mirror-binary 'http://ftp.de.debian.org/debian/' \
--mirror-bootstrap 'http://ftp.de.debian.org/debian/' \
--mirror-chroot 'http://ftp.de.debian.org/debian/' \
--categories 'main contrib non-free' \
-p 'kde-core' \
--tasks 'kde-desktop' \
--debian-installer disabled \
--bootappend-live 'locale=de_DE.UTF-8 keyb=de vga=791' \
--bootappend-install 'locale=de_DE.UTF-8 keyb=de vga=791'

-l = (language) natürlich die Sprache, hier de für deutsch
-d = die für die live-CD verwendete Distribution, hier lenny
-a = die verwendete Architektur, hier i386
--mirror-binary = Dies ist die Angabe des Paket-Spiegels, so wir er in die Konfigurations-Dateien der Live-CD eingetragen wird.
--mirror-bootstrap = setzt den Pfad zum Debian-Paket-Spiegel, welcher für bootstrap verwendet werden soll.
--mirror-chroot = der Spiegel von dem die Pakete geladen werden.
--categories = die verwendeten Paket-Bereiche
-p = Angabe der Paketliste, welche die zu installierenden Pakete enthält. Die Default-Liste ist standard.
--tasks = Angabe von Paketlisten nach Aufgaben sortiert, welche zusätzlich installiert werden können.
--debian-installer = legt fest, ob ein Debian-Installer verwendet werden soll oder nicht. Der Default-Wert ist disabled.
--bootappend-live = setzt Boot-Parameter für die Live-CD. Eine komplette Liste der Boot-Parameter gibt es in der manpage von live-initramfs oder auf der erstellten Live-CD (ohne Kommentare) in der Datei /parameters.txt.
--bootappend-install = setzt Boot-Parameter für den Debian-Installer, falls er aktiviert wurde.

Die Liste der Pakete die für eine Live-CD verwendet werden, kann auf unterschiedlichste Weise zusammengestellt werden. Einmal gibt es unter
/usr/share/live-helper/lists/
vorgefertigte Paketlisten, welche mit der Option -p angegeben werden. Desweiteren kann man noch mit der Option --tasks weitere aufgabenbezogene Paketlisten hinzufügen. Die primären "Task"-Listen kann man sich mittels des Befehls
# tasksel --list-tasks
anzeigen lassen und den Inhalt mit
# tasksel --task-packages Task-Liste

Hier mal eine Ausgabe von --list-tasks unter Debian lenny:

u desktop
u web-server
u print-server
u dns-server
u file-server
i mail-server
u database-server
i laptop
u manual
Desktop environment
Web server
Print server
DNS server
File server
Mail server
SQL database
Laptop
manual package selection

Zusätzlich gibt es noch spezielle Tasks, welche nicht unter --list-tasks auftauchen. Als da wären gnome-desktop, kde-desktop, lxde-desktop und xfce-desktop. Außerdem ist es auch möglich mehrfache Angaben zu machen und die Sprache mit anzugeben, z.B.
# lh_config --tasks "japanese japanese-desktop japanese-gnome-desktop"
Neben den bisher genannten Möglichkeiten -Paketlisten und Task-Listen- gibt es noch die Möglichkeit einzelne Pakete mit der Option --packages anzugeben, z.B.
# lh_config --packages "less smplayer"
oder die benötigten Pakete direkt in die Konfigurations-Dateien zu schreiben. Dazu trägt man in der Datei config/chroot unter LH_PACKAGES="Paket1 Paket2" die entsprechenden Pakete ein.

Meine bevorzugte Methode für das Erstellen einer Live-CD ist ein kleines Standard-System anzugeben und sämtliche benötigten Pakete im nachhinein mittels apt in der chroot-Umgebung zu installieren. Auch kann in dieser Umgebung das Paßwort von root vergeben werden oder die Sprachumgebung mittels des Pakets locale eingestellt werden.

2. Die chroot-Umgebung erzeugen (lh_bootstrap && lh_chroot)

Mit den Befehlen
# lh_bootstrap && lh_chroot
werden die in der Konfiguration angegebenen Pakete heruntergeladen und installiert und somit die chroot-Umgebung erzeugt, in die man später mittels des Befehls chroot wechseln kann. Dieser Vorgang kann je nach Internetverbindung und gewählten Paketen mehr oder weniger lang dauern. Danach befindet sich in unserem Live-Verzeichnis ein Ordner namens chroot/. Dieser Ordner enthält eine vollständige Debian-Umgebung, in der jedoch einige Verzeichnisse sinngemäß leer sind, da diese erst nach einen Start gefüllt werden. Es handelt sich um die Verzeichnisse sys/ und proc/. Daher müssen wir zuerst mittels des mount-Kommandos die Verzeichnisse mit unserem laufendem System verbinden.
# mount -o bind /sys /debian-live/chroot/sys
# mount -o bind /proc /debian-live/chroot/proc

Danach können wir in die Umgebung wechseln mittels
# chroot chroot/
Außer daß der Pfad verschwunden ist, merkt man nichts von der fremden Umgebung. Jedoch zeigt ein ls /home ein leeres Heimat-Verzeichnis gegenüber dem sonst vorhandenem Verzeichnis des Users. Damit wir nun Pakete installieren können, müssen wir noch die Netzwerkverbindung mittels
# dhclient eth0
einrichten lassen. Danach kann man ohne Probleme mittels apt-get install Pakete dazu installieren oder apt-get purge Pakete deinstallieren. Nach der Installation sollte man nicht vergessen mittels apt-get clean den Zwischenspeicher unter /var/cache/apt/archives/ zu leeren, da sonst unnötig Platz auf der CD verschwendet wird. Auch ist es möglich eventuelle Konfigurations-Dateien in /etc anzupassen. Mit
# exit
verläßt man die chroot-Umgebung wieder.

3. Das ISO-File erstellen (lh_binary)

Nachdem alle Anpassungen vorgenommen wurden, kann man mittels
# lh_binary
das ISO-Image generieren lassen. Hat man schon mal ein Image generiert und nachträglich Änderungen vorgenommen, muß vor dem erneuten generieren das alte Image mittels des Befehls
# lh_clean --binary
gelöscht werden. Das fertige Image kann nun auf einen Rohling gebrannt werden und so hat man sein Debian System immer dabei.