Sgdisk: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „sgdisk Das Programm sgdisk führt die gleichen Aufgaben wie gdisk durch, wird aber komplett über mitgegebene Optionen gesteuert und ist in Skripten besser gee…“)
 
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
sgdisk
+
<code>sgdisk</code> erledigt dieselben Aufgaben wie <code>gdisk</code>, wird aber vollständig über Optionen gesteuert. Damit ist es das Werkzeug der Wahl für Skripte und für die automatisierte Installation.
Das Programm sgdisk führt die gleichen Aufgaben wie gdisk durch, wird aber komplett über mitgegebene Optionen gesteuert und ist in Skripten besser geeignet als gdisk.
 
  
Achtung!
+
'''Achtung:''' <code>sgdisk</code> kennt keinen Schreibbefehl. Eine im Arbeitsspeicher veränderte GPT wird beim Beenden automatisch auf den Datenträger geschrieben. Ein falsch getippter Aufruf kann eine Platte unbrauchbar machen. Zum gefahrlosen Ausprobieren dient die Option <code>-P</code>: damit wird alles berechnet und angezeigt, aber nichts geschrieben.
Bei der Beendigung schreibt sgdisk die GPT ohne Rückfrage auf den Datenträger!
 
  
Das Programm kennt ~ im Gegensatz zu gdisk ~ keinen expliziten Schreibbefehl. Vielmehr wird eine eingelesene und dann im Arbeitsspeicher geänderte GPT bei der Beendigung des Programms automatisch auf den Datenträger geschrieben und bei falschem Einsatz wird dieser evtl. unbenutzbar. Der Aufruf von sgdisk mit Optionen, welche die GPT ändern, sollte gut überlegt werden.
+
Beim Aufruf steht immer der Datenträger am Ende. Mehrere Optionen lassen sich in einem Aufruf kombinieren – das ist der übliche Weg, weil dann nur einmal geschrieben wird.
  
Das Programm kennt aber ein Schreibverbot als Option -P; mit dem Einsatz dieser Option entfällt generell das Schreiben einer veränderten GPT auf den Datenträger.
+
=Alle Optionen anzeigen=
 +
*sgdisk --help
  
Syntax
+
=Handbuchseite=
Beim Aufruf muss immer ein zu bearbeitender Datenträger[5][6] an der Stelle DEVICE angegeben werden:
+
*man sgdisk
  
sudo sgdisk OPTIONEN DEVICE
+
=Partitionstabelle anzeigen=
Eine Erklärung aller Optionen mit ausführlicher Information liefern die Programmierer-Seiten, die Manpage des Programms sowie auszugsweise die folgenden Tabellen:
+
*sgdisk -p /dev/sdb
  
man sgdisk
+
=Einzelheiten zu einer Partition=
Optionen
+
Zeigt GUIDs, Start- und Endsektor, Attribute und Namen der Partition 1.
sgdisk: Auswahl von Optionen ohne Veränderungen an einer GPT
+
*sgdisk -i 1 /dev/sdb
Option Beschreibung
 
-? Ausgabe eines Hilfetextes der zur Verfügung stehenden Kommandos
 
-a WERT Alignment-Wert einstellen. WERT ist eine Anzahl von logischen Sektoren, z.B. 1024, 2048. Man benötigt diese Option bei der Bearbeitung einer GPT mit nicht der Vorgabe entsprechenden Partitionen bei der Anlage neuer Partitionen.
 
-b DATEINAME Externe binäre Backup-Datei mit dem als DATEINAME angegebenem Namen der GPT des Datenträgers[3] erzeugen. Inhalt: "Protective/Hybrid MBR", GPT-Header, GPT-Backup-Header, Feld mit Einträgen für Partitionen
 
-i PARTNUM Detaillierte Informationen zur Partition PARTNUM anzeigen. (1 ≤ PARTNUM ≤ 128)
 
-L Bekannte Partitionstypen (ID) und deren Bezeichnung (Name) auflisten.
 
-p Partitionstabelle anzeigen.
 
-P Eine im Arbeitsspeicher veränderte GPT nicht auf den Datenträger schreiben.
 
sgdisk: Auswahl von Optionen mit Veränderungen an einer GPT
 
Option Beschreibung
 
-n PARTNUM:ANFANG:ENDE Neuen Eintrag für eine Partition an der bisher unbenutzten Stelle PARTNUM (1 ≤ PARTNUM ≤ 128) in der GPT anlegen. ANFANG und ENDE beschreiben die Grenzen der Partition. Details siehe: Anlegen einer Partition
 
-d PARTNUM Eintrag an der Stelle PARTNUM in der GPT löschen.
 
-c PARTNUM:"Partition Label Ändern des frei wählbaren Namens einer Partition eines Datenträgers (mehr Infos: Partitionsname ändern)
 
-G Neue GUID für Datenträger und neue UUIDs für Partitionen erwürfeln.
 
-l DATEINAME GPT des Datenträgers aus externer Backup-Datei in die GPT-Bereiche zurück laden.
 
