Wie man sich sein eigenes Fedora LiveImage baut

Mein zweiter sichtbarerer Beitrag fĂŒr das Fedoraprojekt ist vor einigen Tagen Live gegangen :

Quick Docs – Creating and Using a live Installation Image

und beim Lesen direkt einen Tippfehler gefunden 🙁 😀 Der nachfolgende Text ist dann auch fast eine 1:1 Übersetzung davon, gespickt mit ein paar Anpassungen. Das ist ĂŒbrigens auch das gleiche Vorgehen, wie beim Bau des Linux am Dienstag Rescue Images.

Wie man sich sein eigenes Fedora LiveImage baut

Wir verwenden Fedora Release 42 als Beispiel fĂŒr alle Befehlsbeispiele. Wenn Sie dies fĂŒr eine andere Version tun mĂŒssen, Ă€ndern Sie einfach die Versionsnummer entsprechend.

Schritt 1

Um ein Live-Image zu erstellen, werden die Pakete livecd-creator und mock verwendet. Dazu sind Superuser-Rechte erforderlich.

Das Tool livecd-creator ist Teil des Pakets livecd-tools. Wenn es nicht auf Ihrem System installiert ist, fĂŒgen Sie es und alle anderen Tools wie mock, lorax, git, pykickstart und einen Texteditor (vim) mit DNF hinzu:

# dnf install livecd-tools mock

Hinweis: Wir erstellen eine Live-CD wie das fedora-live-workstation-Image, das vollstĂ€ndig lokalisiert ist, aber Englisch als Standardsprache hat. Sie mĂŒssen keine LokalisierungsunterstĂŒtzung selbst installieren. Sie können dies bei Bedarf in der erstellten kickstart.cfg Ă€ndern.

Konfigurieren Ihres Systems

Wir mĂŒssen Ihren aktuellen Benutzer zur mock-Gruppe hinzufĂŒgen, oder Sie mĂŒssen alles als Root-Benutzer tun. Ich habe dafĂŒr Root genommen, aber das ist echt egal.

# sudo usermod -aG mock $(whoami)

Das $(whoami) fĂŒgt Ihren aktuellen Benutzer hinzu, da wir nicht wissen, welchen Benutzernamen Sie derzeit verwenden 😉

Es wĂ€re ratsam, sich erneut anzumelden, damit die Änderung wirksam wird, oder Sie wechseln jetzt zu root.

Erstellen wir die mock-Gruppe:

# newgrp mock

Wenn Sie nun Folgendes eingeben:

# groups

sollte Ihr Benutzername zusammen mit den alten Gruppen und der neuen Gruppe „mock” angezeigt werden. Ist dies nicht der Fall, haben Sie etwas falsch gemacht.

Mock legt uns eine Toolbox  an

Jetzt können wir die Build-Umgebung initialisieren. In diesem Beispiel verwenden wir die wahrscheinlichste Architektur x86_64, aber wenn Sie fĂŒr ARM oder PowerPC bauen, können Sie einfach eine andere Konfiguration verwenden, indem Sie den ARCH-Typ auf die gewĂŒnschte Plattform Ă€ndern!

# mock -r /etc/mock/fedora-42_x86_64.cfg –init

Mock erstellt dafĂŒr eine leere Toolbox, die wir mit Paketen fĂŒllen mĂŒssen, die wir spĂ€ter im Prozess zum Erstellen des Images benötigen. Wenn Sie jetzt denken „Warum so kompliziert?“, haben Sie nur teilweise Recht, denn eine Toolbox ist ein einfacher Container, den wir benötigen, um die Arbeit fĂŒr verschiedene Fedora-Versionen zu trennen. Andernfalls mĂŒssten Sie verschiedene Builds selbst ĂŒberschreiben und mischen.

Stellen Sie sicher, dass Sie ĂŒber genĂŒgend freien Speicherplatz fĂŒr all diese Dateien und die Dateien verfĂŒgen, die der livemedia-creator spĂ€ter herunterladen wird. Wir empfehlen mindestens 10 GB freien Speicherplatz dafĂŒr.

# mock -r /etc/mock/fedora-42_x86_64.cfg –install lorax anaconda git pykickstart vim lorax anaconda git pykickstart vim libblockdev-lvm libblockdev-btrfs libblockdev-swap libblockdev-loop libblockdev-crypto libblockdev-dm libblockdev-mdraid libblockdev-part libblockdev-fs libblockdev-nvme libblockdev-mpath

Wenn Sie einen anderen Texteditor als „vim” verwenden möchten, mĂŒssen Sie diesen jetzt installieren, da Sie sonst auf eine nicht besonders gut integrierte Basisinstallation von „vim” angewiesen sind, deren Verwendung etwas unangenehm sein kann. Keine Panik, wir nehmen innerhalb der Toolbox nicht viele Bearbeitungen vor, vim reicht völlig aus 🙂

Nun rufen wir die Toolbox zum ersten Mal auf 
​

# mock -r /etc/mock/fedora-42_x86_64.cfg –shell –isolation=simple –enable-network

