FDISK(8)

BEZEICHNUNG
fdisk - manipuliert die Festplatten-Partitionstabelle

ÜBERSICHT
fdisk [-uc] [-b Sektorgröße] [-C Zylinder] [-H Köpfe] [-S Sektoren] Gerät

fdisk -l [-u] [Gerät …]

fdisk -s Partition …

fdisk -v

fdisk -h

BESCHREIBUNG
fdisk (in der ersten Aufruf-Form) ist ein menügesteuertes Programm für die Erzeugung und Manipulation von Partitionstabellen. Es kann DOS-Partitionstabellen und »Disklabel« im Stil von BSD oder SUN verarbeiten.

fdisk() kann keine GUID-Partitionstabellen (GPTs) bearbeiten und ist nicht für große Partitionen entworfen. In diesen Fällen verwenden Sie bitte das fortschrittlichere GNU parted(8).

fdisk verwendet standardmäßig *nicht* den DOS-kompatiblen Modus und Zylinder als Maßeinheit in der Anzeige. Das alte DOS-Verhalten (von dem abgeraten wird) kann mit den Befehlszeilenoptionen »-c=dos« und »-u=cylinders« aktiviert werden.

Festplatten 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«.)

Linux benötigt mindestens eine Partition, nämlich für sein Wurzel-Dateisystem (»/«).Es kann Swap-Dateien und/oder Swap-Partitionen verwenden, aber die Letzteren sind effizienter. Also wird man normalerweise eine zweite Linux-Partition als Swap-Partition einrichten. Auf Intel-kompatibler Hardware kann das BIOS, dass das System hochfährt, oft nur auf die ersten 1024 Zylinder der Festplatte zugreifen. Aus diesem Grund wird auf Rechnern mit großen Festplatten oft eine dritte, nur wenige MB große Partition eingerichtet (/boot). Sie beherbergt den Kernel und ein paar beim Systemstart erforderliche Hilfsdateien und stellt sicher, dass diese Informationen dem BIOS zur Verfügung stehen. Aus verschiedenen Gründen (Sicherheit, einfache Verwaltung und Sicherungen, Tests) werden zuweilen mehr als die minimale Anzahl von Partitionen verwendet.

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/devices.txt).

DISKLABEL
Ein BSD/SUN-Disklabel kann acht Partitionen beschreiben. Die dritte Partition sollte eine Partition beschreiben, die für eine »ganze Platte« steht. Partitionen, die (wie eine Swap-Partition) ihren ersten Sektor auf Zylinder 0 nutzen, sollten nicht benutzt werden, weil dadurch das Disklabel beschädigt wird.

Ein IRIX/SGI-Disklabel 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 dieses Label nur, wenn Sie mit Linux auf IRIX-/SGI-Maschinen arbeiten oder auf IRIX-/SGI-Festplatten zugreifen.

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.

Wenn möglich, wird sich fdisk die Festplattengeometrie automatisch beschaffen. Dies ist nicht unbedingt die physische Geometrie des Datenträgers. (Tatsächlich haben moderne Festplatten nicht wirklich so etwas wie eine physikalische 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 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 Partitition (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.

Vor dem Programmende werden ein sync() und ein ioctl(BLKRRPART) (Partitionstabelle erneut von der Platte lesen) durchgeführt, wenn die Partitionstabelle aktualisiert wurde. Vor langer Zeit musste nach der Verwendung von fdisk neu gestartet werden. Der Verfasser glaubt nicht, dass der Neustart noch erforderlich ist. Aber ein zu früher Neustart könnte zum Verlust von noch nicht geschriebenen Daten führen. Beachten Sie, dass sowohl der Kernel als auch die Hardware der Festplatte Daten puffern können.

DOS-6.x-WARNUNG

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 die 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 dieser 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 cfdisk oder fdisk 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 cfdisk auf einer DOS-Partitionstabelle einen Eintrag für /dev/sda1 erstellt haben, dann würden Sie (nach dem Verlassen von fdisk oder cfdisk 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.

SEIEN SIE BESONDERS VORSICHTIG, wenn Sie den Befehl dd verwenden, weil ein kleiner Tippfehler alle Daten auf Ihrer Platte unbrauchbar machen kann.

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.

OPTIONEN

-b Sektorgröße
    gibt die Sektorgröße der Festplatte an. Gültige Werte sind 512, 1024, 2048 oder 4096. (Neuere Kernel kennen die Sektorgröße. Verwenden Sie diese Option nur mit alten Kerneln oder um die Sicht 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 Sektorgröße.

-c[=Modus]
    legt den Kompatibilitätsmodus (»dos« oder »nondos«) fest. Der Standardwert ist »nondos«. Um Rückwä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 kann, die korrekte Form ist beispielsweise »-c=dos«.

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

-H Köpfe
    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 Sektoren
    legt fest, wieviele Sektoren sich auf einer Spur der Platte befinden. (Natürlich nicht die physikalische Anzahl, sondern die für Partitionstabellen verwendete). Ein sinnvoller Wert ist 63.

-h  Hilfe anzeigen und beenden

-l  Partitionstabellen für die angegebenen Geräte ausgeben und beenden. Wurden keine Geräte angegeben, werden bei Existenz von /proc/partitions die dort erwähnten Geräte verwendet.

-s Partition...
    gibt die Größe (in Blocks) jeder angegebenen Partition aus.

-u[=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 Rückwä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=cylinders«.

-v  Versionsnummer von fdisk ausgeben und beenden

FEHLER
Es gibt mehrere *fdisk-Programme. Jedes hat spezifische Stärken und Schwächen. Probieren Sie die Programme in der Reihenfolge cfdisk, fdisk und sfdisk aus. (In der Tat ist cfdisk ein schönes Programm, das strenge Anforderungen an die von ihm akzeptierten Partitionstabellen stellt und hochwertige Partitionstabellen erzeugt. Verwenden Sie es, wenn Sie können. fdisk ist ein fehlerhaftes Programm, dass eigentümliche Dinge tut - in der Regel produziert es vernünftige Ergebnisse. Sein einziger Vorteil ist, dass es eine gewisse Unterstützung für BSD-Disklabels und weitere Nicht-DOS-Partitionstabellen bietet. Vermeiden Sie es, wenn Sie können. sfdisk ist nur für Hacker - die Benutzeroberfläche ist schrecklich, aber es arbeitet genauer als fdisk und ist mächtiger als fdisk und cfdisk. Darüber hinaus kann es nicht interaktiv genutzt werden.)

Heutzutage gibt es auch parted. Die Schnittstelle von cfdisk ist schöner, aber parted kann mehr: Es ändert nicht nur die Größe von Partionen, sondern auch die der dort eingerichteten Dateisysteme.

Das IRIX-/SGI-Disklabel wird derzeit nicht vom Kernel unterstützt. Darüber hinaus werden IRIX-/SGI-Header-Verzeichnisse noch nicht vollständig unterstützt.

Es fehlt eine Option »Ausgabe der Partitionstabelle in Datei« fehlt.

SIEHE AUCH
cfdisk(8), kpartx(8), mkfs(8), parted(8), partprobe(8), sfdisk(8)

VERFÜGBARKEIT
Der Befehl fdisk ist Teil des Pakets util-linux und unter ftp://ftp.kernel.org/pub/linux/utils/util-linux/ verfügbar.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.