-R ZIEL-DEVICE GPT auf einen anderen, mit ZIEL-DEVICE angegebenen Datenträger kopieren. (Nützlich z.B. beim Austausch einer defekten Platte bei RAID). Es werden nur die Beschreibungen aus der GPT, aber nicht die Inhalte der Partitionen kopiert!
 
-s Einträge zu den Partitionen aufsteigend nach Sektoren sortieren; dabei werden die Nummern der Partitionen neu vergeben. (Ggf. fstab und grub.cfg prüfen!)
 
-t PARTNUM:ID Partitionstyp (ID) ändern; siehe dazu auch Option -L.
 
-v Komplette GPT überprüfen und ggf. kleine Fehler automatisch beheben.
 
-Z Entfernt alle Partitonsinformation gemäß GPT-Schema und DOS/MBR-Schema. Nach diesem Befehl sind noch alle Daten in den Partitionen auf dem Datenträger vorhanden, aber nichts ist mehr zugreifbar. Forensische Reparaturprogramme können das ändern.
 
Beispiele
 
Hinweis:
 
In allen Beispielen wird als Datenträgerbezeichnung /dev/sdX genutzt. Diese muss auf das eigene System angepasst werden!
 
  
Partitionstabelle anzeigen
+
=Bekannte Typcodes auflisten=
Anzeige genereller Informationen der GPT und auflisten aller Einträge zu den Partitionen:
+
*sgdisk -L
  
sudo sgdisk -p /dev/sdX
+
=Platte prüfen=
vergrößern
+
Vergleicht primäre und gesicherte Strukturen, prüft die Prüfsummen und meldet Überlappungen.
Disk /dev/sdX: 7913471 sectors, 3.8 GiB
+
*sgdisk -v /dev/sdb
Logical sector size: 512 bytes
 
Disk identifier (GUID): 5E49BB87-03F4-4FB4-9D3C-D8A28E5ADB85
 
Partition table holds up to 128 entries
 
First usable sector is 34, last usable sector is 7913437
 
Partitions will be aligned on 2-sector boundaries
 
Total free space is 0 sectors (0 bytes)
 
  
Number  Start (sector)    End (sector)  Size      Code  Name
+
=Nichts schreiben, nur zeigen=
  1              34            2047  1007.0 KiB  EF02  BIOS Grub-Partition
+
<code>-P</code> berechnet die Änderung und zeigt das Ergebnis, schreibt aber nicht. Zum Testen jedes ändernden Aufrufs vorschalten.
  2            2048        7913437  3.8 GiB    0700  VFAT 32 Pendrive
+
*sgdisk -P -n 1:0:+512M /dev/sdb
Das "Sector Alignment" wurde hier vom Programm automatisch auf 2 eingestellt, weil wegen der bereits angelegten Partition mit Start bei LBA=34 keine größere Zahl kompatibel wäre. Dieser Wert kann (und muss in der Regel!) aber manuell übersteuert werden.
 
  
Anlegen einer Partition
+
=Neue, leere GPT anlegen=
Im folgenden Beispiel wird eine neue Partition mit der Nummer 5 angelegt:
+
*sgdisk -o /dev/sdb
  
Das Alignment wird auf 1024 logische Sektoren eingestellt (-a 1024)
+
=Eine Partition anlegen=
 +
Die Syntax ist <code>-n PARTNUM:ANFANG:ENDE</code>. Eine <code>0</code> bedeutet an jeder der drei Stellen die Vorgabe: erster freier Eintrag, erster freier ausgerichteter Sektor, letzter verfügbarer Sektor. Ohne <code>-t</code> bekommt die Partition den Typ 8300. Die Ausrichtung auf 2048 Sektoren übernimmt sgdisk selbst.
  
Die neue Partition erhält die Nummer 5, wird 1024 Sektoren groß und belegt den Bereich von 4096-5119 Sektoren (-n 5:4096:5119)
+
512 MiB, Lage automatisch:
 +
*sgdisk -n 1:0:+512M /dev/sdb
  
Der interne Name der 5. Partition wird geändert (-c 5:"BIOS Boot Partition")
+
20 GiB direkt dahinter:
 +
*sgdisk -n 2:0:+20G /dev/sdb
  
Der Partitionstyp wird auf ef02 eingestellt und bekommt dadurch die GUID 21686148-6449-6E6F-744E-656564454649 zugeteilt.
+
Der ganze Rest der Platte:
 +
*sgdisk -n 3:0:0 /dev/sdb
  
sudo sgdisk -a 1024 -n 5:4096:5119 -c 5:"BIOS Boot Partition" -t 5:ef02 /dev/sdX 
+
=Typcode setzen=
(Diese GUID kann – richtig nach RFC4122 interpretiert – im Arbeitsspeicher einer little-endian-CPU und auch auf dem Datenträger als ASCII-Text Hah!IdontNeedEFI gelesen werden.)
+
Ändert nur die Kennung, nicht die Daten der Partition.
 +
*sgdisk -t 1:ef00 /dev/sdb
  
