= DebianDog remastern :author: Axel Pemmann :Date: 23.01.2016 :Revision: 0.7 :homepage: http://pemmann.de/doc/lpi1/ :numbered: :toc: :imagesdir: img **Zielstellung** ist das Anpassen einer Linux-Live-Distribution auf eigene Bedürfnisse (Remastern eines bootfähigen ISOs). Dabei eignet sich DebianDog besonders gut. Es handelt sich um ein sehr gut vorkonfiguriertes Live-Debian nach Puppy-Art, das sich am besten so herunterladen lässt: ---- cd mkdir DebianDog cd DebianDog wget http://kazzascorner.com.au/saintless/DebianDog/DebianDog-Jessie/DebianDog-Jessie-jwm_icewm-2015-09-02-PAE.iso ---- == Livesystem booten Zuerst einmal müssen wir das Live-Linux an den Start bringen. Das kann mit VirtualBox oder einer anderen Virtualisierungslösung wie 'kvm' geschehen. Zur Installation dieser nativen Linux-Lösung siehe hier: => https://wiki.ubuntuusers.de/KVM/ Der Maschine sollte man etwas mehr RAM (hier 2300 MB) zuweisen, weil sonst für das Remastern (Erstellung einer squashfs-Datei) schnell der Speicherplatz ausgeht. Mit der folgenden Kommandozeilen kann ein einfacher Benutzer die virtuelle Maschine booten: ---- kvm -m 2300 -smp 2 -boot d -cdrom ~/DebianDog/DebianDog-Jessie-jwm_icewm-2015-09-02-PAE.iso -vga std & ---- == Livesystem anpassen Nunmehr befinden wir uns im virtuellen Gastsystem und können in einem Terminalfenster die gewünschte Software nachinstallieren. Sinnvoll ist auch hinsichtlich des später zu übertragenden squashfs-Images, das Paket 'openssh-client' mit zu installieren. Vor allem aber aktivieren wir erst einmal mit 'setxkbmap' deutsches Tastaturlayout: ---- setxkbmap de apt-get update apt-get install openssh-client ---- Eigene Skripte kann man unter '/opt/bin' platzieren, die Einbindung für einen möglichen Autostart geschieht mittels der Datei '/etc/rc.local'. Wer sich z.B. eine Antiviren-Live-CD mit Bordmitteln bauen möchte, kann sich gleich noch die Antivirensoftware 'clamav' installieren. Da wir aber die Virensignaturen am besten über den Host aktualisieren wollen (siehe unten), wird der Updatemechanismus in diesem Gast via 'freshclam' deaktiviert und alle bereits heruntergeladenen Dateien gelöscht: ---- apt-get install clamav systemctl stop clamav-freshclam systemctl disable clamav-freshclam rm /var/lib/clamav/* ---- == Livesystem remastern Wenn die gewünschten Änderungen vorgenommen wurden, müssen wir folgende Schritte durchführen, die als nächstes detailliert beschrieben werden: . Ein neues Squash-Dateisystemimage erzeugen . Das Image auf das Hostsystem kopieren . Auf dem Host ein bootfähiges ISO erzeugen === Squash-Dateisystemimage erzeugen Im Startmenü findet sich unter 'System' der Eintrag 'RemasterDog', der einen kleinen Assistenten startet. Viele Einstellungen sind nicht vorzunehmen: * Ordner auswählen, wo das Image gespeichert werden soll ('/tmp') * Einen Namen eingeben, der für das Build-Verzeichnis unter /tmp verwendet wird ('master') * Einen Namen für das neu zu bauende Dateisystemimage angeben ('01.squashfs') So sieht dieser erste Dialog aus, in dem alle Einstellungen vorgenommen werden müssen: image::01.jpg[caption="Bild 1: ", title="Startmenüeintrag suchen, Einstellungen", alt="Startmenüeintrag suchen, Einstellungen"] Dann müssen nur noch entsprechende Bestätigungen gegeben werden, zuerst muss natürlich das Image gebaut werden ('CreateModule'): image::02.jpg[caption="Bild 2: ", title="Modul bauen", alt="Modul bauen"] Schließlich bestätigen wir nur noch, dass das temporäre build-Verzeichnis gelöscht werden kann: image::03.jpg[caption="Bild 3: ", title="Aufräumen, um Platz zu schaffen", alt="Aufräumen, um Platz zu schaffen"] === Image auf das Hostsystem kopieren Da wir ja zuvor das Paket 'openssh-client' installiert hatten und auf unserem Debian-Host sowieso der ssh-Daemon läuft, gelingt es nun leicht, das generierte Image auf den Host zu kopieren. Bei Verwendung der oben gezeigten Möglichkeit, das Gastsystem mit kvm zu booten, hat der Host die IP-Adresse 10.0.2.2 (via internes DHCP/NAT). Auf diese Maschine kopieren wir nun das Image, wobei es im Heimatverzeichnis des Benutzers 'tux' landet: ---- scp /tmp/01.squashfs tux@10.0.2.2: ---- Damit sind die Arbeiten im Gastsystem abgeschlossen. Wir können ihn aber gern weiterlaufen lassen, falls wir nämlich mit dem Endergebnis nicht zufrieden sind und einen weiteren Versuch starten wollen, müssen die Software-Pakete, die ja nur im RAM liegen, nicht erneut heruntergeladen und installiert werden. === Bootfähiges ISO erzeugen Jetzt geht es auf dem Host-System weiter. Dort finden wir nun unsere Image-Datei: '/home/tux/01.squashfs' **Beim ersten Mal** muss das ISO gemountet und der CD-Inhalt in einem Buildverzeichnis 'tmp' bereitgestellt werden: ---- mount /home/tux/Downloads/DebianDog-Jessie-jwm_icewm-2015-09-02-PAE.iso /mnt/ cp -a /mnt/* /home/tux/DebianDogRemaster/tmp/ ---- Nun verschieben wir das vorhin erstellte, remasterte Image '01.squashfs' und benennen es gleichzeitig um, wobei die Zieldatei praktischerweise überschrieben wird: ---- root@wks01:# cd /home/tux/DebianDogRemaster root@wks01:/home/tux/DebianDogRemaster# mv /home/tux/01.squashfs tmp/live/01-filesystem.squashfs root@wks01:/home/tux/DebianDogRemaster# ---- Jetzt brauchen wir nur noch ein kleines Skript, das uns hilft, aus all dem ein bootfähiges ISO zu bauen (Das Paket 'genisoimage' muss vorher installiert werden: `apt-get install genisoimage`): ---- #!/bin/sh # # Auf Anregung von # http://openwritings.net/content/public/excerpt/create-custom-debiandog-iso # # Die Option '-f' kann entfallen, wenn keine Symlinks im Verzeichnis 'rootcopy' benutzt werden genisoimage -f -r -V "live-modules-slimjet" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $PWD/debianDog.iso $PWD/tmp/ ---- ---- root@wks01:/home/tux/DebianDogRemaster# ./geniso I: -input-charset not specified, using utf-8 (detected in locale settings) Size of boot image is 4 sectors -> No emulation 5.93% done, estimate finish Thu Dec 10 17:08:16 2015 11.87% done, estimate finish Thu Dec 10 17:08:16 2015 17.78% done, estimate finish Thu Dec 10 17:08:16 2015 23.72% done, estimate finish Thu Dec 10 17:08:16 2015 29.64% done, estimate finish Thu Dec 10 17:08:16 2015 35.57% done, estimate finish Thu Dec 10 17:08:16 2015 41.49% done, estimate finish Thu Dec 10 17:08:16 2015 47.43% done, estimate finish Thu Dec 10 17:08:16 2015 53.34% done, estimate finish Thu Dec 10 17:08:17 2015 59.28% done, estimate finish Thu Dec 10 17:08:17 2015 65.20% done, estimate finish Thu Dec 10 17:08:17 2015 71.13% done, estimate finish Thu Dec 10 17:08:17 2015 77.06% done, estimate finish Thu Dec 10 17:08:17 2015 82.98% done, estimate finish Thu Dec 10 17:08:17 2015 88.90% done, estimate finish Thu Dec 10 17:08:17 2015 94.83% done, estimate finish Thu Dec 10 17:08:17 2015 Total translation table size: 2048 Total rockridge attributes bytes: 2704 Total directory bytes: 12288 Path table size(bytes): 98 Max brk space used 23000 84365 extents written (164 MB) root@wks01:/home/tux/DebianDogRemaster# ---- Später kann mit dem modifizierten System testweise gebootet werden: ---- kvm -m 1024 -smp 4 -boot d -cdrom myDebianDog.iso -vga std & ---- == Vermeidung neuen Remasterns wegen einzelner Dateien Dank der Porteus-Art zu booten, gibt es ein Verzeichnis 'rootcopy' (tmp/live/rootcopy/), dessen Inhalt während des Bootvorganges in die Wurzel ('/') des Live-Systems kopiert wird. Soll aber kein persistent-Stick verwendet werden, muss der Booteintrag 'sysvinit Porteus Always Fresh' in der Datei 'tmp/isolinux/live.cfg' bearbeitet werden: 'norootcopy' ist zu entfernen. Dann diesen Eintrag manuell ausgewählen oder Standardbooteintrag ändern. Bereitsstellen von Dokumentation: ---- cd /home/tux/DebianDogRemaster mkdir -p tmp/live/rootcopy/root/ vi tmp/live/rootcopy/root/LIESMICH.txt ---- Wer wie oben erwähnt die Antivirensoftware 'clamav' im Gastsystem installiert hat, müsste ja jedesmal DebianDog remastern, um die aktuellsten Virensignaturen zu integrieren. Es geht aber dank des 'rootcopy'-Verzeichnisses viel einfacher, indem wir die aktuellen Signaturen auf dem Host vorhalten und beim Erzeugen des bootfähiges ISOs automatisch einbinden. Dies erledigen wir in zwei Schritten: . Installation von 'clamav' auch auf dem Host-System, wobei die Virensignaturen automatisch mit Hilfe von 'freshclam' aktualisiert werden. . Erzeugen von symbolischen Links in der 'rootcopy'-Verzeichnisstruktur, die auf die Virensignaturen unter '/var/lib/clamav' zeigen. ---- apt-get install clamav cd /home/tux/DebianDogRemaster mkdir -p tmp/live/rootcopy/var/lib/clamav/ cd tmp/live/rootcopy/var/lib/clamav/ ln -s /var/lib/clamav/bytecode.cvd ln -s /var/lib/clamav/daily.cvd ln -s /var/lib/clamav/main.cvd ln -s /var/lib/clamav/mirrors.dat ----