FDISK(8)

BEZEICHNUNG
fdisk - manipuliert die Festplatten-Partitionstabelle

ÜBERSICHT

fdisk [Optionen] Gerät

fdisk -l [Gerät...]

BESCHREIBUNG

fdisk ist ein menügesteuertes Programm für die Erzeugung und Manipulation von Partitionstabellen. Es kann DOS-Partitionstabellen in den Formaten GPT, MBR, Sun, SGI und BSD verarbeiten.

Blockorientierte Geräte können in eine oder mehrere logische Platten (Partitionen) unterteilt werden. Diese Unterteilung wird in der Partitionstabelle notiert, die sich auf dem Sektor 0 der Platte befindet. (In der BSD-Welt spricht man von »disk slices« und einem »disklabel«.)

In der Voreinstellung werden jegliche Partitionierungsvorgänge durch die E/A-Grenzen (die Topologie) des Gerätes bestimmt. fdisk ist in der Lage, das Platten-Layout für eine 4K-Sektorengröße zu optimieren und den Ausrichtungsversatz auf modernen Geräten für MBR und GPT zu nutzen. Es ist immer eine gute Wahl, den Voreinstellungen von fdisk zum Beispiel im Hinblick auf den jeweils ersten und letzten Sektor einer Partition zu folgen, und die durch die +/-E<Größe>{M,G,...}-Notation angegebenen Partitionen werden stets entsprechend den Gegebenheiten des Gerätes ausgerichtet sein.

Die CHS-Adressierung (»Cylinder-Head-Sector«, Zylinder-Kopf-Sektor) gilt als veraltet und wird standardmäßig nicht verwendet. Bitte folgen Sie keinen veralteten Artikeln und Empfehlungen wie fdisk -S <n> -H <n> für SSD-Geräte oder solche mit 4k-Sektoren.

Beachten Sie, dass partx(8) eine leistungsfähige Schnittstelle für Skripte zum Ausgeben von Platten-Layouts bietet, während fdisk eher für Normalbenutzer entworfen wurde. Abwärtskompatibilität in der Ausgabe von fdisk kann nicht garantiert werden. Die Eingabe (die Befehle) dagegen sollten immer abwärtskompatibel sein.

OPTIONEN

-b, --sector-size Sektorgröße
    gibt die Sektorgröße der Festplatte an. Gültige Werte sind 512, 1024, 2048 oder 4096. Der Kernel kennt die Sektorgröße auf regulären blockorientierten Geräten. Verwenden Sie diese Option nur mit sehr alten Kerneln, oder wenn Sie mit Datenträger-Abbildern arbeiten, oder um die vorgegebene Sektorgröße des Kernels außer Kraft zu setzen. Seit util-linux-2.17 unterscheidet fdisk zwischen logischer und physischer Sektorgröße. Diese Option ändert beide Sektorgrößen auf die angegebene Sektorgröße.

-B, --protect-boot
    verhindert das Löschen des ersten Sektors des Geräts, wenn eine neue Festplattenbezeichnung erzeugt wird. Dieses Funktionsmerkmal wird für GPT und MBR unterstützt.

-c, --compatibility[=Modus]
    legt den Kompatibilitätsmodus (»dos« oder »nondos«) fest. Der Standardwert ist »nondos«. Um Abwärtskompatibilität zu gewährleisten, kann die Option ohne Modus-Argument verwendet werden. In diesem Fall wird der Standardwert verwendet. Beachten Sie, dass das optionale Modus-Argument nicht von der -c-Option durch ein Leerzeichen getrennt werden darf, die korrekte Form ist beispielsweise -c=dos.

-L, --color[=wann]
    stellt die Ausgabe farbig dar. Das optionale Argument wann kann auto, never oder always sein. Falls wann nicht angegeben ist, ist auto die Voreinstellung. Die Farben können deaktiviert werden. Die jeweilige einkompilierte Voreinstellung zeigt Ihnen die Option --help an. Siehe auch den Abschnitt FARBEN.

-l, --list
    gibt Partitionstabellen für die angegebenen Geräte aus und beendet das Programm.

    Wurden keine Geräte angegeben, werden bei Existenz von /proc/partitions die dort erwähnten Geräte verwendet. Die Geräte werden stets in der Reihenfolge aufgelistet, wie sie in der Befehlszeile angegeben werden, oder wie sie der Kernel in /proc/partitions auflistet.

-x, --list-details
    erzeugt eine Ausgabe wie mit --list, aber detailreicher.

