Sgdisk

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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

  • sgdisk kennt 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
  • -g löscht nicht, sondern wandelt um. Zum Leeren einer Platte ist -Z gedacht.
  • -e setzt keine Partition aktiv, sondern verschiebt den Sicherungs-Header. Gebraucht wird das, nachdem eine Platte oder ein LUN vergrößert wurde.
  • -h erzeugt 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.
  • -r vertauscht 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 -t bekommt 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, toggle und show.
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/sdb auf /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
  • -Z entfernt GPT und MBR, also auch die Sicherung am Plattenende.
  • -z lä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