Sgdisk
Version vom 19. August 2026, 16:43 Uhr von Thomas.will (Diskussion | Beiträge)
sgdisk erledigt dieselben Aufgaben wie gdisk, wird aber vollständig über Optionen gesteuert. Damit ist es das Werkzeug der Wahl für Skripte und für die automatisierte Installation.
Achtung: sgdisk schreibt ohne Rückfrage
sgdiskkennt keinen Schreibbefehl. Eine im Arbeitsspeicher veränderte GPT wird beim Beenden des Programms automatisch auf den Datenträger geschrieben.- Ein falsch getippter Aufruf kann eine Platte unbrauchbar machen. Jeder Aufruf mit ändernden Optionen gehört vorher gelesen.
- Zum gefahrlosen Ausprobieren gibt es
-P: Damit wird alles berechnet und angezeigt, aber nichts geschrieben.
# sgdisk -P -n 1:0:+512M /dev/sdb
Syntax
# sgdisk OPTIONEN DEVICE
- Mehrere Optionen lassen sich in einem Aufruf kombinieren. Das ist der übliche Weg, weil dann nur einmal geschrieben wird:
# sgdisk -n 1:0:+512M -t 1:8300 -c 1:system /dev/sdb
- Die vollständige Beschreibung liefert die Handbuchseite:
$ man sgdisk
Optionen ohne Änderung an der GPT
| Option | Lang | Wirkung |
|---|---|---|
-p |
--print |
Partitionstabelle anzeigen |
-i PARTNUM |
--info |
Einzelheiten zu einer Partition: GUIDs, Sektoren, Attribute, Name |
-L |
--list-types |
bekannte Typcodes auflisten |
-v |
--verify |
Platte prüfen: Prüfsummen, Überlappungen, Lage der Sicherung |
-D |
--display-alignment |
eingestellten Ausrichtungswert anzeigen |
-P |
--pretend |
alles berechnen, aber nichts schreiben |
-? |
--help |
Hilfetext |
Optionen mit Änderung an der GPT
| Option | Lang | Wirkung |
|---|---|---|
-o |
--clear |
neue, leere GPT anlegen |
-n PARTNUM:ANFANG:ENDE |
--new |
neue Partition anlegen |
-N PARTNUM |
--largest-new |
Partition über den größten freien Bereich anlegen |
-d PARTNUM |
--delete |
Partition löschen |
-t PARTNUM:TYPCODE |
--typecode |
Typcode setzen |
-c PARTNUM:NAME |
--change-name |
Namen der Partition setzen |
-A PARTNUM:AKTION:BIT |
--attributes |
Attribut-Bits setzen, löschen oder anzeigen |
-u PARTNUM:GUID |
--partition-guid |
GUID einer Partition setzen, R für zufällig
|
-U GUID |
--disk-guid |
GUID der Platte setzen, R für zufällig
|
-G |
--randomize-guids |
alle GUIDs neu erwürfeln |
-a WERT |
--set-alignment |
Ausrichtung in Sektoren, Vorgabe 2048 |
-s |
--sort |
Einträge nach Anfangssektor sortieren |
-r P1:P2 |
--transpose |
zwei Partitionseinträge vertauschen |
-e |
--move-second-header |
Sicherung ans Plattenende schieben |
-b DATEI |
--backup |
GPT in eine Datei sichern |
-l DATEI |
--load-backup |
GPT aus einer Datei zurückladen |
-R ZIEL |
--replicate |
Partitionstabelle auf eine zweite Platte übertragen |
-g |
--mbrtogpt |
vorhandenen MBR in eine GPT umwandeln |
-m |
--gpttombr |
GPT in einen MBR umwandeln |
-h LISTE |
--hybrid |
Hybrid-MBR erzeugen |
-z |
--zap |
GPT-Strukturen zerstören |
-Z |
--zap-all |
GPT und MBR zerstören |
-glöscht nicht, sondern wandelt um. Zum Leeren einer Platte ist-Zgedacht.-esetzt keine Partition aktiv, sondern verschiebt den Sicherungs-Header. Gebraucht wird das, nachdem eine Platte oder ein LUN vergrößert wurde.-herzeugt einen Hybrid-MBR. Der hält dieselbe Platte gleichzeitig für MBR- und GPT-partitioniert und ist eine dauerhafte Fehlerquelle – Finger weg, außer man weiß genau warum.-rvertauscht zwei Einträge und macht keine Löschung rückgängig. Ein Rückgängig gibt es nicht.
Eine Partition anlegen
# sgdisk -n PARTNUM:ANFANG:ENDE /dev/sdb
| Feld | Bedeutung |
|---|---|
| PARTNUM | Nummer des Eintrags, 0 nimmt den ersten freien
|
| ANFANG | Startsektor, 0 nimmt den ersten freien ausgerichteten Sektor
|
| ENDE | Endsektor, 0 nimmt den letzten verfügbaren; +GRÖSSE gibt die Länge an
|
Damit ist die gebräuchliche Form:
# sgdisk -n 1:0:+512M /dev/sdb 512 MiB, Lage automatisch # sgdisk -n 2:0:+20G /dev/sdb 20 GiB direkt dahinter # sgdisk -n 3:0:0 /dev/sdb der ganze Rest
- Ohne
-tbekommt die Partition den Typ 8300 (Linux filesystem). - Die Ausrichtung auf 2048 Sektoren, also 1 MiB, übernimmt sgdisk von selbst. Nur bei abweichenden Vorgaben braucht man
-a.
Typcodes setzen
# sgdisk -t 1:ef00 /dev/sdb # sgdisk -t 2:8e00 /dev/sdb
| Code | Bedeutung |
|---|---|
| 8300 | Linux filesystem |
| 8200 | Linux swap |
| 8e00 | Linux LVM |
| fd00 | Linux RAID |
| ef00 | EFI System Partition |
| ef02 | BIOS boot partition |
Die vollständige Liste:
# sgdisk -L
Attribute setzen
# sgdisk -A PARTNUM:AKTION:BIT /dev/sdb
- Aktionen sind unter anderem
set,clear,toggleundshow.
| Bit | Bedeutung |
|---|---|
| 0 | erforderliche Partition, nicht löschen |
| 1 | vor EFI verbergen |
| 2 | legacy BIOS bootable |
| 60 | nur lesen |
| 63 | kein Automount |
# sgdisk -A 1:set:2 /dev/sdb legacy BIOS bootable setzen # sgdisk -A 1:show /dev/sdb gesetzte Bits anzeigen
Sichern und zurückspielen
# sgdisk -b /root/sdb-gpt.bin /dev/sdb
- Die Datei enthält Protective MBR, Header, Sicherungs-Header und die Partitionseinträge. Sie gehört auf ein anderes Medium.
# sgdisk -l /root/sdb-gpt.bin /dev/sdb
Eine Partitionstabelle auf eine zweite Platte übertragen
Der klassische Fall vor dem Anlegen eines Verbunds aus zwei gleichen Platten:
# sgdisk -R /dev/sdc /dev/sdb # sgdisk -G /dev/sdc
- Der erste Aufruf überträgt die Tabelle von
/dev/sdbauf/dev/sdc. Das Ziel steht vorn, die Quelle hinten. - Der zweite Aufruf ist Pflicht: Ohne ihn tragen beide Platten dieselbe Platten-GUID und dieselben Partitions-GUIDs. Das System greift dann unter Umständen auf die falsche zu.
Eine Platte leeren
# sgdisk -Z /dev/sdb
-Zentfernt GPT und MBR, also auch die Sicherung am Plattenende.-zlässt den MBR stehen.- Danach ist die Aufteilung weg. Die Nutzdaten stehen zwar noch auf der Platte, sind ohne Tabelle aber nicht mehr ansprechbar.
Beispiele
Tabelle anzeigen:
# sgdisk -p /dev/sdb
Einzelheiten zur ersten Partition:
# sgdisk -i 1 /dev/sdb
Eine Platte in einem Aufruf komplett einrichten:
# sgdisk -o \
-n 1:0:+512M -t 1:ef00 -c 1:EFI \
-n 2:0:+1G -t 2:8300 -c 2:boot \
-n 3:0:0 -t 3:8e00 -c 3:lvm \
/dev/sdb
Vorher gefahrlos ansehen, was passieren würde:
# sgdisk -P -o -n 1:0:+512M /dev/sdb
Prüfen, was geworden ist:
# sgdisk -v /dev/sdb # sgdisk -p /dev/sdb