Zur Definition einer neuen Partition muss man mindestens deren Index 1-128 sowie den ersten und letzten Sektor angeben. Für die Sektoren kann man verschiedene Schreibweisen wählen:
+
Die gebräuchlichen Codes:
  
Schlichte Zahlen werden als LBA verstanden.
+
{| class="wikitable"
 +
! Code !! Bedeutung
 +
|-
 +
| 8300 || Linux filesystem
 +
|-
 +
| 8200 || Linux swap
 +
|-
 +
| 8e00 || Linux LVM
 +
|-
 +
| fd00 || Linux RAID
 +
|-
 +
| ef00 || EFI System Partition
 +
|-
 +
| ef02 || BIOS boot partition
 +
|}
  
Zahlen mit einem Suffix K, M, G, T oder P werden als Speicherbereich in KiB, MiB, GiB, TiB oder PiB verstanden. Zur Umrechnung in LBA muss man die Größe eines logischen Sektors kennen. Wenn diese z.B. 512 Byte beträgt, könnte man im Beispiel statt 5:4096:5119 auch schreiben:
+
=Namen einer Partition setzen=
 +
*sgdisk -c 1:system /dev/sdb
  
5:2M:5119
+
=Attribut setzen=
 +
Die Syntax ist <code>-A PARTNUM:AKTION:BIT</code>, Aktionen sind <code>set</code>, <code>clear</code>, <code>toggle</code> und <code>show</code>.
  
5:2M:+1024
+
Legacy BIOS bootable (Bit 2) setzen:
 +
*sgdisk -A 1:set:2 /dev/sdb
  
5:2M:+512K
+
Gesetzte Bits anzeigen:
 +
*sgdisk -A 1:show /dev/sdb
  
Dabei bezeichnet ein + als führendes Zeichen, dass die folgende Angabe nicht absolut, sondern relativ zum aktuell geltenden Vorgabewert verstanden werden soll, im Beispiel ist dies 2M bzw. 4096 logische Sektoren à 512 Byte.
+
Die wichtigsten Bits:
  
Partitions-Information (detailliert)
+
{| class="wikitable"
Detaillierte Informationen zur Partition 1 des Datenträgers:
+
! Bit !! Bedeutung
 +
|-
 +
| 0 || erforderliche Partition, nicht löschen
 +
|-
 +
| 2 || legacy BIOS bootable
 +
|-
 +
| 60 || nur lesen
 +
|-
 +
| 63 || kein Automount
 +
|}
  
sudo sgdisk -i1 /dev/sdX
+
=GUID einer Partition neu erwürfeln=
Partition GUID code: 21686148-6449-6E6F-744E-656564454649 (BIOS boot partition)
+
Das <code>R</code> steht für einen Zufallswert.
Partition unique GUID: 9E39F351-4D0F-48C7-8402-93A0AF35A0B4
+
*sgdisk -u 1:R /dev/sdb
First sector: 34 (at 17.0 KiB)
 
Last sector: 2047 (at 1023.5 KiB)
 
Partition size: 2014 sectors (1007.0 KiB)
 
Attribute flags: C000000000000001
 
Partition name: 'BIOS Grub-Partition'
 
Eine Partition sollte man in der Regel nicht wie hier gezeigt bei LBA=34 beginnen lassen. Ausnahmen können sinnvoll für selten benutzte und noch seltenener beschriebene Dateisysteme sein, anderenfalls riskiert man eine schlechte Performanz wegen Ausrichtungsfehlern.
 
  
Partitionstabelle sichern
+
=Alle GUIDs neu erwürfeln=
Der Befehl
+
Nach dem Klonen einer Platte nötig, sonst tragen Original und Kopie dieselben GUIDs.
 +
*sgdisk -G /dev/sdb
  
sudo sgdisk -b Backup_sdX.GPT /dev/sdX 
+
=Partition löschen=
sichert die GPT inkl. "Protectice/Hybrid MBR", beider Header und aller Einträge für Partitionen als binäre Datei im momentanen Arbeitsverzeichnis unter dem angegebenen, frei wählbaren Namen, den man auch mit einem Pfad zu einem anderen Ordner angeben kann.
+
*sgdisk -d 1 /dev/sdb
  
Partitionstabelle zurückladen
+
=GPT in eine Datei sichern=
Hinweis:
+
Die Datei enthält Protective MBR, Header, Sicherungs-Header und die Partitionseinträge. Sie gehört auf ein anderes Medium.
Eine GPT sollte nur auf den gleichen Datenträger zurückgeladen werden. Wenn man sie auf einen anderen, größeren Datenträger schreibt, muss man die geschriebene GPT anschließend reparieren, indem man die Sicherungstabelle an das Ende des Datenträgers verschiebt.
+
*sgdisk -b /root/sdb-gpt.bin /dev/sdb
  
Der Befehl
+
=GPT aus einer Datei zurückladen=
 +
*sgdisk -l /root/sdb-gpt.bin /dev/sdb
  
