Teil 2: Knoppix Remastered
- Knoppix Remastered
- Teil 2: Knoppix Remastered
Containern gehen
Zwar kann man mit dem Quick-and-Dirty-Remaster viele Anwendungsfälle abdecken, doch spätestens, wenn die eigene Live-CD die 700 MByte nicht übersteigen soll, bleibt nichts anderes übrig, als Platz für die Nutzlast zu schaffen. Hierfür muss der komprimierte Container entpackt werden.

© Archiv
Knoppix verwendet als Containerformat ein mit cloop komprimiertes ISO-Image, das ein spezielles Kernelmodul verwendet. Nach dem Download des Tar-Archives wird dieses entpackt und mit einem simplen make gebaut, ein make install ist nicht notwendig. Anschließend legen Sie den cloop-Device-Node an:
mknod /dev/cloop b 240 0
Beim Laden des Moduls ist der Pfad zur Containerdatei anzugeben:
insmod cloop.ko file=/pfad/zu/KNOPPIX
Jetzt kann gemountet werden:
mount /dev/cloop /tmp/container
Nicht immer lässt sich das cloop-Modul problemlos laden. Ist das der Fall, können Sie mit dem Tool extract_compressed_fs, welches ebenfalls im cloop-Paket kompiliert wird, ein unkomprimiertes ISO9660-Dateisystem erzeugen und dann dieses mit dem im Kernel enthaltenen Loopback-Treiber mounten. Da es sich auch beim Container um ein read-only-Dateisystem handelt, muss der Inhalt erst kopiert werden:
rsync -av /tmp/container/ build/
Um im Verzeichnis build arbeiten zu können, sollten Sie einige spezielle Dateisysteme mounten und /tmp sowie /root des umgebenden Wirtes verfügbar machen:
mount -t proc none build/proc mount -o bind /dev build/dev mount -o bind /tmp build/tmp mount -o bind /root build/root
Jetzt folgt der Wechsel in den Chroot-Käfig:
LC_ALL=C chroot build
Im Chroot können Sie sich nach Belieben austoben, Software mit apt-get remove löschen (OpenOffice.org ist ein Kandidat, der besonders viel Platz schafft) oder zuvor nach /tmp heruntergeladene Pakete mit dpkg -i installieren. Von einem kompletten apt-get upgrade raten wir indes ab: Knoppix verwendet eine Mischung aus Debian Stable, Testing, Backports und Knoppers eigenen Paketen, die zum Release-Zeitpunkt einer Knoppix-Version immer gut abgestimmt ist, aber mit Sicherheit eine Aktualisierung aller Programme nicht gut verträgt. Sind die Modifikationen beendet, steigen Sie mit exit aus dem Chroot aus und unmounten die Dateisysteme:
umount build/root umount build/tmp umount build/dev umount build/proc
Vergewissern Sie sich mit cat /proc/mounts, dass wirklich nichts mehr eingehängt ist. Ein versehentlich im Container integriertes /proc kann einige Hundert Megabyte okkupieren. Jetzt können Sie den Knoppix-Container neu aufbauen. Hierfür kommt wieder mkisofs zum Einsatz, das resultierende Dateisystem wird jedoch in einer Pipeline komprimiert:
mkisofs -R -U \ -V "KNOPPIX-Container" \ -hide-rr-moved \ -cache-inodes \ -pad build | \ create_compressed_fs \ -f /tmp/KNOPPIX.tmp \ -B 65536 - KNOPPIX
Ältere Versionen von create_compressed_fs benötigen keine Angabe einer temporären Datei (hier mit dem Parameter -f), das "-" kennzeichnet die Standardeingabe, als letztes Argument folgt der Name der erzeugten Containerdatei, hier KNOPPIX im aktuellen Verzeichnis. Sollten Sie create_compressed_fs nicht installiert haben, kopieren Sie einfach das Binary aus dem Cloop-Arbeitsverzeichnis nach /usr/bin oder /usr/local/bin.
Mit dem neuen Container können Sie jetzt wie oben beschrieben ein neues ISO-Image erstellen, das Sie dann in einer virtuellen Umgebung wie VMware oder VirtualBox testen können.

