LiveCD manuell remastern
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Bei der Verwendung der Ubuntu Live-CD kann es vorkommen, dass man dort ganz bestimmte Funktionen oder Einstellungen vermisst (installierter Openssh-Server, standardmäßig aktivierter VNC-Server, usw.). Um dem Abhilfe zu verschaffen, ist es möglich, die Live-CD per Hand anzupassen. Die hierzu nötigen Schritte sollen im Verlauf dieser Anleitung erklärt werden.
Systemvoraussetzungen¶
Das Remastern von Live-CDs erfordert, dass zeitweise mehrere unkomprimierte Kopien der Ausgangs-CD auf der Festplatte existieren. Deshalb sollte man dafür sorgen, dass zumindest 3-5 Gigabyte Festplattenplatz sowie mindestens 512 Megabyte Arbeits- und Auslagerungsspeicher zur Verfügung stehen.
Des Weiteren müssen die folgenden Pakete auf dem System installiert [1] werden:
squashfs-tools
genisoimage
Befehl zum Installieren der Pakete:
sudo apt-get install squashfs-tools genisoimage
Oder mit apturl installieren, Link: apt://squashfs-tools,genisoimage
Hinweis:
Es bietet sich außerdem an, eine Virtualisierungsumgebung zu installieren, um das später erstellte CD-Image zu testen. So spart man Zeit und CD-Rohlinge.
Vorbereitung¶
Die folgenden Schritte sind so gefasst, dass man die einzelnen Befehle weitgehend per "Copy&Paste" verwenden kann. Dennoch sollte man sich der Funktion der jeweiligen Befehle bewusst sein.
Vorbereiten der Umgebung¶
Für das Remastern ist eine existierende Live-CD oder ein entsprechendes Image notwendig. Je nach Umgebung muss ein Image manuell eingehängt werden [3].
Zunächst werden neue Umgebungsvariablen definiert. Sie enthalten Arbeitspfad und Quellpfad für die folgenden Schritte und müssen entsprechend angepasst werden. Die Variable QUELLE
sollte dabei auf den Mountpoint der Ausgangsdaten zeigen, wobei cdrom0
durch den Namen der CD/DVD ersetzt werden muss. ARBEITSVERZEICHNIS
definiert ein neues Verzeichnis für die eigentlichen Arbeitsschritte, welches direkt angelegt wird.
export QUELLE="/media/$USER/cdrom0" # cdrom0 durch den Name der CD/DVD ersetzen export ARBEITSVERZEICHNIS="$HOME/remastern" mkdir -p "${ARBEITSVERZEICHNIS}"
Anschließend lässt sich der Inhalt des Installationsmediums wie folgt in das Arbeitsverzeichnis kopieren:
cd "${ARBEITSVERZEICHNIS}" mkdir ubuntu-livecd cp -a "${QUELLE}/." ubuntu-livecd sudo chmod -R u+w ubuntu-livecd
Platz schaffen¶
Bei einigen Ubuntudistributionen existieren zusätzliche Dateien, die nur für Windowsanwender von Interesse sind. Um Platz für weitere Pakete zu gewinnen, lassen sich diese Dateien entfernen.
Eine Möglichkeit Windowsdateien zu finden ist:
find "${ARBEITSVERZEICHNIS}/ubuntu-livecd" -name "*.exe"
Hinweis:
Falls gewünscht wird, zusätzliche oder veränderte Inhalte für Windowsnutzer (anderer Autostart/Programme) zu hinterlegen, ist jetzt eine gute Gelegenheit. Im Live-CD Modus sind diese Inhalte allerdings nicht standardmäßig verfügbar.
Live-System mounten¶
Das Dateisystem der Live-CD befindet sich komprimiert in der Datei ${ARBEITSVERZEICHNIS}/ubuntu-livecd/casper/filesystem.squashfs und wird beim Start von CD entpackt. Um Zugriff auf die Systemdateien zu erhalten, muss es entsprechend gemountet werden.
mkdir "${ARBEITSVERZEICHNIS}/ALT" sudo mount -t squashfs -o loop,ro "${ARBEITSVERZEICHNIS}/ubuntu-livecd/casper/filesystem.squashfs" "${ARBEITSVERZEICHNIS}/ALT"
Live-System umsiedeln¶
Das gemountete Live-System kann bisher nicht manipuliert werden, dazu ist eine schreibfähige Umgebung notwendig. Das originale Dateisystem nimmt ungefähr 2-2,5 GByte dekomprimierten Platz ein. Mit:
sudo dd if=/dev/zero of="${ARBEITSVERZEICHNIS}/ubuntu-fs.ext2" bs=1M count=3000 sudo mke2fs "${ARBEITSVERZEICHNIS}/ubuntu-fs.ext2"
wird eine neue 3 GByte große Datei als zukünftige Heimat des Dateisystems angelegt und formatiert. Der Hinweis, dass es sich beim Ziel um kein reelles Blockgerät handelt, kann ignoriert werden. Möchte man mehrere Programme hinzufügen, sind 3 GByte Platz sehr knapp, zumal durch die Komprimierung deutlich größere Dateisysteme auf eine DVD passen. Hier sind Werte von 5 und mehr GByte - entsprechend einem "count=5000" - realistischer. Ist genügend Platz auf der Festplatte vorhanden, ist eine 5-fache Größe der iso-Datei empfehlenswert. Die neue iso-Datei wird später auf die erforderliche Größe geschrumpft.
Hinweis:
Will man weitere Pakete installieren, empfiehlt es sich zusätzlichen Speicherplatz einzuplanen. Sofern im Ausgleich keine weiteren Pakete gelöscht werden, erfordert dies ggf. allerdings ein größeres Installationsmedium, als eine DVD.
Im Anschluss wird die neue Partition eingebunden und mit den Daten der Live-CD besiedelt.
mkdir "${ARBEITSVERZEICHNIS}/NEU" sudo mount -o loop "${ARBEITSVERZEICHNIS}/ubuntu-fs.ext2" "${ARBEITSVERZEICHNIS}/NEU" sudo cp -a "${ARBEITSVERZEICHNIS}/ALT/." "${ARBEITSVERZEICHNIS}/NEU"
Danach kann das ursprüngliche Dateisystem wieder entbunden werden:
sudo umount "${ARBEITSVERZEICHNIS}/ALT"
Bearbeiten des Live-Systems¶
Zugriff auf das Live-System¶
Damit während der Bearbeitung des neuen Live-Systems alle nötigen Funktionen zur Verfügung stehen, bedarf es wieder einiger kleiner Vorbereitungen.
Zuerst wird eine aktuelle Version der Datei /etc/resolv.conf im Live-System hinterlegt. Dies stellt sicher, dass Domainnamen auch innerhalb des Live-Systems aufgelöst werden können. Dieser Schritt ist auch notwendig, wenn keine Netzwerkverbindung besteht!
sudo cp /etc/resolv.conf "${ARBEITSVERZEICHNIS}/NEU/etc/"
Damit Programme innerhalb des Live-Systems störungsfrei betrieben werden können, muss weiterhin /proc Informationen über den Kernel- und Prozesszustände liefern können.
sudo mount -t proc -o bind /proc "${ARBEITSVERZEICHNIS}/NEU/proc"
Werden zur Ausführung innerhalb des Live-Systems weitere tty benötigt, sind diese ebenfalls zu binden.
sudo mount -o bind /dev/pts "${ARBEITSVERZEICHNIS}/NEU/dev/pts"
Experten-Info:
Ggf. sollen dem Live-System Nutzer zusätzliche Dokumente zur Verfügung stehen. Beim Starten der Live-CD wird für den Nutzer ein Verzeichnis /home/ubuntu angelegt, das sich gut eignet zusätzliche Dokumente zu hinterlegen. Will man zB. ein Dokument auf dem Desktop des Live-CD Nutzers hinterlegen, erstellt man im Voraus das Verzeichnis ${ARBEITSVERZEICHNIS}/NEU/home/ubuntu/Desktop und hinterlegt dort entsprechend die Datei(en). Um wie gewohnt mit den Dateien arbeiten zu können, empfiehlt es sich die Dateien per chown dem Live-System-Nutzer zuzuordnen.
Jetzt kann das Live-System als neues Rootsystem verwendet werden
sudo chroot "${ARBEITSVERZEICHNIS}/NEU" /bin/bash
Bearbeiten des Live-Systems¶
Hinweis:
Innerhalb der aktuellen chroot-Umgebung werden alle Änderungen relativ zum Wurzelverzeichnis des zukünftigen Livesystems ausgeführt. Das bedeutet insbesondere, dass nur bereits auf dem Livesystem vorhandene Programme und Einstellungen sichtbar sind.
Bearbeiten der installierten Pakete¶
Um Platz zu schaffen oder neue Funktionalitäten zur Verfügung zu stellen, kann die normale Paketverwaltung auf Konsolenebene verwendet werden, z.B. per apt-get. Eventuell sollen Pakete aus anderen Quellen installiert werden, hierzu kann die entsprechende Quelle in die Datei sources.list eingetragen werden.
Abschließen der Modifikationen¶
Wurden alle gewünschten Änderungen vorgenommen, ist es Zeit die Umgebung des Live-Systems wieder zu verlassen. Mit:
exit sudo umount "${ARBEITSVERZEICHNIS}/NEU/proc" sudo umount "${ARBEITSVERZEICHNIS}/NEU/dev/pts" sudo rm "${ARBEITSVERZEICHNIS}/NEU/etc/resolv.conf"
wird die chroot-Umgebung verlassen und die induzierten Mountpoints und Netzwerkkonfigurationen werden entfernt.
Weiterhin ist es notwendig die vorgenommenen Änderungen im Live-System zu registrieren. Der Befehl
sudo chroot "${ARBEITSVERZEICHNIS}/NEU" dpkg-query -W --showformat='${Package} ${Version}\n' \ > "${ARBEITSVERZEICHNIS}/ubuntu-livecd/casper/filesystem.manifest"
wechselt noch einmal kurzzeitig in die Umgebung des Live-Systems, um Änderungen innerhalb der Paketverwaltung zu aktualisieren.
Komprimieren des Live-Systems¶
Unabhängig davon, wie viele Dateien während der Bearbeitung gelöscht wurden, existieren deren Daten noch immer im virtuellen Dateisystem und müssten beim Komprimieren mit erfasst werden. Deshalb werden im Folgenden die freigegebenen Bereiche im Dateisystem mit einer Datei voller Nullwerte überschrieben und im Anschluss gelöscht.
sudo dd if=/dev/zero of="${ARBEITSVERZEICHNIS}/NEU/dummyfile" sudo rm "${ARBEITSVERZEICHNIS}/NEU/dummyfile"
Danach lassen sich das Live-System komprimieren und die restlichen Mountpoints lösen. Das kann eine Weile dauern.
sudo rm "${ARBEITSVERZEICHNIS}/ubuntu-livecd/casper/filesystem.squashfs" cd "${ARBEITSVERZEICHNIS}/NEU" sudo mksquashfs . "${ARBEITSVERZEICHNIS}/ubuntu-livecd/casper/filesystem.squashfs" -comp xz cd "${ARBEITSVERZEICHNIS}" sudo umount "${ARBEITSVERZEICHNIS}/NEU"
Erstellen der Live-CD¶
Damit die Fehlerprüfung der Live-CD funktioniert, erstellen wir noch einen neuen Hashwert. Danach sollten keine weiteren Änderungen an der CD vorgenommen werden!
cd "${ARBEITSVERZEICHNIS}/ubuntu-livecd" sudo find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt
Schließlich beenden wir den Remastering-Prozess durch das Erstellen eines neuen CD-Images:
cd "${ARBEITSVERZEICHNIS}" sudo genisoimage \ -o ubuntu-NEU.iso \ -b isolinux/isolinux.bin \ -c isolinux/boot.cat \ -no-emul-boot \ -boot-load-size 4 \ -boot-info-table \ -r \ -V "Custom Ubuntu Live CD" \ -cache-inodes \ -J \ -l \ ubuntu-livecd