sudo sgdisk -l Backup_sdX.GPT /dev/sdX 
+
=Partitionstabelle auf eine zweite Platte übertragen=
schreibt die GPT wieder zurück auf den Datenträger.
+
Der klassische Fall vor dem Anlegen eines Verbunds aus zwei gleichen Platten. Beim Übertragen steht das '''Ziel vorn''', die Quelle hinten.
 +
*sgdisk -R /dev/sdc /dev/sdb
  
Partitiontabelle kopieren
+
Danach zwingend die GUIDs der Kopie neu erwürfeln:
Die Partitionstabelle von Datenträger[4] sdX nach sdZ kopieren:
+
*sgdisk -G /dev/sdc
  
sudo sgdisk -R /dev/sdZ /dev/sdX 
+
=Sicherung ans Plattenende verschieben=
Dies kopiert die GPT inkl. aller indiviuellen UUIDs des Datenträgers und seiner Partitionen, was nur dann erwünscht ist, wenn der Ziel-Datenträger den unsprünglichen Datenträger ersetzen soll, z.B. vor einem drohenden Hardware-Defekt. Das funktioniert nur dann richtig, wenn der ursprüngliche und der neue Datenträger dieselbe logische Sektorgröße haben. Außerdem müssen sie gleich groß sein, d.h die gleiche Gesamtanzahl logischer Sektoren besitzen. Wenn der neue Datenträger mehr logische Sektoren als der alte hat, muss die übertragene GPT repariert werden, indem man die Backup-Tabelle wieder ans Ende verschiebt.
+
Nötig, wenn eine Platte oder ein LUN nachträglich vergrößert wurde – die Sicherung liegt dann nicht mehr am Ende. Diese Option setzt '''keine''' Partition aktiv.
 +
*sgdisk -e /dev/sdb
  
Wenn es nicht um einen Ersatz des Datenträgers geht, sollte man anschließend dem Datenträger sdZ noch neue Datenträger- und Partitions-UUIDs zuweisen:
+
=MBR in eine GPT umwandeln=
 +
Wandelt um, löscht '''nicht'''.
 +
*sgdisk -g /dev/sdb
  
sudo sgdisk -G /dev/sdZ 
+
=Platte leeren=
Partitionsname ändern
+
<code>-Z</code> entfernt GPT und MBR samt der Sicherung am Plattenende. Danach ist die Aufteilung weg.
In einer GPT kann jeder Partition neben ihren Grenzen, ihres Typs, ihrer individuellen UUID und ihrer Attribute auch ein frei wählbarer Name als Partitions-Label vergeben werden, um eine bessere Identifizierung der einzelnen Partitionen zu ermöglichen. Bei der Neuanlage einer Partition wird dazu die Standard-Bezeichnung aus der programminternen ID-Namens-Tabelle herangezogen.
+
*sgdisk -Z /dev/sdb
  
Ein Partitionslabel belegt 72 Byte im Partitionseintrag; darin werden 36 Unicode-Zeichen mit Codierung UTF16LE gespeichert.
+
Nur die GPT entfernen, den MBR stehen lassen:
 +
*sgdisk -z /dev/sdb
  
Im folgenden Beispiel werden die Namen von 3 Partitionen (1, 2, 5) in der GPT des Datenträgers sdX geändert:
+
=Eine Platte in einem Aufruf komplett einrichten=
 +
Weil sgdisk beim Beenden schreibt, ist ein Aufruf besser als sechs. Hier: EFI, boot und eine LVM-Partition über den Rest.
 +
*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
  
sudo sgdisk -c 1:BIOS-Grub /dev/sdX                      # Partition 1 - Name: BIOS-Grub
+
Vorher gefahrlos ansehen, was passieren würde:
sudo sgdisk -c 2:Standard_Lucid /dev/sdX                  # Partition 2 - Name: Standard_Lucid
+
*sgdisk -P -o -n 1:0:+512M /dev/sdb
sudo sgdisk -c 5:"Ubuntu 22.04 Jammy Jellyfish" /dev/sdX  # Quotierung wegen Leerzeichen erforderlich!
 
sudo sgdisk -p /dev/sdX                                  # Listen der neuen Partitionen-Informationen
 
cgdisk
 
Das Programm cgdisk ist eine Textoberfläche zu gdisk, welche die wichtigsten Aufgaben über eine Menüsteuerung bereitstellt und selbsterklärend ist. Die Steuerung erfolgt über die Pfeiltasten und Enter.
 
  
Beim Aufruf muss immer ein zu bearbeitender Datenträger[5] angegeben werden:
+
==Optionsübersicht==
  