--lock[=Modus]
    verwendet eine exklusive BSD-Sperre für das Gerät oder die Datei, auf dem/der es agiert. Das optionale Argument Modus kann yes, no (oder 1 und 0) oder nonblock sein. Falls das Argument Modus weggelassen wird, wird standardmäßig yes angenommen. Diese Option setzt die Umgebungsvariable $LOCK_BLOCK_DEVICE außer Kraft. Standardmäßig wird überhaupt keine Sperre gesetzt, dies wird aber empfohlen, um Kollisionen mit systemd-udevd(8) oder anderen Werkzeugen zu vermeiden.

-n, --noauto-pt
    erstellt auf einem leeren Gerät nicht automatisch eine neue Standard-Partitionstabelle. Die Partitionstabelle muss explizit vom Benutzer erstellt werden (mit einem Befehl wie »o«, »g« usw.).

-o, --output Liste
    gibt die anzuzeigenden Spalten an. Mit --help erhalten Sie eine Liste aller unterstützten Spalten.

    Die voreingestellte Liste der Spalten kann erweitert werden, indem Sie die Liste im Format +Liste angeben (beispielsweise -o +UUID).

--bytes*
    gibt die GRÖẞE in Byte anstelle eines menschenlesbaren Formats aus.

-s, --getsz
    gibt die Größe jedes der angegebenen blockorientierten Geräte in 512-Byte-Sektoren aus. Diese Option ist veraltet, verwenden Sie stattdessen blockdev(8).

-t, --type Typ
    aktiviert die Unterstützung für Plattenbezeichnungen des angegebenen Typs und deaktiviert die Unterstützung für alle anderen Typen.

-u, --units[=Einheit]
    legt fest, ob bei der Ausgabe von Partitionstabellen die Größe in »Sektoren« oder »Zylindern« angegeben wird. Standardmäßig wird die Größe in Sektoren angezeigt. Um Abwärtskompatibilität zu gewährleisten, kann die Option ohne das Einheit-Argument verwendet werden. In diesem Fall wird der Standardwert verwendet. Beachten Sie, dass das optionale Einheit-Argument nicht von der -u-Option durch ein Leerzeichen getrennt werden kann, die korrekte Form ist beispielsweise -u=Zylinder.

-C, --cylinders Zahl
    gibt die Zahl der Zylinder der Platte an. Und wozu soll das jemand verwenden wollen?

-H, --heads Zahl
    legt die Anzahl der Köpfe der Festplatte fest (natürlich nicht die physikalische Anzahl, sondern die für Partitionstabellen verwendete). Vernünftige Werte sind 255 und 16.

-S, --sectors Zahl
    legt fest, wie viele Sektoren sich auf einer Spur der Platte befinden, allerdings nicht die physikalische Anzahl, sondern die für Partitionstabellen verwendete. Ein sinnvoller Wert ist 63.

-w, --wipe wann
    entfernt Dateisystem, RAID und Partitionstabellensignaturen von dem Gerät, um mögliche Kollisionen zu vermeiden. Das Argument wann kann auto, never oder always lauten. Wenn diese Option nicht angegeben ist, ist die Vorgabe auto. In diesem Fall werden die Signaturen nur im interaktiven Modus entfernt. In allen Fällen werden erkannte Signaturen durch Warnmeldungen berichtet, bevor eine neue Partitionstabelle erstellt wird. Siehe auch den Befehl wipefs(8).

-W, --wipe-partitions wann
    löscht Dateisystem-, RAID- und Partitionstabellensignaturen von einer neu erstellten Partition, um mögliche Kollisionen zu vermeiden. Das Argument wann kann auto, never oder always lauten. Wenn diese Option nicht angegeben ist, ist die Vorgabe auto. In diesem Fall werden die Signaturen nur im interaktiven Modus und nach Bestätigung durch den Benutzer gelöscht. In allen Fällen werden die erkannten Signaturen durch Warnmeldungen berichtet, bevor eine neue Partition erstellt wird. Siehe auch den Befehl wipefs(8).

-h, --help
    zeigt einen Hilfetext an und beendet das Programm.

-V, --version
    zeigt Versionsinformationen an und beendet das Programm.

GERÄTE

Das Gerät ist normalerweise /dev/sda, /dev/sdb oder so. Ein Gerätename gilt für die ganze Platte. Alte Systeme ohne libata (eine im Linux-Kernel verwendete Bibliothek für ATA-Controller und -Geräte) unterscheiden zwischen IDE- und SCSI-Platten. Dort ist der Gerätename /dev/hd* (IDE) oder /dev/sd* (SCSI).

