Kurzanleitungen/Howtos

Ubuntu-ISO anpassen

06.07.2016

DVD-Icon

Möchten Sie das Ubuntu-Installationsmedium (ISO) nach Ihren Bedürfnissen anpassen, um Pakete zu installieren, zu entfernen oder um Konfigurationsdateien zu hinterlegen, so ist dies mit geringem Aufwand möglich.

Vorbereitungen

Sie benötigen die ISO-Datei der Ubuntu-Version, die Sie anpassen möchten. Diese bekommen Sie z.B. von ubuntu.com, kubuntu.org, xubuntu.org oder ubuntu-mate.org. Zudem brauchen Sie für diesen Leitfaden ein installiertes VirtualBox und mindestens 25 GB freien Speicherplatz auf der Festplatte des Host-Rechners.

Ubuntu in VirtualBox installieren

VirtualBox 5.0 OSE Logo
VirtualBox 5 OSE Logo

Legen Sie eine neue VM in VirtualBox mit mindestens 2048 MB Arbeitsspeicher und einer mindestens 25 GB großen Festplatte an. Möchten Sie per SSH auf die VM zugreifen (empfohlen), so ändern Sie nach dem Anlegen die Eigenschaft (Details → Netzwerk → Adapter 1 → Angeschlossen an: Netzwerkbrücke) der Netzerkkarte.

Installieren Sie nun die VM vom Ubuntu-ISO. Empfohlen (für den Zugriff mittels SSH): Richten Sie das Netzwerk der VM so ein, daß Sie von Ihrem physikalischen Netzwerk auf die VM zugreifen können.

Starten Sie die VM anschließend neu.

Empfohlen: Installieren Sie den SSH-Server nach dem Booten (von der virtuellen Festplatte) mit

sudo apt-get install ssh
. So können Sie sich von Ihrem Arbeitsplatzrechner auf der VM einloggen, wodurch z.B. das Kopieren und Einfügen vereinfacht wird.

Optional: Installieren Sie die VirtualBox-Gasterweiterungen mit

sudo apt-get install virtualbox-guest-x11
, falls Sie direkt in der grafischen Benutzeroberfläche der VM arbeiten möchten.

Remaster-Skripte

Die folgenden Abschnitte behandeln jeweils ein Skript, das für einen Schritt des Remastervorganges verwendet wird. Sie können die Skripte komplett herunterladen remastern-skripte.tar.gz. Entpacken Sie das Archiv im neu angelegten Verzeichnis "~/remastern". Die Skripte greifen Ideen aus dem Wiki-Artikel "LiveCD manuell remastern" von ubuntuusers.de auf.

Die Skripte führen Sie mittels

. <Skriptname>
aus, damit globale Variablen von einem Skript auch im nächsten gefunden werden. Also z.B.
. 01-vorbereitung.sh

01-vorbereitung.sh

Legen Sie das ISO in das virtuelle Laufwerk Ihrer VM ein und mounten Sie es. Dieses erste Skript installiert nötige Pakete und ermittelt den Mountpunkt des ISOs. Dieses Skript müssen Sie auch ausführen, wenn Sie nach einer Unterbrechung (z.B. Neustart der VM) mit dem Remastern fortfahren möchten.

sudo apt-get install squashfs-tools genisoimage
export arbeitsDaten="$HOME/remastern"
mkdir -p "${arbeitsDaten}"
export ISOMountPunkt="$(mount | grep iso9660 | sed -e 's#^.* on ##' -e 's# type iso9660 .*##')"

02-DVD-Inhalt-kopieren.sh

Dieses Skript kopiert den Inhalt des Installationsmediums auf die Festplatte. Sie sollten dieses nur ein Mal ausführen.

cd "${arbeitsDaten}"
mkdir kompletteDVD
sudo cp -a "${ISOMountPunkt}/." kompletteDVD
sudo chmod -R u+w kompletteDVD

03-32Bit-EFI-kopieren

Dieser Schritt ist optional und wird nur gebraucht, falls Sie ein 64-Bit-ISO für einen UEFI-Rechner erstellen möchten, der ein 32-bittiges UEFI-BIOS besitzt. Der kompilierte grub2-32-Bit-EFI-Bootloader wird direkt aus dem github-Repository von John Wells heruntergeladen.

wget "https://github.com/jfwells/linux-asus-t100ta/blob/master/boot/bootia32.efi?raw=true" -O bootia32.efi
mkdir -p "${arbeitsDaten}/kompletteDVD/EFI/BOOT"
sudo cp bootia32.efi "${arbeitsDaten}/kompletteDVD/EFI/BOOT"

04-filesystem.squashfs-in-ext2-image-entpacken

Auf der Live-DVD ist das komplette Dateisystem des Betriebssytems in einer komprimierten SquashFS-Datei gespeichert. Beim Booten von der DVD wird dieses gemountet und der Inhalt während der Ubuntu-Installation auf die Festplatte geschrieben. Zum Anpassen des Dateisystems entpacken Sie dieses mit dem folgenden Skript. Hierbei wird ein (temporäres) Dateisystem in einer Image-Datei angelegt. Sollte dieses zu klein sein, so erhöhen Sie einfach die Größe (aktuelle 5000 MB) der Image-Datei.