© Archiv
Enthält das eigene Knoppix basierte Linux ausschließlich freie Software und Programme, spricht auch nichts gegen den Weitervertrieb. Bieten Sie die Quellcodes der LGPL- und GPL-lizenzierten Programme an, entfernen Sie Knoppix aus dem Splashscreen und die index.html - und vertreiben Sie das Produkt nicht als Knoppix.
Knoppix mit einem anderen Kernel Soll die eigene Rettungs-CD Treiber für aktuelle SATA-Controller und Netzwerkkarten mitbringen, führt kaum ein Weg am Bau eines eigenen Knoppix-Kernels vorbei. Seit Linux 2.6.16 haben sich viele Schnittstellen des Kernels glücklicherweise kaum verändert, sodass ein Kernel 2.6.24 mit einem ursprünglich mit 2.6.19 gebauten Knoppix wenig Probleme bereitet. Feinarbeit ist lediglich beim HALD (Erkennung von USB-Festplatten), beim Ndiswrapper und seltener bei den Wireless-Tools notwendig. Die Vorgehensweise entspricht weitgehend dem Bauen eines normalen Kernels. Sollten Sie auf einem x86_64-System bauen, müssen Sie in einem i386-Chroot-Käfig arbeiten oder mit einem vorangestellten setarch i386 vortäuschen, unter i686 zu arbeiten:

© Archiv
Knoppix-CD: neuer Kernel
- Entpacken Sie den Tarball des Kernels und kopieren Sie die originale Konfiguration des Knoppix (im Live-System unter /boot) nach .config im entpackten Quellcodeverzeichnis.
- Laden Sie die benötigten Patches herunter und spielen Sie diese ein. Squashfs lässt sich zum Beispiel als Patch im Kerneltree anbringen: patch -p1 < ../squashfs.../.patch. Etwas aufwändiger ist das Union-Dateisystem aufs. Sie müssen es zunächst via Subversion auschecken und dann einige Dateien manuell verändern. Im ausgecheckten Verzeichnis finden Sie eine kurze Anleitung.
- Erstellen Sie mit make oldconfig eine neue Kernelkonfiguration auf Basis der neuen Quellen und der alten Konfiguration und gehen Sie anschließend mit make menuconfig die Konfiguration durch. Möglicherweise wollen Sie SATA-Treiber oder Ähnliches statisch einkompilieren oder im alten Kernel noch nicht verfügbare Treiber aktivieren.
- Jetzt bauen Sie den Kernel mit make. Erstellen Sie anschließend ein Debian-Paket mit make deb-pkg. Dieses können Sie bereits im Chroot-Käfig mit "dpkg -i paket.deb" installieren.
- Cloop wird separat kompiliert. Das von uns getestete 2.622 suchte die Kernelquellen in /usr/src/linux. Passen Sie den Pfad im Makefile auf das Verzeichnis Ihres Knoppix-Kernels an, um ein passendes Modul zu erhalten.
- Nun müssen Sie die Initrd entpacken, gegebenenfalls mounten und die dort enthaltenen Module identifizieren und gegen die Module des frisch kompilierten Kernels austauschen. Beim Original-Knoppix 5.1.1 war zudem eine kleine Änderung am Script linuxrc notwendig, damit aufs.ko zuerst auf der Initrd gesucht wurde - nur so kann ein alter und ein neuer Kernel parallel genutzt werden.
Der neue Kernel - auffindbar unter arch/i386/boot/bzImage - und die Initrd kopieren Sie in das Bootverzeichnis (bei Knoppix /boot/isolinux) und fügen entsprechende Einträge in Ihre isolinux.cfg ein.
Beschreibung | Website |
---|---|
Syslinux | Download |
Cloop-Kernelmodul | Download |
UCK - Ubuntu Customization Kit | Download |
AUFS - Another UnionFS | Download |
genext2fs | Download |
BusyBox | Download |