sudo cgdisk DEVICE
+
Für den schnellen Rückblick. Details stehen jeweils oben und in <code>man sgdisk</code>.
Ausführliche Informationen liefert die Manpage sowie die Links zur Programmierer-Seite.
 
  
fixparts
+
{| class="wikitable"
Mit dem Programm fixparts kann man keine Datenträger mit GPT bearbeiten, sondern nur solche mit DOS/MBR-Partitionsschema. Es ist beispielsweise nützlich zur Vorbereitung einer DOS/MBR-Platte vor einer Umwandlung nach GPT mit gdisk.
+
! Option !! Lang !! Wirkung
 
+
|-
Syntax: fixparts
+
| <code>-p</code> || <code>--print</code> || Partitionstabelle anzeigen
Beim Aufruf muss immer ein zu bearbeitender Datenträger[5] angegeben werden:
+
|-
 
+
| <code>-i</code> || <code>--info</code> || Einzelheiten zu einer Partition
sudo fixparts DEVICE
+
|-
Menü: fixparts
+
| <code>-L</code> || <code>--list-types</code> || Typcodes auflisten
Das Programm arbeitet interaktiv und erwartet Tastendrucke.
+
|-
 
+
| <code>-v</code> || <code>--verify</code> || Platte prüfen
Auswahl von Kommandos von fixparts
+
|-
Taste Beschreibung
+
| <code>-P</code> || <code>--pretend</code> || berechnen, aber nicht schreiben
Q Programm beenden ohne Änderung der Partitionstabelle auf dem Datenträger.
+
|-
? Liste mit den Kommandos und deren Beschreibung anzeigen.
+
| <code>-o</code> || <code>--clear</code> || neue, leere GPT
P Liste mit den aktuell definierten Partitionen und deren Status anzeigen.
+
|-
L Eine primäre Partition zu einem logischen Laufwerk umwandeln. Das funktioniert nur, wenn das momentan gültige Layout so etwas ermöglicht.
+
| <code>-n</code> || <code>--new</code> || Partition anlegen
R Ein logisches Laufwerk zu einer primären Partition umwandeln. Das funktioniert nur, wenn das momentan gültige Layout so etwas ermöglicht.
+
|-
A Das Bootflag umschalten.
+
| <code>-d</code> || <code>--delete</code> || Partition löschen
T Den Typ einer Partition ändern.
+
|-
W Die Partittionstabelle auf den Datenträger schreiben und das Programm beenden.
+
| <code>-t</code> || <code>--typecode</code> || Typcode setzen
Ausführliche Informationen liefert die Manpage sowie die Links zur Programmierer-Seite.
+
|-
 
+
| <code>-c</code> || <code>--change-name</code> || Namen setzen
Technische Hinweise
+
|-
Aufbau einer GPT
+
| <code>-A</code> || <code>--attributes</code> || Attribut-Bits
Die Grenzen einer Partition werden beim GPT-Schema als LBA-Werte (Logical Block Address) der jeweiligen logischen Sektoren auf dem Datenträger gespeichert, dafür stehen jeweils 8 Byte bzw. 64 Bit zur Verfügung. Aktuelle Datenspeicher benutzen davon nur 48 Bit (LBA48) und können damit (bei einer Größe eines logischen Sektors von 512 Byte) bis zu 4 PiB Daten verwalten.
+
|-
 
+
| <code>-u</code> || <code>--partition-guid</code> || Partitions-GUID setzen
Beim GPT-Schema werden mehrere Bereiche benutzt, die zusammen mindestens 33,5 kiB für zwei Tabellen belegen:
+
|-
 
+
| <code>-U</code> || <code>--disk-guid</code> || Platten-GUID setzen
Die Haupttabelle steht am Anfang des Datenträgers. Diese wird normalerweise benutzt und besteht aus einem "Protektive MBR", dem primären Kopf (GUID Partition Table Header, GPT-Header) und dem Platz für die Einträge zu den Partitionen (Partition Entry Array).
+
|-
 
+
| <code>-G</code> || <code>--randomize-guids</code> || alle GUIDs neu erwürfeln
Eine Kopie der Haupttabelle steht am Ende des Datenträgers als Sicherung. Diese Sicherungstabelle wird im normalen Betrieb nicht verwendet und besteht aus dem Feld der Einträge zu den Partitionen vor dem sekundären Kopf (GPT-Backup-Header).
+
|-
 
+
| <code>-a</code> || <code>--set-alignment</code> || Ausrichtung in Sektoren
Beide Tabellen enthalten die vollständige Information zur Aufteilung des Datenträgers in Partitionen und verweisen gegenseitig aufeinander. Abgesehen von diesen Verweisen sind die Daten in den Feldern der Einträge zu den Partitionen identisch.
+
|-
 
+
| <code>-b</code> || <code>--backup</code> || in Datei sichern
Eine Haupttabelle (primary table) belegt normalerweise 17 KiB bzw. z.B. 34 logische Sektoren á 512 Byte und bietet Platz zur Beschreibung von 128 Partitionen. Das Format erlaubt zwar auch kleinere oder größere Tabellen, allerdings widersprechen kleinere Tabellen der Spezifikation und es gibt keine Motivation für mehr als 128 Partitionen auf einem Datenträger:
+
|-
 
+
| <code>-l</code> || <code>--load-backup</code> || aus Datei zurückladen
Im ersten logischen Sektor des Datenträgers (also LBA=0) werden die ersten 512 Byte ignoriert und können bzgl. des Tabellenformates beliebigen Inhalt haben. Bei einer bootfähigen Platte ist jedoch in diesem Bereich ein "Protective MBR" verpflichtend. Das Programm gdisk und seine Schwestern legen in diesem Bereich beim Schreiben einer Partitionstabelle immer einen "Protective MBR" oder einen "Hybrid MBR" an. Dies ist jeweils eine Partitionstabelle im DOS/MBR-Format, und diese dient nur dazu, Programme wie fdisk zur Bearbeitung der DOS/MBR-Partitionstabelle von der Bearbeitung des Datenträgers abzuhalten. Wenn der Sektor mit der LBA 0 mehr als 512 Byte enthalten sollte, so werden diese ignoriert.
+
|-
 
+
| <code>-R</code> || <code>--replicate</code> || auf zweite Platte übertragen
Im zweiten logischen Sektor (also LBA=1) steht in den ersten 92 Byte der primäre Kopf zur Beschreibung der gesamten Tabelle. Hier stehen die Größe der Tabelle, der Verweis auf die andere Tabelle und eine UUID zur Identifizierung des gesamten Datenträgers sowie eine Prüfsumme und eine Signatur. Die folgenden 420 Byte sind reserviert ist und müssen Nullen enthalten. Wenn der Sektor mit der LBA 1 mehr als 512 Byte enthalten sollte, so werden diese ignoriert.
+
|-
 
+
| <code>-e</code> || <code>--move-second-header</code> || Sicherung ans Ende schieben
In der Regel beginnt mit dem logischen Sektor LBA=2 (Man könnte es anders machen, wenn man z.B. ab LBA=2 einen Bootmanager für die Bios-Boot-Methode platzieren will.) das Feld der Einträge zu den Partitionen. Dafür sind mindestens 16 KiB zu reservieren. Jeder Eintrag umfasst 128 Byte.
+
|-
 
+
| <code>-g</code> || <code>--mbrtogpt</code> || MBR in GPT umwandeln
Die Sicherungstabelle (backup table, secondary table) belegt mindestens 16,5 KiB:
+
|-
 
+
| <code>-z</code> || <code>--zap</code> || GPT zerstören
Im logischen Sektor mit der höchsten möglichen LBA für den Datenträger steht der sekundäre Kopf.
+
|-
 
+
| <code>-Z</code> || <code>--zap-all</code> || GPT und MBR zerstören
In den logischen Sektoren unmittelbar vor dem sekundären Kopf steht die Kopie des Felds der Einträge zu den Partitionen.
+
|}
 
 
Jeder Eintrag für eine Partition enthält u.a. die Werte des ersten und des letzten LBA der jeweiligen Partition. Diese Angaben müssen jeweils logische Sektoren nach dem letzten für das primäre Feld der Einträge für Partitionen reservierten logischen Sektor und vor dem ersten logischen Sektor der Kopie des Feldes der Einträge für Partitionen adressieren.
 
 
 