Dadurch erhalten wir eine Shell und NetzwerkunterstĂŒtzung, sodass die Skripte in der Toolbox auf das Internet zugreifen und Pakete aus dem Repository installieren können.

Die folgende Ausgabe sieht in etwa so aus:

INFO: mock.py version 6.3 starting (python version = 3.13.7, NVR = mock-6.3-1.fc42), args: /usr/libexec/mock/mock -r fedora-42-x86_64 –shell –isolation=simple –enable-network
Start(bootstrap): init plugins
INFO: selinux enabled
Finish(bootstrap): init plugins
Start: init plugins
INFO: selinux enabled
Finish: init plugins
INFO: Signal handler active
Start: run
Start(bootstrap): chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start(bootstrap): cleaning package manager metadata
Finish(bootstrap): cleaning package manager metadata
INFO: Package manager dnf5 detected and used (fallback)
Finish(bootstrap): chroot init
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start: cleaning package manager metadata
Finish: cleaning package manager metadata
INFO: enabled HW Info plugin
INFO: Package manager dnf5 detected and used (direct choice)
Finish: chroot init
Start: shell
<mock-chroot> sh-5.2#

Jetzt mĂŒssen wir die Kickstart-Dateien, die in frĂŒheren Fedora-Versionen als Paket enthalten waren, von den Fedora-Servern herunterladen:

# git clone https://pagure.io/fedora-kickstarts -b f42

Sie können die Seite mit einem normalen Browser aufrufen, um zu sehen, welche Tags, auch „Branches” genannt, wie „f42” verfĂŒgbar sind, falls Sie eine andere Version von Fedora verwenden möchten. Was nun geschieht, ist ein Git-Checkout in das aktuelle Verzeichnis Ihrer Toolbox.

Großer Vorteil: Es besteht keine Gefahr, dass Dateien auf Ihrem Betriebssystem ĂŒberschrieben werden.

ACHTUNG: Bevor Sie fortfahren, stellen Sie sicher, dass Sie mindestens 10 GB freien Speicherplatz auf Ihrer Systempartition haben, da wir eine Menge RPMs herunterladen und ein Image mit einer GrĂ¶ĂŸe von mindestens 2,3 GB erstellen werden. Wenn Sie nicht ĂŒber genĂŒgend Speicherplatz verfĂŒgen, können alle weiteren Schritte mit den wildesten Fehlermeldungen fehlschlagen und Sie werden VIEL Zeit damit verschwenden!

Kickstarting fĂŒr AnfĂ€nger

Was wir jetzt brauchen, ist eine Kickstart-Datei. Noch nie davon gehört? Keine Panik 😀

Eine Kickstart-Datei enthĂ€lt Informationen ĂŒber die GrĂ¶ĂŸe des tmp-Laufwerks im spĂ€ter gestarteten Live-Image, das es mountet, seine Pakete und so weiter. Sie mĂŒssen das Rad nicht neu erfinden, keine Sorge. Hier ist ein Beispiel:

%include fedora-live-workstation.ks
%packages
# Packages we want to have
thunderbird
# Package groups excluded from @workstation-product-environment
-@guest-desktop-agents
-@libreoffice
-@multimedia
# Packages excluded from @workstation-product
-rhythmbox
-unoconv
# Packages excluded from @gnome-desktop
-gnome-boxes
-gnome-connections
-gnome-text-editor
-baobab
-cheese
-gnome-clocks
-gnome-logs
-gnome-maps
-gnome-photos
-gnome-remote-desktop
-gnome-weather
-orca
-rygel
-totem
%end

Was Sie sehen, ist ein Teilbereich aller möglichen Optionen, da zuvor mit „git checkout“ ein vollstĂ€ndiger Satz bereits funktionierender Kickstart-Dateien heruntergeladen wurde, die wir zu einer neuen kickstart.cfg-Datei zusammenfĂŒhren werden.

Die oben genannte Datei entfernt Pakete und Paketgruppen aus dem spĂ€ter erstellten Image im Vergleich zum normalen Fedora-Live-Workstation-Image. Es handelt sich dabei um eine DELTA-Datei, da wir lediglich die Unterschiede zwischen unserem Image und dem ursprĂŒnglichen Fedora Live Workstation-Image definieren.

Sie sehen Folgendes in der Datei:

%include fedora-live-workstation.ks

Dies beinhaltet die ursprĂŒngliche Kickstart-Konfiguration (ks) fĂŒr das ursprĂŒngliche Fedora-Live-Workstation-Image als Basisdatei. Die restlichen Zeilen â€žĂŒberschreiben” die Abschnitte in der Originaldatei. Sie teilen Kickstart also lediglich mit, was Sie im Vergleich zum Fedora-Live-Workstation-Image möchten und was nicht.

Erstellen der Kickstart-Dateien

In diesem Beispiel haben wir einige Gnome-Anwendungen entfernt und erhalten so das sogenannte „Fedora-Minimal-Workstation”-Image. Wenn man statt „-“ einfach den Namen eines Paketes hinschreibt, fĂŒgt er das hinzu, z.B. gparted. „gparted“ ist das vielleicht beste grafische Partitionstool fĂŒr Linux und in unserem Rescue Image unverzichtbar.

