UKIFY(1)

BEZEICHNUNG
ukify - Kernel und Initrd in ein einziges, vereinigtes Kernelabbild kombinieren

ÜBERSICHT

/usr/lib/systemd/ukify LINUX INITRD… [OPTIONEN…]

BESCHREIBUNG

Hinweis: Dieser Befehl ist derzeit experimentell. Es ist zwar geplant, dass er eine normale Komponente von Systemd wird, aber sein Verhalten und seine Schnittstellen können sich noch ändern.

ukify ist ein Werkzeug, das einen Kernel und eine Initrd mit einem UEFI-Startrumpf kombiniert, um ein Vereinigtes Kernelabbild (UKI)[1] zu erstellen – ein PE-Programm, das durch die Firmware ausgeführt werden kann, um einen eingebetteten Linux-Kernel zu starten. Siehe systemd-stub(7) für Details über den Rumpf.

Es werden zusätzliche Abschnitte in den UKI eingefügt, entweder automatisch oder nur falls eine bestimmte Option bereitgestellt wird. Siehe die nachfolgende Besprechung von --cmdline=, --os-release=, --devicetree=, --splash=, --pcrpkey=, --uname= und --section=.

Falls über die Optionen --pcr-public-key= und --pcr-private-key= PCR-Signierschlüssel bereitgestellt werden, werden PCR-Werte, die nach dem Systemstart mit dem angegebenen Kernel, der Initrd und anderen Abschnitten auftauchen, berechnet, signiert und in das UKI eingebettet. Diese Berechnung und Signatur erfolgt mit systemd-measure(1).

Die Berechnung von PCR-Werten erfolgt für bestimmte Systemstartphasenpfade. Diese können mit der Option --phases= angegeben werden. Falls nicht angegeben, wird die von systemd-measure(1) bereitgestellte Vorgabe verwandt. Es ist auch möglich, die Argumente --pcr-private-key=, --pcr-public-key= und --phases= mehr als einmal anzugeben. Die Signaturen erfolgen dann mit jedem der angegebenen Schlüssel. Wird sowohl --phases= als auch --pcr-private-key= verwandt, müssen sie beide gleich häufig angegeben werden und der n-te Systemstartphasenpfad wird mit dem n-ten Schlüssel signiert. Dies kann zur Erstellung verschiedener Vertrauensrichtlinien für die verschiedenen Phasen des Systemstarts verwandt werden.

Falls ein SecureBoot-Signaturschlüssel über die Option --secureboot-private-key= bereitgestellt ist, wird das resultierende PE-Programm als Ganzes damit signiert. Damit wird ermöglicht, dass SecureBoot dem gesamten UKI vertraut. Siehe auch die Erläuterung der automatischen Registrierung in systemd-boot(7).

OPTIONEN

Beachten Sie, dass das positionsabhängige Argument LINUX verpflichtend ist. Die positionsabhängigen Argumente INITRD sind optional. Falls mehr als eines angegeben ist, werden sie alle in einen einzigen PE-Abschnitt kombiniert. Dies ist zum Beispiel nützlich, um der eigentlichen Initrd Microcode voranzustellen.

Die folgenden Optionen werden verstanden:

--cmdline=TEXT|@PFAD
    Gibt die Kernelbefehlszeile an (den Abschnitt ».cmdline«). Das Argument kann eine wörtliche Zeichenkette oder »@«, gefolgt von einem Pfadnamen, sein. Falls dies nicht angegeben ist, wird keine Befehlszeile eingebettet.

--os-release=TEXT|@PFAD
    Gibt die Betriebssystem-Veröffentlichungsbeschreibung an (den Abschnitt ».osrel«). Das Argument kann eine wörtliche Zeichenkette oder »@«, gefolgt von einem Pfadnamen, sein. Falls dies nicht angegeben ist, wird die Datei os-release(5) vom Rechnersystem genommen.

--devicetree=PFAD
    Gibt die Devicetree-Beschreibung an (den Abschnitt ».dtb«). Das Argument ist ein Pfad zu einer kompilierten binären DeviceTree-Datei. Falls dies nicht angegeben ist, wird der Abschnitt nicht vorhanden sein.