Bei einem Datenträger mit einer logischen Sektorgröße von 512 Byte ist somit LBA=34 der erste für Partitionen benutzbare Sektor, bei einer logischen Sektorgröße von 4096 Byte wäre es LBA=6. In der Regel erhält man jedoch bei einer Ausnutzung dieser durch das Format bestimmten Grenzen eine schlechte Performanz; man lese dazu Näheres unter Sector Alignment.
 
 
 
Partitionsattribute
 
Den Partitionen können 64 boolsche Attribute zugewiesen werden, wie z.B. das Bootfähig-Flag unter Windows. Interessant wird dies z.B. bei einem System, dass sowohl im BIOS- als auch im EFI-Modus betrieben werden soll. GRUB 2 nutzt dabei unterschiedliche Partitionen für die Bootloader-Infos, wobei die BIOS Boot Partition vor EFI versteckt werden muss.
 
 
 
Liste der z.Zt. bekannten Attribute
 
Wert Beschreibung
 
0 Systempartition (system partition)
 
1 Verstecke die Partition vor EFI (hide from EFI)
 
2 Legacy Bootflag (legacy BIOS bootable)
 
60 Nur lesen (read-only)
 
62 Versteckt (hidden)
 
63 Nicht Einhängen (do not automount)
 
Sector Alignment
 
Der Wert für das "Sector Alignment" ist eine Einstellung für die Arbeitsweise des Partitionierungsprogramms und wird selber nicht auf den Datenträger geschrieben. Der Wert bestimmt die logischen Sektoren, an denen eine neu angelegte Partition beginnen darf, indem der Startsektor einer Partition ein ganzzahliges Vielfaches des Wertes für das "Sector Alignment" sein muss.
 
 
 
Eine ungeschickte Wahl dieses Wertes kann die Performanz des Datenträgers verschlechtern. Für eine optimale Wahl müssen mehrere Parameter bekannt sein:
 
 
 
Größe eines logischen Sektors des Datenträgers
 
 
 
Größe eines physischen Sektors des Datenträgers
 
 
 
die minimale/optimale/maximale E/A-Transferblockgrößen für den Datenträger
 
 
 
Größe der vom später formatierten Dateisystem verwendeten Blocke
 
 
 
Bei SSDs kann die Größe eines "Eraseble Blocks" eine Rolle spielen.
 
 
 