Nehmen Sie dieses Beispiel und speichern Sie es in einer Datei, die Sie z. B. „example-START.ks” nennen können. Achten Sie darauf, dass Sie Ihre Datei spĂ€ter als Ausgangspunkt Ihrer Arbeit wiedererkennen können. Denn jetzt werden wir die enthaltenen Dateien zu einer großen kickstart.cfg-Datei „zusammenfĂŒgen” bzw. „flatten”, die wir spĂ€ter fĂŒr livemedia-creator benötigen.

$ ksflatten -c as-you-like-START.ks -o kickstart.cfg

Das Problem, mit dem Sie nun konfrontiert sind, ist, dass es nicht sofort funktioniert, da ksflatten nicht alle benötigten Includes findet. Sie können dies auf zwei Arten lösen:

a) Sie verschieben Ihre ks-Datei in das Verzeichnis „fedora-kickstarts” und wechseln mit cd dorthin, oder

mv as-you-like-START.ks fedora-kickstarts/
cd fedora-kickstarts

b) Sie fĂŒhren den oben genannten Befehl aus und kopieren alle Dateien, die in der Fehlermeldung genannt werden, von „fedora-kickstarts” nach „.”, bis keine Fehlermeldung mehr angezeigt wird. Das ist mĂŒhselig, konterminiert aber das ausgecheckte GIT nicht und wir können die Kickstartfiles vom nĂ€chsten Fehler befreien, wenn wir wollten.

Von nun an sollten Sie nur noch die erstellte Datei kickstart.cfg bearbeiten, um Änderungen vorzunehmen, da Sie sonst den nĂ€chsten Schritt immer wieder wiederholen mĂŒssen.

Behebung des „Mount”-Fehlers

In beiden FĂ€llen erhalten Sie eine fehlerhafte cfg-Datei, da die verwendeten Include-Dateien den Mountpunkt „/“ zweimal definieren, was zu einem Fehler fĂŒhrt. Das lĂ€sst sich leicht beheben:

# vim kickstart.cfg

Suchen Sie nach „# Disk partitioning information“ und Ă€ndern Sie die beiden Zeilen, die mit „part /“ beginnen, in diese EINE Zeile:

part / –fstype=„ext4“ –size=8576

Ich hab es mit Kevin besprochen: Das wird nicht mehr behoben, da Images bald nur noch mit Kiwi gebaut werden, was aber auch gerade nicht funktioniert 😀

Erstellen der ISO

Nun zu dem Teil, auf den Sie gewartet haben: Erstellen wir das ISO-Image.

# livemedia-creator –ks kickstart.cfg –no-virt –resultdir /var/lmc –project MYPROJECTNAME –make-iso –volid MY_ID –iso-only –iso-name <FILENAME>.iso –releasever 42 –macboot

Bitte ersetzen Sie die folgenden Begriffe:

„MYPROJECTNAME” Das ist Ihr interner Projektname, der in /etc/os-release landet.
„MY_ID” Das ist der Name der gemounteten ISO-Datei UND SEHR WICHTIG, wenn Sie in GRUB auf diese ISO verweisen möchten.
„<FILENAME>” Das ist der Name der erstellten ISO-Datei unter /var/lmc.

Wenn alles funktioniert, haben Sie in etwa 15 Minuten ein erstelltes <Dateiname>.iso-Image IN IHRER TOOLBOX. Das ist ja ein Container, also hat er es innen liegend gebaut 😉 Um es herauszuholen, geben Sie Folgendes ein 
​

# exit

und kopieren Sie es an den gewĂŒnschten Ort. Beispiel:

# cp /var/lib/mock/fedora-42-x86_64/root/var/lmc/<Dateiname>.iso /home/themasteruser/Downloads/Images/

oder wo auch immer es sonst hin soll. Jetzt können Sie Ihr Image auf verschiedene Arten testen:

Sie können Gnome-Boxen verwenden, um es einfach in Ihrer Desktop-Umgebung auszufĂŒhren, was viel einfacher ist als sich eine VM mit QEMU einzurichten, aber auch das geht natĂŒrlich. Das Iso kann direkt auf einen USB Stick geschrieben werden.

Herzlichen GlĂŒckwunsch: Sie haben Ihr eigenes Live-Image erstellt.

Einige Tipps dazu:

  • Wenn Sie Dienste ausfĂŒhren mĂŒssen, ĂŒberprĂŒfen Sie kickstart.cfg auf syslive.service.
  • Wenn Sie Konfigurationsdateien fĂŒr die Dienste einfĂŒgen möchten, mĂŒssen Sie Ihr eigenes RPM erstellen.
  • Wenn Sie Ihre eigenen Pakete in das Image integrieren möchten, mĂŒssen Sie ein benutzerdefiniertes Repo hinzufĂŒgen. Siehe „repo” in kickstart.cfg .

Dann macht Euch mal an die Images ran 😉

Kommentar verfassen

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