Die Partition besteht aus einem Gerätenamen und einer folgenden Partitionsnummer. Beispielsweise ist /dev/sda1 die erste Partition auf der ersten Festplatte des Systems (siehe auch in der Dokumentation des Linux-Kernels die Datei Documentation/admin-guide/devices.txt).

GRÖSSEN

Im »Letzter Sektor«-Dialog können Partitionsgrößen als Anzahl der Sektoren oder in der Notation +/-<Größe>{K,B,M,G,...} angegeben werden.

Wird der Größenangabe ein »+« vorangestellt, so wird diese als Anzahl der Bytes relativ zum ersten Sektor der Partition interpretiert. Falls der Größenangabe ein »-« vorangestellt wird, dann wird sie als relativ zu der Größenbegrenzung (dem letzten verfügbaren Sektor für die Partition) interpretiert.

Falls die Größe in Byte angegeben ist, dann kann eines der multiplikativen Suffixe KiB (1024 Byte), MiB (1024*1024 Byte) usw. für GiB, TiB, PiB, EiB, ZiB und YiB folgen. Dabei ist »iB« optional, beispielsweise ist »K« gleichbedeutend mit »KiB«.

Die relativen Größen, sofern mit multiplikativen Suffixen (beispielsweise +100MiB) angegeben, sind stets auf die E/A-Grenzen des Gerätes ausgerichtet. Die Notation +/-<Größe>{K,B,M,G,...} wird daher empfohlen.

Der letzte Sektor der Partition wird strikt als <Start> + <Größe> (ohne -1) berechnet, falls die Größe in der Notation +<Sektoren> angegeben wird. In diesem Fall ist die Größe nicht an den E/A-Begrenzungen des Gerätes ausgerichtet.

Aus Gründen der Abwärtskompatibilität akzeptiert fdisk auch die Suffixe KB (1000 Byte), MB (1000*1000 Byte) usw. für GB, TB, PB, EB, ZB und YB. Diese Dezimalsuffixe gelten jedoch als veraltet und sollten nicht mehr verwendet werden.

SKRIPTDATEIEN

fdisk kann (mit dem Befehl »I«) sfdisk(8)-kompatible Skriptdateien verarbeiten. Das Skript wird auf die im Speicher vorgehaltene Partitionstabelle angewendet, wodurch es möglich ist, die Partitionstabelle vor dem eigentlichen Speichern auf dem Laufwerk zu verändern.

Umgekehrt können Sie mit dem Befehl »O« die im Speicher vorgehaltene Partitionsaufteilung in eine Skriptdatei schreiben.

Die Skriptdateien sind zu cfdisk(8), sfdisk(8), fdisk(8) und weiteren libfdisk-Anwendungen kompatibel. Weitere Details finden Sie in sfdisk(8).

DISKLABEL

GPT (GUID-Partitionstabelle)
    GPT ist ein moderner Standard für das Layout der Partitionstabelle. GPT verwendet logische 64-Bit-Blockadressen, Prüfsummen, UUIDs und Namen für Partitionen sowie eine unbegrenzte Anzahl der Partitionen (wobei diese Anzahl in vielen Partitionierungswerkzeugen auf 128 begrenzt ist).

    Beachten Sie, dass der erste Sektor gemäß der GPT-Spezifikation stets für einen geschützten MBR reserviert ist. Dies verhindert, dass Partitionierungswerkzeuge, die nur auf den MBR zugreifen, GPT-Festplatten falsch erkennen und überschreiben.

    GPT ist stets vor MBR zu bevorzugen, insbesondere auf moderner Hardware mit einem UEFI-Bootloader.

DOS-Typ (MBR)
    Eine DOS-Partitionstabelle kann eine unbegrenzte Anzahl von Partitionen enthalten. In Sektor 0 gibt es Raum für die Beschreibung von 4 Partitionen (die als »primäre« bezeichnet werden). Eine von ihnen kann logische Partitionen enthalten und wird erweiterte Partition genannt. Jeder logischen Partition geht eine verkettete Liste von Sektoren voraus. Für die vier primären Partitionen sind unabhängig von deren Existenz die Nummern 1 bis 4 reserviert, die Nummerierung der logischen Partitionen beginnt bei 5.

    In einer DOS-Partitionstabelle wird der Startversatz (starting offset) und die Größe der einzelnen Partitionen auf zwei Arten gespeichert: als absolute Anzahl der Sektoren (angegeben in 32 Bit) und als Zylinder/Köpfe/Sektoren-Tripel (CHS, angegeben in 10/8/6 Bit). Ersteres ist in Ordnung - mit 512-Byte-Sektoren funktioniert das bis zu 2 TB. Letzteres hat zwei Probleme. Erstens können die C/H/S-Felder nur dann ausgefüllt werden, wenn die Anzahl der Köpfe und die Anzahl der Sektoren pro Spur bekannt sind. Und zweitens, selbst wenn diese Zahlen bekannt sind, reichen die 24 verfügbaren Bit nicht aus. DOS verwendet C/H/S, Windows beides, Linux verwendet C/H/S nie. Die C/H/S-Adressierung ist veraltet, daher ist es möglich, dass diese in zukünftigen Versionen von fdisk nicht mehr unterstützt wird.

    Bitte lesen Sie den Abschnitt zum DOS-Modus, wenn Sie DOS-kompatible Partitionen benötigen. fdisk beachtet in der Voreinstellung keine Zylindergrenzen.

