ubuntuusers.de

gdisk

Achtung!

Veränderungen an einer GPT können das System unbrauchbar machen und sollten nie ohne eine vorherige Datensicherung durchgeführt werden.

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Wiki/Icons/terminal.png Das Paket gdisk 🇬🇧 (fdisk für GPT) enthält Kommandozeilen-Programme zur Partitionierung von Datenträgern mit GUID Partitionstabelle (kurz GPT). Dabei werden eigenständige Programm-Module eingesetzt, die nicht auf libparted aufsetzen. (GUID ist ein Synonym für UUID, solche Bezeichner dienen als Bezeichner für Typen und als individuelle Bezeichner der Partitionen.)

Die Auswahl des Schemas für die Partitionierung – bei PC in der Regel entweder das alte DOS/MBR-Schema oder das modernere GPT-Schema – und die Auswahl der Boot-Methode (Bios oder UEFI) sind grundsätzlich voneinander unabhängige Entscheidungen. Ubuntu kann mit allen vier möglichen Kombinationen arbeiten. MS Windows unterstützt nach gewollter Einschränkung seiner Entwickler jedoch nur die beiden Kombinationen DOS/MBR-Schema mit Start nach alter BIOS-Boot-Spezifikation und GPT-Schema mit Start nach UEFI-Spezifikation. Zu den Besonderheiten beim Start per GRUB siehe den Artikel GRUB 2/Grundlagen.

Für die Bearbeitung einer Partitionstabelle nach DOS/MBR-Schema steht das Programmpaket fdisk zur Verfügung.

Installation

Das Programmpaket ist bei Ubuntu in jeder Standard-Installation bereits vorhanden.

Installation aus den Paketquellen

Es kann direkt aus den offiziellen Paketquellen installiert werden[1]:

  • gdisk (Textmodus-Partitionierungswerkzeug GPT fdisk, main)

Befehl zum Installieren der Pakete:

sudo apt-get install gdisk 

Oder mit apturl installieren, Link: apt://gdisk

Im Paket sind folgende Programme enthalten:

  • gdisk - zur interaktiven Nutzung auf der Kommandozeile

  • sgdisk - skripting-fähige Variante

  • cgdisk - ncurses-Textoberfläche für gdisk

  • fixparts - gesondertes Reparaturprogramm für den MBR-Bereich

Das Programm sgdisk wird intern vom Programm gdisk benutzt und muss daher vorhanden sein; die beiden weiteren Programme sind optional.

Manuell

Um das Programm aus dem Quellcode zu kompilieren, müssen vorher die folgenden Pakete installiert werden:

  • build-essential

  • libicu-dev

  • libncurses5-dev

  • libpopt-dev

Befehl zum Installieren der Pakete:

sudo apt-get install build-essential libicu-dev libncurses5-dev libpopt-dev 

Oder mit apturl installieren, Link: apt://build-essential,libicu-dev,libncurses5-dev,libpopt-dev

Anschließend lädt man sich von SourceForge 🇬🇧 den aktuellen Quelltext herunter, entpackt[2] ihn in einen beliebigen Ordner und führt make aus.

cd /Pfad/zum/entpackten/Quelltext
sudo make 

Die erzeugten Programme sowie die Dokumentationen müssen nur noch an einen ausführbaren Ort verschoben werden, z.B.:

sudo cp gdisk sgdisk cgdisk fixparts /usr/local/sbin/
sudo cp gdisk.8 sgdisk.8 cgdisk.8 fixparts.8 /usr/local/share/man/man8/ 

Bedienung

Die Programme gdisk und sgdisk können auch eine DOS/MBR-Partitionstabelle, BSD-Disklabel oder "Apple Partition Map" auflisten, aber nicht manipulieren. Solche fremden Partitionstabellen werden automatisch im Arbeitsspeicher in eine GPT übersetzt. Auf diesen Umstand (hier beispielhaft für DOS/MBR) weisen die Programme mit folgender Meldung hin:

***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
***************************************************************

Die automatisch erzeugte Übersetzung kann bearbeitet und auf den Datenträger geschrieben werden – damit kann man Fremdformate leicht konvertieren; bei Verwendung einer erweiterten (sekundären) DOS/MBR-Partition mit logischen Laufwerken muss man das eventuell mit fixparts vorbereiten. Leider ist das eine Einbahnstraße!

