BEZEICHNUNG
systemd-repart, systemd-repart.service - Partitionen automatisch vergrößern und hinzufügenÜBERSICHT
systemd-repart
[OPTIONEN…] [ [BLOCKGERÄT]…]
systemd-repart.service
BESCHREIBUNG
Basierend auf den in repart.d(5) beschriebenen Konfigurationsdateien kann systemd-repart Partitionstabellen vergrößern und hinzufügen. Wird er ohne Argumente aufgerufen, dann agiert er auf dem Blockgerät, das dem Wurzeldateisystem des laufenden Betriebssystems zugrundeliegt, womit Partitionen des gestarteten Betriebssystemabbildes selbst vergrößert oder hinzugefügt werden. Falls --image= verwandt wird, wird er auf der festgelegten Abbild-Datei agieren. Beim Aufruf in der Initrd agiert es stattdessen auf das /sysroot/ zugrundeliegende Blockgerät, d.h. auf dem Blockgerät, auf das in Kürze übergeleitet wird. Der Dienst systemd-repart.service wird im Allgemeinen beim Systemstart in der Initrd ausgeführt, um die Partitionstabelle des Betriebssystems zu ergänzen, bevor deren Partitionen eingehängt werden. systemd-repart agiert (größtenteils) in einem reinen inkrementellen Modus: er vergrößert nur bestehende Partitionen oder fügt neue Partitionen hinzu; er verkleinert oder verschiebt keine Partitionen oder löscht diese. Der Dienst ist zur Ausführung bei jedem Systemstart gedacht; wenn er allerdings erkennt, dass die Partitionstabelle bereits den installierten Konfigurationsdateien repart.d/*.conf entspricht, führt es keine Aktion aus. systemd-repart ist für den Einsatz beim Ausbringen von Betriebssystemabbildern gedacht, um diese beim ersten Systemstart automatisch auf das System, auf dem sie betrieben werden, anzupassen. Damit können auszubringende Abbilder eine minimale Größe haben und bei Bedarf beim Systemstart automatisch ergänzt werden und von Plattenplatz Besitz ergreifen, der verfügbar ist, aber noch nicht verwandt wird. Insbesondere werden die folgenden Anwendungsfälle abgedeckt:•Die Wurzelpartition kann
vergrößert werden, um den gesamten verfügbaren
Plattenplatz zu belegen.
•Eine Partition für /home/, zur
Auslagerung oder /srv kann hinzugefügt werden.
•Eine zweite (oder dritte, …)
Wurzelpartition kann hinzugefügt werden, um A/B-artige Installationen
zu berücksichtigen, bei der eine zweite Version des Wurzeldateisystems
alternativ verwandt wird, um Aktualisierungsschemata zu implementieren. Das
verteilte Abbild würde nur eine einzelne Partition (»A«)
transportieren, bei einem ersten Systemstart würde eine zweite
Partition (»B«) für diesen Zweck automatisch
erzeugt.
Der von systemd-repart ausgeführte Algorithmus ist grob wie folgt:
1.Die repart.d/*.conf-Konfigurationsdateien
werden geladen und ausgewertet und nach Dateinamen sortiert (ohne das
Verzeichnispräfix). Für jede Konfigurationsdatei wird nach
Ergänzungsdateien in Verzeichnissen mit dem gleichen Namen wie die
Konfigurationsdatei mit ergänzter Endung ».d«
gesucht.
2.Die auf dem Blockgerät bereits
bestehende Partitionstabelle wird geladen und ausgewertet.
3.Die bestehenden Partitionen in der
Partitionstabelle werden mit den repart.d/*.conf-Dateien nach
GPT-Partitionstyp-UUID verglichen. Der ersten bestehenden Partition eines
bestimmten Typs wird die erste Konfigurationsdatei, die den gleichen Typ
angibt, zugewiesen. Dann wird die zweite bestehende Partition eines bestimmten
Typs der zweiten Konfigurationsdatei zugewiesen, die den gleichen Typ angibt
und so weiter. Nachdem diese iterative Zuweisung abgeschlossen ist, werden
alle verbliebenen bestehenden Partitionen, für die es keine passenden
Konfigurationsdateien gibt, als »fremd« betrachtet und
unverändert belassen. Jede Konfigurationsdatei, für die derzeit
keine Partition existiert, wird als Aufforderung verstanden, solch eine
Partition zu erstellen.
4.Unter Berücksichtigung der
Größenbeschränkungen und der in den Konfigurationsdateien
erklärten Gewichtungen werden alle Partitionen, die jetzt erstellt
werden sollen, auf der Platte zugeordnet, wobei sämtlicher freier Platz
unter Berücksichtigung der Größe und
Padding-Anforderungen belegt wird. Auf ähnliche Weise werden bestehende
Partitionen, die vergrößert werden sollen,
vergrößert. Neue Partitionen werden immer am Ende der
bestehenden Partitionstabelle unter Verwendung der ersten
Partitionstabellenpostion, deren Index größer als der
größte aller existierenden Partitionen ist, erstellt.
Partitionstabellenpositionen werden niemals neu sortiert, daher bleiben
Partitionsnummern stabil. Beachten Sie, dass diese Zuordnung
ausschließlich im Arbeitsspeicher passiert, die Partitionstabelle auf
der Platte wird noch nicht aktualisiert.
5.Allen bestehenden Partitionen, für
die Konfigurationsdateien existieren und für die derzeit noch keine
GPT-Partitionsbezeichnung gesetzt ist, wird eine Bezeichnung zugewiesen,
entweder explizit aus der Konfiguration heraus oder (falls das fehlt)
automatisch aus dem Partitionstyp abgeleitet. Das Gleiche erfolgt für
alle neu erstellten Partitionen. Diese Zuweisungen erfolgen auch
ausschließlich im Arbeitsspeicher, die Platte wird noch nicht
aktualisiert.
6.Ähnlich wird allen bestehenden
Partitionen, für die Konfigurationsdateien existieren und deren
kennzeichnende UUID derzeit komplett Null ist, eine neue UUID zugewiesen.
Diese UUID wird mittels eines kryptographischen Hashes aus einem gemeinsamen
Startwert zusammen mit der Partitionstyp-UUID (und einem Zähler, falls
mehrere Partitionen des gleichen Typs definiert sind) ermittelt, siehe unten.
Das Gleiche erfolgt für alle neu erstellten Partitionen. Diese
Zuweisungen erfolgen auch nur im Arbeitsspeicher, die Platte wird noch nicht
aktualisiert.
7.Falls die Laufwerks-UUID komplett Null ist,
wird diese auch ähnlich initialisiert, ebenfalls mittels
kryptographischen Hashes aus dem gleichen gemeinsamen Startwert. Dies erfolgt
auch nur im Arbeitsspeicher.
8.Der den neuen Partitionen zugewiesene
Plattenplatz (d.h. was bisher freier Platz war) wird gelöscht.
Insbesondere werden alle Dateisystemsignaturen entfernt und, falls das
Gerät dies untersützt, wird der E/A-Steuerbefehl
BLKDISCARD erteilt, um die Hardware zu informieren, dass der Platz nun
leer ist. Zusätzlich wird entsprechend sämtliches
»Padding« zwischen den Partitionen und dem Ende des
Geräts gelöscht.
9.Die neue Partitionstabelle wird
schließlich auf Platte geschrieben. Der Kernel wird gebeten, die
Partitionstabelle neu einzulesen.
Als Ausnahme zu der normalerweise streng inkrementellen Arbeitsweise kann
systemd-repart auch zum Löschen existierender Partitionen beim
Aufruf in einem besonderen Modus »Zurück auf
Werkseinstellung« verwandt werden, um die Installation zurück
auf die Vorgaben des Lieferanten zu setzen. Dieser Arbeitsmodus wird verwandt,
wenn entweder der Schalter --factory-reset=yes auf der Befehlszeile des
Werkzeugs übergeben wird oder die Aktion
systemd.factory_reset=yes auf der Kernelbefehlszeile übergeben
wird oder die EFI-Variable FactoryReset (Lieferanten-UUID
8cf2644b-4b0b-428f-9387-6d876050dc67) auf »yes« gesetzt
ist. Es ändert den obigen Algorithmus leicht: zwischen den obigen
Schritten Drei und Vier wird jede Partition, die explizit mit dem logischen
Wert FactoryReset= markiert ist, gelöscht, und der Algorithmus
neu gestartet, wodurch diese Partitionen erneut leer erstellt werden.
Beachten Sie, dass systemd-repart nur Partitionstabellen ändert,
es erstellt oder vergrößert keine Dateisysteme innerhalb dieser
Partitionen. Dafür sollte ein separater Mechanismus verwandt werden,
beispielsweise systemd-growfs(8) und systemd-makefs.
Der Hash-Wert der UUIDs, die die neu erstellten Partitionen kennzeichnen (oder
bestehenden Partitionen, die noch keine UUID hatten, zugewiesen wurden), sowie
der Platte als Ganzes, wird kryptographisch aus einem gemeinsamen Startwert
berechnet. Dieser Startwert ist normalerweise die machine-id(5) des
Systems, so dass die Maschinenkennung wiederholbar die allen Platten
zugewiesenen UUIDs bestimmt. Falls die Maschinenkennung nicht gelesen werden
kann (oder der Benutzer das nachfolgend beschriebene --seed=random
übergibt), wird der Startwert stattdessen zufällig erzeugt,
womit die Partitions-UUIDs letztendlich zufällig sind. Der Startwert
kann auch explizit gesetzt werden; dafür muss er als UUID über
die Option --seed= angegeben werden. Durch den Hash der UUIDs mit einem
gemeinsamen Startwert werden Abbilder, die mit diesem Werkzeug erstellt
werden, reproduzierbar und das Ergebnis des obigen Algorithmus wird
deterministisch.
Das Positionsargument sollte das Blockgerät angeben, auf dem agiert
werden soll. Es kann auch statt des Blockgeräteknotenpfades eine
reguläre Datei angegeben werden. Dann wird der Befehl darauf so
agieren, wie er es täte, wenn ein Loopback-Blockgeräteknoten mit
der angehängten Datei angegben worden wäre. Falls
--empty=create angegeben ist, dann wird der angegebene Pfad als
reguläre Datei erstellt, was für die Erstellung von
Plattenabbildern von Null auf nützlich ist.
OPTIONEN
Die folgenden Optionen werden verstanden: --dry-run=Akzeptiert einen logischen Wert. Falls der
Schalter nicht angegeben ist, ist --dry-run=yes die implizierte
Vorgabe. Steuert, ob Systemd-repart die erbetene Neupartitionierungsaktion
ausführt oder ob es nur anzeigen soll, was es machen würde. Die
Partitionstabelle des Gerätes wird nur angefasst, falls
--dry-run=no festgelegt ist.
--empty=
Akzeptiert entweder »refuse«,
»allow«, »require«, »force« oder
»create«. Steuert, wie auf komplett leeren Blockgeräten
agiert werden soll, d.h. solchen, die noch keine
Partitionstabelle/Plattenbezeichnung tragen. Falls dieser Schalter nicht
angegeben ist, ist »refuse« die implizite Vorgabe.
Falls »refuse«, verlangt systemd-repart, dass das
Blockgerät, auf dem es agieren soll, eine Partitionstabelle
trägt und lehnt die Aktion ab, falls keine gefunden wird. Falls
»allow«, wird der Befehl eine bestehende Partitionstabelle
erweitern oder eine neue erstellen, falls noch keine existiert. Falls
»require«, wird der Befehl eine neue Partitionstabelle
erstellen, falls noch keine existiert, und die Aktion ablehnen, falls bereits
eine existiert. Falls »force«, wird es bedingungslos eine
frische Partitionstabelle erstellen, wodurch die komplette Platte
gelöscht wird. Falls »force«, werden keine bestehenden
Partitionen berücksichtigt bzw. überleben diese Aktion. Somit:
Verwenden Sie dies vorsichtig, dies ist eine großartige
Möglichkeit, Ihre sämtlichen Daten zu verlieren. Falls
»create«, wird eine neue Loopback-Datei unterhalb des mit dem
Parameter Geräteknoten übergebenen Pfades erstellt, mit der mit
--size= angezeigten Größe, siehe unten.
--discard=
Akzeptiert einen logischen Wert. Falls dieser
Schalter nicht angegeben wird, ist --discard=yes die implizite Vorgabe.
Steuert, ob der E/A-Steuerbefehl BLKDISCARD für den Bereich, der
von hinzugefügten Partitionen belegt wird, oder dem Bereich dazwischen,
erteilt werden soll. Normalerweise ist es eine gute Idee, diese Anfrage zu
erteilen, da sie die zugrundeliegende Hardware informiert, dass die
betrachteten Blöcke als leer angenommen werden sollen, wodurch die
Leistung erhöht wird. Falls auf einer regulären Datei statt auf
einem Blockgeräteknoten agiert wird, dann wird eine Sparse-Datei
erstellt.
--size=
Akzeptiert eine Größe in Bytes
mittels der üblichen Endungen K, M, G, T oder den besonderen Wert
»auto«. Falls verwandt, muss der angegebene
Geräteknotenpfad sich auf eine reguläre Datei beziehen, die dann
auf die angegeben Größe vergrößert wird, falls sie
kleiner ist, bevor irgendwelche Änderungen an der Partitionstabelle
erfolgen. Falls als »auto« angegeben, wird die minimale
Größe für das Platten-Abbild automatisch bestimmt (d.h.
die minimale Größe aller Partitionen wird unter
Berücksichtigung des Platzbedarfs für zusätzliche
Metadaten aufsummiert). Dieser Schalter wird nicht unterstützt, falls
der angegebene Knoten ein Blockgerät ist. Dieser Schalter hat keinen
Effekt, falls die Datei bereits so groß wie oder größer
als die angegebene Größe ist. Die angegebene Größe
wird implizit auf Vielfache von 4096 aufgerundet. Wird dies zusammen mit
--empty=create verwandt, dann gibt dies die anfängliche
Größe der zu erstellenden Loopback-Datei an.
Die Option --size=auto berücksichtigt die Größe von
bereits existierenden Partitionen. Allerdings trägt sie
Partitionstabellen, die nicht eng gepackt sind, keine Rechnung: die
konfigurierten Partitionen könnten weiterhin nicht in das
zugrundeliegende Gerät passen, falls zwischen den bereits existierenden
Partitionen (oder vor der ersten Partition) leerer Platz existiert, der nicht
vollständig von zu erstellenden oder anzuwachsenden Partitionen
ausgefüllt werden kann.
Beachten Sie auch, dass die automatische Größenbestimmung keine
Dateien oder Verzeichnisse berücksichtigt, die mit CopyFiles=
angegeben sind: die Aktion könnte fehlschlagen, falls die angegebenen
Dateien oder Verzeichnisse mehr Plattenplatz benötigen, als für
die partitionsbezogenen minimalen Größenbegrenzung konfiguriert
ist.
--factory-reset=
Akzeptiert einen logischen Wert. Falls dieser
Schalter nicht angegeben wird, ist --factory=reset=no die implizite
Vorgabe. Steuert, ob im oben beschriebenen Modus »Zurück auf
Werkseinstellung« agiert werden soll. Falls auf wahr gesetzt, wird dies
alle bestehenden, mit FactoryReset= auf »yes« gesetzten
Partitionen früh entfernen, während der
Neupartitionierungsalgorithmus ausgeführt wird. Verwenden Sie dies
vorsichtig, dies ist eine großartige Möglichkeit, Ihre
sämtlichen Daten zu verlieren. Beachten Sie, dass Partitionsdateien
FactoryReset= explizit einschalten müssen, da die Option
standardmäßig ausgeschaltet ist. Falls keine Partitionen
für die Rückkehr in die Werkseinstellungen markiert sind, hat
dieser Schalter keine Auswirkungen. Beachten Sie, dass es zwei andere
Möglichkeiten gibt, die Aktion »Zurück auf
Werkseinstellung« zu erbitten: mittels der Kernelbefehlszeile oder
über eine EFI-Variable, siehe oben.
--can-factory-reset
Falls dieser Schalter angegeben ist, wird die
Platte nicht neupartitioniert. Stattdessen wird ermittelt, ob bestehende
Partitionen mit FactoryReset= markiert sind. Falls dies der Fall ist,
wird sich das Werkzeug mit einem Exit-Status 0 beenden, andernfalls mit einem
von 0 verschiedenen Wert. Dieser Schalter wird dazu verwandt, schnell zu
bestimmen, ob das laufende System das in systemd-repart eingebaute
Zurücksetzen auf die Werkseinstellungen unterstützt.
--root=
Akzeptiert einen Pfad zu einem Verzeichnis,
das als Wurzeldateisystem bei der Suche nach repart.d/*.conf-Dateien, der
Maschinenkennungsdatei, die als Startwert verwandt werden soll, und für
die Quelldateien und -Verzeichnisse CopyFiles= und CopyBlocks=
eingesetzt werden soll. Wird dies auf dem regulären Dateisystem
aufgerufen, ist die Vorgabe das Wurzeldateisystem »/« des
Rechners. Beim Aufruf in der Initrd ist die Vorgabe /sysroot/, so dass das
Werkzeug auf der Konfiguration und der im Wurzeldateisystem, auf das
später übergeleitet wird, gespeicherten Maschinenkennung agieren
wird.
--image=
Akzeptiert einen Pfad zu einer Abbilddatei
oder einem Abbildgerät, das in ähnlicher Art wie --root=
eingehängt und verwandt werden soll, siehe oben.
--seed=
Akzeptiert eine UUID oder den besonderen Wert
random als Argument. Falls eine UUID festgelegt ist, werden die
Partitionen und der Partitionstabelle selbst zuzuweisenden UUIDs durch
kryptographisches Hashen daraus abgeleitet. Falls nicht angegeben, wird
versucht, die Maschinenkennung des Rechners abzuleiten (oder genauer, aus dem
mit --root= konfigurierten Wurzelverzeichnis) und dies stattdessen als
Startwert zu verwenden, ansonsten wird auf einen zufälligen Startwert
zurückgefallen. Verwenden Sie --seed=random, um einen
zufälligen Startwert zu erzwingen. Durch explizites Setzen des
Startwertes können streng reproduzierbare Partitionstabellen erstellt
werden.
--pretty=
Akzeptiert ein logisches Argument. Falls
dieser Schalter nicht angegeben ist, ist die Vorgabe an, falls es von einem
interaktiven Terminal aufgerufen wird, ansonsten aus. Steuert, ob eine
benutzerfreundliche Tabelle angezeigt und graphisch die angewandten
Änderungen dargestellt werden sollen.
--definitions=
Akzeptiert einen Dateisystempfad. Falls
angegeben, werden die *.conf-Dateien aus dem angegebenen Verzeichnis gelesen,
statt nach ihnen in /usr/lib/repart.d/*.conf, /etc/repart.d/*.conf,
/run/repart.d/*.conf zu suchen.
Dieser Parameter kann mehrmals angegeben werden.
--key-file=
Akzeptiert einen Dateisystempfad. Konfiguriert
den zu verwendenden Verschlüsselungsschlüssel, wenn
LUKS2-Datenträger mit der Einstellung Encrypt=key-file in
Partitionsdateien eingerichtet werden. Sollte sich auf eine normale Datei, die
den Schlüssel enthält, beziehen, oder ein
AF_UNIX-Datenstrom-Socket im Dateisystem. In letzterem Fall wird zu
dieser eine Verbindung aufgenommen und der Schlüssel daraus gelesen.
Falls dieser Schalter nicht angegeben ist, wird der leere Schlüssel
(d.h. ein Schlüssel der Länge Null) verwandt. Dieses Verhalten
ist für die Einrichtung von verschlüsselten Partitionen
während der frühen erstmaligen Systemstartphase nützlich,
bei denen des vom Anwender bereitgestellte Passwort erst in einem
späteren Einrichtungsschritt empfangen wird.
--private-key=
Akzeptiert einen Dateisystempfad. Konfiguriert
den bei der Erstellung von Verity-Signaturpartitionen mit der Einstellung
Verity=signature in Partitionsdateien zu verwendenen
Signaturschlüssel.
--certificate=
Akzeptiert einen Dateisystempfad. Konfiguriert
das bei der Erstellung von Verity-Signaturpartitionen mit der Einstellung
Verity=signature in Partitionsdateien zu verwendene PEM-kodierte
X.509-Zertifikat.
--tpm2-device=, --tpm2-pcrs=
Konfiguriert das TPM2-Gerät und die
Liste der PCRs, die für mit der Option Encrypt=tpm2
konfigurierten LUKS2-Datenträger verwandt werden. Diese Option
akzeptiert die gleichen Parameter wie die identisch benannte Option in
systemd-cryptenroll(1) und hat die gleiche Auswirkung auf Partitionen,
bei denen TPM2-Registrierung erbeten wird.
--tpm2-public-key= [PFAD], --tpm2-public-key-pcrs= [PCR…]
Konfiguriert eine TPM2-signierte
PCR-Richtlinie, an die die Verschlüsselung gebunden wird. Siehe
systemd-cryptenroll(1) für Details zu diesen zwei
Optionen.
--split= [LOGISCH]
Aktiviert die Erstellung von geteilten
Artefakten von Partitionen, die mit SplitName= konfiguriert wurden.
Falls aktiviert, wird für jede Partition mit gesetztem
SplitName= eine getrennte Ausgabedatei erstellt, die nur den Inhalt
dieser Partition enthält. Der Ausgabedateiname besteht aus dem
Loopback-Dateinamen, dem der mit SplitName= konfigurierte Name
angehängt wird. Falls der Loopback-Dateiname auf ».raw«
endet, wird die neue Endung stattdessen vor der Erweiterung
».raw« eingefügt.
Beachten Sie, dass --split unabhängig von --dry-run ist.
Selbst wenn --dry-run aktiviert ist, werden die Trennungsartefakte
weiterhin aus einem bestehenden Abbild erstellt, falls --split
aktiviert ist.
-h, --help
Zeigt einen kurzen Hilfetext an und beendet
das Programm.
--version
Zeigt eine kurze Versionszeichenkette an und
beendet das Programm.
--no-pager
Leitet die Ausgabe nicht an ein
Textanzeigeprogramm weiter.
--no-legend
Gibt die Legende nicht aus, d.h. die
Spaltenköpfe und die Fußzeile mit Hinweisen.
--json=MODUS
Zeigt die Ausgabe als JSON formatiert.
Erwartet entweder »short« (für die kürzest
mögliche Ausgabe ohne unnötigen Leerraum oder
Zeilenumbrüche), »pretty« (für eine
schönere Version der gleichen Ausgabe, mit Einzügen und
Zeilenumbrüchen) oder »off« (um die
standardmäßig aktivierte JSON-Ausgabe auszuschalten).
EXIT-STATUS
Bei Erfolg wird 0 zurückgegeben, anderenfalls ein Fehlercode ungleich Null.SIEHE AUCH
systemd(1), repart.d(5), machine-id(5), systemd-cryptenroll(1)ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <[email protected]> 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 Übersetzersystemd 252 |