Ein logischer Sektor hat oft, aber nicht immer eine Größe von 512 Byte. Ein physischer Sektor, der die kleinste von der Platte les-/schreibbaren Datenmenge beschreibt, ist ein ganzzahliges Vielfaches eines logischen Sektors. Die Transferblockgrößen sind individuell für das jeweilige Gerät und stehen nicht in einfacher Weise zu den Sektorgrößen. Die vom Dateisystem verwalteten Blöcke (Standardgröße oft: 4KiB) sollten einen oder mehrere physische Sektoren vollständig enthalten, da eine Aufteilung eines physischen Sektors auf zwei Blöcke des Dateisystems die Performanz immer verschlechtern würde.
 
 
 
Bei frühen SSDs (Markteinführung vor ca. 2010) muss die Größe eines "Eraseble Blocks" berücksichtigt werden und bei solchen SSDs müssen die Partitionen an Grenzen solcher "Eraseble Blocks" beginnen und enden. Die Größe eines "Eraseble Blocks" hängt ab vom Hersteller und Type des Geräts, ist meistens dem Anwender nicht bekannt und für diesen auch nicht einfach zu bestimmen. In der Regel soll man auf der sicheren Seite liegen, wenn man die Partitionen auf ganze MiB ausrichtet, sofern der Hersteller dazu keine Angaben macht.
 
 
 
Bei modernen SSDs (ca. ab 2010), welche die Zuordnung von logischen zu physischen Blöcken selber dynamisch verwalten und über die Funktion TRIM verfügen, verliert das Konzept des "Eraseble Blocks" seinen Sinn. Wenn man bei modernen SSDs die Partitionen auf ganze MiB ausrichtet, ist bereits alles richtig getan, was der Anwender selbst in der Hand hat. Siehe hierzu auch die Diskussion bei superuser.com.
 
 
 
In der Praxis wählt man oft ein "Sector Alignment" der Partitionen auf ganze MiB bzw.
 
 
 
2048 Sektoren bei einer Größe der logischen Sektoren von 512 Byte oder
 
 
 
256 Sektoren bei einer Größe der logischen Sektoren von 4096 Byte.
 
 
 
Diese Vorgabe verschwendet einige Sektoren, berücksichtigt aber alle bekannten Einflüsse auf die Performanz.
 
 
 
Die Programme der Familie gdisk verwenden deshalb als Vorgabe diese Ausrichtung auf ganze MiB, sofern noch keine Partition eingerichtet wurde. Wenn bereits Partitionen existieren, die anders ausgerichtet sind, wird für neue Partitionen ein mit den bestehenden Partitionen kompatibler Wert ermittelt.
 
 
 
Protective MBR
 
Ein "Protective MBR" enthält eine DOS/MBR Partitionstabelle mit nur einem Eintrag, der den gesamten Datenträger oder jedenfalls den mit diesem Format maximal beschreibbaren Bereich als belegt kennzeichnet.
 
 
 
Hybrid MBR
 
Das ist eine nicht der Spezifikation entsprechende Variante eines "Protective MBR". Neben dessen Schutzeintrag können hier noch bis zu 3 weitere Partitionen redundant zur Beschreibung in der GPT beschrieben werden.
 
 
 
"Hybrid MBRs" waren erforderlich für Betriebssysteme, solange diese das GPT-Schema nicht beherrschten. Man kann sie außerdem verwenden, um beim Start des Rechners per Bios-Boot-Methode die Startpartition zu bezeichnen, was allerdings die Mitarbeit der Rechnerfirmware voraussetzt und nicht immer funktioniert. Generell gelten "Hybrid MBRs" als unzuverlässig und sollten nur verwendet werden, wenn es keine bessere Möglichkeit gibt.
 

Aktuelle Version vom 19. August 2026, 16:57 Uhr

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 kennt keinen Schreibbefehl. Eine im Arbeitsspeicher veränderte GPT wird beim Beenden automatisch auf den Datenträger geschrieben. Ein falsch getippter Aufruf kann eine Platte unbrauchbar machen. Zum gefahrlosen Ausprobieren dient die Option -P: damit wird alles berechnet und angezeigt, aber nichts geschrieben.

Beim Aufruf steht immer der Datenträger am Ende. Mehrere Optionen lassen sich in einem Aufruf kombinieren – das ist der übliche Weg, weil dann nur einmal geschrieben wird.

Alle Optionen anzeigen

  • sgdisk --help

Handbuchseite

  • man sgdisk

Partitionstabelle anzeigen

  • sgdisk -p /dev/sdb

Einzelheiten zu einer Partition

Zeigt GUIDs, Start- und Endsektor, Attribute und Namen der Partition 1.

  • sgdisk -i 1 /dev/sdb

Bekannte Typcodes auflisten

  • sgdisk -L

Platte prüfen

Vergleicht primäre und gesicherte Strukturen, prüft die Prüfsummen und meldet Überlappungen.

  • sgdisk -v /dev/sdb

Nichts schreiben, nur zeigen