Ein Verständnis der hier folgenden Bedienungen erfordert Kenntnisse wie im Abschnitt „Technische Hinweise“ erläutert.

gdisk

Das Programm gdisk erstellt und bearbeitet GPTs; es legt darin Partitionen an, löscht, manipuliert oder listet sie. Es ist interaktiv und erwartet Tastendrucke für die Kommandos. Die Ausführung und Benutzung erfolgt immer mit Root-Rechten[3] im Terminal[4].

Hinweis:

Das interaktive Programm gdisk bearbeitet immer – im Gegensatz zum Programm sgdisk – eine temporäre Kopie der Partitionstabelle im Arbeitsspeicher. Das Programm kann jederzeit mit Q verlassen werden, ohne Veränderungen am Datenträger vorzunehmen. Erst mit dem Kommando W werden alle Informationen auf den Datenträger geschrieben und dies ist auch das einzige Kommando von gdisk, welches etwas auf den Datenträger schreibt.

Syntax

Beim Aufruf muss immer ein zu bearbeitender Datenträger[5][6] an der Stelle DEVICE angegeben werden:

sudo gdisk DEVICE 

Die Kommandos sind auf drei Menüs verteilt. In jedem Menü kann man durch einfachen Tastendruck u.a. folgende Aktionen veranlassen:

gdisk: Auswahl von Kommandos, die in jedem Menü möglich sind
Taste Beschreibung
? Ausgabe eines Hilfetextes der im aktuellen Menü zur Verfügung stehenden Kommandos
M Wechsel ins Hauptmenü (main menu)
R Wechsel ins Expertenmenüs R („Rettungs- und Transformationsmenü“ – recovery and transformation options (experts only))
X Wechsel ins Expertenmenüs X („Zusätzliche Funktionen“ – extra functionality (experts only))
P Partitionstabelle anzeigen.
Q Programm beenden, ohne Veränderungen auf den Datenträger zu schreiben.
W Abspeichern aller Änderungen in die GPT-Bereiche eines Datenträgers und Programm beenden.

Hinweis:

Andere Tasten bewirken zum Teil je nach angewählter Menü-Ebene unterschiedliche Funktionen!

Eine Erklärung aller Kommandos und Optionen mit ausführlicher Information liefern die Programmierer-Seiten, die Manpage des Programms sowie auszugsweise die Tabellen in folgenden Abschnitten:

man gdisk 

Hauptmenü

gdisk: Auswahl von Kommandos im Hauptmenü (main menu)
Taste Beschreibung
B Backup: GPT in eine Datei sichern. Der Dateiname wird erfragt.
I Detaillierte Informationen zu einer Partition – die Nummer der Partition (1-128) wird anschließend abgefragt.
L Bekannte Typen für Partitionen (ID) und deren Bezeichnung (Name) auflisten.
C Ändern des frei wählbaren Namens einer Partition (mehr Infos: Partitionsname ändern)
D Löschen einer Partition – die Nummer der Partition (1-128) wird anschließend abgefragt.
N Neuanlage einer Partition – die Nummer der Partition, erster und letzter Sektor sowie Typ werden anschließend abgefragt. Zur Schreibweise der Sektorangaben siehe Anlegen einer Partition.
S Sortieren aller Einträge zu Partitionen, aufsteigend nach Sektoren – dabei werden auch die Nummern der Partitionen neu vergeben. (Ggf. in den Dateien fstab und grub.cfg die Identifizierungen von Partitionen anpassen!)
T Ändern des Typs einer Partition (ID), siehe dazu auch Kommando L ). Die Nummer der Partition wird erfragt.
V Überprüfen einer kompletten GPT inkl. Behebung kleinerer Fehler

Expertenmenü R

In diesem Menü (recovery and transformation options) finden Experten Operationen zur Rettung und Transformation von Partitionen.

gdisk: Auswahl von Kommandos im Expertenmenü R (recovery and transformation options)
Tatze Beschreibung
B Neuaufbau GPT-Header aus GPT-Backup-Header
C Einträge zu den Partitionen in der Haupttabelle aus der Sicherungstabelle übernehmen.
D Neuaufbau GPT-Backup-Header aus GPT-Header
E Einträge zu den Partitionen aus der Haupttabelle in die Sicherungstabelle sichern.
H Anlegen eines Hybrid MBR
O Anzeige des "Protective MBR" bzw. Hybrid MBR
L Partitionstabelle aus einer Sicherungsdatei in den Arbeitsspeicher laden. Diese wird erst durch ein explizites Schreibkommando aus dem Hauptmenü auf den Datenträger geschrieben.