BSD/Sun-Typ
    Eine BSD/SUN-Festplattenbezeichnung kann acht Partitionen beschreiben. Die dritte Partition sollte eine Partition beschreiben, die für eine »ganze Platte« steht. Partitionen, die (wie eine Auslagerungspartition) ihren ersten Sektor auf Zylinder 0 nutzen, sollten nicht benutzt werden, weil dadurch die Festplattenbezeichnung beschädigt wird. Beachten Sie, dass eine BSD-Bezeichnung üblicherweise innerhalb einer DOS-Partition verschachtelt ist.

IRIX/SGI-Typ
    Eine IRIX/SGI-Festplattenbezeichnung kann 16 Partitionen beschreiben; die elfte sollte eine vollständige »volume«-Partition sein, während die neunte als »volume header« gekennzeichnet werden sollte. Der Volume Header wird auch die Partitionstabelle umfassen, d. h. er beginnt bei Block Null und erstreckt sich standardmäßig über fünf Zylinder. Der verbleibende Platz im Volume Header kann durch Header-Verzeichniseinträge belegt werden. Es dürfen keine Partitionen mit dem Volume Header überlappen. Legen Sie dort kein Dateisystem an und verändern Sie nicht seinen Typ, weil Sie dadurch die Partitionstabelle verlieren. Verwenden Sie diese Bezeichnung nur, wenn Sie mit Linux auf IRIX-/SGI-Maschinen arbeiten oder auf IRIX-/SGI-Festplatten zugreifen.

    Die Aufrufe sync(2) und ioctl(BLKRRPART) werden nach der Aktualisierung der Partitionstabelle ausgeführt (wobei die Partitionstabelle auf der Platte neu eingelesen wird), bevor das Programm beendet wird.

WARNUNG ZUM DOS-MODUS UND DOS-6.X-

Beachten Sie, dass all dies veraltet ist. Sie müssen sich eigentlich auf modernen Betriebssystemen nicht mit Dingen wie Geometrie und Zylindern befassen. Wenn Sie wirklich DOS-kompatible Partitionierung benötigen, dann müssen Sie den DOS-Modus und Zylinder-Einheiten mit den Befehlszeilenoptionen »-c=dos -u=cylinders« für fdisk aktivieren.

Der FORMAT-Befehl von DOS 6.x sucht im ersten Sektor des Datenbereichs der Partition nach ein paar Informationen und behandelt diese Informationen als zuverlässiger als die Informationen in der Partitionstabelle. Der DOS-FORMAT-Befehl erwartet vom DOS-FDISK-Befehl, dass die ersten 512 Byte des Datenbereichs einer Partition bei jeder Größenänderung gelöscht werden. DOS FORMAT wird diese zusätzlichen Informationen suchen, auch wenn der /U-Schalter gesetzt ist - die Programmautoren betrachten dies als einen Fehler in DOS FORMAT und DOS FDISK.

Die Quintessenz ist: Wenn Sie mit fdisk oder cfdisk(8) die Größe eines Eintrags in der DOS-Partitionstabelle ändern, dann müssen Sie auch mit dd die ersten 512 Byte der Partition auf Null setzen, bevor Sie mit dem DOS-FORMAT-Befehl die Partition formatieren. Wenn Sie beispielsweise mit fdisk auf einer DOS-Partitionstabelle einen Eintrag für /dev/sda1 erstellt haben, dann würden Sie (nach dem Verlassen von fdisk und dem Neustart von Linux, damit die Informationen in der Partitionstabelle gültig sind) mit dem Befehl dd if=/dev/zero of=/dev/sda1 bs=512 count=1 die ersten 512 Byte der Partition auf Null setzen.

