mkosi – Maßgeschneiderte Betriebssystemabbilder
bauen
ÜBERSICHT
mkosi [Optionen…] summary
mkosi [Optionen…] cat-config
mkosi [Optionen…] build
[Befehlszeile…]
mkosi [Optionen…] shell
[Befehlszeile…]
mkosi [Optionen…] boot
[Nspawn-Einstellungen…]
mkosi [Optionen…] vm
[Vmm-Parameter…]
mkosi [Optionen…] ssh
[Befehlszeile…]
mkosi [Optionen…] journalctl
[Befehlszeile…]
mkosi [Optionen…] coredumpctl
[Befehlszeile…]
mkosi [Optionen…] sysupdate
[Befehlszeile…]
mkosi [Optionen…] sandbox
[Befehlszeile…]
mkosi [Optionen…] clean
mkosi [Optionen…] serve
mkosi [Optionen…] burn
<Gerät>
mkosi [Optionen…] bump
mkosi [Optionen…] genkey
mkosi [Optionen…] documentation
[Handbuch]
mkosi [Optionen…] completion
[Shell]
mkosi [Optionen…] dependencies
mkosi [Optionen…] help
mkosi ist ein Werkzeug zum leichten Bau angepasster
Betriebssystemabbilder. Es ist eine kunstvolle Hülle für
dnf, apt(8), pacman(8) und zypper(8), die
Plattenabbilder mit einer Reihe von Schnickschnack erstellen
können.
Die folgenden Unterbefehle werden erkannt:
- summary
- Zeigt eine menschenlesbare Zusammenfassung aller für den Bau des
Abbilds verwandten Optionen an. Dies wird die Befehlszeile und die
Konfigurationsdateien auswerten, aber nur ausgeben, wofür es
konfiguriert ist und nicht wirklich etwas bauen oder
ausführen.
- cat-config
- Gibt die Namen und Inhalte aller geladenen Konfigurationsdateien aus.
mkosi lädt einen Schwung Dateien aus verschiedenen Orten und
dieser Befehl erleichtert es herauszufinden, was wo konfiguriert ist.
- build
- Baut das Abbild basierend auf den auf der Befehlszeile und in den
Konfigurationsdateien übergebenen Einstellungen. Dieser Befehl ist
die Vorgabe, falls kein Unterbefehl explizit angegeben ist. Alle nach dem
Unterbefehl angegeben Befehlszeilenargumente werden direkt an das
Bauskript übergeben, falls eines definiert ist.
- shell
- Dies baut das Abbild, falls es noch nicht gebaut ist, und ruft dann
systemd-nspawn(1) auf, um eine interaktive
Shell im Abbild auszuführen. Dafür muss das System nicht
gestartet werden, es ist eher wie eine bessere chroot(8). Nach dem
Unterbefehl shell kann eine optionale Befehlszeile
angegeben werden, die anstelle der Shell in dem Container aufgerufen
werden soll. Verwenden Sie -f, um das Abbild
bedingungslos vor dem Erlangen der Shell neuzubauen, siehe unten. Dieser
Befehl muss als root ausgeführt
werden.
- boot
- Ähnlich wie shell, startet
systemd(1) im Abbild mittels
systemd-nspawn(1) anstatt eine Shell zu öffnen. Nach dem
Unterbefehl boot kann eine optionale Befehlszeile
angegeben werden, die zusätzliche Nspawn-Optionen sowie Argumente
enthalten kann, die an die Kernelbefehlszeile des Init-Systems im
Abbild übergeben werden.
- vm
- Ähnlich wie boot, verwendet aber den
konfigurierten Monitor für virtuelle Maschinen
(standardmäßig qemu), um das Abbild
zu starten, d.h. anstelle einer Container-Virtualisierung wird eine
Virtualisierung einer virtuellen Maschine verwandt. Wie zusätzliche
Befehlszeilenargumente interpretiert werden hängt von dem
konfigurierten Monitor für virtuelle Maschinen ab. Siehe
VirtualMachineMonitor= für weitere
Informationen.
- ssh
- Wenn das Abbild mit der Option Ssh=yes gebaut
wird, verbindet dieser Befehl die gestartete virtuelle Maschine mittels
SSH. Stellen Sie sicher, dass mkosi ssh mit der
gleichen Konfiguration wie mkosi build
ausgeführt wird, so dass es die notwendigen Informationen hat, um
sich mit der laufenden virtuellen Maschine mittels SSH zu verbinden.
Insbesondere wird der private SSH-Schlüssel aus der Einstellung
SshKey= verwandt, um sich mit der virtuellen
Maschine zu verbinden. Verwenden Sie mkosi genkey,
um automatisch einen Schlüssel und ein Zertifikat zu erstellen, das
von mkosi aufgenommen wird. Alle nach dem Unterbefehl
ssh übergebene Argumente werden als
Argumente an den Aufruf von ssh(1) übergeben. Um sich mit
einem Container zu verbinden, verwenden Sie machinectl
login oder machinectl shell.
Die Option Machine= kann dazu verwandt
werden, der Maschine beim Systemstart einen angepassten Rechnernamen zu
geben, der später für einen ssh(1)-Zugang verwandt
werden kann (z.B. mkosi
--machine=meinemaschine vm gefolgt von
mkosi --machine=meinemaschine
ssh).
- journalctl
- Verwendet journalctl(1), um das Journal innerhalb des Abbildes zu
untersuchen. Alle nach dem Unterbefehl journalctl angegebenen
Argumente werden an den Aufruf von journalctl(1)
angehängt.
- coredumpctl
- Verwendet coredumpctl(1), um nach Speicherabbilder innerhalb des
Abbilds zu suchen. Alle nach dem Unterbefehl coredumpctl
angegebenen Argumente werden an den Aufruf von coredumpctl(1)
angehängt.
- sysupdate
- Ruft systemd-sysupdate(8) auf, wobei die Option
--transfer-source= auf das Ausgabeverzeichnis und
die Option --definitions= auf das mit
SysupdateDirectory= konfigurierte Verzeichnis
gesetzt ist. Alle nach dem Unterbefehl sysupdate
festgelegten Argumente werden direkt an den Aufruf von
systemd-sysupdate(8) weitergegeben.
- sandbox
- Ruft beliebige Befehle innerhalb der gleichen Sandbox auf, die zur
Ausführung anderer Unterbefehle wie boot,
shell, vm und weiteren
verwandt wird. Dies bedeutet, dass /usr durch
/usr vom Werkzeugbaum ersetzt wird, falls einer
verwandt wird, während ansonsten alles andere am Ort verbleibt.
Falls kein Befehl bereitgestellt wird, wird $SHELL
oder bash(1), falls $SHELL nicht gesetzt
ist, ausgeführt.
- clean
- Entfernt aus vorherigen Bauläufen erstellte Bauartefakte. Falls mit
-f kombiniert, werden auch inkrementelle
Bauzwischenspeicher-Abbilder entfernt. Falls -f
zweimal angegeben ist, werden sämtliche Paketzwischenspeicher
entfernt.
- serve
- Dies baut das Abbild, falls es noch nicht gebaut wurde und liefert dann
das Ausgabeverzeichnis (d.h. normalerweise
mkosi.output/, s.u.) über einen kleinen
eingebauten HTTP-Server, der auf Port 8081 auf Anfragen wartet, aus.
Kombinieren Sie dies mit -f, um das Abbild
bedingungslos neuzubauen, bevor es ausgeliefert wird. Dieser Befehl ist
für das Testen netzwerkbasierten Erwerbens von
Betriebssystemabbildern nützlich, beispielsweise mittels
machinectl pull-raw … und
machinectl pull-tar
….
- burn
<device>
- Dies baut das Abbild, falls es noch nicht gebaut wurde und schreibt es
dann auf das angegebene Blockgerät. Die Partitionsinhalte werden
unverändert geschrieben, aber die GPT-Partitionstabelle wird
korrigiert, so dass sie auf die Sektor- und Blockgrößen des
angegebenen Mediums passt.
- bump
- Erhöht die Version des Abbildes aus
mkosi.version und schreibt die resultierende
Versionszeichenkette nach mkosi.version. Dies ist
zur Implementierung eines einfachen Versionierungsschematas
nützlich: jedes Mal, wenn dieser Unterbefehl aufgerufen wird, wird
die Version als Vorbereitung für den nächsten Bau
erhöht. Beachten Sie, dass
--auto-bump/-B zum
automatischen Erhöhen der Version nach jedem erfolgreichen Bau
verwandt werden kann.
- genkey
- Erstellt ein Paar von SecureBoot-Schlüsseln zur Verwendung mit den
Optionen
SecureBootKey=/--secure-boot-key=
und
SecureBootCertificate=/--secure-boot-certificate=.
- documentation
- Zeigt die Dokumentation von mkosi. Falls kein Argument angegeben
ist, wird die Handbuchseite mkosi(1) angezeigt, aber die Argumente
mkosi, mkosi-initrd,
initrd, mkosi-sandbox,
sandbox, mkosi.news und
news werden unterstützt und zeigen die
Handbuchseiten für mkosi(1), mkosi-initrd(1),
mkosi-sandbox(1) bzw. die NEWS-Datei von mkosi an.
Standardmäßig wird dieser Unterbefehl verschiedene
Arten zur Ausgabe der Dokumentation ausprobieren, eine bestimmte Option kann
mit der Option --doc-format ausgewählt
werden. Paketierer von Distributionen wird empfohlen, eine Datei
mkosi.1 in das Verzeichnis
mkosi/resources des Python-Pakets abzulegen, falls
sie dort fehlt, sowie sie im geeigneten Suchpfad für Handbuchseiten
zu installieren. Die Handbuchseite kann aus der Markdown-Datei
mkosi/resources/man/mkosi.1.md zum Beispiel mittels
pandoc -t man -s -o mkosi.1
mkosi.1.md erstellt werden.
- completion
- Erstellt Shell-Vervollständigungen für die als Argument
übergebene Shell und gibt diese auf der Standardausgabe aus. Es
werden die Argumente bash,
fish und zsh
verstanden.
- dependencies
- Gibt die Liste der von mkosi zum Bauen und Starten von Abbildern
benötigten Pakete aus.
Diese Liste kann direkt an einen Paketverwalter weitergeleitet
werden, um die Pakete zu installieren. Falls beispielsweise das Wirtsystem
den dnf-Paketverwalter verwendet, könnten die Pakete wie folgt
installiert werden:
-
mkosi dependencies | xargs -d '\n' dnf install
- help
- Dieser Unterbefehl ist identisch zum nachfolgend dokumentierten Schalter
--help: Er zeigt eine kurze Erklärung zur
Verwendung.
Diese Einstellungen können nicht mittels der
Konfigurationsdateien konfiguriert werden.
- --force,
-f
- Ersetzt beim Bau eines Abbildes die Ausgabedatei, falls sie bereits
existiert. Standardmäßig verweigert mkosi eine
Aktion, wenn ein Abbild gebaut wird und ein Ausgabeartefakt bereits
existiert. Geben Sie diese Option einmal an, um alle Bauartefakte aus
einem vorherigen Lauf vor dem Neubau des Abbildes zu entfernen. Falls
inkrementelle Bauten aktiviert sind, wird zweimalige Angabe sicherstellen,
dass inkrementelle Zwischenspeicherdateien auch entfernt werden, bevor der
Neubau eingeleitet wird. Falls ein Paketzwischenspeicher verwandt wird
(siehe auch den nachfolgenden Abschnitt Dateien) wird die
dreimalige Angabe sicherstellen, dass auch der Paketzwischenspeicher
entfernt wird, bevor der Neubau eingeleitet wird. Für die Aktion
clean hat diese Option eine leicht andere
Auswirkung: Standardmäßig wird der Unterbefehl nur
Bauartefakte aus dem vorherigen Lauf entfernen, durch einmalige Angabe
werden auch die inkrementellen Zwischenspeicherdateien gelöscht,
bei doppelter Angabe wird auch der Paketzwischenspeicher entfernt.
- --directory=,
-C
- Akzeptiert einen Pfad zu einem Verzeichnis. Vor allen anderen
Aktivitäten wechselt mkosi in dieses Verzeichnis. Beachten
Sie, dass in diesem Verzeichnis nach den verschiedenen
Konfigurationsdateien gesucht wird, daher ist die Verwendung dieser Option
ein wirksammes Mittel, ein Projekt zu bauen, das sich in einem bestimmten
Verzeichnis befindet.
- --debug
- Aktiviert zusätzliche Fehlersuchausgaben.
- --debug-shell
- Falls die Ausführung eines Befehls in dem Abbild
fehlschlägt, wird mkosi eine interaktive Shell in dem Abbild
starten, um ein weitere Fehlersuche zu ermöglichen.
- --debug-workspace
- Löscht, wenn angegeben, das Arbeitsbereichsverzeichnis nicht und
seine Lage wird protokolliert, wenn sich mkosi beendet.
- --debug-sandbox
- Führt mkosi-sandbox(1) mit strace(1) aus.
- --version
- Zeigt die Paketversion.
- --help,
-h
- Zeigt einen kurzen Hinweis zum Aufruf.
- --genkey-common-name=
- Allgemeiner Name, der bei der Erzeugung von Schlüsseln mittels des
Befehls genkey von mkosi verwandt wird.
Standardmäßig mkosi of %u, wobei
%u auf den Benutzernamen des Benutzer, der
mkosi aufruft, erweitert wird.
- --genkey-valid-days=
- Anzahl an Tagen, die Schlüssel gültig bleiben sollen, wenn
Schlüssel mit dem Befehl genkey von
mkosi erstellt werden. Standardmäßig zwei Jahre (730
Tage).
- --auto-bump=,
-B
- Falls angegeben wird nach jedem erfolgreichen Bau in Vorbereitung des
nächsten Baus die Version auf eine ähnliche Art wie beim
Unterbefehl bump erhöht. Dies ist
für einfaches, lineares Versionsmanagement nützlich: jeder
Bau in einer Reihe wird eine um eins gegenüber dem vorherigen Bau
erhöhte Versionsnummer haben.
- --doc-format
- Das Format, in dem die Dokumentation angezeigt werden soll.
Unterstützt die Werte markdown,
man, pandoc,
system und auto. Im Falle
von markdown wird die Dokumentation im
usrpünglichen Markdown-Format angezeigt.
man zeigt die Dokumentation im
Handbuchseitenformat, falls dies verfügbar ist.
pandoc erstellt das Handbuchseitenformat
dynamisch, falls pandoc(1) verfügbar
ist. system zeigt die systemweite Handbuchseite
für mkosi, die nicht zwingend der Version entspricht, die
Sie verwenden, abhängig davon, wie mkosi installiert wurde.
auto (die Vorgabe) wird alle Methoden in der
Reihenfolge man, pandoc,
markdown, system
ausprobieren.
- --json
- Zeigt die zusammenfassende Ausgabe als JSON-SEQ.
- --wipe-build-dir,
-w
- Vernichtet vor dem Bau des Abbildes das Bauverzeichnis, falls eines
konfiguriert ist.
Unterstützte Ausgabeformate
Die folgenden Ausgabeformate werden unterstützt:
- •
- Rohes GPT-Plattenabbild, mittels systemd-repart(8) erstellt
(Platte)
- •
- Einfaches Verzeichnis, enthält den Betriebssystembaum
(Verzeichnis)
- •
- TAR-Archiv (tar)
- •
- CPIO-Archiv (cpio)
Das Ausgabeformat kann auch auf none gesetzt werden, wenn
Sie möchten, dass mkosi überhaupt kein Abbild erstellt.
Dies kann nützlich sein, falls Sie das Abbild nur dazu verwenden
möchten, eine andere Ausgabe in den Bauskripten zu erstellen (z.B.
ein RPM zu bauen).
Wenn ein GPT-Plattenabbild erstellt wird, können
Repart-Partitionsdefinitionsdateien in mkosi.repart/
abgelegt werden, um das erstellte Plattenabbild zu konfigurieren.
Es wird nachdrücklich empfohlen, mkosi auf einem
Dateisystem auszuführen, das Reflinks unterstützt, wie xfs(5)
und btrfs(5) und alle zusammengehörigen Verzeichnisse auf dem
gleichen Dateisystem zu behalten. Dies ermöglicht es mkosi,
Abbilder sehr schnell durch Verwendung von Reflinks zur Durchführung
von Kopieren-Beim-Schreiben-Aktionen zu erstellen.
Die folgenden Einstellungen können über
Konfigurationsdateien (der Syntax mit
EineEinstellung=Wert) und auf der Befehlszeile (der
Syntax mit --Eine-Einstellung=Wert) gesetzt werden.
Für einige Befehlszeilenparameter ist auch eine Abkürzung mit
einem Buchstaben erlaubt. In den Konfigurationsdateien muss die Einstellung
in dem korrekten Abschnitt erfolgen, daher sind die Einstellungen
nachfolgend gemäß des Abschnittes gruppiert.
Die Konfiguration wird in der folgenden Reihenfolge
ausgewertet:
- •
- Die Befehlszeilenargumente werden ausgewertet.
- •
- mkosi.local.conf oder
mkosi.local wird ausgewertet, falls es existiert.
Diese Datei oder das Verzeichnis sollte in
.gitignore (oder äquivalent) sein und ist
für lokale Konfiguration gedacht.
- •
- Alle Vorgabepfade (abhängig von der Option) werden konfiguriert,
falls der entsprechende Pfad existiert.
- •
- mkosi.conf wird ausgewertet, falls es in dem mit
--directory= konfigurierten Verzeichnis liegt oder
im aktuellen Verzeichnis, falls --directory= nicht
verwandt wird.
- •
- mkosi.conf.d/ wird im gleichen Verzeichnis
ausgewertet, falls sie existiert. Jedes Verzeichnis und jede Datei mit der
Endung .conf in
mkosi.conf.d/ wird ausgewertet. Jedes Verzeichnis
in mkosi.conf.d wird ausgewertet, als ob es ein
normales Verzeichnis auf der obersten Ebene wäre.
- •
- Falls irgendwelche Profile definiert sind, werden deren Konfiguration aus
dem Verzeichnis mkosi.profiles/ ausgewertet.
- •
- Unterabbilder werden aus dem Verzeichnis
mkosi.images ausgewertet, falls es existiert.
Beachten Sie, dass die über die Befehlszeile konfigurierten
Einstellungen immer die über Konfigurationsdateien konfigurierte
Einstellungen außer Kraft setzen. Falls die gleiche Einstellung mehr
als einmal mittels Konfigurationsdateien konfiguriert ist, setzen
spätere Zuweisungen frühere außer Kraft, sofern die
Einstellungen nicht eine Sammlung an Werten akzeptierten. Auch werden
Einstellungen, die aus mkosi.local oder
mkosi.local.conf gelesen werden Einstellungen von
anderen Konfigurationsdateien, die später ausgewertet werden,
außer Kraft setzen, allerdings nicht solche, die auf der Befehlszeile
angegeben werden.
Für Einstellungen, die einen einzelnen Wert akzeptieren,
kann die leere Zuweisung (EineEinstellung= oder
--eine-einstellung=) zum Außerkraftsetzen
einer vorherigen Einstellung und zum Zurücksetzen auf die
Vorgabewerte verwandt werden.
Einstellungen, die eine Sammlung von Werten akzeptieren, werden
zusammengeführt, indem neue Werte an die bereits konfigurierten Werte
angehängt werden. Durch Zuweisung einer leeren Zeichenkette zu einer
solchen Einstellung werden alle vorher zugewiesenen Werte entfernt und auch
alle konfigurierten Standardwerte außer Kraft gesetzt. Die auf der
Befehlszeile angegebenen Werte werden nach allen Werten aus den
Konfigurationsdateien angehängt.
Um Konfigurationsdateien bedingt einzubinden, kann der Abschnitt
[Match] verwandt werden. Ein Abschnitt
[Match] besteht aus einzelnen Bedingungen.
Bedingungen können ein Weiterleitungssymbol
(|) nach dem Gleichheitszeichen verwenden
(…=|…). Dadurch wird die Bedingung
eine auslösende Bedingung. Die Konfigurationsdatei wird eingebunden,
falls das logische UND aller nicht auslösenden Bedingungen und das
logische ODER aller auslösenden Bedingungen erfüllt wird. Um
das Ergebnis einer Bedingung zu negieren, stellen Sie dem Argument ein
Ausrufezeichen voran. Falls einem Argument ein Weiterleitungssymbol und ein
Ausrufezeichen vorangestellt wird, muss das Weiterleitungssymbol zuerst
angegeben werden und anschließend das Ausrufezeichen.
Beachten Sie, dass die Bedingungen in
[Match] mit den aktuellen Werten einer bestimmten
Einstellung verglichen werden und keine Änderungen an Einstellungen
berücksichtigen, die in Konfigurationsdateien bereits erfolgten, aber
noch nicht ausgewertet wurden (auf der Befehlszeile angegebene Einstellungen
werden berücksichtigt). Beachten Sie auch, dass das Prüfen der
Übereinstimmung mit einer Einstellung und das anschließende
Ändern in einer anderen Konfigurationsdatei zu unerwarteten
Ergebnissen führen kann.
Der Abschnitt [Match] in einer Datei
mkosi.conf in einem Verzeichnis gilt für das
gesamte Verzeichnis. Falls die Bedingungen nicht erfüllt sind, wird
das gesamte Verzeichnis übersprungen. Die Abschnitte
[Match] von Dateien in
mkosi.conf.d/ und
mkosi.local.conf gelten nur für die Datei
selbst.
Falls es mehrere Abschnitte [Match] in der
gleichen Konfigurationsdatei gibt, muss jede erfüllt werden, damit
die Konfigurationsdatei eingebunden wird. Insbesondere gelten
auslösende Bedingungen nur für den aktuellen Abschnitt
[Match] und werden zwischen mehreren Abschnitten
[Match] zurückgesetzt. In dem folgenden
Beispiel erfolgt nur eine Übereinstimmung, falls das Ausgabeformat
entweder disk oder directory
ist und die Architektur entweder x86-64 oder
arm64 ist:
-
[Match]
Format=|disk
Format=|directory
[Match]
Architecture=|x86-64
Architecture=|arm64
Der Abschnitt [TriggerMatch] kann zur
Anzeige von auslösenden Übereinstimmungsabschnitten verwandt
werden. Diese sind zu auslösenden Bedingungen identisch, außer
dass sie für den gesamten Übereinstimmungsabschnitt statt nur
einer einzelnen Bedingung gelten. Beispielsweise stimmt folgendes
überein, falls die Distribution debian und
die Veröffentlichung bookworm ist oder falls
die Distribution ubuntu und die
Veröffentlichung noble ist.
-
[TriggerMatch]
Distribution=debian
Release=bookworm
[TriggerMatch]
Distribution=ubuntu
Release=noble
Die Semantik von Bedingungen in
[TriggerMatch]-Abschnitten ist identisch zu
[Match], d.h. alle normalen Bedingungen werden durch
ein logisches UND und alle auslösenden Bedingungen werden durch ein
logisches ODER zusammengefasst. Beim Mischen von
[Match]- und
[TriggerMatch]-Abschnitten wird eine
Übereinstimmung erreicht, wenn alle
[Match]-Abschnitte übereinstimmen und
mindestens ein [TriggerMatch]-Abschnitt
übereinstimmt. Die Abwesenheit eines
Übereinstimmungsabschnittes wird als true ausgewertet. Logisch
bedeutet dies:
-
(⋀ᵢ Matchᵢ) ∧ (⋁ᵢ TriggerMatchᵢ)
Befehlszeilenoptionen, die kein Argument akzeptieren, werden ohne
= in ihrer langen Version angezeigt. In der
Konfigurationsdatei sollten sie mit einem logischen Argument angegeben
werden: entweder 1, yes oder
true zum aktivieren oder 0,
no, false zum
deaktivieren.
- Distribution=,
--distribution=, -d
- Die im Abbild zu installierende Distribution. Akzeptiert eines der
folgenden Argumente: fedora,
debian, kali,
ubuntu, arch,
opensuse, mageia,
centos, rhel,
rhel-ubi, openmandriva,
rocky, alma,
azure oder custom. Falls
nicht angegeben ist die Vorgabe die Distribution des Wirtsystems oder
custom, falls die Distribution des Wirtsystems
keine unterstützte Distribution ist.
- Release=,
--release=, -r
- Die Veröffentlichung der im Abbild zu installierenden Distribution.
Die genaue Syntax des akzeptierten Arguments hängt von der
verwandten Distribution ab und ist entweder eine numerische Zeichenkette
(im Falle von Fedora Linux, CentOS, …, z.B.
29) oder ein Versionsname der Distribution (im
Falle von Debian, Kali, Ubuntu, …, z.B.
artful). Standardmäßig die neuste
Version der ausgewählten Distribution oder die Version, die auf der
Wirtmaschine läuft, falls sie mit einer konfigurierten Distribution
übereinstimmt.
- Architecture=,
--architecture=
- Die Architektur für die das Abbild gebaut wird. Die
tatsächlich unterstützten Architekturen hängen von
der verwandten Distribution ab und ob ein startfähiges Abbild
erbeten wird. Beim Bau für eine fremde Architektur müssen
Sie auch den Benutzermodus-Emulator für diese Architektur
installieren und registrieren.
Pro gebautem Abbild kann eine der folgenden Architekturen
festgelegt werden: alpha,
arc, arm,
arm64, ia64,
loongarch64, mips64-le,
mips-le, parisc,
ppc, ppc64,
ppc64-le, riscv32,
riscv64, s390,
s390x, tilegx,
x86, x86-64.
- Mirror=,
--mirror=, -m
- Der Spiegel für das Herunterladen der Distributionspakete. Erwartet
eine Spiegel-URL als Argument. Falls nicht angegeben wird der
Standard-Spiegel für die Distribution verwandt.
Die Standard-Spiegel für jede Distribution sind wie folgt
(sofern nicht angegeben, wird der gleiche Spiegel für alle
Architekturen verwandt):
|
X86-64 |
Aarch64 |
| Debian |
http://deb.debian.org/debian |
|
| Arch |
https://geo.mirror.pkgbuild.com |
http://mirror.archlinuxarm.org |
| OpenSUSE |
http://download.opensuse.org |
|
| kali |
http://http.kali.org/kali |
|
| Ubuntu |
http://archive.ubuntu.com |
http://ports.ubuntu.com |
| Centos |
https://mirrors.centos.org |
|
| Rocky |
https://mirrors.rockylinux.org |
|
| Alma |
https://mirrors.almalinux.org |
|
| Fedora |
https://mirrors.fedoraproject.org |
|
| RHEL-ubi |
https://cdn-ubi.redhat.com |
|
| Mageia |
https://www.mageia.org |
|
| Openmandriva |
http://mirrors.openmandriva.org |
|
| azure |
https://packages.microsoft.com/ |
|
- LocalMirror=,
--local-mirror=
- Der Spiegel wird als ein lokaler, einfacher und direkter Spiegel anstelle
der Verwendung als Präfix für die volle Reihe von Depots,
die normalerweise von Distributionen angeboten werden, verwandt.
Nützlich beim Bau vollständig ohne Netzanbindung mit einem
einzelnen Depot. Wird für deb-, rpm- und
pacman-basierte Distributionen unterstützt. Setzt
--mirror= außer Kraft, aber nur für
lokale mkosi-Bauten, es wird nicht im letztendlichen Abbild
konfiguriert, stattdessen wird --mirror= (oder das
Standard-Depot) innerhalb des letztendlichen Abbilds konfiguriert.
- RepositoryKeyCheck=,
--repository-key-check=
- Steuert die Signatur-/Schlüsselüberprüfung bei der
Verwendung von Depots, standardmäßig aktiviert. Die
Deaktivierung ist bei der Kombination mit
--local-mirror= und der ausschließlichen
Verwendung eines lokalen Depots aus einem lokalen Dateisystem
nützlich.
- RepositoryKeyFetch=,
--repository-key-fetch=
- Steuert, ob mkosi die Distributions-GPG-Schlüssel aus der
Ferne abholt. Auf Ubuntu standardmäßig aktiviert, wenn kein
Werkzeugbaum verwandt wird oder wenn der Ubuntu-Werkzeugbaum zum Bau von
Arch-Linux- oder RPM-basierte-Distributionen verwandt wird. Auf allen
anderen Distributionen standardmäßig deaktiviert. Wenn
deaktiviert, müssen die Distributions-GPG-Schlüssel
für die Zieldistribution lokal auf dem Rechner zusammen mit dem
Paketverwalter für diese Distribution installiert sein.
Diese Einstellung ist nur für Distributionen implementiert,
die dnf, pacman(8) oder zypper(8) als ihren
Paketverwalter verwenden. Für andere Distributionen wird der
Distributions-GPG-Schlüssel immer lokal nachgeschlagen,
unabhängig vom Wert dieser Einstellung. Um die
Distributions-GPG-Schlüssel für Distributionen zur
Verfügung zu stellen, ohne diese Einstellung zu aktivieren, muss das
entsprechende Paket auf dem Wirt installiert sein. Dabei handelt es sich
typischwerweise um entweder archlinux-keyring,
debian-keyring,
kali-archive-keyring,
ubuntu-keyring oder
distribution-gpg-keys (für RPM-basierte
Distributionen).
- Repositories=,
--repositories=
- Aktiviert standardmäßig deaktivierte Paket-Depots. Dies kann
zur Aktivierung der EPEL-Depots für CentOS oder anderer Komponenten
der Debian/Kali/Ubuntu-Depots verwandt werden.
- Format=,
--format=, -t
- Das zu erstellende Abbild-Format. Entweder
directory (zur direkten Erstellung eines
Betriebssystemabbildes im lokalen Verzeichnis),
tar (ähnlich, es wird aber ein Tarball des
Betriebssystemabbildes erstellt), cpio
(ähnlich, es wird aber ein Cpio-Archiv erstellt),
disk (ein Blockgerät-Betriebssystemabbild
mit einer GPT-Partitionstabelle), uki (ein
vereinigtes Kernel-Abbild mit einem Betriebssystemabbild im PE-Abschnitt
.initrd), esp
(uki aber in einem Platten-Abbild mit nur einer
ESP-Partition eingehüllt), oci (ein mit der
OCI-Abbildspezifikation kompatibles
Verzeichnis),sysext,
confext, portable,
addon oder none (das
Betriebssystem-Abbild ist nur als Bau-Artefakt zur Erstellung eines
weiteren Artefaktes gedacht).
Falls das Ausgabeformat disk verwandt
wird, wird das Plattenabbild mittels systemd-repart(8) erstellt. Die
zu verwendenden Repart-Partitions-Definitionsdateien können mittels
der Einstellung RepartDirectories= oder mittels
mkosi.repart/ konfiguriert werden. Wenn
Verity-Partitionen mittels der Einstellung Verity=
von systemd-repart(8) konfiguriert werden, wird mkosi
automatisch den Root-Hash der Verity-Hash-Partition aus der JSON-Ausgabe von
systemd-repart(8) auswerten und ihn in die Kernel-Befehlszeile jedes
durch mkosi gebauten vereinigten Kernel-Abbildes aufnehmen.
Falls das Format none verwandt wird,
werden die Ausgaben von vorherigen Bauten nicht entfernt, aber
Bereinigungsskripte (siehe CleanScripts=) werden
weiterhin ausgeführt. Dies ermöglicht das erneute
Ausführen von Bauskripten (siehe
BuildScripts=), ohne die Ergebnisse eines vorherigen
Baus zu entfernen.
- ManifestFormat=,
--manifest-format=
- Den oder die zu erstellende Manifestformattyp oder -typen. Eine
Kommata-getrennte Liste, die aus json (das
Standard-JSON-Ausgabeformat, das die zu installierenden Pakete
beschreibt), changelog (ein menschenlesbares
Textformat, das zum Ermitteln von Unterschieden entwickelt wurde) besteht.
Standardmäßig wird kein Manifest erstellt.
- Output=,
--output=, -o
- Für die erstellte Ausgabedatei oder das Ausgabeverzeichnis zu
verwendender Name. Standardmäßig
image oder, falls ImageId=
verwandt wird, wird dieser als standardmäßiger Ausgabename
verwandt, optional wird die mit ImageVersion=
angegebene Version angehängt oder der Name des Abbildes wird
gegenüber ImageId bevorzugt, falls ein
bestimmtes Abbild aus mkosi.images gebaut wird.
Beachten Sie, dass diese Option nicht die Konfiguration des
Ausgabeverzeichnisses ermöglicht, verwenden Sie dafür
OutputDirectory=.
Beachten Sie, dass dies nur den Ausgabepräfix festlegt, der
vollständige Ausgabename kann abhängig von dem festgelegten
Ausgabeformat, der verwandten Komprimierung und Abbildversion
image_7.8.raw.xz sein.
- CompressOutput=,
--compress-output=
- Konfiguriert die Komprimierung für das resultierende Abbild oder
Archiv. Das Argument kann entweder ein logischer Wert oder ein
Komprimierungsalgorithmus (xz(1), zstd(1)) sein.
Standardmäßig wird die Komprimierung zstd(1) sein,
außer bei CentOS und abgeleiteten Distributionen bis Version 8, wo
die Vorgabe xz(1) ist und bei OCI-Abbildern, wo die Vorgabe
gzip(1) ist. Beachten Sie, dass das Abbild nicht direkt gestartet
werden kann, wenn Komprimierung auf Plattenabbildtypen angewendet wird,
sondern erst eine Dekomprimierung erfolgen muss. Das bedeutet auch, dass
die Unterbefehle shell,
boot, vm bei der
Verwendung dieser Option nicht verfügbar sind. Impliziert
für tar, cpio,
uki, esp,
oci und addon.
- CompressLevel=,
--compress-level=
- Konfiguriert die zu verwendende Komprimierungsstufe. Akzeptiert eine
Ganzzahl. Die möglichen Werte hängen von der verwandten
Komprimierung ab.
- OutputDirectory=,
--output-directory=,
-O
- Pfad zu einem Verzeichnis, in dem alle erstellten Artefakte abgelegt
werden sollen. Falls dies nicht angegeben ist und das Verzeichnis
mkosi.output/ im lokalen Verzeichnis existiert,
dann wird dies automatisch für diesen Zweck verwandt.
- OutputMode=,
--output-mode=
- Dateizugriffsmodus, der bei der Erstellung der Ausgabe-Abbild-Datei
verwandt wird. Akzeptiert einen Zugriffsmodus in oktaler Notation. Falls
nicht gesetzt, wird die aktuelle Systemvorgabe verwandt.
- ImageVersion=,
--image-version=
- Konfiguriert die Abbild-Version. Dies akzeptiert jede Zeichenkette, es
wird aber empfohlen, eine Reihe von durch Punkten getrennte Komponenten
festzulegen. Die Version kann auch durch Lesen einer Datei
mkosi.version (in diesem Fall kann sie bequem mit
dem Unterbefehl bump oder der Option
--auto-bump verwaltet werden) oder durch Lesen der
Standardausgabe, falls diese ausführbar ist (siehe den
nachfolgenden Abschnitt Skripte), konfiguriert werden. Wenn dies
angegeben ist, wird die festgelegte Abbildversion in den
standardmäßigen Ausgabedateinamen aufgenommen, d.h. anstelle
von image.raw wird die Vorgabe
image_0.1.raw für Version
0.1 des Abbildes oder ähnlich lauten. Die
Version wird auch mittels $IMAGE_VERSION an alle
aufgerufenen Bauskripte übergeben (das könnte
nützlich sein, um es in /usr/lib/os-release
oder ähnliche einzubauen, insbesondere in das darin befindliche
Feld IMAGE_VERSION=).
- ImageId=,
--image-id=
- Konfiguriert den Abbildkennzeichner. Dies akzeptiert eine formlose
Zeichenkette, die zur Kennzeichnung des Abbilds verwandt werden soll.
Falls gesetzt, wird danach die Standard-Ausgabedatei benannt
(möglicherweise mit angehängter Version). Der Kennzeichner
wird auch mittels $IMAGE_ID an alle aufgerufenen
Bauskripte übergeben. Die Abbildkennzeichnung wird automatisch zu
/usr/lib/os-release hinzugefügt.
- SplitArtifacts=,
--split-artifacts
- Die Artekfattypen, die aus dem endgültigen Abbild herausgenommen
werden sollen. Eine Kommata-getrennte Liste, die aus
uki, kernel,
initrd und partitions
besteht. Beim Bauen eines selbststartenden Abbildes entsprechen
kernel und initrd ihren im
Abbild (oder dem UKI) gefundenen Artefakten, während
uki das gesamte UKI herauskopiert.
Beim Bau eines Plattenabbildes und wenn
partitions angegeben ist, wird
--split=yes an systemd-repart(8)
übergeben, damit dies getrennte Partitionsdateien für jede
konfigurierte Partition schreibt. Lesen Sie die
https://www.freedesktop.org/software/systemd/man/systemd-repart.html#--split=BOOL
Handbuchseite für weitere Informationen. Dies ist für
A/B-Aktualisierungsszenarien nützlich, bei denen ein bestehendes
Plattenabbild mit einer neuen Version einer Wurzel- oder
/usr-Partition zusammen mit der zugehörigen
Verity-Partition und einem vereinigten Kernel erweitert werden soll.
Standardmäßig werden uki,
kernel und initrd
rausgetrennt.
- RepartDirectories=,
--repart-directory=
- Pfade zu Verzeichnissen, die Partitionsdefinitionsdateien von
systemd-repart(8) enthalten, die verwandt
werden, wenn mkosi systemd-repart(8)
beim Bau eines Plattenabbildes aufruft. Falls
mkosi.repart/ im lokalen Verzeichnis existiert,
wird es für diesen Zweck auch verwandt. Beachten Sie, dass
mkosi Repart mit --root= aufruft, um die
Wurzel auf die Wurzel des Abbildes zu setzen, daher werden alle Quellpfade
CopyFiles= in Partitionsdefinitionsdateien relativ
zum Wurzelverzeichnis des Abbildes sein.
- SectorSize=,
--sector-size=
- Setzt die Standardsektorgröße, die systemd-repart(8)
zum Bau eines Plattenabilds benutzt, außer Kraft.
- Overlay=,
--overlay
- Bei der Verwendung zusammen mit BaseTrees= wird
die Ausgabe nur aus Änderungen an den angegebenen
Basisbäumen bestehen. Jeder Basisbaum wird als untere Lage in einer
Overlayfs-Struktur angehängt und die Ausgabe wird die obere Lage,
die am Anfang leer ist. Daher werden Dateien, die sich gegenüber
dem Basisbaum nicht ändern, nicht in der abschließenden
Ausgabe enthalten sein.
- Seed=,
--seed=
- Akzeptiert eine UUID oder den besonderen Wert
random als Argument. Setzt den von
systemd-repart(8) beim Bau des Plattenabbildes verwandten
Zufallsstartwert außer Kraft. Dies ist zur Erstellung
wiederholbarer Bauten nützlich, bei denen vorhersehbare UUIDs und
andere Partitionsmetadaten bei jedem Bau abgeleitet werden können
sollen. Falls nicht explizit angegeben und die Datei
mkosi.seed im lokalen Verzeichnis existiert, wird
daraus die zu verwendende UUID gelesen. Andernfalls wird eine
zufällige UUID verwandt.
- CleanScripts=,
--clean-script=
- Akzeptiert eine Kommata-getrennte Liste von Pfaden zu Programmen, die als
Bereinigungsskripte für dieses Abbild verwandt werden. Siehe den
Abschnitt Skripte für weitere Informationen.
- Packages=,
--package=, -p
- Installiert die angegebenen Distributionspakete (z.B. RPM, deb,
…) in dem Abbild. Akzeptiert eine Kommata-getrennte Liste von
Paketangaben. Diese Option kann mehrfach verwandt werden; dann werden die
angegebenen Paketlisten kombiniert. Verwenden Sie
BuildPackages=, um Pakete anzugeben, die nur in
einer Überlagerung installiert werden, die eingehängt wird,
wenn die Vorbereitungsskripte mit dem Argument
build ausgeführt werden und wenn die
Bauskripte ausgeführt werden.
Die Arten und Syntax der erlaubten Paketangaben
hängen von dem Paketinstallationsprogramm ab (z.B. dnf
für rpm(8)-basierte Distributionen oder apt(8)
für deb(5)-basierte Distributionen), kann aber Paketnamen,
Paketnamen mit Versionen und/oder Architektur, Paketnamen-Globs,
Paketgruppen und virtuelle Bereitstellungen (»provides«),
einschließlich Dateipfaden, enthalten.
Siehe PackageDirectories= zu Informationen
darüber, wie lokale Pakete zur Installation mit
Packages= verfügbar gemacht werden
können.
Beispiel: Bei der Verwendung einer Distribution, die
dnf verwendet, würde die nachfolgende Konfiguration das Paket
meson(1) (in der neusten Version), die 32-bit-Version des Pakets
libfdisk-devel, alle verfügbaren Pakete,
deren Namen mit git- beginnt, ein systemd-RPM
aus dem lokalen Dateisystem, eines der Pakete, das
/usr/bin/ld bereitstellt, die Pakete in der Gruppe
Development Tools und das Paket, das das Python-Modul mypy(1)
enthält, installieren.
-
Packages=meson
libfdisk-devel.i686
git-*
/usr/bin/ld
@development-tools
python3dist(mypy)
- BuildPackages=,
--build-package=
- Ähnlich wie Packages=, konfiguriert aber
Pakete, die nur in eine Überlagerung installiert werden, die
oberhalb des Abbildes verfügbar gemacht wird, um Skripte
vorzubereiten, die mit dem Argument build
ausgeführt werden, sowie den Bauskripten. Diese Option sollte zum
Aufführen von Paketen verwandt werden, die Header-Dateien,
Compiler, Bausysteme, Linker und andere Bauwerkzeuge enthalten, die die
Skripte mkosi.build zur Ausführung
benötigen. Beachten Sie, dass die hier aufgeführten Pakete
im endgültigen Abbild nicht enthalten sein werden.
- VolatilePackages=,
--volatile-package=
- Ähnlich zu Packages=, aber Pakete, die mit
dieser Einstellung konfiguriert sind, werden nicht zwischengespeichert,
wenn Incremental= aktiviert ist und werden nach
der Ausführung aller Bauskripte installiert.
Insbesondere kann diese Einstellung zur Installation von Paketen
verwandt werden, die sich oft ändern oder die durch ein Bauskript
gebaut werden.
- PackageDirectories=,
--package-directory=
- Legt Verzeichnisse fest, die zusätzliche Pakete enthalten, die
während des Baus verfügbar gemacht werden sollen.
mkosi wird ein lokales Depot mit allen Paketen aus diesen
Verzeichnissen erstellen und es beim Installieren von Paketen oder
Ausführen von Skripten verfügbar machen. Falls das
Verzeichnis mkosi.packages/ im lokalen Verzeichnis
gefunden wird, wird es auch für diesen Zweck verwandt.
- VolatilePackageDirectories=,
--volatile-package-directory=
- Ähnlich zu PackageDirectories=, aber
sämtliche Änderungen an den Paketen in diesen Verzeichnissen
werden die zwischengespeicherten Abbilder nicht für ungültig
erklären, falls Incremental= aktiviert
ist.
Zusätzlich können Bauskripte weitere Pakete zu den
lokalen Depots hinzufügen, indem sie gebaute Pakete in
$PACKAGEDIR ablegen. Die in
$PACKAGEDIR abgelegten Pakete werden von allen
gebauten Abbildern gemeinsam benutzt und sind daher zur Installation in
allen Abbildern mittels VolatilePackages=
verfügbar.
- WithRecommends=,
--with-recommends=
- Konfiguriert, ob empfohlene Pakete oder schwache Abhängigkeiten
installiert werden, abhängig davon, wie sie vom verwandten
Paketverwalter benannt werden. Standardmäßig werden
empfohlene Pakete nicht installiert. Dies wird nur von Paketverwaltern
unterstützt, die dieses Konzept unterstützen. Derzeit sind
dies apt(8), dnf(8) und zypper(8).
- WithDocs=,
--with-docs
- Bindet Dokumentation in das Abbild ein. Standardmäßig
aktiviert. Wenn deaktiviert, wird die Dokumentation in das Abbild nicht
aufgenommen, falls der zugrundeliegende Paketverwalter das
unterstützt. Die Umgebungsvariable
$WITH_DOCS wird an die Skripte
mkosi.build mit 0 oder
1 weitergegeben, abhängig davon, ob diese
Option aktiviert oder deaktiviert ist.
- BaseTrees=,
--base-tree=
- Akzeptiert eine Komma-getrennte Liste von Pfaden zu Verwendung als
Basisbäume. Bei der Verwendung werden diese Basisbäume in
die Betriebssystembäume kopiert und formen die Basisdistribution
anstelle der normalen Installation. Es werden nur zusätzliche
Pakete ergänzend zu den bereits in den Basisbäumen
installierten Paketen installiert. Beachten Sie, dass das Basisabbild
weiterhin die Paketverwaltermetadaten durch Setzen von
CleanPackageMetadata=no (siehe
CleanPackageMetadata=) enthalten muss, damit das
korrekt funktioniert.
Anstelle eines Verzeichnisses kann eine Tar-Datei oder ein
Plattenabbild bereitgestellt werden. In diesem Fall wird es in den
Betriebssystembaum entpackt. Dieser Betriebsmodus erlaubt das explizite
Setzen von Berechtigungen und Dateieigentümerschaften, insbesondere
für Projekte, die in einem Versionsverwaltungssystem wie
git(1) gespeichert sind, das die Metadaten für die
Dateieigentümerschaft und den Zugriffsmodus für
übergebene Dateien vollständig beibehält.
- SkeletonTrees=,
--skeleton-tree=
- Akzeptiert eine Kommata-getrennte Liste von Doppelpunkt-getrennten
Pfadpaaren. Der erste Pfad jedes Paares bezieht sich auf ein Verzeichnis,
das vor Aufruf des Paketverwalters in den Betriebssystembaum kopiert
werden soll. Der zweite Pfad in jedem Paar bezieht sich auf das
Zielverzeichnis innerhalb des Abbildes. Falls der zweite Pfad nicht bereit
gestellt wird, wird das Verzeichnis auf das Wurzelverzeichnis des Abbildes
kopiert. Der zweite Pfad wird immer als ein absoluter Pfad interpretiert.
Verwenden Sie dies, um Dateien und Verzeichnisse in den Betriebssystembaum
einzufügen, bevor der Paketverwalter irgendwelche Pakete
installiert. Falls das Verzeichnis mkosi.skeleton/
in dem lokalen Verzeichnis gefunden wird, wird es auch für diesen
Zweck mit dem Wurzelverzeichnis als Ziel verwandt (siehe auch den
nachfolgenden Abschnitt Dateien).
Beachten Sie, dass die Gerüstbäume
zwischengespeichert werden und alle Änderungen an den
Gerüstbäumen, nachdem ein zwischengespeichertes Abbild gebaut
wurde (bei der Verwendung von Incremental=), nur
angewandt werden, wenn das zwischengespeicherte Abbild neu gebaut wird
(durch Verwendung von -ff oder der Ausführung
von mkosi -f clean).
Gemäß der obigen Basisbaumlogik kann anstelle eines
Verzeichnisses auch eine Tar-Datei bereitgestellt werden.
mkosi.skeleton.tar wird automatisch verwandt, falls
es im lokalen Verzeichnis gefunden wird.
Um zusätzliche Paketverwalter-Konfigurationsdateien wie
zusätzliche Depots hinzuzufügen, verwenden Sie
SandboxTrees=, da mkosi die Paketverwalter
von außerhalb (und nicht innerhalb) des Abbildes aufruft und daher
sämtliche mittels SkeletonTrees=
bereitgestellte Konfigurationsdateien nicht wirksam werden, wenn
mkosi den Paketverwalter zur Installation von Paketen aufruft.
- Akzeptiert eine Kommata-getrennte Liste von Doppelpunkt-getrennten
Pfadpaaren. Der erste Pfad jedes Paares bezieht sich auf ein Verzeichnis,
das vom Wirtsystem in das Abbild kopiert werden soll. Der zweite Pfad in
jedem Paar bezieht sich auf das Zielverzeichnis innerhalb des Abbildes.
Falls der zweite Pfad nicht bereit gestellt wird, wird das Verzeichnis auf
das Wurzelverzeichnis des Abbildes kopiert. Der zweite Pfad wird immer als
ein absoluter Pfad interpretiert. Verwenden Sie dies, um beliebige, mit
der Distribution ausgelieferte Standardkonfigurationsdateien außer
Kraft zu setzen. Falls das Verzeichnis
mkosi.extra/ in dem lokalen Verzeichnis gefunden
wird, wird es auch für diesen Zweck mit dem Wurzelverzeichnis als
Ziel verwandt (siehe auch den nachfolgenden Abschnitt
Dateien).
Gemäß der obigen Basisbaumlogik kann anstelle eines
Verzeichnisses auch eine Tar-Datei bereitgestellt werden.
mkosi.extra.tar wird automatisch verwandt, falls es
im lokalen Verzeichnis gefunden wird.
- RemovePackages=,
--remove-package=
- Akzeptiert eine Kommata-getrennte Liste von Spezifikation von zu
entfernenden Paketen, im gleichen Format wie
Packages=. Die Entfernung erfolgt als einer der
letzten Schritte. Dieser Schritt wird übersprungen, falls
CleanPackageMetadata=no verwandt wird.
- RemoveFiles=,
--remove-files=
- Akzeptiert eine Kommata-getrennte Liste von Globs. Dateien im Abbild, die
auf die Globs passen, werden am Ende vollständig entfernt.
- CleanPackageMetadata=,
--clean-package-metadata=
- Aktiviert/Deaktivert das Entfernen der Paketverwalter-Datenbanken und
Depot-Metadaten am Ende der Installation. Kann als
true, false oder (die
Vorgabe) auto angegeben werden. Bei
auto werden die Paketverwalter-Datenbanken und
Depot-Metadaten entfernt, falls das Programm des entsprechenden
Paketverwalters am Ende der Installation nicht vorhanden ist.
- SourceDateEpoch=,
--source-date-epoch=
- Akzeptiert einen Zeitstempel in Sekunden seit dem UNIX-Epcoh als Argument.
Dateiveränderungszeiten aller Dateien werden auf diesen Wert
befestigt. Die Variable wird auch an systemd-repart(8) und alle von
mkosi ausgeführten Skripte weitergegeben. Falls nicht
explizit gesetzt, wird SOURCE_DATE_EPOCH aus
--environment und aus der Umgebung des Wirtsystems
in dieser Reihenfolge ausprobiert. Siehe
SOURCE_DATE_EPOCH
für weitere Informationen.
- SyncScripts=,
--sync-script=
- Akzeptiert eine Kommata-getrennte Liste von Pfaden zu Programmen, die als
Synchronisationsskripte für dieses Abbild verwandt werden. Siehe
den Abschnitt Skripte für weitere Informationen.
- PrepareScripts=,
--prepare-script=
- Akzeptiert eine Kommata-getrennte Liste von Pfaden zu Programmen, die als
Vorbereitungsskripte für dieses Abbild verwandt werden. Siehe den
Abschnitt Skripte für weitere Informationen.
- BuildScripts=,
--build-script=
- Akzeptiert eine Kommata-getrennte Liste von Pfaden zu Programmen, die als
Bauskripte für dieses Abbild verwandt werden. Siehe den Abschnitt
Skripte für weitere Informationen.
- PostInstallationScripts=,
--postinst-script=
- Akzeptiert eine Kommata-getrennte Liste von Pfaden zu Programmen, die als
Post-Installationsskripte für dieses Abbild verwandt werden. Siehe
den Abschnitt Skripte für weitere Informationen.
- FinalizeScripts=,
--finalize-script=
- Akzeptiert eine Kommata-getrennte Liste von Pfaden zu Programmen, die als
Finalisierungsskripte für dieses Abbild verwandt werden. Siehe den
Abschnitt Skripte für weitere Informationen.
- PostOutputScripts=,
--postoutput-script
- Akzeptiert eine Kommata-getrennte Liste von Pfaden zu Programmen, die als
Post-Ausgabeskripte für dieses Abbild verwandt werden. Siehe den
Abschnitt Skripte für weitere Informationen.
- Bootable=,
--bootable=
- Akzeptiert einen logischen Wert oder auto.
Aktiviert oder deaktiviert die Erstellung eines startfähigen
Abbildes. Falls aktiviert, wird mkosi ein EFI-Systemstartprogramm
installieren und eine ESP-Partition hinzufügen, wenn die
Plattenabbildausgabe verwandt wird. Falls das ausgewählte
EFI-Systemstartprogramm (siehe Bootloader=) nicht
installiert ist oder keine Kernelabbilder gefunden werden können,
wird der Bau fehlschlagen. auto verhält
sich so, als ob die Option aktiviert wäre, aber der Bau
schlägt nicht fehl, falls entweder kein Kernelabbild oder das
ausgewählte EFI-Systemstartprogramm nicht gefunden werden kann.
Falls deaktiviert, wird kein Systemstartprogramm installiert, selbst falls
es innerhalb des Abbildes gefunden wird, kein vereinigtes Kernelabbild
wird erstellt und keine ESP-Partition wird zu dem Abbild
hinzugefügt, falls das Plattenausgabeformat verwandt wird.
- Bootloader=,
--bootloader=
- Akzeptiert entweder none,
systemd-boot, uki,
grub, systemd-boot-signed,
uki-signed oder
grub-signed. Standardmäßig
systemd-boot. Falls auf
none gesetzt, wird kein EFI-Systemstartprogramm in
das Abbild installiert. Falls auf systemd-boot
gesetzt, wird systemd-boot(7) installiert
und für jeden installierten Kernel ein UKI erstellt und in
EFI/Linux im ESP gespeichert. Falls auf
uki gesetzt, wird ein einzelnes UKI für den
neuesten installierten Kernel (demjenigen mit der höchsten
Version), der in EFI/BOOT/BOOTX64.EFI im ESP
installiert ist, generiert. Falls auf grub
gesetzt, wird für jeden installierten Kernel ein UKI erstellt und
in EFI/Linux im ESP gespeichert. Für jeden
erstellten UKI wird ein Menüeintrag zu der Grub-Konfiguration in
grub/grub.cfg im ESP hinzugefügt, der in
den UKI weiterlädt. Zur Anpassung wird ein grub.cfg auch nach
EFI/<Distribution>/grub.cfg aus
Kompatibilitätsgründen mit signierten Versionen von Grub
grub/grub.cfg im ESP geschrieben, da diese die
Konfiguration von diesem Ort laden.
Die Varianten signed werden nur von
Distributionen ausgelieferte, vorab-signierte EFI-Programme
installieren.
Kernel müssen unter
/usr/lib/modules/$version mit Namen
vmlinux oder vmlinuz im
Wurzeldateisystem abgelegt werden (beispielsweise mittels
ExtraTrees=). Das $version
lautet genau so, wie das Make-Ziel kernelversion von
Kbuild es erstellt.
- BiosBootloader=,
--bios-bootloader=
- Akzeptiert entweder none oder
grub. Standardmäßig
none. Falls auf none
gesetzt, wird kein BIOS-Systemstartprogramm installiert. Falls auf
grub gesetzt, wird Grub als
BIOS-Systemstartprogramm installiert, falls ein startfähiges Abbild
mit der Option Bootable= erbeten wird. Falls keine
Repart-Partitionsdefinitionsdateien konfiguriert sind, wird mkosi
eine Grub-BIOS-Systemstartpartition und eine EFI-Systempartition zu den
Standard-Partitionsdefinitionsdateien hinzufügen.
Beachten Sie, dass diese Option sich nicht mit der Option
Bootloader= gegenseitig ausschließt. Es ist
möglich, ein Abbild zu haben, das sowohl unter UEFI als auch BIOS
startet, indem sowohl Bootloader= als auch
BiosBootloader= konfiguriert wird.
Die Grub-BIOS-Systemstartpartition sollte die UUID
21686148-6449-6e6f-744e-656564454649 haben und
mindestens 1 MB groß sein.
Selbst wenn kein EFI-Systemstartladeprogramm installiert ist, wird
dennoch ein ESP für BIOS-Systemstarts benötigt, da dort der
Kernel, die Initrd und Grub-Module gespeichert werden.
- ShimBootloader=,
--shim-bootloader=
- Akzeptiert entweder none,
unsigned oder signed.
Standardmäßig none. Falls auf
none gesetzt, werden Shim und MokManager nicht in
die ESP installiert. Falls auf unsigned gesetzt,
wird mkosi nach unsignierten Shim- und MokManager-EFI-Programmen
suchen und sie installieren. Falls SecureBoot=
aktiviert ist, wird mkosi vor der Installation die unsignierten
EFI-Programme signieren. Falls auf signed gesetzt,
wird mkosi nach signierten EFI-Programmen suchen und sie
installieren. Selbst wenn SecureBoot= aktiviert
ist, wird mkosi die Programme nicht erneut signieren.
Beachten Sie, dass diese Option nur wirksam wird, wenn ein auf
UEFI-Firmware startfähiges Abbild mittels anderer Optionen angefragt
wird (Bootable=,
Bootloader=).
Beachten Sie, dass mkosi nur bereits signierte
Systemladeprogramme, Kernelabbilddateien und vereinigte Kernelabbilder
installieren wird, wenn diese Option aktiviert ist, da selbstsignierte
Programme von signierten Versionen von Shim nicht akzeptiert
würden.
- UnifiedKernelImages=,
--unified-kernel-images=
- Gibt an, ob vereinigte Kernelabbilder verwandt werden sollen, wenn
Bootloader= auf
systemd-boot oder grub
gesetzt ist. Akzeptiert einen logischen Wert oder
auto. Standardmäßig
auto. Falls aktiviert, werden vereinigte
Kernelabbilder immer verwandt und der Bau wird fehlschlagen, falls eine
der für den Bau von vereinigten Kernelabbildern benötigten
Komponenten fehlt. Falls auf auto gesetzt, werden
vereinigte Kernelabbilder verwandt, falls alle benötigten
Komponenten verfügbar sind. Andernfalls werden stattdessen
Typ-1-Einträge, wie in der Systemladerspezifikation definiert,
verwandt. Falls deaktiviert, werden Typ-1-Einträge immer
verwandt.
- UnifiedKernelImageFormat=,
--unified-kernel-image-format=
- Akzeptiert einen Dateinamen ohne irgendeine Pfadkomponente, um das Format
festzulegen, in dem vereinigte Kernelabbilder installiert werden sollen.
Dies kann sowohl die normalen Kennzeichner (siehe Kennzeichner) als
auch besondere verzögerte Kennzeichner festlegen, die
während der Installation von Dateien expandiert und die nachfolgend
beschrieben werden. Das Standardformat für diesen Parameter lautet
&e-&k wobei
-&h angehängt wird, falls
roothash= oder usrhash=
auf der Kernelbefehlszeile gefunden wird und
+&c falls
/etc/kernel/tries im Abbild gefunden wird.
Die folgenden Kennzeichner können außerdem verwendet
werden:
| Kennzeichner |
Wert |
| && |
&-Zeichen |
| &e |
Zugangsmerkmal |
| &k |
Kernelversion |
| &h |
Wert des Kernelarguments roothash= oder
usrhash= |
| &c |
Anzahl der Versuche, die für den Zähler für
Systemstarts verwandt werden |
- UnifiedKernelImageProfiles=,
--uki-profile=
- Baut zusätzliche UKI-Profile. Akzeptiert eine Kommata-getrennte
Liste von Pfaden zu UKI-Profil-Konfigurationsdateien. Diese Option kann
mehrfach angegeben werden. Dann wird jede Konfiguration in das
entsprechende UKI-Profil gebaut. Konfigurationsdateien im Verzeichnis
mkosi.uki-profiles/ werden automatisch
aufgenommen. Alle konfigurierten UKI-Profile werden als zusätzliche
UKI-Profile für jedes von mkosi gebaute UKI
hinzugefügt.
Siehe die Dokumentation für den Abschnitt
UKIProfile zu Informationen, welche Einstellungen in
UKI-Profil-Konfigurationsdateien vorgenommen werden können.
- Initrds=,
--initrd
- Verwendet vom Benutzer bereitgestellte Initrd(s). Akzeptiert eine
Kommata-getrennte Liste von Pfaden zu Initrd-Dateien. Diese Option kann
mehrfach angewendet werden. Dann werden die aufgeführten
Initrd-Listen kombiniert. Falls keine Initrds angegeben sind und ein
startfähiges Medium erbeten wurde, wird mkosi nach Initrds
in einem Unterverzeichnis io.mkosi.initrd des
Artefakt-Verzeichnisses suchen (siehe $ARTIFACTDIR
in dem Abschnitt UMGEBUNGSVARIABLEN). Falls dort keine Initrds
gefunden werden, wird mkosi automatisch eine Standard-Initrd
bauen.
- InitrdPackages=,
--initrd-package=
- Extra-Pakete, die in die Standard-Initrd installiert werden sollen.
Akzeptiert eine Kommata-getrennte Liste von Paketspezifikationen. Diese
Option kann mehrfach angewendet werden. Dann werden die
aufgeführten Paketlisten kombiniert.
- InitrdVolatilePackages=,
--initrd-volatile-package=
- Ähnlich zu VolatilePackages=, außer
das es auf die Standard-Initrd angewandt wird.
- Devicetree=,
--devicetree=
- Legt, wenn gesetzt, einen Devicetree-Blob fest, der beim Systemstart
anstelle des durch die Firmware bereitgestellten verwandt werden soll.
mkosi wird nach der angegebenen Datei relativ zu typischen Pfaden
suchen, in denen Linux-Distributionen Devicetree-Dateien installieren. Er
sollte typischerweise das Format
<Lieferant>/<board>.dtb haben.
- MicrocodeHost=,
--microcode-host=
- Wenn auf true gesetzt, wird nur der Mikrocode für die CPU des
Wirtsystems in das Abbild aufgenommen.
- KernelCommandLine=,
--kernel-command-line=
- Verwendet beim Bau von Abbildern die angegebene Kernelbefehlszeile.
Falls die Wurzel- oder Verity-Partition mit aktiviertem Verity
erstellt werden, werden roothash= bzw.
usrhash= automatisch zu der Kernel-Befehlszeile
hinzugefügt und root= oder
mount.usr= sollten nicht hinzugefügt werden.
Andernfalls, falls der Wert dieser Einstellung die selbstdeutenden Symbole
root=PARTUUID oder
mount.usr=PARTUUID enthält, werden diese mit
der Partitions-UUID der Wurzel- bzw. usr-Partition ersetzt. Beispielsweise
würde root=PARTUUID durch
root=PARTUUID=58c7d0b2-d224-4834-a16f-e036322e88f7
ersetzt, wobei 58c7d0b2-d224-4834-a16f-e036322e88f7
die Partitions-UUID der Wurzelpartition ist.
- KernelModulesInclude=,
--kernel-modules-include=
- Akzeptiert eine Liste von Mustern regulärer Ausdrücke, die
ins Abbild aufzunehmende Kernelmodule festlegen. Die Muster sollten
relativ zum Pfad
/usr/lib/modules/<kver>/kernel sein.
mkosi prüft überall im Modulpfad auf
Übereinstimmung (z.B. passt i915 auf
drivers/gpu/drm/i915.ko). Alle Module, die auf
eines der angegebenen Muster passen, werden im Abbild aufgenommen. Alle
Module und Firmwareabhängigkeiten des übereinstimmenden
Moduls werden auch im Abbild aufgenommen.
Falls der besondere Wert default verwandt
wird, werden auch die in der Konfiguration mkosi-initrd definierten
Standard-Kernelmodule aufgenommen.
Falls der besondere Wert host verwandt
wird, werden auch die auf dem Wirtsystem aktuell geladenen Module
aufgenommen.
Diese Einstellung hat gegenüber
KernelModulesExclude= Vorrang und ergibt nur in
Kombination mit ihr Sinn, da standardmäßig alle Kernelmdoule
ins Abbild aufgenommen werden.
- KernelModulesExclude=,
--kernel-modules-exclude=
- Akzeptiert eine Liste von Mustern regulärer Ausdrücke, die
Module angeben, die vom Abbild ausgeschlossen werden sollen.
Verhält sich zu KernelModulesInclude=
identisch, außer dass alle Module, die mit einem der angegebenen
Muster übereinstimmen, vom Abbild ausgeschlossen werden.
- KernelModulesInitrd=,
--kernel-modules-initrd=
- Logischer Wert, standardmäßig aktiviert (true). Falls beim
Bau eines Abbildes aktiviert, wird mkosi eine zusätzliche
Initrd für jedes von ihm zusammengebaute vereinigte Kernelabbild
erstellen. Diese Initrd enthält nur Module für die konkrete
Kernelversion und wird an die vorab gebaute Initrd angehängt. Dies
ermöglicht es, Kernel-unabhängige Initrds zu erstellen, die
mit den notwendigen Modulen ergänzt werden, wenn das UKI
zusammengebaut wird.
- KernelModulesInitrdInclude=,
--kernel-modules-initrd-include=
- Wie KernelModulesInclude=, gilt aber für
Kernelmodule, die Teil der Kernelmodul-Initrd sind.
- KernelModulesInitrdExclude=,
--kernel-modules-initrd-exclude=
- Wie KernelModulesExclude=, gilt aber für
Kernelmodule, die Teil der Kernelmodul-Initrd sind.
- Locale=,
--locale=, LocaleMessages=,
--locale-messages=, Keymap=,
--keymap=, Timezone=,
--timezone=, Hostname=,
--hostname=, RootShell=,
--root-shell=
- Die Einstellungen Locale=,
--locale=,
LocaleMessages=,
--locale-messages=,
Keymap=, --keymap=,
Timezone=, --timezone=,
Hostname=, --hostname=,
RootShell=, --root-shell=
entsprechen den identisch benannten Systemd-firstboot-Optionen. Siehe
systemd-firstboot(1) für weitere Informationen.
Ergänzend werden, wo anwendbar, die entsprechenden
Systemd-Zugangsberechtigungen für diese Einstellungen nach
/usr/lib/credstore geschrieben, so dass sie selbst
dann angewandt werden, wenn nur /usr im Abbild
ausgeliefert wird.
- RootPassword=,
--root-password=,
- Setzt das Root-Passwort des Systems. Falls diese Option nicht verwandt
wird, aber eine Datei mkosi.rootpw im lokalen
Verzeichnis gefunden wird, wird das Passwort automatisch daraus gelesen
oder falls die Datei ausführbar ist, wird sie als Skript
ausgeführt und stattdessen wird die Standardausgabe gelesen (siehe
den nachfolgenden Abschnitt Scripts). Falls das Passwort mit
hashed: beginnt, wird es als ein bereits gehashtes
Passwort betrachtet. Das Root-Passwort wird auch in
/usr/lib/credstore unterhalb der entsprechenden
Systemd-Zugangsberechtigung gespeichert, so dass es selbst dann angewandt
wird, wenn nur /usr im Abbild ausgeliefert wird.
Um ein entsperrtes Konto ohne Passwort zu erstellen, verwenden Sie
hashed: ohne einen Hash.
- Autologin=,
--autologin
- Aktiviert die automatische Anmeldung für den Benutzer
root auf /dev/pts/0
(nspawn), /dev/tty1 und
/dev/hvc0.
- MakeInitrd=,
--make-initrd
- Fügt /etc/initrd-release und
/init zum Abbild hinzu, so dass es als ein
Initramfs verwandt werden kann.
- Ssh=,
--ssh
- Falls angegeben wird eine sshd(8)-Socket-Unit und ein passender
Dienst im letztendlichen Abbild installiert, das SSH über Vsock
offenlegt. Beim Bau mit dieser Option und dem Betrieb des Abbilds mittels
mkosi vm kann der Befehl mkosi
ssh zum Verbinden mit dem Container/der VM mittels SSH verwandt
werden. Beachten Sie, dass Sie weiterhin sicherstellen müssen, dass
Openssh im Abbild installiert ist, damit sich diese Option korrekt
verhält. Führen Sie mkosi genkey
aus, um automatisch ein X.509-Zertifikat und private Schlüssel zu
erzeugen, die von mkosi zur Aktivierung vom SSH-Zugriff zu jeder
virtuellen Maschine mittels mkosi ssh verwandt
werden. Um auf mittels mkosi boot gestartete
Abbilder zuzugreifen, verwenden Sie machinectl(1).
- SELinuxRelabel=,
--selinux-relabel=
- Legt fest, ob Dateien neu markiert werden sollen, um auf die
SELinux-Richtlinie des Abbilds zu passen. Akzeptiert einen logischen Wert
oder auto. Standardmäßig
auto. Falls deaktiviert, werden Dateien nicht neu
markiert. Falls aktiviert, muss eine SELinux-Richtlinie im Abbild
installiert werden und setfiles(8) verfügbar sein, um
Dateien zu markieren. Falls während setfiles(8) irgendein
Fehler auftritt, wird der Bau fehlschlagen. Falls auf
auto gesetzt, werden Dateien neu markiert, falls
eine SELinux-Richtlinie im Abbild installiert und setfiles(8)
verfügbar ist. Alle während setfiles(8) aufgetretenen
Fehler werden ignoriert.
Beachten Sie, dass bei der nicht privilegierten Ausführung
setfiles(8) beim Setzen von allen Markierungen fehlschlagen wird, die
nicht in der SELinux-Richtlinie des Wirtsystems sind. Um sicherzustellen,
dass setfiles(8) ohne Fehler erfolgreich ist, führen Sie
mkosi als Root aus oder bauen Sie von einem Wirtsystem, das die
gleichen SELinux-Richtlinie wie im zu bauenden Abbild verwendet.
- MachineId=,
--machine-id=
- Akzeptiert eine UUID oder den besonderen Wert
random. Setzt die Maschinenkennung des Abbildes
auf die angegebene UUID. Falls auf random gesetzt,
wird eine zufällige UUID nach
/etc/machine-id geschrieben. Falls nicht explizit
angegeben und die Datei mkosi.machine-id im
lokalen Verzeichnis existiert, wird die zu verwendene UUID daraus gelesen.
Andernfalls wird uninitialized nach
/etc/machine-id geschrieben.
- SecureBoot=,
--secure-boot
- Signiert systemd-boot(7) (falls es noch
nicht signiert ist) und sämtliche vereinigten Kernelabbilder
für UEFI SecureBoot.
- SecureBootAutoEnroll=,
--secure-boot-auto-enroll=
- Einrichtung der automatischen Registrierung der Schlüssel
für sicheren Systemstart in virtuellen Maschinen falls
SecureBoot= verwandt wird, wie das in
systemd-boot(7) beschrieben wird. Beachten
Sie, dass systemd-boot(7) nur ab Systemd
v253 die automatische Registrierung von Schlüsseln für
sicheren Systemstart in virtuellen Maschinen durchführen wird. Um
die automatische Registrierung unter Systemd v252 auf Maschinen ohne
Virtualisierung durchzuführen, müssen Sie eine
systemd-boot(7)-Konfigurationsdatei nach
/efi/loader/loader.conf mittels eines
zusätzlichen Baumes mit secure-boot-enroll
force oder secure-boot-enroll
manual darin schreiben. Unter Systemd-Versionen
älter als v252 wird keine automatische Registrierung
unterstützt. Standardmäßig
yes.
- SecureBootKey=,
--secure-boot-key=
- Pfad zu der PEM-Datei, die den geheimen Schlüssel zum Signieren des
UEFI-Kernelabbilds, falls SecureBoot= verwandt
wird und der PCR-Signaturen, falls
SignExpectedPcr= auch verwandt wird,
enthält. Wenn SecureBootKeySource=
angegeben ist, hängt der Eingabetyp von der Quelle ab.
- SecureBootCertificate=,
--secure-boot-certificate=
- Pfad zu der X.509-Datei, die das Zertifikat für das signierte
UEFI-Kernelabbild enthält, falls
SecureBoot= verwandt wird.
- SecureBootSignTool=,
--secure-boot-sign-tool
- Werkzeug zum Signieren von PE-Programmen für den sicheren
Systemstart. Akzeptiert entweder systemd-sbsign,
sbsign oder auto.
Standardmäßig auto. Falls auf
auto gesetzt, wird (wenn verfügbar)
entweder systemd-sbsign(1) oder sbsign(1) verwandt, wobei
systemd-sbsign(1) bevorzugt wird.
- Verity=,
--verity=
- Ob das Verity-Signieren für Erweiterungsabbilder erzwungen oder
deaktiviert wird. Akzeptiert einen logischen Wert oder
auto. Falls aktiviert, muss ein
Verity-Schlüssel und -Zertifikat vorhanden sein und der Bau wird
fehlschlagen, falls keine Verity-Partitionen in dem durch
systemd-repart(8) erstellten Abbild erkannt werden. Falls
deaktiviert, werden Verity-Partitionen von den durch
systemd-repart(8) erstellten Abbildern ausgeschlossen. Falls auf
auto gesetzt und ein Verity-Schlüssel und
-Zertifikat vorhanden sind, wird mkosi sie an
systemd-repart(8) weitergeben und erwartet, dass das erstellte
Plattenabbild Verity-Partitionen enthalten wird, aber der Bau wird nicht
fehlschlagen, falls keine Verity-Partitionen in dem durch
systemd-repart(8) erstellten Plattenabbild gefunden werden.
Beachten Sie, dass das explizite Deaktivieren signierter Verity
für die Ausgabe disk noch nicht implementiert
ist und derzeit nur für Erweiterungsabbilder funktioniert.
- VerityKey=,
--verity-key=
- Pfad zu der PEM-Datei, die den geheimen Schlüssel zum Signieren der
Verity-Signatur enthält, falls eine Verity-Signaturpartition mit
systemd-repart(8) hinzugefügt wird. Wenn
VerityKeySource= festgelegt wird, hängt der
Eingabetyp von der Quelle ab.
- VerityCertificate=,
--verity-certificate=
- Pfad zu einer X.509-Datei, die das Zertifikat zum Signieren der
Verity-Signatur enthält, falls eine Verity-Signaturpartition
mittels systemd-repart(8) hinzugefügt wird.
- SignExpectedPcr=,
--sign-expected-pcr
- Misst die Komponenten des vereinigten Kernelabbildes (UKI) mittels
systemd-measure(1) und bettet die PCR-Signatur in das vereinigte
Kernelabbild ein. Diese Option akzeptiert einen logischen Wert oder den
besonderen Wert auto, der die Vorgabe ist, der
identisch zu einem wahren Wert ist, falls das Programm
systemd-measure im PATH ist. Hängt
vom aktivierten SecureBoot= und Schlüssel
aus SecureBootKey= ab.
- SignExpectedPcrKey=,
--sign-expected-pcr-key=
- Pfad zu der PEM-Datei, die den geheimen Schlüssel zum Signieren der
erwarteten PCR-Signatur enthält. Wenn
VerityKeySource= festgelegt wird, hängt der
Eingabetyp von der Quelle ab.
- SignExpectedPcrCertificate=,
--sign-expected-pcr-certificate=
- Pfad zu einer X.509-Datei, die das Zertifikat zum Signieren der erwarteten
PCR-Signatur enthält.
- SecureBootKeySource=,
--secure-boot-key-source=,
VerityKeySource=,
--verity-key-source=,
SignExpectedPcrKeySource=,
--sign-expected-key-source=
- Die Quelle des entsprechenden privaten Schlüssels, um
OpenSSL-Engines und -Provider zu unterstützen,
z.B. --secure-boot-key-source=engine:pkcs11
oder
--secure-boot-key-source=provider:pkcs11.
- SecureBootCertificateSource=,
--secure-boot-certificate-source=,
VerityCertificateSource=,
--verity-certificate-source=,
SignExpectedPcrCertificateSource=,
--sign-expected-certificate-source=
- Die Quelle der entsprechenden Zertifikate, um OpenSSL-Provider zu
unterstützen,
z.B. --secure-boot-certificate-source=provider:pkcs11.
Beachten Sie, dass Engines nicht unterstützt werden.
- Passphrase=,
--passphrase
- Gibt den Pfad zu einer Datei an, die die für die
LUKS-Verschlüsselung zu verwendende Passphrase enthält. Sie
sollte die Passphrase wortwörtlich enthalten und nicht mit einem
Zeilenumbruch enden (d.h. in dem gleichen Format sein, wie
cryptsetup(8) und /etc/crypttab die
Passphrasendatei erwarten). Die Datei muss den Zugriffsmodus 0600 oder
kleiner haben.
- Checksum=,
--checksum
- Erstellt eine Datei <Ausgabe>.SHA256SUMS
über alle erstellten Artefakte, nachdem der Bau abgeschlossen
ist.
- Sign=,
--sign
- Signiert nach Fertigstellung die erstellte
SHA256SUMS mittels gpg(1).
- OpenPGPTool=,
--openpgp-tool
- Zum Signieren zu verwendende OpenPGP-Implementierung.
gpg ist die Vorgabe. Durch Wahl einer anderen als
die Vorgabe wird das Werkzeug für Zustandslose OpenPGP (SOP) zum
Signieren der Datei SHA256SUMS verwandt.
Beispielhaft seien sqop und
rsop genannt, aber jede Implementierung von
https://www.openpgp.org/about/sop/, die lokal installiert werden kann,
funktioniert.
- Key=,
--key=
- Wählt den für das Signieren der
SHA256SUMS zu verwendenden
gpg(1)-Schlüssel aus. Dieser Schlüssel muss bereits
im gpg(1)-Schlüsselbund vorhanden sein.
- ToolsTree=,
--tools-tree=
- Falls angegeben, werden von mkosi ausgeführte Programme zum
Bau und Starten eines Abbilds innerhalb des angegeben Baums statt im
Wirtsystem gesucht. Verwenden Sie diese Option, um den Abbildbau
reproduzierbarer zu machen, indem Sie immer die gleiche Version von
Programmen zum Bau des letztendlichen Abbildes verwenden, anstelle der
gerade im Wirtsystem installierten Version. Falls diese Option nicht
verwandt wird, aber das Verzeichnis mkosi.tools/
im lokalen Verzeichnis gefunden wird, wird es automatisch für
diesen Zweck mit dem Wurzelverzeichnis als Ziel verwandt.
Beachten Sie, dass Programme, die in einem der mit
ExtraSearchPaths= konfigurierten Pfade gefunden
werden, mit /usr/ vom Werkzeugbaum anstatt vom Wirt
ausgeführt werden. Falls die Distribution des Hauptsystems oder die
Veröffentlichung nicht auf die Werkzeugbaum-Distribution bzw.
-Veröffentlichung passt, könnte dies zu Fehlern führen,
wenn Programme aus einem der zusätzlichen Suchpfad ausgeführt
werden.
Falls auf default gesetzt, wird
mkosi automatisch ein zusätzliches Werkzeugbaumabbild
hinzufügen und es als Werkzeugbaum verwenden.
Die nachfolgende Tabelle zeigt, für welche Distributionen
Standard-Werkzeugbaumpakete definiert sind und welche Pakete in diese
Standardwerkzeugbäume aufgenommen werden:
|
Fedora |
CentOS |
Debian |
Kali |
Ubuntu |
Arch |
openSUSE |
| acl |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| apt |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
| archlinux-keyring |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
| attr |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| bash |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| btrfs-progs |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| ca-certificates |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| coreutils |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| cpio |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| createrepo_c |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| curl |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| debian-keyring |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
| diffutils |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| distribution-gpg-keys |
✓ |
✓ |
✓ |
✓ |
|
✓ |
✓ |
| dnf |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| dosfstools |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| e2fsprogs |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| edk2-ovmf |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| erofs-utils |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| findutils |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| git |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| grep |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| grub-tools |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
| jq |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| kali-archive-keyring |
|
|
|
✓ |
|
|
|
| kmod |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| less |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| mtools |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| nano |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| opensc |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| openssh |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| openssl |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| pkcs11-provider |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| perf |
✓ |
✓ |
✓ |
✓ |
|
✓ |
✓ |
| sed |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| pacman |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
| policycoreutils |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
| qemu |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| sbsigntools |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| socat |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| squashfs-tools |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| strace |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| swtpm |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| systemd |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| ukify |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| tar |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| ubuntu-keyring |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
| util-linux |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| virtiofsd |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| virt-firmware |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| xfsprogs |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| xz |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| zstd |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| zypper |
✓ |
|
✓ |
✓ |
✓ |
|
✓ |
- ToolsTreeDistribution=,
--tools-tree-distribution=
- Setzt die für den Standard-Befehlsbaum zu verwendende Distribution.
Standardmäßig die Distribution des Hauptsystems,
außer für Ubuntu, wo die Vorgabe Debian und RHEL, CentOS,
Alma und Rocky, wo die Vorgabe Fedora ist, oder
custom, falls die Distribution des Hauptsystems
keine unterstützte Distribution ist.
- ToolsTreeRelease=,
--tools-tree-release=
- Setzt die für den Standard-Werkzeugbaum zu verwendende
Distributionsveröffentlichung. Standardmäßig wird die
in mkosi fest eingebaute Standard-Veröffentlichung
für die Distribution verwandt.
- ToolsTreeMirror=,
--tools-tree-mirror=
- Setzt den für den Standardwerkzeugbaum zu verwendenden Spiegel.
Standardmäßig wird der Standardspiegel für die
Werkzeugbaumdistribution verwandt.
- ToolsTreeRepositories=,
--tools-tree-repository
- Identisch zu Repositories=, aber für den
Standardwerkzeugbaum.
- ToolsTreeSandboxTrees=,
--tools-tree-sandbox-tree
- Identisch zu SandboxTrees=, aber für den
Standardwerkzeugbaum.
- ToolsTreePackages=,
--tools-tree-package=
- Zusätzliche Pakete, die in den Standardwerkzeugbaum installiert
werden sollen. Akzeptiert eine Kommata-getrennte Liste von
Paketspezifikationen. Diese Option kann mehrfach verwandt werden, dann
werden die angegebenen Paketlisten kombiniert.
- ToolsTreePackageDirectories=,
--tools-tree-package-directory=
- Identisch zu PackageDirectories=, aber für
den Standardwerkzeugbaum.
- ToolsTreeCertificates=,
--tools-tree-certificates=
- Legt fest, ob Zertifikate und Schlüssel aus dem Werkzeugbaum
verwandt werden sollen. Standardmäßig aktiviert. Falls
aktiviert, werden /etc/pki,
/etc/ssl,
/etc/ca-certificates und
/var/lib/ca-certificates von dem Werkzeugbaum
verwandt. Andernfalls werden diese Verzeichnisse aus dem Wirtsystem
aufgenommen.
- Liste von durch Doppelpunkt getrennten Pfaden, in denen vor dem
regulären Suchpfad $PATH nach Werkzeugen
gesucht wird.
- Incremental=,
--incremental=, -i
- Akzeptiert entweder strict oder einen logischen
Wert als Argument. Aktiviert den inkrementellen Bau-Modus. In diesem Modus
wird direkt nach der Installation aller Betriebssystempakete und der
Ausführung der Vorbereitungsskripte, aber bevor die Skripte
mkosi.build (und alles was danach passiert)
aufgerufen werden, eine Kopie des Betriebssystemabbilds erstellt. Bei
nachfolgenden Aufrufen von mkosi mit dem Schalter
-i kann dieses zwischengespeicherte Abbild
verwandt werden, um die Betriebssystempaketinstallation zu
überspringen und daher dramatisch die Zeitdauer wiederholter Bauten
reduzieren. Beachten Sie, dass es zwar eine rudimentäre
Zwischenspeicher-Entwertung gibt, diese aber weit von perfekt ist. Um
einen Neubau eines zwischengespeicherten Abbilds zu erzwingen, kombinieren
Sie -i mit -ff um
sicherzustellen, dass das zwischengespeicherte Abbild zuerst entfernt und
dann neu erstellt wird.
Falls auf strict gesetzt, schlägt
der Bau fehl, falls kein vorher gebautes und zwischengespeichertes Abbild
existiert.
- CacheOnly=,
--cache-only=
- Akzeptiert entweder auto,
metadata, always oder
never. Standardmäßig
auto. Falls always, wird
der Paketverwalter angewiesen, das Netzwerk nicht zu kontaktieren. Dies
stellt eine minimale Reproduzierbarkeitsstufe bereit, solang der
Paketzwischenspeicher bereits vollständig gefüllt ist. Falls
auf metadata gesetzt kann der Paketverwalter
weiterhin Pakete herunterladen, aber nicht die Metadaten des Depots
synchronisieren. Falls auf auto gesetzt werden
während des Baus die Paketmetadaten synchronisiert (außer es
liegt ein zwischengespeichertes Abbild vor - siehe
Incremental=) und die Pakete heruntergeladen.
Falls never, werden die Depot-Metadaten immer
synchronisiert und Pakete können während des Baus
heruntergeladen werden.
- SandboxTrees=,
--sandbox-tree=
- Akzeptiert eine Kommata-getrennte Liste von Doppelpunkt-getrennten
Pfadpaaren. Der erste Pfad jedes Paares bezieht sich auf ein Verzeichnis,
das in die Mkosi-Sandbox vor Ausführung des Werkzeugs kopiert
werden soll. Falls das Verzeichnis mkosi.sandbox/
in dem lokalen Verzeichnis gefunden wird, wird es auch für diesen
Zweck mit dem Wurzelverzeichnis als Ziel verwandt (siehe auch den
nachfolgenden Abschnitt Dateien).
mkosi wird nach der Paketverwalterkonfiguration und
zugehörigen Dateien in den konfigurierten Sandbox-Bäumen
suchen. Falls nicht anders festgelegt, wird es die Konfigurationsdateien aus
ihren kanonischen Orten in /usr oder
/etc in den Sandbox-Bäumen verwenden.
Beispielsweise wird es nach /etc/dnf/dnf.conf in
Sandbox-Bäumen suchen, falls dnf zur Installation von Paketen
verwandt wird.
- WorkspaceDirectory=,
--workspace-directory=
- Pfad zu einem Verzeichnis, in dem temporär während eines
Abbild-Baus benötigte Daten gespeichert werden. Dieses Verzeichnis
sollte über genug Platz verfügen, das vollständige
Betriebssystemabbild zu speichern, obwohl in den meisten Modi der
tatsächlich verwandte Plattenplatz kleiner ist. Falls nicht
angegeben, wird ein Unterverzeichnis von
$XDG_CACHE_HOME (falls gesetzt),
$HOME/.cache (falls gesetzt) oder
/var/tmp verwandt.
Nach jedem Bau werden die Daten in diesem Verzeichnis automatisch
entfernt. Es ist sicher, die Inhalte dieses Verzeichnisses manuell zu
entfernen, falls der Aufruf von mkosi anormal abgebrochen wurde
(beispielsweise aufgrund eines Neustarts oder Stromausfalls).
- CacheDirectory=,
--cache-directory=
- Akzeptiert einen Pfad zu einem Verzeichnis, das als inkrementelles
Zwischenspeicherverzeichnis für die erstellten inkrementellen
Abbilder verwandt wird, wenn die Option
Incremental= aktiviert ist. Falls diese Option
nicht verwandt wird, aber das Verzeichnis
mkosi.cache/ im lokalen Verzeichnis gefunden wird,
wird es automatisch für diesen Zweck verwandt.
- PackageCacheDirectory=,
--package-cache-dir
- Akzeptiert einen Pfad zu einem Verzeichnis, das als
Paketzwischenspeicherverzeichnis für den eingesetzten
Distributionspaketverwalter verwandt wird. Falls nicht gesetzt, aber im
lokalen Verzeichnis ein Verzeichnis
mkosi.pkgcache/ gefunden wird, wird dies
automatisch für diesen Zweck verwandt, andernfalls wird ein
geeignetes Verzeichnis in dem Home-Verzeichnis des Benutzers oder des
Systems verwandt.
- BuildDirectory=,
--build-directory=
- Akzeptiert einen Pfad zu einem Verzeichnis, das als Bauverzeichnis
für Bausysteme verwandt werden soll, die Bauen in separaten
Verzeichnissen unterstützen (wie Meson). Das auf diese Art
verwandte Verzeichnis wird zwischen mehreren Bauten gemeinsam benutzt und
ermöglicht es dem Bausystem, Artefakte (wie Objektdateien,
Programmen, …), die bei vorherigen Aufrufen erzeugt wurden,
wiederzuverwenden. Die Bauskripte können den Pfad zu diesem
Verzeichnis in der Umgebungsvariable $BUILDDIR
finden. Dieses Verzeichnis wird in das Wurzelverzeichnis des Abbildes
eingehängt, wenn mkosi-chroot während der
Ausführung der Bauskripte aufgerufen wird. Falls diese Option nicht
verwandt wird, aber das Verzeichnis
mkosi.builddir/ im lokalen Verzeichnis gefunden
wird, wird es automatisch für diesen Zweck verwandt (siehe auch den
nachfolgenden Abschnitt Files).
- UseSubvolumes=,
--use-subvolumes=
- Akzeptiert einen logischen Wert oder auto.
Aktiviert oder deaktiviert die Verwendung von
btrfs(5)-Teildatenträgern für
Verzeichnisbaumausgaben. Falls aktiviert wird mkosi das
Wurzelverzeichnis als btrfs(5)-Teildatenträger erstellen und
wo möglich
btrfs(5)-Teildatenträgerschnappschüsse verwenden, um
grundlegende oder zwischengespeicherte Bäume zu kopieren, was viel
schneller als rekursive Kopieren ist. Falls explizit aktiviert und
btrfs(8) nicht installiert ist oder Teildatenträger nicht
erstellt werden können, wird ein Fehler ausgelöst. Falls
auto, werden ein fehlendes btrfs(8) oder
Fehlschläge beim Erstellen von Teildatenträgern
ignoriert.
- RepartOffline=,
--repart-offline=
- Legt fest, ob Plattenabbilder mittels Loopback-Geräten gebaut
werden. Standardmäßig aktiviert. Wenn aktiviert, wird
systemd-repart(8) keine Loopback-Geräte zum Bau von
Plattenabbildern verwenden. Wenn deaktiviert, wird
systemd-repart(8) immer Loopback-Geräte zum Bau von
Plattenabbildern verwenden.
Beachten Sie, dass mkosi nicht unprivilegiert
ausgeführt werden kann, wenn RepartOffline=no
verwandt wird und der Abbild-Bau als Benutzer root außerhalb von
Containern und mit auf dem Wirtsystem verfügbaren
Loopack-Geräten erfolgt.
Es gibt derzeit zwei bekannte Szenarien, bei denen
RepartOffline=no verwandt werden muss. Das erste ist
der Einsatz von Subvolumes= in einer
Repart-Partitionsdefinitionsdatei, da Teildatenträger nicht ohne
Loopback-Geräte erstellt werden können. Das zweite ist bei der
Erstellung eines Systems mit SELinux und einer XFS-Wurzelpartition. Da
mkfs.xfs(8) die Befüllung eines XFS-Dateisystems mit
erweiterten Attributen nicht erlaubt, müssen Loopback-Geräte
verwandt werden um sicherzustellen, dass erweiterte SELinux-Attribute im
erstellten XFS-Dateisystem landen.
- History=,
--history=
- Akzeptiert einen logischen Wert. Falls aktiviert, wird mkosi
Informationen über den jüngsten Bau in das Unterverzeichnis
.mkosi-private (unter dem Verzeichnis, in dem es
aufgerufen wurde) schreiben. Diese Informationen werden dann benutzt, um
die Konfiguration des jüngsten Baus wiederherzustellen, wenn ein
Unterbefehl ohne --force ausgeführt wird,
der den Bau benötigt.
Beispiel für den Nutzen dieses Vorgehens: Sie führen
mkosi -O
mein-angepasstes-Ausgabeverzeichnis -f gefolgt von
mkosi vm aus. Dann wird mkosi mit der
Information fehlschlagen, dass das Abbild noch nicht gebaut wurde. Falls Sie
mkosi -O
mein-angepasstes-Ausgabeverzeichnis --history=yes -f
gefolgt von mkosi vm ausführen, wird es das
im vorhergehenden Schritt gebaute Abbild wie erwartet starten.
- BuildSources=,
--build-sources=
- Akzeptiert eine Kommata-getrennte Liste von Doppelpunkt-getrennten
Pfadpaaren. Der erste Pfad jedes Paars bezieht sich auf ein Verzeichnis,
das vom Wirtsystem eingehängt werden soll. Der zweite Pfad jedes
Paars bezieht sich auf das Verzeichnis, wohin das Quellverzeichnis beim
Ausführen der Skripte eingehängt werden soll. Jedem Zielpfad
wird /work/src vorangestellt und alle Bauquellen
werden vor dem Einhängen lexikographisch nach ihrem Ziel sortiert,
so dass die Pfade auf der obersten Ebene zuerst eingehängt werden.
Falls nicht explizit konfiguriert, wird das aktuelle Arbeitsverzeichnis
nach /work/src eingehängt.
- BuildSourcesEphemeral=,
--build-sources-ephemeral=
- Akzeptiert einen logischen oder den besonderen Wert
buildcache. Standardmäßig
deaktiviert. Konfiguriert, ob Änderungen an Quellverzeichnissen,
dem Arbeitsverzeichnis und dem mit BuildSources=
konfigurierten Verzeichnis dauerhaft sind. Falls aktiviert, werden nach
der Ausführung aller Skripte eines bestimmten Typs (außer
Synchronisationsskripte) alle Quellverzeichnisse auf ihren Originalzustand
zurückgesetzt.
💥💣💥 Falls auf
buildcache gesetzt wird die Überlagerung
nicht bei der Ausführung von Bauskripten verworfen, sondern im
Bauverzeichnis, konfiguriert mittels
BuildDirectory=, gespeichert und bei nachfolgenden
Läufen wiederverwandt. Die Überlagerung wird weiterhin
für alle anderen Skripte verworfen. Diese Option kann für ein
fortgeschritteneres Zwischenspeichern bei Bauten verwandt werden, kann aber
zu unerwarteten Zuständen des Bauverzeichnisses führen. Bei
der Verwendung dieser Option muss ein Bauverzeichnis konfiguriert sein.
💥💣💥
- Environment=,
--environment=
- Fügt Variablen zu der Umgebung hinzu, mit der Paketverwalter und
die Vorbereitungs-/Bau-/Postinstall-/Finalisierungsskripte
ausgeführt werden. Akzeptiert eine Leerzeichen-getrennte Liste von
Variablenzuweisungen oder nur Variablennamen. In letzterem Falle werden
die Werte dieser Variablen von der Umgebung, aus der mkosi heraus
aufgerufen wurde, durchgereicht. Diese Option kann mehr als einmal
angegeben werden. Dann werden alle aufgeführten Variablen gesetzt.
Falls die gleiche Variable zweimal gesetzt wird, setzt letztere
Einstellung die vorhergehende außer Kraft.
- EnvironmentFiles=,
--env-file=
- Akzeptiert eine Kommata-getrennte Liste von Pfaden zu Dateien, die
Umgebungsvariablendefinitionen enthalten, die der Skript-Umgebung
hinzugefügt werden sollen. Verwendet
mkosi.env, falls es im lokalen Verzeichnis
gefunden wird. Diese Variablen werden zuerst aus
mkosi.env, falls es existiert, dann aus den
angegebenen Dateien und dann aus den Einstellungen
Environment= gelesen.
- WithTests=,
--without-tests, -T
- Falls auf »false« gesetzt (oder wenn die Befehlszeilenoption
verwandt wird), wird die Umgebungsvariable
$WITH_TESTS auf 0 gesetzt,
wenn die Skripte mkosi.build aufgerufen werden.
Dies ist dafür gedacht, von Bauskripten zur Umgehung von Unit- oder
Integrationstest, die normalerweise während des Quellbauprozesses
aufgerufen werden, verwandt zu werden. Beachten Sie, dass diese Option nur
wirksam wird, wenn die mkosi.build-Bauskripte sie
respektieren.
- WithNetwork=,
--with-network=
- Wenn »true«, aktiviert Netzwerkverbindungen während
der von mkosi.build aufgerufenen Bauskripte.
Standardmäßig werden die Bauskripte mit abgeschaltetem
Netzwerk ausgeführt. Die Umgebungsvariable
$WITH_NETWORK wird an die
mkosi.build-Bauskripte übergeben um
anzuzeigen, ob der Bau mit Netzwerk erfolgt.
- ProxyUrl=,
--proxy-url=
- Konfiguriert einen Proxy, der für alle ausgehenden
Netzwerkverbindungen verwandt werden soll. Verschiedene Werkzeuge, die
mkosi aufruft und für die der Proxy konfiguriert werden
kann, sind für diesen Proxy konfiguriert. mkosi setzt auch
verschiedene gut bekannte Umgebungsvariablen, um den Proxy zur Verwendung
mit allen Programmen festzulegen, die es aufruft und die Internetzugriff
benötigen könnten.
- ProxyExclude=,
--proxy-exclude=
- Konfiguriert Rechnernamen, für die Anfragen nicht durch den Proxy
gehen sollen. Akzeptiert eine Kommata-getrennte Liste von
Rechnernamen.
- ProxyPeerCertificate=,
--proxy-peer-certificate=
- Konfiguriert eine Datei, die Zertifikate zur Überprüfung des
Proxys enthält. Standardmäßig ist das der systemweite
Zertifikaktspeicher.
Derzeit wird das Setzen eines Proxy-Gegenstellen-Zertifikats nur
unterstützt, wenn dnf oder dnf5 zum Bau des Abbilds
verwandt werden.
- ProxyClientCertificate=,
--proxy-client-certificate=
- Konfiguriert eine Datei, die das zur Authentifizierung des Clients mit dem
Proxy verwandte Zertifikat enthält.
Derzeit wird das Setzen eines Proxy-Client-Zertifikats nur
unterstützt, wenn dnf oder dnf5 zum Bau des Abbilds
verwandt werden.
- ProxyClientKey=,
--proxy-client-key=
- Konfiguriert eine Datei, die den privaten Schlüssel für die
Authentifizierung des Clients mit dem Proxy enthält. Die Vorgabe
ist das Proxy-Client-Zertifikat, falls eines bereitgestellt wurde.
Derzeit wird das Setzen eines Proxy-Clients nur
unterstützt, wenn dnf oder dnf5 zum Bau des Abbildes
verwandt wird.
- NSpawnSettings=,
--settings=
- Legt eine Einstellungsdatei .nspawn für
systemd-nspawn(1) zur Verwendung in den Unterbefehlen
boot und shell und zum
Ablegen neben der erstellten Abbilddatei fest. Dies ist zur Konfiguration
der Umgebung systemd-nspawn(1) bei der Ausführung
nützlich. Falls diese Einstellung nicht verwandt wird, aber eine
Datei mkosi.nspawn im lokalen Verzeichnis gefunden
wird, wird diese automatisch für diesen Zweck verwandt.
- VirtualMachineMonitor=,
--vmm=
- Konfiguriert den zu verwendenden Monitor für virtuelle Maschinen.
Akzeptiert entweder qemu oder
vmspawn. Standardmäßig
qemu.
Falls auf qemu gesetzt, wird das Abbild
mit qemu gestartet. Die meisten Ausgabeformate können mit
qemu gestartet werden. Alle nach dem Unterbefehl angegebenen
Argumente werden an den Aufruf von qemu angehängt und als
zusätzliche qemu-Befehlszeilenargumente interpretiert.
Falls auf vmspawn gesetzt, wird
systemd-vmspawn(1) zum Hochfahren des Abbildes benutzt.
vmspawn unterstützt nur platten- und
verzeichnisartige Abbilder. Alle nach dem Unterbefehl angegebenen Argumente
werden an den Aufruf von systemd-vmspawn(1) angehängt und als
zusätzliche Vmspawn-Optionen und Kernelbefehlszeilenargumente
interpretiert.
- Console=,
--console=
- Konfiguriert, wie die Konsole der VM eingerichtet werden soll. Akzeptiert
entweder interactive,
read-only, native oder
gui. Standardmäßig
interactive. interactive
stellt eine interaktive Terminalschnittstelle zur VM bereit.
read-only ist ähnlich, aber streng
schreibgeschützt, d.h. sie akzeptiert keine Eingabe vom Benutzer.
native stellt auch eine TTY-basierte Schnittstelle
bereit, verwendet aber die in qemu eingebaute Implementierung
(dadurch ist der Monitor von qemu verfügbar).
gui zeigt die graphische UI von qemu
qemu.
- CPUs=,
--cpus=
- Konfiguriert die Anzahl der CPU-Kerne, die dem Gast beim Starten einer
virtuellen Maschine zugewiesen werden sollen. Standardmäßig
2.
Wird dies auf 0 gesetzt, wird die Anzahl
der für den mkosi-Prozess verfügbaren CPUs
verwandt.
- RAM=,
--ram=
- Konfiguriert die Speichermenge, die einem Gast beim Starten einer
virtuellen Maschine zugewiesen wird. Standardmäßig
2G.
- KVM=,
--kvm=
- Konfiguriert, ob KVM-Beschleunigung beim Starten einer virtuellen Maschine
verwandt werden soll. Akzeptiert einen logischen Wert oder
auto. Standardmäßig
auto.
- Vsock=,
--vsock=
- Konfiguriert, ob ein Vsock beim Starten einer virtuellen Maschine
vorgehalten werden soll. Akzeptiert einen logischen Wert oder
auto. Standardmäßig
auto.
- VsockConnectionId=,
vsock-cid=
- Konfiguriert die beim Starten einer virtuellen Maschine zu verwendende
Verbindungskennung. Akzeptiert eine Zahl im Intervall
[3, 0xFFFFFFFF) oder
hash oder auto.
Standardmäßig auto. Wenn auf
hash gesetzt wird die Verbindungskennung von dem
vollständigen Pfad zum Abbild abgeleitet. Wenn auf
auto gesetzt, wird mkosi versuchen,
automatisch eine freie Verbindungskennung zu finden. Andernfalls wird die
bereitgestellte Nummer unverändert verwandt.
- TPM=,
--tpm=
- Konfiguriert, ob ein virtueller TPM beim Starten einer virtuellen Maschine
verwandt werden soll. Akzeptiert einen logischen Wert oder
auto. Standardmäßig
auto.
- CDROM=,
--cdrom=
- Konfiguriert, ob das Abbild als CD-ROM-Laufwerk beim Start einer
virtuellen Maschine angehängt werden soll. Akzeptiert einen
logischen Wert. Standardmäßig
no.
- Removable=,
--removable=
- Konfiguriert, ob das Abbild als entfernbares Gerät beim Start einer
virtuellen Maschine angehängt werden soll. Akzeptiert einen
logischen Wert. Standardmäßig
no.
- Firmware=,
--firmware=
- Konfiguriert die zu verwendende Firmware. Akzeptiert entweder
uefi, uefi-secure-boot,
bios, linux oder
auto. Standardmäßig
auto. Falls auf uefi
gesetzt, wird die OVMF-Firmware ohne Unterstützung für
sicheren Systemstart verwandt. Falls auf
uefi-secure-boot gesetzt, wird die OVMF-Firmware
mit Unterstützung für sicheren Systemstart verwandt. Falls
auf bios gesetzt, wird die
Standard-SeaBIOS-Firmware verwandt. Falls auf
linux gesetzt, wird der direkte Kernelstart
verwandt. Siehe die Option Linux= für
weitere Details darüber, welches Kernelabbild mit direktem
Kernelsystemstart verwandt wird. Falls auf auto
gesetzt wird falls möglich uefi-secure-boot
und ansonsten linux verwandt.
- FirmwareVariables=,
--firmware-variables=
- Konfiguriert den Pfad zu den zu verwendenden Firmwarevariablendateien der
virtuellen Maschine. Derzeit wird diese Option nur berücksichtigt,
wenn die Firmware uefi oder
uefi-secure-boot verwandt wird. Falls nicht
angegeben, wird mkosi nach der Standard-Variablen-Datei suchen und
diese stattdessen verwenden.
Falls auf microsoft gesetzt, wird eine
Firmwarevariablendatei mit bereits registriertem sicheren
Systemstartzertifikat von Microsoft verwandt.
Falls auf microsoft-mok gesetzt wird eine
bereits registrierte Firmware-Variablen-Datei mit dem »Microsoft
secure boot«-Zertifikaten durch eine
MokList-Variable erweitert, die das Zertifikat
für den sicheren Systemstart aus
SecureBootCertificate= enthält. Dies ist
für die gemeinsame Verwendung von durch die Distribution signierten
Shim-Programmen und lokal signierten EFI-Programmen gedacht.
Falls auf custom gesetzt, wird ein
Zertifikat für sicheren Systemstart von
SecureBootCertificate= in die
Standard-Firmwarevariablendatei registriert.
virt-fw-vars aus dem Projekt
virt-firmware
kann zum Anpassen der OVMF-Variablendateien verwandt werden.
- Linux=,
--linux=
- Setzt das für direkten Kernelsystemstart in qemu zu
verwendende Kernelabbild. Falls nicht angegeben wird mkosi den
über die Befehlszeile bereitgestellten Kernel (Option
-kernel) oder den neusten Kernel, der im Abbild
installiert wurde, verwenden (oder fehlschlagen, falls kein Kernel im
Abbild installiert wurde).
Beachten Sie, dass bei der Verwendung des Ausgabeformats
cpio der direkte Kernelsystemstart unabhängig
von der konfigurierten Firmware verwandt wird. Abhängig von der
konfigurierten Firmware könnte qemu den Kernel selbst starten
oder die konfigurierte Firmware verwenden.
- Drives=,
--drive=
- Fügt ein Laufwerk hinzu. Akzeptiert eine Doppelpunkt-getrennte
Zeichenkette im Format
<Kennung>:<Größe>[:<Verzeichnis>[:<Optionen>[:<Dateikennung>]]].
Kennung legt die dem Laufwerk zugeordnete Kennung
fest. Diese kann als die Eigenschaft drive= in
verschiedenen qemu-Geräten verwandt werden.
Größe legt die Größe
des Laufwerks fest. Dies akzeptiert eine Größe in Byte.
Zusätzliche können die Endungen K,
M und G zur Festlegung
einer Größe in Kilobyte, Megabyte bzw. Gigabyte verwandt
werden. Verzeichnis legt optional das Verzeichnis
fest, in dem das dem Laufwerk zugrunde liegende Verzeichnis erstellt
werden soll. Optionen legen optional
zusätzliche, durch Kommata getrennte Eigenschaften fest, die
unverändert an die Option -drive von
qemu übergeben werden. Dateikennung
legt die Kennung der Datei fest, die dem Laufwerk zugrunde liegt.
Laufwerke mit der gleichen Dateikennung haben eine gemeinsame
zugrundeliegende Datei. Das Verzeichnis und die Größe der
Datei wird aus dem ersten Laufwerk mit der angegebenen Dateikennung
bestimmt.
Beispielhafte Verwendung:
-
[Runtime]
Drives=btrfs:10G
ext4:20G
QemuArgs=-device nvme,serial=btrfs,drive=btrfs
-device nvme,serial=ext4,drive=ext4
- QemuArgs=
- Leerzeichen-begrenzte Liste von zusätzlich beim Aufruf von
qemu zu übergebenen Argumenten.
- Ephemeral=,
--ephemeral
- Bei der Verwendung mit den Unterbefehlen shell,
boot oder vm führt
diese Option den angegebenen Unterbefehl auf einem temporären
Schnappschuss des Ausgabeabbilds aus, das sofort entfernt wird, wenn der
Container sich beendet. Die Vornahme temporärer
Schnappschüsse ist auf Dateisystemen effizienter, die Reflinks
nativ unterstützen (btrfs(5) oder xfs(5)), als auf
traditionellen, bei denen das nicht der Fall ist (ext4(5)).
- Credentials=,
--credential=
- Setzt die an systemd-nspawn(1) bzw. der virtuellen Maschine zu
übergebenen Zugangsberechtigungen, wenn mkosi
shell/boot oder mkosi vm verwandt wird.
Diese Option akzeptiert eine Leerzeichen getrennte Liste von Werten, die
entweder Schlüssel=Wert-Paare oder Pfade sein können. Falls
ein Pfad bereitgestellt wird, wird der Zugangsberechtigungsname der Name
der Datei sein, wenn der Pfad eine Datei ist. Falls die Datei
ausführbar ist, wird die Zugangsberechtigung die Ausgabe nach
Ausführen der Datei sein. Andernfalls wird der Wert der
Zugangsberechtigung der Inhalt der Datei sein. Falls der Pfad ein
Verzeichnis ist, gilt die gleiche Logik für jede Datei in dem
Verzeichnis.
Beachten Sie, dass die Werte nur als Pfade behandelt werden, falls
sie den Begrenzer (=) nicht enthalten.
- KernelCommandLineExtra=,
--kernel-command-line-extra=
- Setzt zusätzliche Kernelbefehlszeilenargumente, die zur Laufzeit
beim Starten des Abbilds an die Kernelbefehlszeile angehängt
werden. Beim Systemstart in einen Container werden diese als
zusätzliche Argumente an systemd(1) übergeben. Beim
Systemstart in eine VM werden diese mittels der SMBIOS-OEM-Zeichenkette
io.systemd.stub.kernel-cmdline-extra an die Kernelbefehlszeile
angehängt. Dies wird von
systemd-boot(7)/systemd-stub(7) erst ab Version v254
aufgenommen.
- RuntimeTrees=,
--runtime-tree=
- Akzeptiert eine Doppelpunkt-getrennte Liste von Pfaden. Der erste Pfad
bezieht sich auf ein in jede von Mkosi zu startende Maschine (Container
oder VM) einzuhängendes Verzeichnis. Der zweite Pfad bezieht sich
auf das Zielverzeichnis innerhalb der Maschine. Falls der zweite Pfad
nicht bereitgestellt wird, wird das Verzeichnis unter
/root/src in der Maschine eingehängt. Falls
der zweite Pfad relativ ist, wird er relativ zu
/root/src in der Maschine interpretiert.
Für jedes eingehängte Verzeichnis wird die UID und
GID des Benutzers, der Mkosi ausführt, auf den Benutzer root in der
Maschine abgebildet. Dies bedeutet, dass alle Dateien und Verzeichnisse so
erscheinen, als ob sie root in der Maschine gehören würden und
alle neuen Dateien und Verzeichnisse, die von root in der Maschine in diesen
Verzeichnissen erstellt werden, gehören auf der Wirtmaschine dem
Benutzer, der Mkosi ausführt.
Beachten Sie, dass bei der Verwendung von mkosi
vm mit dieser Funktionalität Systemd v254 oder neuer im Abbild
installiert sein muss.
- RuntimeSize=,
--runtime-size=
- Falls angegeben werden Plattenabbilder bis zu der angegebenen
Größe vergrößert, wenn sie mit
mkosi boot oder mkosi vm
gestartet werden. Akzeptiert eine Größe in Byte.
Zusätzlich können die Endungen K,
M und G verwandt werden,
um eine Größe in Kilobyte, Megabyte bzw. Gigabyte
festzulegen.
- RuntimeScratch=,
--runtime-scratch=
- Akzeptiert einen logischen Wert oder auto. Legt
fest, ob ein zusätzlicher Arbeitsbereich unter
/var/tmp eingehängt werden soll. Falls
aktiviert, wird ein praktisch unbegrenzter Arbeitsbereich unter
/var/tmp zur Verfügung gestellt, wenn das
Abbild mit mkosi vm,
mkosi boot oder mkosi
shell gestartet wird.
Beachten Sie, dass bei der Verwendung von mkosi
vm mit dieser Funktionalität Systemd v254 oder neuer im Abbild
installiert sein muss.
- RuntimeNetwork=,
--runtime-network=
- Akzeptiert entweder user,
interface oder none.
Standardmäßig user. Legt das beim
Systemstart einzurichtende Netzwerk fest. user
richtet Benutzermodus-Vernetzung ein. interface
richtet eine virtuelle Netzwerkverbindung zwischen dem Wirtrechner und dem
Abbild ein. Dies übersetzt sich in eine Veth-Schnittstelle
für mkosi shell und mkosi
boot und eine Tap-Schnittstelle für mkosi
vm und mkosi vmspawn.
Beachten Sie, dass bei der Verwendung von
interface mkosi nicht automatisch die
Schnittstelle des Wirtsystems konfiguriert. Es wird erwartet, dass auf dem
Wirtsystem eine hinreichend neue Version von systemd-networkd(8)
läuft, die automatisch die Schnittstelle des Links auf dem Wirtsystem
konfiguriert.
- RuntimeBuildSources=,
--runtime-build-sources=
- Hängt die mit BuildSources= konfigurierten
Bauquellen und das Bauverzeichnis (falls eines konfiguriert wurde) an die
gleichen Orte in /work ein, an der sie
eingehängt würden, wenn das Bauskript ausgeführt
würde, wenn mkosi boot oder
mkosi vm verwandt würde.
- RuntimeHome=,
--runtime-home=
- Hängt das aktuelle Home-Verzeichnis, von dem aus mkosi
läuft, bei der Verwendung von mkosi boot
oder mkosi vm unter /root
ein.
- UnitProperties=,
--unit-property=
- Konfiguriert Systemd-Unit-Eigenschaften, die zu den zugewiesenen
Systemd-Geltungsbereichen hinzugewiesen werden sollen, wenn
mkosi boot oder
mkosi vm verwandt wird. Diese werden direkt an die
Optionen --property von systemd-nspawn(1)
bzw. systemd-run(1) übergeben.
- SshKey=,
--ssh-key=
- Pfad zu dem privaten X.509-Schlüssel im PEM-Format, der für
die Verbindung zu einer mit mkosi vm gestarteten
virtuellen Maschine verwandt werden soll und die mittels des Befehls
mkosi ssh aktivierten Option
Ssh= gebaut wurde. Falls nicht konfiguriert und
mkosi.key im aktuellen Arbeitsverzeichnis
existiert, wird dies automatisch für diesen Zweck verwandt.
Führen Sie mkosi genkey aus, um automatisch
einen Schlüssel in mkosi.key zu
erstellen.
- SshCertificate=,
--ssh-certificate=
- Pfad zu dem X.509-Zertifikat im PEM-Format zur Beistellung als
öffentlicher SSH-Schlüssel in durch mkosi
vm gestarteten virtuellen Maschinen. Falls nicht konfiguriert und
mkosi.crt im aktuellen Arbeitsverzeichnis
existiert, wird dies automatisch für diesen Zweck verwandt.
Führen Sie mkosi genkey aus, um automatisch
ein Zertifikat in mkosi.crt zu erstellen.
- Machine=,
--machine=
- Gibt den beim Starten der Maschine zu verwendenen Maschinennamen an. Kann
auch als Referenz auf ein bestimmtes Abbild beim Betreten mit SSH eines
bestimmten Abbildes verwandt werden (z.B. mkosi
--image=meinAbbild ssh).
Beachten Sie, dass Ephemeral= aktiviert
sein muss, um mehrere Instanzen des gleichen Abbildes zu starten.
- Register=,
--register=
- Akzeptiert einen logischen Wert oder auto. Legt
fest, ob die VM/der Container mit systemd-machined(8) registriert
werden soll. Falls aktiviert, wird mkosi fehlschlagen, falls es
keine VM/keinen Container mit systemd-machined(8) registrieren
kann. Falls deaktiviert, wird mkosi die VM/den Container nicht mit
systemd-machined(8) registrieren. Falls
auto, wird mkosi die VM/den Container mit
systemd-machined(8) registrieren, falls dies verfügbar ist.
Standardmäßig auto.
- ForwardJournal=,
--forward-journal=
- Legt den Pfad fest, in dem Journalprotokolle aus Containern und virtuellen
Maschinen weitergeleitet werden sollen. Falls der Pfad die Erweiterung
.journal enthält, wird dieser als eine
Datei interpretiert, in die das Journal geschrieben werden soll.
Andernfalls wird der Pfad als ein Verzeichnis interpretiert, in das das
Journal geschrieben werden soll.
Beachten Sie, dass Systemd v256 oder neuer in der virtuellen
Maschine benötigt wird, damit Protokollweiterleitung
funktioniert.
Beachten Sie, dass die Journal-Größe auf
4G beschränkt ist, falls ein Pfad mit der
Erweiterung .journal angegeben wird. Konfigurieren
Sie ein Ausgabeverzeichnis anstelle einer Datei, falls ihre Auslastung mehr
als 4G an Journal-Daten erzeugt.
- SysupdateDirectory=,
--sysupdate-directory=
- Pfad zu einem Verzeichnis, das Transferdefinitionsdateien von
systemd-sysupdate(8) enthält, die von mkosi
sysupdate verwandt werden. Falls im lokalen Verzeichnis
mkosi.sysupdate/ existiert, wird es automatisch
für diesen Zweck verwandt.
Beachten Sie, dass mkosi sysupdate
systemd-sysupdate(8) mit --transfer-source=
auf das Ausgabeverzeichnis von mkosi gesetzt aufgerufen wird. Um dies
in einer Transferdefinitionsdatei zu verwenden, setzen Sie
PathRelativeTo=explicit, damit die Einstellung
Path= für die Transferquelle relativ zum
Ausgabeverzeichnis von mkosi interpretiert wird. Im Allgemeinen
reicht es aus, PathRelativeTo=explicit und
Path=/ relativ zu der Transferquelle zu
konfigurieren, damit das Vergleichsmuster relativ zum Ausgabeverzeichnis von
mkosi interpretiert wird.
- Profiles=
- Übereinstimmung mit den konfigurierten Profilen.
- Distribution=
- Übereinstimmung mit der konfigurierten Distribution.
- Release=
- Übereinstimmung mit der konfigurierten
Distributionsveröffentlichung. Falls diese Bedingung verwandt wird
und noch keine Distribution explizit konfiguriert wurde, wird die
Distribution und Veröffentlichung der Wirtmaschine verwandt.
- Architecture=
- Übereinstimmung mit der konfigurierten Architektur. Falls diese
Bedingung verwandt wird und noch keine Architektur explizit konfiguriert
wurde, wird die Architektur des Wirtsystems verwandt.
- Repositories=
- Übereinstimmung mit Depots, die mit der Einstellung
Repositories= aktiviert wurden. Akzeptiert einen
einzelnen Depotnamen.
- PathExists=
- Diese Bedingung ist erfüllt, wenn der angegebene Pfad existiert.
Relative Pfade werden als relativ zum Elternverzeichnis der
Konfigurationsdatei interpretiert, aus der diese Bedingung ausgelesen
wurde.
- ImageId=
- Übereinstimmung mit der konfigurierten Abbildkennung, Globs werden
unterstützt. Falls diese Bedingung verwandt wird und noch keine
Abbildkennung explizit konfiguriert wurde, schlägt diese Bedingung
fehl.
- ImageVersion=
- Übereinstimmung mit der konfigurierten Abbildversion. Den
Abbildversionen können die Operatoren ==,
!=, >=,
<=, <,
> für umfangreiche Versionsvergleiche
entsprechend der UAPI-Gruppenversionsformatspezifikation vorangestellt
werden. Falls kein Operator vorangestellt wird, wird
standardmäßig der Gleichheits-Operator angenommen. Falls
diese Bedingung verwandt wird und noch keine Abbildversion explizit
konfiguriert wurde, schlägt diese Bedingung fehl.
- Bootable=
- Übereinstimmung mit dem konfigurierten Wert für die
Funktionalität Bootable=. Akzeptiert einen
logischen Wert oder auto.
- Format=
- Übereinstimmung mit dem konfigurierten Wert für die Option
Format=. Akzeptiert ein Ausgabeformat (siehe die
Option Format=).
- SystemdVersion=
- Übereinstimmung mit der Systemd-Version des Wirtsystems (wie von
systemctl --version berichtet). Den Werten
können die Operatoren ==,
!=, >=,
<=, <,
> für umfangreiche Versionsvergleiche
entsprechend der UAPI-Gruppenversionsformatspezifikation vorangestellt
werden. Falls kein Operator vorangestellt wird, wird
standardmäßig der Gleichheits-Operator angenommen.
- BuildSources=
- Akzeptiert einen Bauquellen-Zielpfad (siehe
BuildSources=). Diese Übereinstimmung ist
erfüllt, falls eine der konfigurierten Bauquellen diesen Zielpfad
verwendet. Enthält beispielsweise eine Datei
mkosi.conf Folgendes:
-
[Build]
BuildSources=../abc/qed:kernel
Und eine Ergänzung, die folgendes enthält:
-
[Match]
BuildSources=kernel
Die Ergänzung wird aufgenommen.
Alle an diese Einstellung übergebenen absoluten Pfade
werden relativ zum aktuellen Arbeitsverzeichnis interpretiert.
- HostArchitecture=
- Übereinstimmung mit der grundständigen Architektur des
Wirtrechners. Siehe die Einstellung Architecture=
für eine Liste möglicher Werte.
- ToolsTreeDistribution=
- Übereinstimmung mit der konfigurierten
Werkzeugbaum-Distribution.
- ToolsTreeRelease=
- Übereinstimmung mit der konfigurierten
Werkzeugbaum-Veröffentlichung.
- Environment=
- Übereinstimmung mit einem bestimmten, mit
Environment= konfigurierten
Schlüssel/Wert-Paar. Falls kein Wert bereitgestellt wird, wird
überprüft, ob ein angegebener Schlüssel sich in der
Umgebung befindet, unabhängig von seinem Wert.
Diese Tabelle zeigt, welche Übereinstimmer Globs und
mächtige Vergleiche unterstützen sowie den Vorgabewert, gegen
den überprüft wird, falls zum Zeitpunkt des Einlesens der
Konfigurationsdatei kein Wert bereitgestellt wurde:
| Übereinstimmer |
Globs |
Umfangreiche Vergleiche |
Vorgabe |
| Profiles= |
no |
no |
Übereinstimmung schlägt fehl |
| Distribution= |
no |
no |
Übereinstimmung mit Distribution des Wirtsystems |
| Release= |
no |
no |
Übereinstimmung mit Veröffentlichung des Wirtsystems |
| Architecture= |
no |
no |
Übereinstimmung mit Architektur des Wirtsystems |
| PathExists= |
no |
no |
n.Z. |
| ImageId= |
yes |
no |
Übereinstimmung schlägt fehl |
| ImageVersion= |
no |
yes |
Übereinstimmung schlägt fehl |
| Bootable= |
no |
no |
Übereinstimmung mit automatischer Funktionalität |
| Format= |
no |
no |
Übereinstimmung mit Standardformat |
| SystemdVersion= |
no |
yes |
n.Z. |
| BuildSources= |
no |
no |
Übereinstimmung schlägt fehl |
| HostArchitecture= |
no |
no |
n.Z. |
| ToolsTreeDistribution= |
no |
no |
Übereinstimmung mit dem Rückfall-Werkzeugbaum der
Distribution (siehe ToolsTreeDistribution= in
[Build]) |
| ToolsTreeRelease= |
no |
no |
Übereinstimmung mit
Standard-Werkzeugbaum-Veröffentlichung |
| Environment= |
no |
no |
n.Z. |
- Include=,
--include=, -I
- Bindet zusätzliche Konfiguration aus der angegebenen Datei oder dem
angegebenen Verzeichnis ein. Die zusätzliche Konfiguration wird
sofort nach Auswerten dieser Einstellung eingebunden, außer wenn
dies auf der Befehlszeile passiert - dann wird die zusätzliche
Konfiguration nach Auswerten aller Befehlszeilenargumente
eingebunden.
Beachten Sie, dass jeder Pfad mit zusätzlicher
Konfiguration nur einmal ausgewertet wird, selbst wenn er mit
Include= mehrfach eingebunden ist.
Die eingebauten Konfigurationen für die Vorgabe-Initrd, den
Vorgabe-Werkzeugbaum und das standardmäßige
Virtuelle-Maschinenabbild von mkosi können eingebunden werden,
indem der wörtliche Wert mkosi-initrd,
mkosi-tools bzw. mkosi-vm
eingebunden wird.
Beachten Sie: Einbindenamen, die mit entweder dem
wörtlichen mkosi- oder
contrib- beginnen, sind für die Verwendung
durch mkosi selbst reserviert.
- Profiles=,
--profile=
- Wählt die angegebenen Profile aus. Ein Profil ist eine
Konfigurationsdatei oder -verzeichnis in dem Verzeichnis
mkosi.profiles/. Die Konfigurationsdateien und
-verzeichnisse werden nach der Auswertung der Datei
mkosi.conf, aber vor allen
Ergänzungskonfigurationen in
mkosi.conf.d/*.conf eingebunden.
- Dependencies=,
--dependency=
- Die Abbilder, von denen dieses Abbild abhängt, festgelegt als
Kommata-getrennte Liste. Alle in dieser Option konfigurierten Abbilder
werden vor diesem Abbild gebaut.
Wird diese Einstellung für das »Hauptabbild«
angegeben, legt sie fest, welche Unterabbilder gebaut werden sollen. Siehe
den Abschnitt Bau mehrerer Abbilder für weitere
Informationen.
- MinimumVersion=,
--minimum-version=
- Die minimale Version von mkosi, die zum Bau dieser Konfiguration
benötigt wird. Falls mehrfach angegeben, wird die höchste
festgelegte Version verwandt.
- ConfigureScripts=,
--configure-script=
- Akzeptiert eine Kommata-getrennte Liste von Pfaden zu Programmen, die als
Konfigurationsskripte für dieses Abbild verwandt werden. Siehe den
Abschnitt Skripte für weitere Informationen.
- PassEnvironment=,
--pass-environment=
- Akzeptiert eine Liste von durch Leerzeichen getrennten
Umgebungsvariablennamen. Beim Bau mehrerer Abbilder werden die
aufgeführten Umgebungsvariablen an jedes einzelne Unterabbild
übergeben, als ob sie »universelle« Einstellungen
wären. Siehe den Abschnitt Bau mehrerer Abbilder
für weitere Informationen.
Der Abschnitt UKIProfile kann in
UKI-Profil-Konfigurationsdateien verwandt werden, die an die Einstellung
UnifiedKernelImageProfiles= übergeben werden.
Die folgenden Einstellungen können im Abschnitt
UKIProfile festgelegt werden:
- Profile=
- Der Inhalt des Abschnitts .profile des
UKI-Profils. Akzeptiert eine Liste von Schlüssel/Wert-Paaren,
getrennt durch =. Der Schlüssel
ID= muss angegeben werden. Siehe die
https://uapi-group.org/specifications/specs/unified_kernel_image/#multi-profile-ukis
Spezifikation für eine vollständige Liste aller
möglichen Schlüssel.
- Cmdline=
- Zusätzliche Kernelbefehlszeilenoptionen für das UKI-Profil.
Akzeptiert eine durch Leerzeichen begrenzte Liste von zusätzlichen
Kernelbefehlszeilenargumenten. Beachten Sie, dass der letztendliche
Abschnitt .cmdline eine Kombination des
grundlegenden Abschnitts .cmdline und der mit
dieser Option festgelegten zusätzlichen
Kernelbefehlszeilenargumente ist.
Auf den aktuelle Wert verschiedener Einstellungen kann beim
Auswerten mittels Kennzeichner zugegriffen werden. Um ein wörtliches
Zeichen % in einer Konfiguration zu schreiben, ohne
es als Kennzeichner zu behandeln, verwenden Sie %%.
Es werden die folgenden Kennzeichner verstanden:
| Einstellung |
Kennzeichner |
| Distribution= |
%d |
| Release= |
%r |
| Architecture= |
%a |
| Format= |
%t |
| Output= |
%o |
| OutputDirectory= |
%O |
| ImageId= |
%i |
| ImageVersion= |
%v |
Es gibt auch von Einstellungen unabhängige
Kennzeichner:
| Kennzeichner |
Wert |
| %C |
Elternverzeichnis der aktuellen Konfigurationsdatei |
| %P |
Aktuelles Arbeitsverzeichnis |
| %D |
Verzeichnis, in dem mkosi aufgerufen wurde |
| %I |
Name des aktuellen Unterabbildes in
mkosi.images |
Schließlich gibt es Kennzeichner, die von einer Einstellung
abgeleitet werden:
| Kennzeichner |
Wert |
| %F |
Das Standarddateisystem der konfigurierten Distribution |
Beachten Sie, dass sich das aktuelle Arbeitsverzeichnis
ändert, während mkosi seine Konfiguration auswertet.
Insbesondere ändert mkosi sein Arbeitsverzeichnis jedes Mal,
wenn es ein Verzeichnis mit einer Datei mkosi.conf
auswertet, auf dieses Verzeichnis.
Beachten Sie, dass das Verzeichnis, aus dem mkosi heraus
aufgerufen wurde, durch das Befehlszeilenargument
--directory= beeinflusst wird.
Die folgende Tabelle zeigt Beispielwerte für die oben
aufgeführten Verzeichniskennzeichner:
|
$D/mkosi.conf |
$D/mkosi.conf.d/abc/abc.conf |
$D/mkosi.conf.d/abc/mkosi.conf |
| _ |
| %C |
$D |
$D/mkosi.conf.d |
$D/mkosi.conf.d/abc |
| %P |
$D |
$D |
$D/mkosi.conf.d/abc |
| %D |
$D |
$D |
$D |
Unterstützte Distributionen
Für die folgenden Distributionen können Abbilder zur
Installation erstellt werden:
- •
- Fedora Linux
- •
- Debian
- •
- Kali Linux
- •
- Ubuntu
- •
- Arch Linux
- •
- openSUSE
- •
- Mageia
- •
- CentOS
- •
- RHEL
- •
- RHEL UBI
- •
- OpenMandriva
- •
- Rocky Linux
- •
- Alma Linux
- •
- Azure Linux
- •
- None (Dazu muss der Benutzer ein bereits gebautes Rootfs
bereitstellen)
Theoretisch kann jede Distribution auf dem Wirtrechner zum Bau der
Abbilder, die jede andere Distribution enthalten können, verwandt
werden, solange die notwendigen Werkzeuge verfügbar sind.
Insbesondere jede Distribution, die apt(8) paketiert, kann zum Bau
von Abbildern von Debian, Kali oder Ubuntu verwandt
werden. Jede Distribution, die dnf(8) paketiert, kann zum Bau von
Abbildern von jeder rpm(8)-basierten Distribution verwandt werden. Jede
Distribution, die pacman(8) paketiert, kann zum Bau von Abbildern von
Arch Linux verwandt werden. Jede Distribution, die
zypper(8) paketiert, kann zum Bau von Abbildern von openSUSE
verwandt werden. Andere Distributionen und Bauautomatisierungswerkzeuge
für eingebettete Linux-Systeme wie Buildroot, OpenEmbedded und Yocto
Project können durch Auswahl der Distribution
custom und der Befüllung des Rootfs mit einer
Kombination von Basisbäumen, Gerüstbäumen und
Vorbereitungsskripten verwandt werden.
Derzeit paketiert Fedora Linux alle relevanten Werkzeuge
seit Fedora 28.
Beachten Sie, dass Sie Abbilder für
RHEL nur auf einem Wirtsystem bauen können,
das über ein RHEL-Abonnement verfügt
(das beispielsweise mit dem subscription-manager
eingerichtet wurde), wenn Sie keinen angepassten Spiegel verwenden.
Arbeitsablauf für mkosi build.
Standardwerte bzw. -aufrufe werden in Klammern dargestellt. Beim Bau mit
--incremental erstellt mkosi einen
Zwischenspeicher der Distributionsinstallation, falls er nicht bereits
existiert und ersetzt die Distributionsinstallation in sukzessiven Aufrufen
durch Daten aus dem Zwischenspeicher.
- 1.
- Wertet Befehlszeilen-Optionen aus
- 2.
- Wertet Konfigurationsdateien aus
- 3.
- Führt Konfigurationsskripte aus
(mkosi.configure)
- 4.
- Falls nicht als Root ausgeführt wird, trennt den Benutzernamensraum
ab und der in /etc/subuid und
/etc/subgid konfigurierte Subuid-Bereich wird
darin abgebildet.
- 5.
- Trennt den Einhängenamensraum ab
- 6.
- Hängt die folgenden Verzeichnisse schreibgechützt neu ein,
falls sie existieren:
- •
- /usr
- •
- /etc
- •
- /opt
- •
- /srv
- •
- /boot
- •
- /efi
- •
- /media
- •
- /mnt
Führen Sie dann für jedes Abbild die folgenden
Schritte aus:
- 1.
- Kopieren von Sandbox-Bäumen in den Arbeitsbereich
- 2.
- Synchronisieren der Depot-Metadaten des Paketverwalters
- 3.
- Ausführen der Synchronisierungsskripte
(mkosi.sync)
- 4.
- Kopieren der Basisbäume (--base-tree=) in
das Abbild
- 5.
- Wiederverwenden eines zwischengespeicherten Abbilds, falls
verfügbar
- 6.
- Kopieren eines Schnappschusses der Depot-Metadaten des Paketverwalters in
das Abbild
- 7.
- Kopieren von Gerüstbäumen
(mkosi.skeleton) in das Abbild
- 8.
- Installieren der Distribution und Pakete in das Abbild
- 9.
- Ausführen der Vorbereitungsskripte auf dem Abbild mit dem Argument
final (mkosi.prepare)
- 10.
- Installieren der Baupakete in der Überlagerung, falls irgendwelche
Bauskripte konfiguriert sind
- 11.
- Ausführen der Vorbereitungsskripte auf der Überlagerung mit
dem Argument build, falls irgendwelche Bauskripte
konfiguriert sind (mkosi.prepare)
- 12.
- Zwischenspeichern des Abbilds, falls konfiguriert
(--incremental)
- 13.
- Ausführen der Bauskripte auf dem Abbild & der
Überlagerung, falls irgendwelche Bauskripte konfiguriert sind
(mkosi.build)
- 14.
- Finalisieren des Baus, falls das Ausgabeformat
none konfiguriert ist
- 15.
- Kopieren der Bauskripteausgaben in das Abbild
- 16.
- Kopieren der zusätzlichen Bäume in das Abbild
(mkosi.extra)
- 17.
- Ausführen der Post-Install-Skripte
(mkosi.postinst)
- 18.
- Schreiben der für Ssh=,
Autologin= und MakeInitrd=
benötigten Konfigurationsdateien
- 19.
- Installieren von systemd-boot(7) und
konfigurieren des sicheren Systemstart, falls konfiguriert
(--secure-boot)
- 20.
- Ausführen von systemd-sysusers(8)
- 21.
- Ausführen von systemd-tmpfiles(8)
- 22.
- Ausführen von systemctl preset-all
- 23.
- Ausführen von depmod(8)
- 24.
- Ausführen von systemd-firstboot(1)
- 25.
- Ausführen vom systemd-hwdb(8)
- 26.
- Entfernen von Pakete und Dateien (RemovePackages=,
RemoveFiles=)
- 27.
- Ausführen von SELinux-Neumarkierung, falls eine SELinux-Richtlinie
installiert ist
- 28.
- Ausführen von Finalisierungskripten
(mkosi.finalize)
- 29.
- Erstellen des Vereinigten Kernelabbildes, falls so konfiguriert
- 30.
- Erstellen des finalen Ausgabeformats
- 31.
- Ausführen der Post-Ausgabe-Skripte
(mkosi.postoutput)
Um die Anpassung von Abbildern zu erlauben, die nicht mittels der
in mkosi eingebauten Funktionalitäten implementiert werden
können, unterstützt mkosi die Ausführung von
Skripten zu verschiedenen Zeitpunkten während des Abbildbauprozesses,
die das Abbild nach Bedarf anpassen können. Skripte werden auf dem
Wirtsystem als Root (entweder als echtem Root oder Root innerhalb des
Benutzernamensraums, den mkosi bei dem unprivilegierten Aufruf
erstellte) mit einer angepassten Umgebung ausgeführt, um die
Veränderung des Abbildes zu erleichtern. Für jedes Skript
werden die konfigurierten Bauquellen (BuildSources=)
in das aktuelle Arbeitsverzeichnis eingehängt, bevor das Skript im
aktuellen Arbeitsverzeichnis ausgeführt wird.
$SRCDIR wird so gesetzt, dass es auf das aktuelle
Arbeitsverzeichnis zeigt. Die folgenden Skripte werden
unterstützt:
- •
- Falls mkosi.configure
(ConfigureScripts=) existiert, wird es vor dem Bau
des Abbilds ausgeführt. Dieses Skript kann zur dynamischen
Veränderung der Konfiguration verwandt werden. Es empfängt
die Konfiguration serialisiert als JSON auf der Standardeingabe und sollte
die veränderte Konfiguration serialisiert auf der Standardausgabe
ausgeben. Beachten Sie, dass dieses Skript nur ausgeführt wird,
wenn das Abbild gebaut oder gestartet wird (Unterbefehle
build, vm,
boot und shell). Falls ein
Vorgabe-Werkzeugbaum konfiguriert ist, wird er vor der Ausführung
des Konfigurationsskriptes gebaut und das Konfigurationsskript wird mit
vorhandenen Werkzeugen ausgeführt. Das bedeutet auch, dass die
durch das Konfigurationsskript vorgenommenen Änderungen nicht in
der Ausgabe von summary sichtbar sein werden.
- •
- Falls mkosi.sync
(SyncScripts=) existiert, wird es vor dem Bau des
Abbildes ausgeführt. Dieses Skript kann zur Aktualisierung
verschiedener, während des Baus verwandter Quellen eingesetzt
werden. Ein Anwendungsszenario ist die Ausführung von
git pull in verschiedenen Quelldepots vor dem Bau
des Abbildes. Insbesondere gilt die Einstellung
BuildSourcesEphemeral= nicht für
Synchronisationsskripte, was bedeutet, dass Synchronisationsskripte zur
Aktualisierung von Bauquellen verwandt werden können, selbst wenn
BuildSourcesEphemeral= aktiviert ist.
- •
- Falls mkosi.prepare
(PrepareScripts=) existiert, wird es zuerst mit
dem Argument final aufgerufen, direkt nachdem die
Software-Pakete installiert sind. Es wird ein zweites Mal mit dem
Befehlszeilenparameter build aufgerufen, direkt
nachdem die Baupakete installiert sind und die Bauüberlagerung
oberhalb des Wurzelverzeichnisses des Abbildes eingehängt ist.
Dieses Skript hat Netzwerkzugang und kann zur Installation von Paketen aus
weiteren Quellen neben dem Paketverwalter der Distribution verwandt werden
(z.B. pip(1), npm(1), …), nachdem alle
Software-Pakete installiert wurden, aber bevor das Abbild
zwischengespeichert wird (falls der inkrementelle Modus aktiviert wurde).
Im Gegensatz zur einer Allzweckinstallation ist die Installtion von
Paketen in das System (pip install,
npm install -g) anstelle in
$SRCDIR sicher, da das Bauabbild nur für
ein einzelnes Projekt verwandt wird und leicht entsorgt und neugebaut
werden kann, und es daher kein Risiko von in Konflikt stehenden
Abhängigkeiten und kein Risiko der Verunreinigung des Wirtsystems
gibt.
- •
- Falls mkosi.build
(BuildScripts=) existiert, wird es
ausgeführt, wenn die Bauüberlagerung oberhalb des
Wurzelverzeichnisses des Abbildes eingehängt wurde. Bei der
Ausführung der Bauskripte zeigt $DESTDIR
auf ein Verzeichnis, in dem die Skripte alle erstellten Dateien ablegen
sollen, die dann im Abbild landen sollen. Beachten Sie, dass die
Bausysteme, die auf make(1),automake(1) und meson(1)
basieren, im Allgemeinen $DESTDIR
berücksichtigen und damit der Bau von source-Bäumen
sehr natürlich vonstatten geht. Nach der Ausführung des
Bauskripts wird der Inhalt von $DESTDIR in das
Abbild kopiert.
- •
- Falls mkosi.postinst
(PostInstallationScripts=) existiert, wird es nach
der Installation der (optionalen) Bau- und Zusatzbäume
ausgeführt. Dieses Skript kann zur Veränderung des Abbilds
ohne jede Beschränkung verwandt werden, nachdem alle Softwarepakete
und Bauquellen installiert wurden.
- •
- Falls mkosi.finalize
(FinalizeScripts=) existiert, wird es als letzter
Schritt der Vorbereitung des Abbildes ausgeführt.
- •
- Falls mkosi.postoutput
(PostOutputScripts=) existiert, wird es direkt
nach der Erstellung aller Ausgabedateien ausgeführt, bevor sie
abschließend in das Ausgabeverzeichnis geschoben werden. Dies kann
zur Erstellung zusätzlicher oder alternativer Ausgaben verwandt
werden, z.B. SHA256FILES oder
SBOM-Listen.
- •
- Falls mkosi.clean
(CleanScripts=) existiert, wird es direkt nach der
Bereinigung eines vorherigen Baus ausgeführt. Ein
Bereinigungsskript kann sämtliche Ausgaben bereinigen, die
mkosi nicht kennt (z.B. Artefakte von
SplitArtifacts=partitions oder RPMs, die in einem
Bauskript erstellt wurden). Beachten Sie, dass dieses Skript den
Werkzeugbaum nicht verwendet, selbst wenn einer konfiguriert ist.
- •
- Falls mkosi.version existiert und
ausführbar ist, wird sie während der Auswertung der
Konfiguration ausgeführt und füllt
ImageVersion= mit der Ausgabe auf der
Standardausgabe. Dies kann für externe Versionverfolgung verwandt
werden, z.B. mit git
describe oder date
'+%Y-%m-%d'. Beachten Sie, dass dieses Skript auf dem Hauptsystem
ohne irgendeine Sandbox ausgeführt wird.
- •
- Falls mkosi.version existiert und
ausführbar ist, wird sie während der Auswertung der
Konfiguration ausgeführt und füllt
RootPassword= mit der Ausgabe auf der
Standardausgabe. Dies kann zur Erstellung eines zufälligen
Passworts verwandt werden. Um sich daran zu erinnern, kann es auf der
Standardfehlerausgabe ausgegeben werden oder durch Lesen von
$MKOSI_CONFIG in einem anderen Skript
(z.B. mkosi.postoutput) ermittelt werden.
Beachten Sie, dass dieses Skript auf dem Hauptsystem ohne irgendeine
Sandbox ausgeführt wird.
Falls ein Skript die Erweiterung .chroot
verwendet, wird mkosi ein chroot(8) mittels
mkosi-chroot (siehe unten) durchführen, bevor das Skript
ausgeführt wird. Falls beispielsweise
mkosi.postinst.chroot existiert, wird mkosi
ein chroot(8) in das Abbild durchführen und das Skript als
Postinstallationsskript ausführen.
Anstatt eines Skripts in einer einzelnen Datei wird mkosi
auch alle Dateien in lexikographischer Reihenfolge aus geeignet benannten
Verzeichnissen .d lesen, z.B. alle Dateien in
einem Verzeichnis mkosi.build.d würden als
Bauskripte verwandt. Folgende Verzeichnisse werden unterstützt:
- •
- mkosi.sync.d,
- •
- mkosi.prepare.d,
- •
- mkosi.build.d,
- •
- mkosi.postinst.d,
- •
- mkosi.finalize.d,
- •
- mkosi.postoutput.d und
- •
- mkosi.clean.d.
Dies kann mit der Erweiterung .chroot
kombiniert werden, z.B. würde
mkosi.build.d/01-foo.sh ohne Wechsel mittels
chroot(8) in das Abbild ausgeführt und
mkosi.build.d/02-bar.sh.chroot würde nach dem
zuerst erfolgten chroot(8) in das Abbild ausgeführt.
Von mkosi ausgeführte Skripte erhalten die folgenden
Umgebungsvariablen:
- •
- $ARCHITECTURE enthält die Architektur aus
der Einstellung Architecture=. Falls
Architecture= nicht gesetzt ist, wird es die
native Architektur der Wirtmaschine erhalten. Siehe die Dokumentation von
Architecture= für mögliche Werte
dieser Variablen.
- •
- $QEMU_ARCHITECTURE enthält die Architektur
aus $ARCHITECTURE in dem von qemu
verwandten Format. Nützlich, um das Programm von Qemu zu finden
(qemu-system-$QEMU_ARCHITECTURE).
- •
- $DISTRIBUTION enthält die Distribution aus
der Einstellung Distribution=.
- •
- $RELEASE enthält die
Veröffentlichung aus der Einstellung
Release=.
- •
- $DISTRIBUTION_ARCHITECTURE enthält die
Architektur aus $ARCHITECTURE in dem von der
konfigurierten Distribution verwandten Format.
- •
- $PROFILES enthält die Profile aus der
Einstellung Profiles= als eine Kommata-getrennte
Zeichenkette.
- •
- $CACHED= wird auf 1
gesetzt, falls ein zwischengespeichertes Abbild verfügbar ist,
ansonsten auf 0.
- •
- $CHROOT_SCRIPT enthält den Pfad zu dem
laufenden Skript, relativ zum Wurzelverzeichnis des Abbildes. Der
primäre Anwendungsfall für diese Variable ist in der
Kombination mit dem Skript mkosi-chroot. Siehe die nachfolgende
Beschreibung von mkosi-chroot für weitere
Informationen.
- •
- $SRCDIR enthält den Pfad zu dem
Verzeichnis, aus dem mkosi heraus aufgerufen wurde, wobei alle
konfigurierten Bauquellen oben auf eingehängt sind.
$CHROOT_SRCDIR enthält den Wert, den
$SRCDIR nach Aufruf von mkosi-chroot haben
wird.
- •
- $BUILDDIR ist nur definiert, falls
mkosi.builddir existiert und auf das zu
verwendende Bauverzeichnis zeigt. Dies ist für alle Bausysteme, die
Bauen außerhalb des Bau-Baums unterstützen, nützlich,
um bereits gebaute Artefakte von einem vorherigen Durchlauf
wiederzuverwenden. $CHROOT_BUILDDIR enthält
den Wert, den $BUILDDIR nach Aufruf von
mkosi-chroot haben wird.
- •
- $DESTDIR ist ein Verzeichnis, in das
sämtliche installierte und durch ein Bauskript erstellte Software
abgelegt werden kann. Diese Variable wird nur gesetzt, wenn ein Bauskript
ausgeführt wird. $CHROOT_DESTDIR
enthält den Wert, den $DESTDIR nach Aufruf
von mkosi-chroot haben wird.
- •
- $OUTPUTDIR zeigt auf das Vorbereitungsverzeichnis,
das zum Speichern der während des Baus erstellten Bauartefakte
verwandt wird. $CHROOT_OUTPUTDIR enthält
den Wert, den $OUTPUTDIR nach Aufruf von
mkosi-chroot haben wird.
- •
- $PACKAGEDIR zeigt auf das Verzeichnis, das das
lokale Paketdepot enthält. Bauskripte können weitere Pakete
zum lokalen Depot hinzufügen, indem sie Pakete nach
$PACKAGEDIR schreiben.
- •
- $ARTIFACTDIR zeigt auf das Verzeichnis, das zur
Weitergabe von Bauartefakten verwandt wird, die während des Baus
erstellt wurden und die für die Verwendung durch Mkosi
bereitgestellt werden. Dies ist ähnlich zu
PACKAGEDIR, ist aber für Artefakte gedacht,
die keine vom Paketverwalter verstandenen Pakete sein können, z.B.
Initrds, die durch andere Initrd-Generatoren neben Mkosi erstellt wurden.
Bauskripte können weitere Artekfakte zu dem Verzeichnis
hinzufügen, indem sie sie in $ARTIFACTDIR
ablegen. Dateien in diesem Verzeichnis sind für den aktuellen Bau
verfügbar und werden nicht wie die Inhalte von
$OUTPUTDIR herauskopiert.
mkosi wird auch bestimmte Unterverzeichnisse eines
Artefaktverzeichnisses verwenden, um ihre Inhalte automatisch in bestimmten
Schritten zu verwenden. Derzeit werden die folgenden zwei Unterverzeichnisse
in dem Artefaktverzeichnis durch Mkosi verwandt:
- •
- io.mkosi.microcode: Alle Dateien in diesem
Verzeichnis werden als Microcode-Dateien verwandt, d.h. sie werden an die
Initrds in lexikographischer Reihenfolge angehängt.
- •
- io.mkosi.initrd: Alle Dateien in diesem
Verzeichnis werden als Initrds verwandt und in lexikographischer
Reihenfolge aneinandergehängt.
Es wird empfohlen, dass Benutzer von
$ARTIFACTDIR Dinge für ihre eigene Verwendung
in ähnlichen Verzeichnissen mit eigenem Namensraum ablegen,
z.B. lokal.mein.Namensraum.
- •
- $BUILDROOT ist das Wurzelverzeichnis des gebauten
Abbilds, optional mit der Bauüberlagerung oben auf
eingehängt, abhängig vom Skript, das ausgeführt
wird.
- •
- $WITH_DOCS ist entweder 0
oder 1, abhängig davon, ob der Bau eines
Abbildes mit oder ohne Dokumentation angefordert wurde
(WithDocs=yes). Ein Bauskript sollte die
Installation sämtlicher Paketdokumentationen nach
$DESTDIR unterdrücken, falls
$WITH_DOCS auf 0 gesetzt
ist.
- •
- $WITH_TESTS ist entweder 0
oder 1, abhängig davon, ob ein Bau mit oder
ohne laufende Test-Suite angefordert wurde
(WithTests=no). Ein Bauskript sollte die
Ausführung jeder Einheiten- oder Integrationstests unterlassen,
falls $WITH_TESTS auf 0
gesetzt ist.
- •
- $WITH_NETWORK ist entweder
0 oder 1, abhängig
davon, ob ein Bau mit oder ohne Netzwerkanbindung ausgeführt wird
(WithNetwork=no). Ein Bauskript sollte
sämtliche Netzwerkkommunikation unterlassen, falls
$WITH_NETWORK auf 0
gesetzt ist.
- •
- $SOURCE_DATE_EPOCH wird definiert falls erbeten
(SourceDateEpoch=TIMESTAMP,
Environment=SOURCE_DATE_EPOCH=TIMESTAMP oder die
Umgebungsvariable auf dem Wirtsystem
$SOURCE_DATE_EPOCH). Dies ist nützlich, um
Bauten wiederholbar zu machen. Siehe
SOURCE_DATE_EPOCH
zu weiteren Informationen.
- •
- $MKOSI_UID bzw. $MKOSI_GID
sind die UID bzw. GID des Benutzers, der mkosi aufrief.
- •
- $MKOSI_CONFIG ist eine Datei, die eine
JSON-Zusammenfassung der Einstellungen des aktuellen Abbildes
enthält. Diese Datei kann innerhalb von Skripten ausgewertet
werden, um Zugriff auf alle Einstellungen des aktuellen Abbildes zu
erhalten.
- •
- $IMAGE_ID enthält den Kennzeichner aus der
Einstellung ImageId= oder
--image-id=.
- •
- $IMAGE_VERSION enthält die Version aus der
Einstellung ImageVersion= oder
--image-version=.
In dieser Tabelle können Sie ersehen, welches Skript welche
Umgebungsvariable erhält:
| Variable |
configure |
sync |
prepare |
build |
postinst |
finalize |
postoutput |
clean |
| _ |
| ARCHITECTURE |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| QEMU_ARCHITECTURE |
✓ |
|
|
|
|
|
|
|
| DISTRIBUTION |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| DISTRIBUTION_ARCHITECTURE |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| RELEASE |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| PROFILES |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
| CACHED |
|
✓ |
|
|
|
|
|
|
| CHROOT_SCRIPT |
|
|
✓ |
✓ |
✓ |
✓ |
|
|
| SRCDIR |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| CHROOT_SRCDIR |
|
|
✓ |
✓ |
✓ |
✓ |
|
|
| BUILDDIR |
|
|
|
✓ |
✓ |
✓ |
|
|
| CHROOT_BUILDDIR |
|
|
|
✓ |
|
|
|
|
| DESTDIR |
|
|
|
✓ |
|
|
|
|
| CHROOT_DESTDIR |
|
|
|
✓ |
|
|
|
|
| OUTPUTDIR |
|
|
|
|
✓ |
✓ |
✓ |
✓ |
| CHROOT_OUTPUTDIR |
|
|
|
|
✓ |
✓ |
|
|
| BUILDROOT |
|
|
✓ |
✓ |
✓ |
✓ |
|
|
| PACKAGEDIR |
|
|
✓ |
✓ |
✓ |
✓ |
|
|
| ARTIFACTDIR |
|
|
✓ |
✓ |
✓ |
✓ |
|
|
| WITH_DOCS |
|
|
✓ |
✓ |
|
|
|
|
| WITH_TESTS |
|
|
✓ |
✓ |
|
|
|
|
| WITH_NETWORK |
|
|
✓ |
✓ |
✓ |
✓ |
|
|
| SOURCE_DATE_EPOCH |
|
|
✓ |
✓ |
✓ |
✓ |
|
✓ |
| MKOSI_UID |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| MKOSI_GID |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| MKOSI_CONFIG |
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| IMAGE_ID |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
| IMAGE_VERSION |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Zusätzlich werden bei der Skript-Ausführung einige
Skripte über den $PATH verfügbar
gemacht, um häufige Anwendungsfälle zu vereinfachen.
- •
- mkosi-chroot: Dieses Skript wird ein chroot(8) in das Abbild
durchführen und den angegebenen Befehl ausführen.
Zusätzlich zum chroot(8) in das Abbild wird es auch
verschiedene Dateien und Verzeichnisse in das Abbild einhängen
($SRCDIR, $DESTDIR,
$BUILDDIR, $OUTPUTDIR,
$CHROOT_SCRIPT) und die entsprechenden
Umgebungsvariablen ändern, um auf die Orte innerhalb des Abbilds zu
zeigen. Es wird auch APIVFS-Dateisysteme einhängen
(/proc, /dev, …),
um sicherzustellen, dass in der Chroot ausgeführte Skripte und
Werkzeuge korrekt funktionieren. Falls erbeten leitet es auch
/etc/resolv.conf vom Wirt in die Chroot weiter, so
dass DNS-Auflösung innerhalb der Chroot funktioniert. Nachdem sich
der Befehl mkosi-chroot beendet, werden verschiedene
Einhängepunkte bereinigt.
Verwenden Sie beispielsweise folgendes, um ls(1) innerhalb
des Abbilds aufzurufen:
-
mkosi-chroot ls …
Um das gesamte Skript innerhalb des Abbildes auszuführen,
fügen Sie die Endung .chroot zu dem Namen
hinzu (mkosi.build.chroot anstatt
mkosi.build, usw.).
- •
- Für alle unterstützten Paketverwalter (dnf,
rpm(8), apt(8), dpkg(1), pacman(8),
zypper(8)) werden Skripte mit dem gleichen Namen in
$PATH abgelegt, um sicherzustellen, dass diese
Befehle auf dem Wurzelverzeichnis des Abbildes mit der vom Benutzer
bereitgestellten Konfiguration anstelle auf dem Wirtsystem agieren. Dies
bedeutet, dass Sie aus einem Skript z.B. dnf install
vim durchführen können, um Vim in das Abbild zu
installieren.
Zusätzlich werden mkosi-install,
mkosi-reinstall,
mkosi-upgrade und
mkosi-remove die entsprechende Aktion des
Paketverwalters, der zum Baus des Abbilds verwandt wird, aufrufen.
- •
- git(1) wird automatisch mit
safe.directory=* aufgerufen, um
Berechtigungsfehler bei der Ausführung als Benutzer root in einem
Benutzernamensraum zu vermeiden.
- •
- Beim Aufruf außerhalb des Abbildes werden useradd(8) und
groupadd(8) automatisch mit
--root=$BUILDROOT aufgerufen.
Wenn Skripte ausgeführt werden, werden alle noch
schreibbaren Verzeichnisse schreibgeschützt gemacht
(/home, /var,
/root, …) und nur die minimale Menge an
Verzeichnissen, die schreibbar bleiben müssen, bleiben schreibbar.
Dies dient dazu sicherzustellen, dass die Skripte nicht das Wirtsystem
durcheinander bringen können, wenn mkosi als Root
ausgeführt wird.
Beachten Sie, dass alle Quellverzeichnisse bei der
Ausführung der Skripte flüchtig werden, was bedeutet, das alle
Änderungen an den Quellverzeichnissen während der
Ausführung der Skripte verworfen werden, wenn die Skripte mit der
Ausführung fertig sind. Verwenden Sie die Ausgabe-, Bau- oder
Zwischenspeicherverzeichnisse, falls Sie Daten zwischen Bauten weiternutzen
wollen.
Um den Bau von Abbildern für Entwicklungsversionen Ihrer
Projekte zu erleichtern, kann mkosi Konfigurationsdaten aus dem
lokalen Verzeichnis unter der Annahme, dass es im einen Quell-Baum
aufgerufen wurde, lesen. Insbesondere werden die folgenden Dateien verwandt,
falls sie im lokalen Verzeichnis existieren:
- •
- Das Verzeichnis mkosi.skeleton/ oder das
Archiv mkosi.skeleton.tar können zum
Einfügen von Dateien in das Abbild verwandt werden. Die Dateien
werden vor der Installation der Distributionspakete in das Abbild
kopiert. Dies ermöglicht die frühe Bereitstellung von
Dateien, beispielsweise zur Konfiguration des Paketverwalters oder um
Systemd-Voreinstellungen zu setzen.
Bei der Verwendung des Verzeichnisses werden
Dateieigentümerschaften nicht erhalten: alle kopierten Dateien werden
root gehören. Um Eigentümerschaften beizubehalten, verwenden
Sie ein Tar-Archiv.
- •
- Das Verzeichnis mkosi.extra/ oder das
Archiv mkosi.extra.tar können zum
Einfügen zusätzlicher Dateien in das Abbild verwandt werden,
ergänzend zu den Inhalten der Distributionen. Sie sind
ähnlich zu mkosi.skeleton/ und
mkosi.skeleton.tar, aber die Dateien werden in den
Verzeichnisbaum des Abbildes kopiert, nachdem das Betriebssystem
installiert wurde.
Bei der Verwendung des Verzeichnisses werden
Dateieigentümerschaften nicht erhalten: alle kopierten Dateien werden
root gehören. Um Eigentümerschaften beizubehalten, verwenden
Sie ein Tar-Archiv.
- •
- Das Verzeichnis mkosi.sandbox/ oder das
Archiv mkosi.sandbox.tar können zur
Konfiguration des Paketverwalters verwandt werden, ohne dass diese Dateien
in das Abbild eingefügt werden. Falls die Dateien in das Abbild
eingefügt werden sollten, sollte stattdessen
mkosi.skeleton/ und
mkosi.skeleton.tar verwandt werden.
Bei der Verwendung des Verzeichnisses werden
Dateieigentümerschaften nicht erhalten: alle kopierten Dateien werden
root gehören. Um Eigentümerschaften beizubehalten, verwenden
Sie ein Tar-Archiv.
- •
- Die Nspawn-Einstellungsdatei mkosi.nspawn
wird an den gleichen Ort wie die Ausgabeabbilddatei kopiert, falls sie
existiert. Dies ist nützlich, da Nspawn nach Einstellungsdateien
neben den von ihm gestarteten Abbildern nach zusätzlichen
Container-Laufzeiteinstellungen sucht.
- •
- Das Verzeichnis mkosi.cache/ wird
automatisch als Paket-Herunterlade-Zwischenspeicher verwandt, falls es
existiert, um wiederholte Läufe des Werkzeugs zu
beschleunigen.
- •
- Das Verzeichnis mkosi.builddir/ wird
automatisch als Bauverzeichnis außerhalb des Quellbaums verwandt,
falls es existiert und falls die Baubefehle in den Skripten
mkosi.build dies unterstützen. Insbesondere
wird dieses Verzeichnis in den Bau-Container eingehängt und die
Umgebungsvariable $BUILDDIR darauf gesetzt, wenn
die Bauskripte aufgerufen werden. Ein Bauskript kann dann dieses
Verzeichnis als Bauverzeichnis verwenden, für automake(1)-
oder ninja(1)-artige Bauten außerhalb des Quellbaums. Dies
beschleunigt den Bau deutlich, insbesondere wenn mkosi im
inkrementellen Modus (-i) verwandt wird; nicht nur
das Abbild und die Bau-Überlagerung, sondern auch der Baubaum wird
zwischen nachfolgenden Aufrufen wiederverwandt. Beachten Sie, dass die
Umgebungsvariable $BUILDDIR nicht gesetzt wird,
falls dieses Verzeichnis nicht existiert und es den Bauskripten
überlassen bleibt zu entscheiden, ob im Quellbaum oder
außerhalb des Quellbaums gebaut und welches Verzeichnis verwandt
wird.
- •
- Die Datei mkosi.rootpw kann zur
Bereitstellung des Passworts für den Benutzer root des Abbildes
verwandt werden. Falls dem Passwort hashed:
vorangestellt ist, wird es als bereits gehashtes Paswort betrachtet. Dem
Passwort darf optional ein Zeilenumbruchzeichen folgen, das implizit
entfernt wird. Die Datei muss den Zugriffsmodus 0600 oder geringer haben.
Falls diese Datei nicht existiert, wird das Vorgabepasswort der
Distribution gesetzt (normalerweise bedeutet dies, dass der Zugriff auf
den Benutzer root blockiert ist).
- •
- Die Datei mkosi.passphrase stellt die
Passphrase bereit, die bei der Auswahl der LUKS-Verschlüsselung
verwandt werden soll. Sie sollte die Passphrase wortwörtlich
enthalten und nicht auf einem Zeilenumbruch enden (d.h. im gleichen Format
wie cryptsetup(8) und /etc/crypttab die
Passphrasendatei erwarten). Die Datei muss den Zugriffsmodus 0600 oder
geringer haben.
- •
- Die Dateien mkosi.crt und
mkosi.key enthalten ein X.509-Zertifikat
und den privaten PEM-Schlüssel, die verwandt werden, wenn
Signaturen benötigt werden (UEFI SecureBoot, Verity,
…).
- •
- Das Verzeichnis mkosi.output/ wird zum
Speichern aller Bauartefakte verwandt.
- •
- Das Verzeichnis mkosi.credentials/ wird als
Quelle zusätzlicher Zugangsberechtigungen ähnlich zu der
Option Credentials= verwandt. Für jede
Datei in dem Verzeichnis wird der Dateiname als Zugangsberechtigungsname
verwandt und die Dateiinhalte werden der Zugangsberechtigungswert oder,
falls die Datei ausführbar ist, wird mkosi die Datei
ausführen und die Ausgabe auf der Standardausgabe wird als
Zugangsberechtigungswert verwandt. Die Ausgabe auf der
Standardfehlerausgabe wird ignoriert. Mit
Credentials= konfigurierte Zugangsberechtigungen
haben Vorrang vor Dateien in
mkosi.credentials.
- •
- Das Verzeichnis mkosi.repart/ wird als
Quelle für systemd-repart(8)-Partitionsdefinitionsdateien
verwandt, die an systemd-repart(8) beim Bau eines Abbilds
übergeben werden. Falls es nicht existiert und die Einstellung
RepartDirectories= nicht konfiguriert ist, wird
mkosi folgende Partitionsdefinitionsdateien als Voreinstellung
verwenden:
00-esp.conf (falls ein startfähiges
Abbild erstellt wird):
-
[Partition]
Type=esp
Format=vfat
CopyFiles=/boot:/
CopyFiles=/efi:/
SizeMinBytes=512M
SizeMaxBytes=512M
05-bios.conf (falls ein
BIOS-startfähiges Abbild erstellt wird):
-
[Partition]
# UUID der Grub-BIOS-Systemstartpartition, die Grub bei GPTs benötigt,
# um sich selbst dort einzubetten.
Type=21686148-6449-6e6f-744e-656564454649
SizeMinBytes=1M
SizeMaxBytes=1M
10-root.conf
-
[Partition]
Type=root
Format=<Standarddateisystem-der-Distribution>
CopyFiles=/
Minimize=guess
Beachten Sie, dass keine der Vorgabe-Partitionsdefinitionen
verwandt wird, falls entweder mkosi.repart/ gefunden
oder RepartDirectories= verwandt wird.
Alle diese Dateien sind optional.
Beachten Sie, dass der Ort aller dieser Dateien auch mittels
Aufruf von Befehlszeilenschaltern und als Einstellungen in
mkosi.conf konfiguriert werden kann, falls
für ein Projekt die Vorgabeeinstellungen nicht akzeptabel sind.
mkosi unterstützt drei verschiedene Zwischenspeicher
zur Beschleunigung von wiederholenden Neubauten von Abbildern. Konkret:
- 1.
- Der Paketzwischenspeicher des Paketverwalters der Distribution kann
zwischen Bauten zwischengespeichert werden. Dies wird mit der Option
--cache-directory= oder dem Verzeichnis
mkosi.cache/ konfiguriert. Diese Form des
Zwischenspeicherns verlässt sich auf den Paketverwalter der
Distribution und speichert Distributionspakete (RPM, DEB, …) nach
ihrem Herunterladen, aber bevor sie entpackt werden, zwischen.
- 2.
- Falls mittels --incremental der inkrementelle
Modus aktiviert ist, werden zwischengespeicherte Kopien des
abschließenden Abbildes und Bauüberlagerungen erstellt,
direkt vor dem Hereinkopieren der Bauquellen (für
Bau-Überlagerungen) oder vor dem Hereinkopieren von durch
mkosi.build erstellten Artefakten (für das
abschließende Abbild). Diese Art der Zwischenspeicherung erlaubt
das Umgehen des zeitaufwändigen Schritts des Paket-Entpackens der
Distributions-Paketverwalter, ist aber nur wirksam, falls die Liste der zu
verwendenden Pakete stabil bleibt, sich die Bauquellen und deren Skripte
aber regelmäßig ändern. Beachten Sie, dass dieser
Zwischenspeicher manuell geleert werden muss: immer, wenn die Paketliste
geändert wird, müssen die zwischengespeicherten Abbilder
manuell vor dem nächsten Neubau mittels des Schalters
-f entfernt werden.
- 3.
- Schließlich können zwischen mehreren Bauten das Verzeichnis
der Bauartefakte mittels des Verzeichnisses
mkosi.builddir/ gemeinsam verwandt werden. Dieses
Verzeichnis ermöglicht es Systemen wie Meson, bereits kompilierte
Quellen aus einem vorherigen Bau zu verwenden und damit den Bauprozess
eines Bauskriptes mkosi.build zu
beschleunigen.
Der Paketzwischenspeicher und der inkrementelle Modus sind in
jedem Fall nützlich. Der abschließende Zwischenspeicher ist
nur anwendbar, wenn mkosi mit einem Quellbaum und Bauskript verwandt
wird. Sind alle drei zusammen aktiviert, dann ist die Durchlaufzeit
für Abbildbauten minimal, da nur die Quelldateien neu kompiliert
werden müssen.
Falls das Verzeichnis mkosi.images/
existiert, wird mkosi einzelne Unterabbild-Konfigurationen daraus
laden und jede davon bauen. Abbildkonfigurationen können entweder
Verzeichnisse sein, die mkosi-Konfigurationsdateien enthalten, oder
reguläre Dateien mit der Erweiterung
.conf.
Wenn Abbildkonfigurationen in
mkosi.images/ gefunden werden, wird mkosi die
in den Einstellungen Dependencies= des Hauptabbilds
festgelegten Abbilder und alle ihre Abhängigkeiten (oder alle davon,
falls keine Abbilder explizit mit Dependencies= in
der Hauptabbildkonfiguration konfiguriert wurden) bauen. Um
Abhängigkeiten zwischen Unterabbildern hinzuzufügen, kann auch
die Einstellung Dependencies= verwandt werden.
Unterabbilder werden immer vor dem Hauptabbild gebaut.
Wenn Abbilder definiert sind, wird mkosi zuerst die
Hauptabbildkonfiguration (Konfiguration außerhalb des Verzeichnisses
mkosi.images/) einlesen, gefolgt von der
Abbild-spezifischen Konfiguration. Mehrere »allgemeine«
Einstellungen gelten für das Hauptabbild und seine Unterabbilder und
können für Unterabbilder nicht separat konfiguriert werden.
Die folgenden Einstellungen sind allgemein und können in
Unterabbildern nicht konfiguriert werden:
- •
- Architecture=
- •
- BuildDirectory=
- •
- BuildSources=
- •
- BuildSourcesEphemeral=
- •
- CacheDirectory=
- •
- CacheOnly=
- •
- Distribution=
- •
- ExtraSearchPaths=
- •
- Incremental=
- •
- LocalMirror=
- •
- Mirror=
- •
- OutputDirectory=
- •
- OutputMode=
- •
- PackageCacheDirectory=
- •
- PackageDirectories=
- •
- Profiles=
- •
- ProxyClientCertificate=
- •
- ProxyClientKey=
- •
- ProxyExclude=
- •
- ProxyPeerCertificate=
- •
- ProxyUrl=
- •
- Release=
- •
- RepartOffline=
- •
- Repositories=
- •
- RepositoryKeyCheck=
- •
- SandboxTrees=
- •
- SourceDateEpoch=
- •
- ToolsTree=
- •
- ToolsTreeCertificates=
- •
- UseSubvolumes=
- •
- SecureBootCertificate=
- •
- SecureBootCertificateSource=
- •
- SecureBootKey=
- •
- SecureBootKeySource=
- •
- VerityCertificate=
- •
- VerityCertificateSource=
- •
- VerityKey=
- •
- VerityKeySource=
- •
- SignExpectedPcrCertificate=
- •
- SignExpectedPcrCertificateSource=
- •
- SignExpectedPcrKey=
- •
- SignExpectedPcrKeySource=
- •
- VolatilePackageDirectories=
- •
- WithNetwork=
- •
- WithTests
- •
- WorkspaceDirectory=
Es gibt auch Einstellungen, die an Unterabbilder weitergegeben
werden, aber außer Kraft gesetzt werden können. Für
diese Einstellungen haben Werte, die explizit im Unterabbild konfiguriert
werden Vorrang vor Werten, die auf der Befehlszeile oder in der
Konfiguration des Hauptabbildes konfiguriert werden. Derzeit werden die
folgenden Einstellungen an Unterabbilder weitergegeben, können dort
aber außer Kraft gesetzt werden:
- •
- ImageId=
- •
- ImageVersion=
- •
- SectorSize=
Abbilder können sich auf Ausgaben von Abbildern beziehen,
von denen sie abhängen. Insbesondere wird mkosi für die
folgenden Optionen nur prüfen, ob die Eingabe genau vor dem Bau des
Abbildes existiert:
- •
- BaseTrees=
- •
- ExtraTrees=
- •
- Initrds=
Um sich auf die Ausgaben von den Abhängigkeiten eines
Abbildes zu beziehen, konfigurieren Sie einfach jede dieser Optionen mit
einem relativen Pfad zu der zu verwendenden Ausgabe in dem
Ausgabeverzeichnis der Abhängigkeit. Oder verwenden Sie den
Kennzeichner %O, um sich auf das Ausgabeverzeichnis
zu beziehen.
Ein gutes Beispiel, wie mehrere Abbilder gebaut werden
können, kann in dem Depot von
Systemd
gefunden werden.
- •
- $MKOSI_LESS setzt Optionen für
less(1) außer Kraft, wenn es durch mkosi zur
seitenweisen Darstellung der Ausgabe verwandt wird.
- •
- $MKOSI_DNF kann dazu verwandt werden, das als
dnf verwandte Programm außer Kraft zu setzen. Diese ist
besonders für die Auswahl zwischen dnf und dnf5
nützlich.
- •
- $EPEL_MIRROR kann zum Außerkraftsetzen des
Ortes des Standard-Spiegels für das Epel-Depot verwandt werden,
wenn Mirror= eingesetzt wird.
Standardmäßig schaut mkosi nach dem Epel-Depot im
Unterverzeichnis fedora des Elternverzeichnisses
des in Mirror= festgelegten Spiegels. Falls der
Spiegel beispielsweise auf
https://mirror.net/centos-stream gesetzt ist, wird
mkosi nach dem Epel-Depot in
https://mirror.net/fedora/epel suchen.
- •
- SYSEXT_SCOPE und
CONFEXT_SCOPE können zum
Außerkraftsetzen des Vorgabewertes der entsprechenden Datei
extension-release beim Bau einer Systemerweiterung
oder Konfigurationserweiterung verwandt werden.
Standardmäßig wird der Wert auf initrd
system portable gesetzt.
Ein rohes GPT-Abbild mit ext4(5) als
image.raw erstellen und ausführen:
-
# mkosi -p systemd --incremental boot
Ein startfähiges GPT-Abbild als
foobar.raw erstellen und ausführen:
-
$ mkosi -d fedora -p kernel-core -p systemd -p systemd-boot -p udev -o foobar.raw
# mkosi --output foobar.raw boot
$ mkosi --output foobar.raw vm
Ein »Fedora Linux«-Abbild in einem einfachen
Verzeichnis erstellen und ausführen:
-
# mkosi --distribution fedora --format directory boot
Ein komprimiertes Abbild image.raw.xz mit
installiertem SSH erstellen und eine Prüfsummendatei
hinzufügen:
-
$ mkosi --distribution fedora --format disk --checksum --compress-output --package=openssh-clients
Innerhalb eines Quellverzeichnis eines
automake(1)-basierenden Projekts mkosi so konfigurieren, dass
der einfache Aufruf von mkosi ohne Parameter ein Betriebssystemabbild
erstellt, das eine gebaute Version des Projekts in seinem aktuellen Zustand
enthält:
-
$ cat >mkosi.conf <<EOF
[Distribution]
Distribution=fedora
[Output]
Format=disk
[Content]
Packages=kernel,systemd,systemd-udev,openssh-clients,httpd
BuildPackages=make,gcc,libcurl-devel
EOF
$ cat >mkosi.build <<EOF
#!/bin/sh
if [ "$container" != "mkosi" ]; then
exec mkosi-chroot "$CHROOT_SCRIPT" "$@"
fi
cd $SRCDIR
./autogen.sh
./configure --prefix=/usr
make -j `nproc`
make install
EOF
$ chmod +x mkosi.build
# mkosi --incremental boot
# systemd-nspawn -bi image.raw
Die leichteste Art, eine virtuelle Maschine zu starten, ist ein
Abbild mit den benötigten Komponenten zu bauen und mkosi
qemu mit allen korrekten Optionen aufzurufen:
-
$ mkosi -d fedora \
--autologin \
-p systemd-udev,systemd-boot,kernel-core \
build
$ mkosi -d fedora vm
…
fedora login: root (automatic login)
[root@fedora ~]#
Standardmäßig wird nur mit einer Textkonsole
gestartet. In diesem Modus verwenden Meldungen vom Systemstartprogramm, dem
Kernel und systemd(1) und später die
getty(8)-Anmeldeaufforderung und die Shell das gleiche Terminal. Ein
Umschalten zwischen der qemu-Konsole und dem
Überwachungsprogramm ist durch Eingabe von Strg-a
c möglich. Das qemu-Überwachungsprogramm kann
beispielsweise zum Einschleusen bestimmter Tastendrücke oder zum
schnellen Herunterfahren der Maschine verwandt werden. Alternativ kann die
Maschine mittels Strg-a x heruntergefahren
werden.
Um mit einem graphischen Fenster zu starten, fügen Sie
--console=gui hinzu:
-
$ mkosi -d fedora --console=gui qemu
Ein Kernel kann direkt durch mkosi vm -kernel
… -initrd … -append '…'
gestartet werden. Dies ist ein bisschen schneller, da kein
Systemstartprogramm verwandt wird und es ist auch leichter, mit
verschiedenen Kerneln und Kernel-Befehlszeilen zu experiementieren. Beachten
Sie, dass trotz seines Namens die Option -append von
qemu die im Kernel eingebettete Standardbefehlszeile und
sämtliche vorherige Angaben von -append
ersetzt.
Das UKI wird auch in das Ausgabeverzeichnis kopiert und kann
direkt gestartet werden:
-
$ mkosi vm -kernel mkosi.output/fedora~38/image.efi
Beim Systemstart unter Verwendung eines externen Kernels wird der
Kernel nicht in dem Abbild benötigt, aber die Kernelmodule
sollten installiert sein.
Es ist auch möglich, einen direkten
Kernelsystemstart in ein Systemstartprogramm durchzuführen. Dabei
wird ausgenutzt, dass systemd-boot(7) ein gültiges
UEFI-Programm ist:
-
$ mkosi vm -kernel /usr/lib/systemd/boot/efi/systemd-bootx64.efi
In diesem Szenario wird der Kernel aus dem ESP mittels
systemd-boot(7) geladen.
mkosi wird für verschiedene Distributionen
paketiert: Debian, Kali, Ubuntu, Arch Linux, Fedora Linux, OpenMandriva,
Gentoo. Beachten Sie, dass seit der letzten Veröffentlichung einige
Zeit vergangen ist und die von den Distributionen ausgelieferten Pakete
stark veraltet sind. Daher wird derzeit empfohlen, mkosi aus Git
heraus auszuführen, bis eine neue Veröffentlichung
stattfand.
mkosi benötigt einen Kernel, der
mount_setattr() bereitstellt, was in 5.12.
eingeführt wurde.
mkosi benötigt derzeit Systemd 254, um
startfähige Plattenabbilder zu bauen.
Werden keine Distributionspakete verwandt, müssen Sie
sicherstellen, dass die notwendigen Abhängigkeiten installiert sind.
Unter Fedora Linux benötigen Sie beispielsweise:
-
# dnf install btrfs-progs apt dosfstools mtools edk2-ovmf e2fsprogs squashfs-tools gnupg python3 tar xfsprogs xz zypper sbsigntools
Unter Debian/Kali/Ubuntu könnte es notwendig sein, die
Pakete ubuntu-keyring,
ubuntu-archive-keyring,
kali-archive-keyring und/oder
debian-archive-keyring explizit zu installieren,
zusätzlich zu apt(8), abhängig davon, was für
eine Art von Distributionsabbildern Sie bauen möchten.
Beachten Sie, dass die minimal notwendige Python-Version 3.9
ist.
mkosi benötigt unbeschränkte
Möglichkeiten, Namensräume zu erstellen und darin zu agieren.
Einige Distributionen beschränken die Erstellung von oder
Capabilities in Benutzernamensräumen, wodurch mkosi nicht
richtig funktioniert.
Für Informationen zu Ubuntu, das solche
Einschränkungen mittels AppArmor implementiert, siehe
https://ubuntu.com/blog/ubuntu-23-10-restricted-unprivileged-user-namespaces.
Für andere Systeme, untersuchen Sie die Sysctls
kernel.unprivileged_userns_clone oder
user.max.user_namespace.
Für Ubuntu können Sie die Beschränkung
für mkosi aufheben, indem Sie den nachfolgendne Schnippsel
anpassen, dass er auf Ihr Programm mkosi zeigt, ihn nach
/etc/apparmor.d/pfad.zu.mkosi kopieren und dann
systemctl reload apparmor ausführen:
-
abi <abi/4.0>,
include <tunables/global>
/pfad/zu/mkosi flags=(default_allow) {
userns,
}
- •
- Warum funktioniert auf Debian/Kali/Ubuntu KVM mit mkosi
vm nicht?
Während es bei anderen Distributionen kein Problem gibt,
auf /dev/kvm zuzugreifen, ist es unter
Debian/Kali/Ubuntu nur für Benutzer in der Gruppe
kvm erlaubt. Da mkosi einen
Benutzernamensraum beim Betrieb ohne Privilegien abtrennt, verliert es den
Zugriff auf die Gruppe kvm, selbst wenn der
aufrufende Benutzer in der Gruppe kvm war, denn zum Zeitpunkt, zu dem
qemu gestartet wird, gibt es auf /dev/kvm
keinen Zugriff mehr. Um das zu umgehen, können Sie die Berechtigungen
auf den Geräteknoten auf 0666 ändern,
was ausreicht, damit KVM ohne Privilegien funktioniert. Damit diese
Änderungen über Neustarts hinweg erhalten bleibt, kopieren Sie
/usr/lib/tmpfiles.d/static-nodes-permissions.conf
nach /etc/tmpfiles.d/static-nodes-permissions.conf
und ändern Sie den Modus von /dev/kvm von
0660 auf 0666.
- •
- Wie füge ich zu einem Abbild einen normalen Benutzer hinzu?
Sie können den nachfolgenden Schnipsel in ein
post-installation-Skript hinzufügen:
-
useradd --create-home --user-group $USER --password "$(openssl passwd -stdin -6 <$USER_PASSWORD_FILE)"
Beachten Sie, dass seit Systemd v256
systemd-homed-firstboot.service(1) die Erstellung eines normalen
Benutzers beim ersten Systemstart anfragt, falls es aktiviert ist und keine
normalen Benutzer existieren.
- •
- Warum sehe ich beim Bau von Abbildern Fehler beim chown(1) von
Dateien?
Erfolgt die Ausführung nicht als Root, kann Ihr Benutzer
keine Eigentümerschaft von Dateien für beliebige
Eigentümer ändern. Verschiedene Distributionen liefern immer
noch Dateien in ihren Paketen aus, die nicht dem Benutzer root
gehören. Erfolgt die Ausführung nicht als Root, bildet
mkosi den aktuellen Benutzer beim Aufruf des Paketverwalters auf root
ab, was bedeutet, dass die Änderung der Eigentümerschaft auf
root funktionieren wird, aber die Änderung der
Eigentümerschaft auf jeden anderen Benutzer oder jede andere Gruppe
fehlschlagen wird.
Beachten Sie, dass die Aufrufe von chown(1) nur bei der
Ausführung von Paketverwaltern unterdrückt werden, aber nicht
bei der Ausführung von Skripten. Falls dies z.B. für
ein Bauskript benötigt wird, können Sie die Variable
MKOSI_CHROOT_SUPPRESS_CHOWN auf den Wert true
(1, yes,
true) setzen, um die Aufrufe von chown(1) in
den Skripten mkosi-chroot und .chroot zu
unterdrücken.
Falls dieses Verhalten dazu führt, dass sich in Ihrem
Abbild betriebene Anwendungen nicht korrekt verhalten, könnten Sie
mkosi als Root ausführen, wodurch dieses Problem vermieden
wird. Falls der Betrieb von mkosi als Root nicht gewünscht
ist, können Sie alternativ unshare --map-auto
--map-current-user --setuid 0 --setgid 0 verwenden, um Root in einem
Benutzernamensraum mit mehr als einem Benutzer zu werden, unter der Annahme,
dass die UID/GID-Abbildungen in /etc/subuid und
/etc/subgid korrekt konfiguriert sind. Beachten Sie,
dass der Betrieb von mkosi als Root oder mit
unshare bedeutet, dass alle von mkosi
erzeugten Ausgabedateien nicht mehr ihrem aktuellen Benutzer
gehören.
Für systemd(1)-Dienste, die Verzeichnisse in
/var benötigen, die dem Benutzer und der
Gruppe des Dienstes gehören können diese Verzeichnisse in
Paketen ausgeliefert oder mittels systemd-tmpfiles(8) erstellt
werden. Beachten Sie, das die Verwendung von
StateDirectory=,
CacheDirectory= oder
LogsDirectory= in der Dienstedatei eine Alternative
dazu darstellt. Dies weist systemd(1) an, die Verzeichnisse zu
erstellen, wenn es erstmalig den Dienst startet.
Alternativ können die Direktiven z
oder Z für systemd-tmpfiles(8)
verwandt werden, um verschiedene Verzeichnisse und Dateien mittels
chown(1) auf den Eigentümer umzuschreiben, wenn das System
erstmalig startet.
- •
- Warum sagt portablectl inspect
<Abbild>/systemd-dissect
<Abbild> das mein portierbarer Dienst gar keiner sei?
systemd-dissect(1) und portablectl
inspect prüfen auf PORTABLE_PREFIXES=
in os-release(5) und erkennen den portierbaren Dienst nicht als
solchen, wenn der Schlüssel fehlt. Es wird dann ein x unter Use
as im Falle von systemd-dissect(1) oder
n/a unter Portable Service für
portablectl(1) angezeigt.
Da es keine gute Voreinstellung für diesen Schlüssel
gibt und das erstellte portierbare Diensteabbild sich weiterhin korrekt
anhängt, selbst wenn der Schlüssel nicht gesetzt ist, wird
mkosi keinen setzen.
Sie können in der Datei os-release(5) selbst in
einem Postinst-Skript PORTABLE_PREFIXES= setzen.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von
Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU General
Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite
finden, schicken Sie bitte eine E-Mail an die Mailingliste der
Übersetzer:
debian-l10n-german@lists.debian.org.