Expertenmenü X

In diesem Menü (extra functionality) finden Experten zusätzliche selten benötigte Funktionen.

gdisk: Auswahl von Kommandos im Expertenmenü X (extra functionality)
Taste Beschreibung
A Partitions-Attribut setzen/löschen. Die Nummer des Attributs (0-63) und der Wert werden erfragt.
C UUID einer Partition (die erfragt wird) auf einen anzugebenden Wert setzen.
F Die GUID des Datenträgers und die UUIDs aller Partitionen auf neue zufällige Werte setzen. Dies ist insbesondere nach dem Klonen eines Datenträgers nützlich.
G GUID des Datenträgers auf einen anzugebenden oder neuen zufälligen Wert setzen.
D Wert für das "Sector Alignment" für neue Partitionen anzeigen.
L Wert für das "Sector Alignment" für neue Partitionen einstellen.
E Sicherungs-GPT vollständig neu erstellen und am Ende des Datenträgers platzieren. Dies ist insbesondere nach dem Klonen eines Datenträgers nützlich.
O "Protective MBR" bzw. "Hybrid MBR" anzeigen.

Beispiele

Hinweis:

In allen Beispielen wird als Datenträgerbezeichnung /dev/sdX genutzt. Diese muss auf das eigene System angepasst werden!

Der Start beinhaltet immer eine Kurzanalyse des angegebenen Datenträgers:

sudo gdisk /dev/sdX 
GPT fdisk (gdisk) version 0.8.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): 

GPT anzeigen:

Command (? for help): p 
Disk /dev/sdX: 7913471 sectors, 3.8 GiB
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
   1              34            2047   1007.0 KiB  EF02  BIOS Grub-Partition
   2            2048         7913437   3.8 GiB     0700  VFAT 32 Pendrive

Command (? for help):

Detaillierte Informationen zur Partition 1 anzeigen:

Command (? for help): i 

Bei mehreren vorhandenen Einträgen wird die Nummer der Partition zusätzlich abgefragt:

Partition number (1-4): 1 
Partition GUID code: 21686148-6449-6E6F-744E-656564454649 (BIOS boot partition)
Partition unique GUID: 9E39F351-4D0F-48C7-8402-93A0AF35A0B4
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'
Command (? for help):

Überprüfen der kompletten GPT inkl. kleinerer Fehlerbehebung:

Command (? for help): v 
No problems found. 0 free sectors (0 bytes) available in 0
segments, the largest of which is 0 (0 bytes) in size.
Command (? for help):

Beenden ohne Abspeichern der evtl. vorgenommenen Veränderungen auf den Datenträger[3]:

Command (? for help): q 

sgdisk

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!

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.

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.

Syntax

Beim Aufruf muss immer ein zu bearbeitender Datenträger[5][6] an der Stelle DEVICE angegeben werden:

sudo sgdisk OPTIONEN DEVICE 

Eine Erklärung aller Optionen mit ausführlicher Information liefern die Programmierer-Seiten, die Manpage des Programms sowie auszugsweise die folgenden Tabellen:

man sgdisk 

Optionen

sgdisk: Auswahl von Optionen ohne Veränderungen an einer GPT
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. Dies ist insbesondere nach dem Klonen eines Datenträgers nützlich.
-u PARTNUM:NEUER_UUID UUID der mit PARTNUM angegebenen Partition auf den Wert NEUER_UUID setzen.
-U NEUER_GUID GUID des Datenträgers auf den Wert NEUER_GUID setzen. Man kann für NEUER_GUID einfach "R" setzen, dann wird eine neuer Wert zufällig gewählt.
-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

Anzeige genereller Informationen der GPT und auflisten aller Einträge zu den Partitionen:

sudo sgdisk -p /dev/sdX 

Disk /dev/sdX: 7913471 sectors, 3.8 GiB
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
   1              34            2047   1007.0 KiB  EF02  BIOS Grub-Partition
   2            2048         7913437   3.8 GiB     0700  VFAT 32 Pendrive

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