Wenn möglich, wird fdisk die Festplattengeometrie automatisch ermitteln. Dies ist nicht unbedingt die physische Geometrie des Datenträgers. Tatsächlich haben moderne Festplatten nicht wirklich so etwas wie eine physische Geometrie; sicherlich kann sie nicht in der vereinfachenden CHS-Form beschrieben werden. Aber diese Geometrie wird halt für die MS-DOS-Partitionstabelle verwendet.

In der Regel geht standardmäßig alles gut. Es gibt keine Probleme, wenn Linux das einzige System auf der Festplatte ist. Wenn allerdings der Datenträger mit anderen Betriebssystemen gemeinsam genutzt wird, ist es oft ratsam, ein fdisk eines anderen Betriebssystems mindestens eine Partition anlegen zu lassen. Beim Start liest Linux die Partitionstabelle aus und versucht abzuleiten, welche (fingierte) Geometrie für eine gute Zusammenarbeit mit anderen Systemen erforderlich ist.

Jedesmal, wenn im DOS-Modus eine Partitionstabelle ausgegeben wird, werden die Einträge in der Partitionstabelle auf Konsistenz geprüft. Es wird geprüft, ob die physikalischen und logischen Start- und Endpunkte übereinstimmen und ob jede Partition (mit Ausnahme der ersten) an einer Zylindergrenze startet und endet.

Einige Versionen von MS-DOS erstellen eine erste Partition, die nicht auf einer Zylindergrenze beginnt, sondern auf Sektor 2 des ersten Zylinders. Partitionen, die auf Zylinder 1 anfangen, können nicht auf einer Zylindergrenze beginnen. Wenn Sie nicht auch OS/2 auf Ihrer Maschine installiert haben, werden Sie wahrscheinlich trotzdem keine Schwierigkeiten bekommen.

Um die besten Ergebnisse zur erzielen, sollten Sie ein betriebssystemspezifisches Partitionierungsprogramm einsetzen. Beispielsweise sollten Sie DOS-Partitionen mit dem DOS-FDISK erzeugen und Linux-Partitionen mit den Linux-Programmen fdisk oder cfdisk(8).

FARBEN

Die farbige Darstellung der Ausgabe wird über die Funktionen in terminal-colors.d(5) gesteuert. Die implizierte Einfärbung kann deaktiviert werden, indem Sie folgende (leere) Datei anlegen:

    /etc/terminal-colors.d/fdisk.disable

für den Befehl fdisk oder für alle Befehle mit

    /etc/terminal-colors.d/disable

Seit Version 2.41 wird auch die Umgebungsvariable $NO_COLOR unterstützt, um die farbige Darstellung der Ausgabe zu deaktivieren, sofern sie nicht explizit durch eine Befehlszeilenoption aktiviert wird.

Die benutzerspezifischen Dateien $XDG_CONFIG_HOME/terminal−colors.d oder $HOME/.config/terminal−colors.d setzen die globale Einstellung außer Kraft.

Beachten Sie, dass die Einfärbung der Ausgabe standardmäßig aktiviert sein könnte und in diesem Fall die terminal-colors.d-Verzeichnisse noch nicht zwangsläufig vorhanden sein müssen.

Folgende logische Farbnamen werden von fdisk unterstützt:

header
    Die Kopfzeilen der ausgegebenen Tabellen.

help-title
    Die Titel des Hilfebereichs.

warn
    Die Warnmeldungen.

welcome
    Die Begrüßungsnachricht.

UMGEBUNGSVARIABLEN

FDISK_DEBUG=all
    aktiviert die Debug-Ausgabe für fdisk.

LIBFDISK_DEBUG=all
    aktiviert die Debug-Ausgabe für libfdisk.

LIBBLKID_DEBUG=all
    aktiviert die Debug-Ausgabe für libblkid.

LIBSMARTCOLS_DEBUG=all
    aktiviert die Debug-Ausgabe für libsmartcols.

LIBSMARTCOLS_DEBUG_PADDING=on
    verwendet sichtbare Auffüllzeichen.

LOCK_BLOCK_DEVICE=<Modus>
    verwendet eine exklusive BSD-Sperre. Der Modus ist »1« oder »0«. Siehe --lock für weitere Details.

AUTOREN

Die Originalversion wurde von Andries E. Brouwer, A. V. Le Blanc und anderen geschrieben.

SIEHE AUCH

cfdisk(8), mkfs(8), partx(8), sfdisk(8)

FEHLER MELDEN

Nutzen Sie zum Melden von Fehlern das

VERFÜGBARKEIT

Der Befehl fdisk ist Teil des Pakets util-linux, welches aus dem heruntergeladen werden kann.