SFDISK(8) | System-Administration | SFDISK(8) |
BEZEICHNUNG¶
sfdisk - eine Plattenpartitionstabelle anzeigen oder verändern
ÜBERSICHT¶
sfdisk [Optionen] Gerät [-N Partitionsnummer]
sfdisk [Optionen] Befehl
BESCHREIBUNG¶
sfdisk ist ein Skript-orientiertes Werkzeug zur Partitionierung beliebiger Blockgeräte. Wenn es in einem Terminal ausgeführt wird, dann läuft es im interaktiven Modus (die Standardeingabe bezieht sich auf ein Terminal).
Seit Version 2.26 unterstützt sfdisk Festplattenbezeichnungen im Stil von MBR (DOS), GPT, SUN und SGI, jedoch ist die CHS-Addressierung (Zylinder-Kopf-Sektor) nicht mehr möglich. CHS war für Linux nie von Bedeutung, daher ergibt dieses Adressierungskonzept für neue Geräte keinen Sinn.
sfdisk schützt beim Erzeugen einer neuen Festplattenbezeichnung den ersten Sektor. Die Option --wipe always deaktiviert diesen Schutz. Beachten Sie, dass fdisk(8) und cfdisk(8) diesen Bereich standardmäßig vollständig löschen.
(seit Version 2.26) richtet sfdisk Anfang und Ende von Partitionen an Blockgerät-E/A-Begrenzungen aus, wenn relative Größen angegeben werden, wenn die Vorgabewerte verwendet werden oder wenn multiplikative Endungen (z.B. MiB) für Größen verwendet werden. Es ist möglich, dass Partitionsgrößen aufgrund der Ausrichtung optimiert (reduziert oder vergrößert) werden, falls der Anfangsversatz genau in Sektoren und die Partitionsgröße relativ oder durch multiplikative Endungen angegeben ist.
Es wird empfohlen, den Startversatz überhaupt nicht anzugeben und alle Partitionsgrößen in MiB, GiB (oder so). In diesem Fall wird sfdisk alle Partitionen an Blockgerät-E/A-Begrenzungen ausrichten (oder wenn die E/A-Begrenzungen zu klein sind, dann an Megabyte-Grenzen, um das Plattenlayout portabel zu halten). Falls dieses Vorgabeverhalten nicht gewünscht ist (normalerweise für sehr kleine Partitionen), dann geben Sie den Versatz und die Größe in Sektoren an. In diesem Fall folgt sfdisk den angegebenen Nummern völlig ohne irgendwelche Optimierungen.
sfdisk erzeugt keine Standard-Systempartitionen für SGI- und SUN-Festplattenbezeichnungen, wie es fdisk(8) tut. Es ist notwendig, alle Partitionen einschließlich der die gesamte Festplatte umfassenden Systempartitionen explizit zu erzeugen.
sfdisk verwendet den Ioctl BLKRRPART (Partitionstabelle erneut einlesen), um sicherzustellen, dass das Gerät nicht durch das System oder andere Werkzeuge verwendet wird (siehe auch --no-reread). Es ist möglich, dass diese Funktionalität oder ein anderes sfdisk zu einem Ressourcenwettstreit mit systemd-udevd(8) führt. Es wird empfohlen, mit der Option --lock mögliche Kollisionen zu vermeiden. Die exklusive Sperre wird systemd-udevd(8) dazu veranlassen, die Ereignisbearbeitung des Gerätes zu überspringen.
Die Eingabeaufforderung von sfdisk ist lediglich ein Hinweis für Benutzer und eine angezeigte Partitionsnummer bedeutet nicht, dass der zugehörige Eintrag in der Partitionstabelle erzeugt wird (sofern -N nicht angegeben ist), insbesondere für Tabellen mit Lücken.
BEFEHLE¶
Die Befehle schließen sich gegenseitig aus.
[-N Partitionsnummer] Gerät
Wenn die Option -N angegeben ist, werden die Änderungen auf die Partition angewendet, auf welche die Partitionsnummer verweist. Nicht angegebene Felder der Partition werden nicht verändert.
Beachten Sie, dass Sie mit -N auch ungenutzte Partitionen bearbeiten können. Beispielsweise enthält der MBR stets vier Partitionen, aber die Anzahl der tatsächlich genutzten Partitionen kann kleiner sein. In diesem Fall folgt sfdisk den Standardwerten der Partitionstabelle und wendet nicht die voreingestellten Werte auf die mit -N angegebenen ungenutzten Partitionen an. Siehe auch --append.
-A, --activate Gerät [Partitionsnummer...]
Der Aktivierungsbefehl wird nur für MBR und PMBR unterstützt. Falls eine GPT-Festplattenbezeichnung erkannt wird, dann gibt sfdisk eine Warnung aus und schaltet automatisch auf PMBR um.
Falls keine Partitionsnummer angegeben ist, werden alle Partitionen aufgelistet, die als bootfähig markiert sind.
--backup-pt-sectors Gerät
--delete Gerät [Partitionsnummer...]
-d, --dump Gerät
-g, --show-geometry [Gerät...]
-J, --json Gerät
-l, --list [Gerät...]
-F, --list-free [Gerät...]
--part-attrs Gerät Partitionsnummer [Attribute]
Bit 0 (RequiredPartition)
Bit 1 (NoBlockIOProtocol)
Bit 2 (LegacyBIOSBootable)
Bits 3-47
Bits 48-63
--part-label Gerät Partitionsnummer [Bezeichnung]
--part-type Gerät Partitionsnummer [Typ]
Das Argument Typ ist hexadezimal für MBR, eine GUID für GPT, ein Typ-Alias (beispielsweise »linux«) oder ein Typ-Kürzel (beispielsweise »L«). Für die Abwärtskompatibilität haben die Optionen -c und --id die gleiche Bedeutung wie diese.
--part-uuid Gerät Partitionsnummer [UUID]
--disk-id Gerät [Kennung]
-r, --reorder Gerät
-s, --show-size [_Gerät...]
-T, --list-types
-V, --verify [Gerät...]
--relocate Aktion Gerät
gpt-bak-std
gpt-bak-mini
OPTIONEN¶
-a, --append
Beachten Sie, dass eine ungenutzte Partition in diesem Fall wiederverwendet werden kann, obwohl sie nicht die letzte in der Partitionstabelle ist. Siehe auch -N, wie Sie einen Eintrag für die Partitionstabelle angeben können.
-b, --backup
--color[=wann]
-f, --force
--Linux
--lock[=Modus]
-n, --no-act
--no-reread
--no-tell-kernel
-O, --backup-file Pfad
--move-data[=Pfad]
Der optionale Pfad gibt den Namen der Protokolldatei an. Die Protokolldatei enthält Informationen zu allen Lese-/Schreibvorgängen der Partitionsdaten. Das Wort »@default« als Pfad zwingt sfdisk, ~/sfdisk-<Gerätename>.move für das Protokoll zu verwenden. Das Protokoll ist seit Version 2.35 optional.
Beachten Sie, dass diese Aktion riskant und nicht atomar ist. Vergessen Sie nicht, eine Sicherungskopie Ihrer Daten anzulegen!
Siehe auch --move-use-fsync.
In dem nachfolgenden Beispiel erstellt der erste Befehl einen freien Bereich der Größe 100 MiB vor der ersten Partition und verschiebt die darin enthaltenen Daten (z.B. ein Dateisystem). Der nächste Befehl erstellt eine neue Partition aus dem freien Bereich (bei Versatz 2048) und der letzte Befehl sortiert die Partitionen neu, so dass sie auf die Platten-Reihenfolge passen (der ursprüngliche sdc1 wird sdc2 werden).
echo '+100M,' | sfdisk --move-data /dev/sdc -N 1
echo '2048,' | sfdisk /dev/sdc --append
sfdisk /dev/sdc --reorder
--move-use-fsync
-o, --output Liste
Die voreingestellte Liste der Spalten kann erweitert werden, indem Sie die Liste im Format +Liste angeben (beispielsweise -o +UUID).
-q, --quiet
-u, --unit S
-X, --label Typ
-Y, --label-nested Typ
-w, --wipe wann
-W, --wipe-partitions wann
-v, --version
-h, --help
EINGABEFORMATE¶
sfdisk unterstützt zwei Eingabeformate und generische Kopfzeilen.
Kopfzeilen¶
Die optionalen Kopfzeilen geben generische Informationen an, die für die Partitionstabelle gelten. Das Kopfzeilenformat lautet:
<Name>: <Wert>
Folgende Kopfzeilen werden derzeit akzeptiert:
unit
label
label-id
first-lba
last-lba
table-length
grain
sector-size
Beachten Sie, dass Sie Kopfzeilen in der Eingabe nur vor der ersten Partition angeben können.
Unnamed-fields-Format¶
Start Größe Typ bootfähig
wobei jede Zeile einen Partitionsdeskriptor darstellt.
Felder werden durch Leerraum, Kommata (empfohlen) oder Semikola getrennt, möglicherweise gefolgt von Leerraum; Leerraum am Anfang und Ende wird ignoriert. Zahlen können oktal, dezimal oder hexadezimal angegeben werden, die Vorgabe ist dezimal. Wenn ein Feld fehlt, leer oder mit »-« angegeben ist, wird ein Vorgabewert verwendet. Wenn aber die Option -N angegeben wird (eine einzelne Partition ändern), ist die Vorgabe für jedes Feld sein vorheriger Wert.
Der Vorgabewert von Start ist der erste nicht zugewiesene Sektor, der entsprechend der E/A-Begrenzungen ausgerichtet ist. Der Vorgabe-Start-Versatz für die erste Partition ist 1 MiB. Falls auf den Versatz eine multiplikative Endung folgt (KiB, MiB, GiB, TiB, PiB, EiB, ZiB und YiB), dann wird die Zahl als Versatz in Bytes interpretiert. Seit Version 2.38 kann bei der Angabe der Option -N (Änderung einer einzelnen Partition) ein »+« angegeben werden, um die Partition durch Verschieben der Startposition zu vergrößern, falls vor der Partition freier Platz verfügbar ist.
Der Vorgabewert von Größe meint »so viel wie möglich«, d.h. bis zur nächsten Partition oder dem Ende des Geräts. Ein numerisches Argument wird standardmäßig als Anzahl von Sektoren interpretiert; wird aber die Größe von einem der multiplikativen Endungen (KiB, MiB, GiB, TiB, PiB, EiB, ZiB und YiB) gefolgt, dann wird die Zahl als Größe der Partition in Bytes interpretiert und wird dann entsprechend der E/A-Begrenzungen ausgerichtet. Ein »+« kann statt einer Zahl verwendet werden, um die Partition so weit wie möglich zu vergrößern. Beachten Sie, dass »+« äquivalent zu dem Standardverhalten für eine neue Partition ist. Bestehende Partitionen werden wie notwendig in der Größe verändert.
Der Partitions-Typ wird für MBR (DOS) in hexadezimaler Notation angegeben, wobei das Präfix 0x optional ist. Für GPT wird er als GUID-Zeichenkette oder als Kürzel oder als Alias angegeben. Es wird empfohlen, zwei Buchstaben für MBR-Hexadezimalcodes zu verwenden, um Kollisionen zwischen dem als veraltet anzusehenden Kürzel »E« und »0E« für den MBR-Hexadezimalcode zu vermeiden. Aus Gründen der Abwärtskompatibilität versucht sfdisk, in Partitionierungsskripten den Typ als erste Möglichkeit als Kürzel anzusehen, obwohl es an anderen Stellen versucht, Kürzel als letzte Möglichkeit zu probieren.
Seit Version 2.36 unterstützt Libfdisk Partitionstypen-Aliase als Ergänzung zu den Kürzeln. Ein Alias ist ein einfaches, menschenlesbares Wort (beispielsweise »linux«).
Seit Version 2.37 unterstützt Libfdisk Partitionstypnamen als Eingabe, wobei Groß- oder Kleinschreibung sowie alle nicht alphanumerischen Zeichen und Nicht-Ziffern ignoriert werden (zum Beispiel ist »Linux /usr x86« gleichbedeutend mit »linux usr-x86«).
Unterstützte Kürzel und Aliase:
L - alias 'linux'
S - alias 'swap'
Ex - alias 'extended'
H - alias 'home'
U - alias 'uefi'
R - alias 'raid'
V - alias 'lvm'
Der Vorgabe-Typ-Wert ist linux.
Das Kürzel »X« für eine erweiterte Linux-Partition (85) ist als veraltet anzusehen; verwenden Sie stattdessen »Ex«.
bootfähig wird als [*|-] angegeben, standardmäßig nicht bootfähig. Der Wert des Feldes ist für Linux irrelevant – wenn Linux läuft, ist es bereits gestartet – aber er könnte für bestimmte Systemstartprogramme und für andere Betriebssysteme eine Rolle spielen.
Named-fields-Format¶
Dieses Format ist lesbarer, robuster, erweiterbarer und erlaubt es, zusätzliche Informationen (z.B. eine UUID) anzugeben. Es wird empfohlen, dieses Format zu verwenden, um Ihre Skripte lesbarer zu halten.
[Gerät :] Name[=Wert],
...
Das Gerät-Feld ist optional. sfdisk ermittelt die Partitionsnummer aus dem Gerätenamen. Es erlaubt die Angabe der Partitionen in willkürlicher Reihenfolge. Diese Funktionalität wird meist von --dump verwendet. Verwenden Sie diese nicht, wenn Sie sich nicht sicher sind.
Der Wert kann zwischen Anführungszeichen angegeben werden (zum Beispiel name="Partitionsname"). Die Felder start= und size= unterstützen '+' und '-' auf die gleiche Weise wie das Unnamed-fields-Format.
Derzeit werden folgende Felder unterstützt:
start=Nummer
size=Zahl
bootfähig
attrs=Zeichenkette
uuid=Zeichenkette
name=Zeichenkette
type=Code
LEERE FESTPLATTENBEZEICHNUNGEN¶
sfdisk erstellt standardmäßig keine Partitionstabellen ohne Partitionen. Die Zeilen mit Partitionen werden im Skript standardmäßig erwartet. Die leere Partitionstabelle muss explizit mit den Skript-Kopfzeilen »label: <Name>« ohne irgendwelche Partitionszeilen erbeten werden. Beispielsweise erstellt
echo 'label: gpt' | sfdisk /dev/sdb
eine leere GPT-Partitionstabelle. Beachten Sie, dass --append diese Funktionalität deaktiviert.
SICHERUNG DER PARTITIONSTABELLE¶
Es wird empfohlen, das Layout Ihrer Geräte zu sichern. sfdisk unterstützt dies auf zwei Arten:
Ausgabe in Sfdisk-kompatiblem Format¶
Verwenden Sie die Option --dump, um eine Beschreibung der Geräteaufteilung in einer Textdatei zu speichern. Das Speicherformat ist für die spätere Verarbeitung in sfdisk geeignet. Beispiel:
sfdisk --dump /dev/sda > sda.dump
Dies kann später wie folgt zurückgespielt werden:
sfdisk /dev/sda < sda.dump
Beachten Sie, dass sfdisk Partitionstypen und Partitions-UUIDs vollständig wiederherstellt. Dies könnte potenziell problematisch werden, wenn Sie die gleiche Aufteilung auf mehrere Datenträger duplizieren, weil dadurch eine UUID mehrfach auf dem System vorhanden sein könnte.
Vollständige binäre Sicherung¶
Falls Sie eine komplette (binäre) Sicherungskopie aller Sektoren, in denen die Partitionstabelle gespeichert ist, machen möchten, dann verwenden Sie die Option --backup-pt-sectors. Sie schreibt die Sektoren in Dateien ~/sfdisk-<Gerät>-<Versatz>.bak. Der Vorgabename der Sicherungsdatei kann mit der Option --backup-file geändert werden. Die Sicherungsdatei enthält nur rohe Daten vom Gerät. Zum Beispiel:
sfdisk --backup-pt-sectors /dev/sda
Der GPT-Header kann später folgendermaßen wiederhergestellt werden:
dd if=~/sfdisk-sda-0x00000200.bak of=/dev/sda
seek=$((0x00000200)) bs=1 conv=notrunc
Sie können auch die Option --backup verwenden, um die gleiche Sicherung unmittelbar nach dem Start für andere sfdisk-Befehle zu erstellen. Beispielsweise sichern Sie wie folgt die Partitionstabelle, bevor alle Partitionen daraus gelöscht werden:
sfdisk --backup --delete /dev/sda
Das gleiche Dateisicherungskonzept wird von wipefs(8) verwendet.
Beachten Sie, dass die Option -I zur Wiederherstellung von Sektoren in sfdisk seit Version 2.26 nicht mehr verfügbar ist. Die benötigte Funktionalität stellt dd(1) bereit.
FARBEN¶
Die farbige Darstellung der Ausgabe wird über die Funktionen in terminal-colors.d(5) gesteuert. Die implizierte Einfärbung kann deaktiviert werden, indem Sie folgende (leere) Datei anlegen:
/etc/terminal-colors.d/sfdisk.disable
für den Befehl sfdisk oder für alle Befehle mit
/etc/terminal-colors.d/disable
Die benutzerspezifischen Dateien $XDG_CONFIG_HOME/terminal−colors.d oder $HOME/.config/terminal−colors.d setzen die globale Einstellung außer Kraft.
Beachten Sie, dass die Einfärbung der Ausgabe standardmäßig aktiviert sein könnte und in diesem Fall die terminal-colors.d-Verzeichnisse noch nicht zwangsläufig vorhanden sein müssen.
Folgende logische Farbnamen werden von sfdisk unterstützt:
header
warn
welcome
UMGEBUNGSVARIABLEN¶
SFDISK_DEBUG=all
LIBFDISK_DEBUG=all
LIBBLKID_DEBUG=all
LIBSMARTCOLS_DEBUG=all
LOCK_BLOCK_DEVICE=<Modus>
ANMERKUNGEN¶
Seit Version 2.26 sind die Optionen -R oder --re-read, welche das erneute Einlesen der Partitionstabelle durch den Kernel erzwingen, in sfdisk nicht mehr verfügbar. Verwenden Sie stattdessen blockdev --rereadpt.
Seit Version 2.26 sind die Optionen --DOS, --IBM, --DOS-extended, --unhide, --show-extended, --cylinders, --heads, --sectors, --inside-outer und --not-inside-outer nicht mehr verfügbar.
BEISPIELE¶
sfdisk --list --label-nested=mbr /dev/sda
echo -e ',10M,L\n,10M,L\n,+,\n' | sfdisk /dev/sdc
echo -e 'size=10M, type=L\n size=10M, type=L\n size=+\n' | sfdisk /dev/sdc
echo -e 'type=swap' | sfdisk -N 3 /dev/sdc
sfdisk --part-type /dev/sdc 3 swap
sfdisk --delete /dev/sdc 2
echo "+,+" | sfdisk -N 3 --move-data /dev/sdc
AUTOREN¶
Karel Zak <kzak@redhat.com>
Die aktuelle sfdisk-Implementierung basiert auf dem ursprünglichen sfdisk von Andries E. Brouwer.
SIEHE AUCH¶
FEHLER MELDEN¶
Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem auf <https://github.com/util-linux/util-linux/issues>.
VERFÜGBARKEIT¶
Der Befehl sfdisk ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv <https://www.kernel.org/pub/linux/utils/util-linux/> heruntergeladen werden kann.
2024-10-01 | util-linux 2.40.2 |