--splash=PFAD
    Gibt ein Bild an, das während des Systemstarts angezeigt werden soll (den Abschnitt ».splash«). Das Argument ist ein Pfad zu einer BMP-Datei. Falls dies nicht angegeben ist, wird der Abschnitt nicht vorhanden sein.

--pcrpkey=PFAD
    Gibt einen Pfad zu einem öffentlichen Schlüssel an, der im Abschnitt ».pcrpkey« eingebettet werden soll. Falls nicht angegeben und genau ein Argument --pcr-public-key= vorhanden ist, wird dieser Schlüssel verwandt. Andernfalls wird dieser Abschnitt nicht vorhanden sein.

--uname=VERSION
    Gibt die Kernelversion an (wie in uname -r, dem Abschnitt ».uname«). Falls nicht angegeben, wird versucht, die Versionszeichenkette aus dem Kernelabbild auszulesen. Es wird empfohlen, sie explizit zu übergeben, wenn sie bekannt ist, da das Auslesen auf Heuristiken basiert und nicht sehr zuverlässig ist. Falls nicht angegeben und das Auslesen fehlschlägt, wird der Abschnitt nicht vorhanden sein.

--section=NAME:TEXT|@PFAD
    Gibt einen beliebigen, zusätzlichen Abschnitt »NAME« an. Beachten Sie, dass der Name unverändert verwandt wird und den Punkt enthalten muss, falls der Abschnittsname mit einem Punkt beginnen soll. Das Argument kann eine wörtliche Zeichenkette oder @, gefolgt von einem Pfadnamen, sein. Diese Option kann mehr als einmal angegeben werden. Jeder auf diese Weise angegebene Abschnitt wird (in der Reihenfolge) vor dem Abschnitt ».linux«, der immer der letzte ist, eingefügt.

--pcr-private-key=PFAD
    Gibt einen privaten Schlüssel zum Signieren von PCR-Richtlinien an. Diese Option darf mehr als einmal angegeben werden. Dann werden mehrere Signaturen erstellt.

--pcr-public-key=PFAD
    Gibt einen öffentlichen Schlüssel zum Signieren von PCR-Richtlinien an. Diese Option darf mehr als einmal angegeben werden, ähnlich wie die Option --pcr-private-key=. Falls nicht vorhanden wird der öffentliche Schlüssel aus dem privaten Schlüsseln abgeleitet. Falls vorhanden, muss diese Option genauso oft wie die Option --pcr-private-key= angegeben werden.

--phases=LISTE
    Eine Kommata oder Leerraum-getrennte Liste von Doppelpunkt-getrennten Phasenpfaden, für die eine Richtlinie signiert werden soll. Falls nicht vorhanden wird die Vorgabe von systemd-measure(1) verwandt. Wenn dieses Argument vorhanden ist, muss es genauso oft wie die Option --pcr-private-key= auftauchen. Jede Gruppe und Systemstartphasenpfade wird mit dem entsprechenden privaten Schlüssel signiert.

--pcr-banks=PFAD
    Eine Kommata- oder Leerraum-getrennte Liste von PCR-Bänken, für die eine Richtlinie signiert werden soll. Falls nicht vorhanden, werden alle bekannten Bänke verwandt (»sha1«, »sha256«, »sha384«, »sha512«). Dies wird fehlschlagen, wenn das vom System nicht unterstützt wird.

--secureboot-private-key=SB_SCHLÜSSEL
    Ein Pfad zu einem privaten Schlüssel, der zum Signieren des resultierenden Programms verwandt wird. Falls die Option --signing-engine= verwandt wird, kann dies auch eine Engine-spezifische Festsetzung sein.

--secureboot-certificate=SB_ZERT
    Ein Pfad zu einem Zertifikat, das zum Signieren des resultierenden Programms verwandt wird. Falls die Option --signing-engine= verwandt wird, kann dies auch eine Engine-spezifische Festsetzung sein.

