[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mount: CDs oder CD-Images mounten] }}} [[Inhaltsverzeichnis(2)]] Bei der Verwendung der Ubuntu Live-CD kann es vorkommen, dass man dort ganz bestimmte Funktionen oder Einstellungen vermisst (installierter [:SSH: Openssh-Server], standardmäßig aktivierter [:VNC: 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: {{{#!vorlage Paketinstallation squashfs-tools genisoimage }}} {{{#!vorlage Hinweis Es bietet sich außerdem an, eine [:Virtualisierung:Virtualisierungsumgebung] zu installieren, um das später erstellte CD-Image zu testen. So spart man Zeit und CD-Rohlinge. }}} [[Bild(remastered.jpg, 200x167, align=right)]] = 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. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl find "${ARBEITSVERZEICHNIS}/ubuntu-livecd" -name "*.exe" }}} {{{#!vorlage 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. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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. {{{#!vorlage 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. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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! {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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. {{{#!vorlage Befehl sudo mount -o bind /dev/pts "${ARBEITSVERZEICHNIS}/NEU/dev/pts" }}} {{{#!vorlage Experten 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 {{{#!vorlage Befehl sudo chroot "${ARBEITSVERZEICHNIS}/NEU" /bin/bash }}} == Bearbeiten des Live-Systems == {{{#!vorlage 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: {{{#!vorlage Befehl 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 {{{#!vorlage 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. {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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! {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 }}} # tag: System, Installation, CD, DVD