openSUSE – Installationsmedium mit eigenen Paketen

Manchmal benötigt man zusätzliche Pakete, die nicht in der Standard-Distribution enthalten sind, oder will Pakete, die nie benötigt werden, entfernen.

Beides führt dazu, dass das YaST das Installationsmedium nicht vewenden kann, weil die Signaturen für das Repository nicht mehr korrekt sind.

Um ein eigenes Installationsmedium herzustellen, benötigt man lediglich einen GPG-Key und etwas Hintergrundwissen darüber, wie die openSUSE-Installation funktioniert.

Eigentlich ist es – wie so oft – recht einfach. Auf dem openSUSE-Medien befindet sich das Verzeichnis boot, in dem sowohl ein Linux-Kernel als auch eine Ramdisk liegen, die die Grundbestandteile des Installationssystems enhält. Nach dem Kernel wird direkt diese Ramdisk geladen, die ihrerseits eine Reihe von GPG-Keys enthält, mit denen u.a. die Paketlisten signiert werden. Diese Datei muss um einen eigenen GPG-Key erweitert werden.

Am leichtesten ist es, wenn man sich zunächst alle Dateien von einer regulären openSUSE-Installations-DVD in ein Verzeichnis auf der Festplatte kopiert. Die folgenden Schritte gehen davon aus, dass genau das gemacht wurde und man sich in diesem Verzeichnis befindet.

Aus dem Verzeichnis boot holt man sich die Datei initrd für die jeweilige Architektur, z.B.

mkdir tmp
cp ./boot/i386/loader/initrd ./tmp

Diese Datei ist mit gzip komprimiert, also muss sie als nächstes entpackt werden:

cd tmp
gunzip <initrd >initrd.uncomp

Die entpackte initrd ist nichts weiter als ein cpio-Archiv. Aus diesem Archiv wird nun die Datei installkey.gpg extrahiert und anschließend mit der GnuPG der eigene Key angehängt:

cpio -i -u "installkey.gpg" <initrd.uncomp
gpg --export "MYKEYID" >> installkey.gpg

Jetzt wird das cpio-Archiv mit der erweiterten installkey.gpg aktualisiert und die initrd wieder mit gzip komprimiert.

echo "installkey.gpg" | cpio -o -H newc -A -F initrd.uncomp
gzip --best <initrd.uncomp >initrd

Anschließend sollte man noch ein Backup der originalen initrd machen und sie durch die neue ersetzen:

mv ../boot/i386/loader/initrd ./boot/i386/loader/initrd.old
cp initrd ../boot/i386/loader
cd .. # aus dem tmp-Verzeichnis müssen wir wieder raus ;-)

Zu guter Letzt sollte noch der eigene GPG-Key exportiert und im Wurzel-Verzeichnis des Installationsmediums abgelegt werden:

gpg --export -a "MYKEYID" > gpg-pubkey-MYKEYID.asc

Das waren die wesentlichen Schritte, um eigene openSUSE Installationsmedien herzustellen. Wenn man statt des 32-bit ein 64-bit-Medium herstellen will, nutzt man einfach den das Verzeichnis boot/x86_64/loader. Der Rest funktioniert ganz genauso.

Wie man das Ganze dann auf einen USB-Stick transportiert und eigene Pakete hinzufügen kann, gibt’s dann in einem zweiten Teil.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>