Im folgenden Beispiel wird eine neue Partition mit der Nummer 5 angelegt:

  • Das Alignment wird auf 1024 logische Sektoren eingestellt (-a 1024)

  • Die neue Partition erhält die Nummer 5, wird 1024 Sektoren groß und belegt den Bereich von 4096-5119 Sektoren (-n 5:4096:5119)

  • Der interne Name der 5. Partition wird geändert (-c 5:"BIOS Boot Partition")

  • Der Partitionstyp wird auf ef02 eingestellt und bekommt dadurch die GUID 21686148-6449-6E6F-744E-656564454649 zugeteilt.

sudo sgdisk -a 1024 -n 5:4096:5119 -c 5:"BIOS Boot Partition" -t 5:ef02 /dev/sdX  

(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.)

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:

  • Schlichte Zahlen werden als LBA verstanden.

  • 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:

  • 5:2M:5119

  • 5:2M:+1024

  • 5:2M:+512K

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.

Partitions-Information (detailliert)

Detaillierte Informationen zur Partition 1 des Datenträgers:

sudo sgdisk -i1 /dev/sdX 
Partition GUID code: 21686148-6449-6E6F-744E-656564454649 (BIOS boot partition)
Partition unique GUID: 9E39F351-4D0F-48C7-8402-93A0AF35A0B4
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

Der Befehl

sudo sgdisk -b Backup_sdX.GPT /dev/sdX  

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.

Partitionstabelle zurückladen

Hinweis:

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.

Der Befehl

sudo sgdisk -l Backup_sdX.GPT /dev/sdX  

schreibt die GPT wieder zurück auf den Datenträger.

Partitiontabelle kopieren

Die Partitionstabelle von Datenträger[4] sdX nach sdZ kopieren:

sudo sgdisk -R /dev/sdZ /dev/sdX  

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.

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:

sudo sgdisk -G /dev/sdZ  

Partitionsname ändern

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.

Ein Partitionslabel belegt 72 Byte im Partitionseintrag; darin werden 36 Unicode-Zeichen mit Codierung UTF16LE gespeichert.

Im folgenden Beispiel werden die Namen von 3 Partitionen (1, 2, 5) in der GPT des Datenträgers sdX geändert:

sudo sgdisk -c 1:BIOS-Grub /dev/sdX                       # Partition 1 - Name: BIOS-Grub
sudo sgdisk -c 2:Standard_Lucid /dev/sdX                  # Partition 2 - Name: Standard_Lucid
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:

sudo cgdisk DEVICE 

Ausführliche Informationen liefert die Manpage sowie die Links zur Programmierer-Seite.

fixparts

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.

Syntax: fixparts

Beim Aufruf muss immer ein zu bearbeitender Datenträger[5] angegeben werden:

sudo fixparts DEVICE 

Das Programm arbeitet interaktiv und erwartet Tastendrucke.

Auswahl von Kommandos von fixparts
Taste Beschreibung
Q Programm beenden ohne Änderung der Partitionstabelle auf dem Datenträger.
? Liste mit den Kommandos und deren Beschreibung anzeigen.
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.
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.
T Den Typ einer Partition ändern.
W Die Partittionstabelle auf den Datenträger schreiben und das Programm beenden.

Ausführliche Informationen liefert die Manpage sowie die Links zur Programmierer-Seite.

Technische Hinweise

Aufbau einer GPT

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.

Beim GPT-Schema werden mehrere Bereiche benutzt, die zusammen mindestens 33,5 kiB für zwei Tabellen belegen:

  • 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).

  • 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).

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.

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:

  • 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.

  • 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.

  • 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.

Die Sicherungstabelle (backup table, secondary table) belegt mindestens 16,5 KiB:

  • Im logischen Sektor mit der höchsten möglichen LBA für den Datenträger steht der sekundäre Kopf.

  • 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.

Intern

  • Partitionierung – Übersicht und Allgemeines zur Partitionierung

  • UUID – Informationen zu UUID und GUID

  • Partitionstabellen sichern - Skript zum Sichern der Partitionstabellen (MPT, GPT) aller angeschlossener Datenträger in Dateien

Extern

Diese Revision wurde am 14. Januar 2024 12:42 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Partitionierung, System