--signing-engine=ENGINE
    Eine »Engine« zum Signieren des resultierenden Programms. Diese Option wird derzeit unverändert an die Option --engine= von sbsign(1) weitergegeben.

--sign-kernel, --no-sign-kernel
    Setzt die Erkennung, ob das Linux-Programm selbst vor dem Einbetten in das kombinierte Abbild signiert werden soll, außer Kraft. Falls nicht angegeben, wird es signiert, falls ein SecureBoot-Signaturschlüssel über die Option --secureboot-private-key= bereitgestellt wird und das Programm noch nicht signiert wurde. Falls --sign-kernel angegeben wurde und das Programm bereits signiert wurde, wird die Signatur trotzdem angehängt.

--tools=VERZ
    Gibt eines oder mehrere Verzeichnisse mit Hilfswerkzeugen an. ukify wird zuerst in diesen Verzeichnissen nach Hilfswerkzeugen schauen und, falls sie dort nicht gefunden werden, sie auf die übliche Weise aus $PATH laden.

--measure, --no-measure
    Aktiviert oder deaktiviert einen Aufruf von systemd-measure(1), um vorberechnete PCR-Werte auszugeben. Standardmäßig falsch.

--output=DATEINAME
    Der Ausgabedateiname. Falls nicht angegeben, wird der Name des Arguments LINUX mit der Endung ».unsigned.efi« oder ».signed.efi« verwandt, abhängig davon, ob die Signatur für SecureBoot durchgeführt wurde.

-h, --help
    Zeigt einen kurzen Hilfetext an und beendet das Programm.

--version
    Zeigt eine kurze Versionszeichenkette an und beendet das Programm.

BEISPIELE

Beispiel 1. Minimaler Aufruf

    ukify \
          /lib/modules/6.0.9-300.fc37.x86_64/vmlinuz \
          /ein/Pfad/initramfs-6.0.9-300.fc37.x86_64.img \
          --cmdline='quiet rw'

Dies erstellt ein unsigniertes UKI ./vmlinuz.unsigned.efi.

Beispiel 2. Mit allem Schnickschnack

    /usr/lib/systemd/ukify \
          /lib/modules/6.0.9-300.fc37.x86_64/vmlinuz \
          early_cpio \
          /ein/Pfad/initramfs-6.0.9-300.fc37.x86_64.img \
          --pcr-private-key=pcr-private-initrd-key.pem \
          --pcr-public-key=pcr-public-initrd-key.pem \
          --phases='enter-initrd' \
          --pcr-private-key=pcr-private-system-key.pem \
          --pcr-public-key=pcr-public-system-key.pem \
          --phases='enter-initrd:leave-initrd enter-initrd:leave-initrd:sysinit \
                    enter-initrd:leave-initrd:sysinit:ready' \
          --pcr-banks=sha384,sha512 \
          --secureboot-private-key=sb.key \
          --secureboot-certificate=sb.cert \
          --sign-kernel \
          --cmdline='quiet rw rhgb'

Dies erstellt ein signiertes UKI ./vmlinuz.signed.efi. Der Initrd-Abschnitt enthält zwei aneinandergehängte Teile, early_cpio und initramfs-6.0.9-300.fc37.x86_64.img. Die in dem Abschnitt ».pcrsig« eingebettete Richtlinie wird für die Initrd mit dem Schlüssel pcr-private-initrd-key.pem signiert (die Phase enter-initrd) und für das Hauptsystem (Phase leave-initrd, sysinit, ready) mit dem Schlüssel pcr-private-system-key.pem. Das Linux-Programm und das resultierende kombinierte Abbild wird mit dem SecureBoot-Schlüssel sb.key signiert.

SIEHE AUCH

systemd(1), systemd-stub(7), systemd-boot(7), objcopy(1), systemd-pcrphase.service(1)

ANMERKUNGEN

1.  Vereinigtes Kernelabbild (UKI)
    https://uapi-group.org/specifications/specs/unified_kernel_image/

Ü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 (https://www.gnu.org/licenses/gpl-3.0.html) 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).