modprobe loop
mkdir "${arbeitsDaten}/squashfs"
sudo mount -t squashfs -o loop,ro "${arbeitsDaten}/kompletteDVD/casper/filesystem.squashfs" "${arbeitsDaten}/squashfs"
sudo dd if=/dev/zero of="${arbeitsDaten}/ubuntu-fs.ext2" bs=1M count=0 seek=5000
sudo mke2fs "${arbeitsDaten}/ubuntu-fs.ext2"
mkdir "${arbeitsDaten}/ext2"
sudo mount -o loop "${arbeitsDaten}/ubuntu-fs.ext2" "${arbeitsDaten}/ext2"
sudo cp -v -a "${arbeitsDaten}/squashfs/." "${arbeitsDaten}/ext2"
sudo umount "${arbeitsDaten}/squashfs"

05-chrooten.sh

Mit diesem Skript wechseln Sie in das zuvor entpackte Live-Dateisystem, damit Sie in der Konsole die gewünschten Änderungen vornehmen können. Hierbei werden die Pseudo-Dateisysteme /proc und /dev/pts vom Dateisystem der VM eingehängt, da ansonsten einige Programme nicht laufen würden. Sie können in der "gechrooteten" Shell die gewohnten (Textmodus-) Programme (apt-get, etc.) verwenden, um das Live-System zu konfigurieren.

sudo mount -o loop "${arbeitsDaten}/ubuntu-fs.ext2" "${arbeitsDaten}/ext2"
sudo cp /etc/resolv.conf "${arbeitsDaten}/ext2/etc/"
sudo mount -t proc -o bind /proc "${arbeitsDaten}/ext2/proc"
sudo mount -o bind /dev/pts "${arbeitsDaten}/ext2/dev/pts"
sudo chroot "${arbeitsDaten}/ext2" /bin/bash

06-aufraumen-nach-verlassen-von-chroot

Nachdem Sie alle gewünschten Änderungen vorgenommen und die "gechrootete" Shell mittels "exit" verlassen haben, rufen Sie dieses Skript auf, um die Pseudo-Dateisysteme auszuhängen, in der DNS-Konfigurationsdatei einen funktionierenden DNS-Server einzutragen, die Informationen über installierte Pakete zu aktualisieren und Installationspakete zu entfernen. Möchten Sie weitere Änderungen vornhemen, so rufen Sie das Skript "05-chrooten.sh" erneut auf.

sudo umount "${arbeitsDaten}/ext2/proc"
sudo umount "${arbeitsDaten}/ext2/dev/pts"
sudo bash -c "echo \"nameserver 8.8.8.8\" > \"${arbeitsDaten}/new/etc/resolv.conf\""

sudo chroot "${arbeitsDaten}/ext2" dpkg-query -W --showformat='${Package} ${Version}\n' > /tmp/filesystem.manifest
sudo chroot "${arbeitsDaten}/ext2" apt-get clean
sudo mv /tmp/filesystem.manifest "${arbeitsDaten}/kompletteDVD/casper/filesystem.manifest"

07-filesystem.squashfs-neu-erstellen

Dieses Skript komprimiert das (geänderte) Dateisystem und hängt die Image-Datei wieder aus.

sudo dd if=/dev/zero of="${arbeitsDaten}/ext2/dummyfile" bs=1M
sudo rm "${arbeitsDaten}/ext2/dummyfile"
sudo rm "${arbeitsDaten}/kompletteDVD/casper/filesystem.squashfs"
cd "${arbeitsDaten}/ext2"
sudo mksquashfs . "${arbeitsDaten}/kompletteDVD/casper/filesystem.squashfs" -comp xz
cd "${arbeitsDaten}"
sudo umount "${arbeitsDaten}/ext2"

08-iso-erstellen

Um ein neues Installations-ISO zu erstellen, rufen Sie dieses Skript auf. Dieses fügt alle Bestandteile zusammen und generiert die ISO-Datei "ubuntu-remastert.iso", die Sie z.B. auf eine DVD-RW brennen oder in VirtualBox starten können.

cd "${arbeitsDaten}/kompletteDVD"
sudo find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt
cd "${arbeitsDaten}"
sudo genisoimage -o ubuntu-remastert.iso -b isolinux/isolinux.bin -c isolinux/boot.cat \
	-no-emul-boot -boot-load-size 4 -boot-info-table -r -V "Ubuntu Remastert" -cache-inodes \
	-J -l ubuntu-remastert
Achtung! Achtung! Die folgenden Anweisungen richten sich ausschließlich an fachkundige Personen. Bei jedem Schritt kann es zum kompletten Datenverlust kommen. Alle Angaben ohne Gewähr! Die Anweisungen, Skripte, etc. sind ausschließlich für Lernzwecke auf Lernsystemen und nicht für Produktivumgebungen bestimmt!