-P berechnet die Änderung und zeigt das Ergebnis, schreibt aber nicht. Zum Testen jedes ändernden Aufrufs vorschalten.

  • sgdisk -P -n 1:0:+512M /dev/sdb

Neue, leere GPT anlegen

  • sgdisk -o /dev/sdb

Eine Partition anlegen

Die Syntax ist -n PARTNUM:ANFANG:ENDE. Eine 0 bedeutet an jeder der drei Stellen die Vorgabe: erster freier Eintrag, erster freier ausgerichteter Sektor, letzter verfügbarer Sektor. Ohne -t bekommt die Partition den Typ 8300. Die Ausrichtung auf 2048 Sektoren übernimmt sgdisk selbst.

512 MiB, Lage automatisch:

  • sgdisk -n 1:0:+512M /dev/sdb

20 GiB direkt dahinter:

  • sgdisk -n 2:0:+20G /dev/sdb

Der ganze Rest der Platte:

  • sgdisk -n 3:0:0 /dev/sdb

Typcode setzen

Ändert nur die Kennung, nicht die Daten der Partition.

  • sgdisk -t 1:ef00 /dev/sdb

Die gebräuchlichen Codes:

Code Bedeutung
8300 Linux filesystem
8200 Linux swap
8e00 Linux LVM
fd00 Linux RAID
ef00 EFI System Partition
ef02 BIOS boot partition

Namen einer Partition setzen

  • sgdisk -c 1:system /dev/sdb

Attribut setzen

Die Syntax ist -A PARTNUM:AKTION:BIT, Aktionen sind set, clear, toggle und show.

Legacy BIOS bootable (Bit 2) setzen:

  • sgdisk -A 1:set:2 /dev/sdb

Gesetzte Bits anzeigen:

  • sgdisk -A 1:show /dev/sdb

Die wichtigsten Bits:

Bit Bedeutung
0 erforderliche Partition, nicht löschen
2 legacy BIOS bootable
60 nur lesen
63 kein Automount

GUID einer Partition neu erwürfeln

Das R steht für einen Zufallswert.

  • sgdisk -u 1:R /dev/sdb

Alle GUIDs neu erwürfeln

Nach dem Klonen einer Platte nötig, sonst tragen Original und Kopie dieselben GUIDs.

  • sgdisk -G /dev/sdb

Partition löschen

  • sgdisk -d 1 /dev/sdb

GPT in eine Datei sichern

Die Datei enthält Protective MBR, Header, Sicherungs-Header und die Partitionseinträge. Sie gehört auf ein anderes Medium.

  • sgdisk -b /root/sdb-gpt.bin /dev/sdb

GPT aus einer Datei zurückladen

  • sgdisk -l /root/sdb-gpt.bin /dev/sdb

Partitionstabelle auf eine zweite Platte übertragen

Der klassische Fall vor dem Anlegen eines Verbunds aus zwei gleichen Platten. Beim Übertragen steht das Ziel vorn, die Quelle hinten.

  • sgdisk -R /dev/sdc /dev/sdb

Danach zwingend die GUIDs der Kopie neu erwürfeln:

  • sgdisk -G /dev/sdc

Sicherung ans Plattenende verschieben

Nötig, wenn eine Platte oder ein LUN nachträglich vergrößert wurde – die Sicherung liegt dann nicht mehr am Ende. Diese Option setzt keine Partition aktiv.

  • sgdisk -e /dev/sdb

MBR in eine GPT umwandeln

Wandelt um, löscht nicht.

  • sgdisk -g /dev/sdb

Platte leeren

-Z entfernt GPT und MBR samt der Sicherung am Plattenende. Danach ist die Aufteilung weg.

  • sgdisk -Z /dev/sdb

Nur die GPT entfernen, den MBR stehen lassen:

  • sgdisk -z /dev/sdb

Eine Platte in einem Aufruf komplett einrichten

Weil sgdisk beim Beenden schreibt, ist ein Aufruf besser als sechs. Hier: EFI, boot und eine LVM-Partition über den Rest.

  • 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

Optionsübersicht

Für den schnellen Rückblick. Details stehen jeweils oben und in man sgdisk.

Option Lang Wirkung
-p --print Partitionstabelle anzeigen
-i --info Einzelheiten zu einer Partition
-L --list-types Typcodes auflisten
-v --verify Platte prüfen
-P --pretend berechnen, aber nicht schreiben
-o --clear neue, leere GPT
-n --new Partition anlegen
-d --delete Partition löschen
-t --typecode Typcode setzen
-c --change-name Namen setzen
-A --attributes Attribut-Bits
-u --partition-guid Partitions-GUID setzen
-U --disk-guid Platten-GUID setzen
-G --randomize-guids alle GUIDs neu erwürfeln
-a --set-alignment Ausrichtung in Sektoren
-b --backup in Datei sichern
-l --load-backup aus Datei zurückladen
-R --replicate auf zweite Platte übertragen
-e --move-second-header Sicherung ans Ende schieben
-g --mbrtogpt MBR in GPT umwandeln
-z --zap GPT zerstören
-Z --zap-all GPT und MBR zerstören