|
|
| (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.
| |
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
Handbuchseite
Partitionstabelle anzeigen
Einzelheiten zu einer Partition
Zeigt GUIDs, Start- und Endsektor, Attribute und Namen der Partition 1.
Bekannte Typcodes auflisten
Platte prüfen
Vergleicht primäre und gesicherte Strukturen, prüft die Prüfsummen und meldet Überlappungen.
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
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:
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.
Alle GUIDs neu erwürfeln
Nach dem Klonen einer Platte nötig, sonst tragen Original und Kopie dieselben GUIDs.
Partition löschen
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:
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.
MBR in eine GPT umwandeln
Wandelt um, löscht nicht.
Platte leeren
-Z entfernt GPT und MBR samt der Sicherung am Plattenende. Danach ist die Aufteilung weg.
Nur die GPT entfernen, den MBR stehen lassen:
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
|