FDISK

Section: Manuel de l utilisateur Linux (8)
Updated: 30 juillet 2003
Index


NOM
SYNOPSIS
DESCRIPTION
AVERTISSEMENT DOS 6.x
OPTIONS
BOGUES
VOIR AUSSI
TRADUCTION

NOM

fdisk - manipulateur de tables de partitions pour Linux

SYNOPSIS

fdisk [-u] [-b taille-secteur] périphérique
fdisk -l [-u] [-b taille-secteur] [ périphérique ...]
fdisk -s partition ...
fdisk -v

DESCRIPTION

Les disques durs peuvent être divisés en un ou plusieurs disques logiques appelés partitions. Cette division est décrite dans la table des partitions trouvée sur le secteur 0 du disque.
Dans le monde BSD, on parle de « tranches de disque » (disk slices) et d'« étiquette de disque » (disklabels).
Linux a besoin d'au moins une partition, à savoir pour son système de fichiers racine. Il peut utiliser des fichiers et/ou des partitions d'échange (swap) d'échange, mais ces dernières sont plus efficaces. C'est pourquoi on dédie en général une seconde partition Linux comme partition d'échange. Sur le matériel compatible Intel, le BIOS qui démarre le système ne peut souvent accéder qu'aux 1024 premiers cylindres du disque. Pour cette raison, les personnes possédant des disques volumineux créent souvent une troisième partition, d'à peine quelques Mo de large, montée typiquement en /boot, pour y conserver l'image du noyau et quelques fichiers auxiliaires nécessaires au démarrage, afin de s'assurer que ce matériel soit accessible depuis le BIOS. Il peut y avoir des raisons de sécurité, de facilité d'administration et de sauvegarde, ou de tests qui nécessitent d'utiliser plus que le nombre minimal de partitions.
fdisk (dans la première forme d'invocation) est un programme piloté par menu utilisé pour la création et la manipulation de tables de partitions. Il comprend les tables de partitions de type DOS, et les étiquettes de disque BSD ou SUN.
Le périphérique est en général l'un des suivants :

/dev/hda /dev/hdb /dev/sda /dev/sdb

(/dev/hd[a-h] pour les disques IDE, /dev/sd[a-p] pour les disques SCSI, /dev/ed[a-d] pour les disques ESDI, /dev/xd[ab] pour les disques XT). Un nom de périphérique référence le disque entier.
La partition est un nom de périphérique suivi d'un numéro de partition. Par exemple, /dev/hda1 est la première partition du premier disque dur IDE du système. Les disques peuvent contenir jusqu'à 15 partitions. Voyez également /usr/src/linux/Documentation/devices.txt.
Une étiquette de disque de type BSD/SUN peut décrire 8 partitions, dont la troisième devrait être une partition de « disque entier ». Ne faites pas démarrer de partition utilisant réellement son premier secteur sur le cylindre 0 (comme une partition d'échange), car cela détruirait l'étiquette du disque.
Une étiquette de disque de type IRIX/SGI peut décrire 16 partitions, dont la onzième devrait être une partition entière de « volume », alors que la neuvième devrait être un « en-tête de volume ». L'en-tête de volume couvre également la table des partitions, c.-à-d. qu'il débute au bloc zéro et s'étend par défaut sur 5 cylindres. L'espace restant dans l'en-tête de volume peut être utilisé par des entrées de répertoires d'en-tête. Aucune partition ne peut empiéter sur l'en-tête de volume. Ne modifiez pas son type ni ne créez de système de fichiers dessus, car vous perdriez alors la table des partitions. N'utilisez ce type d'étiquette que lorsque vous travaillez sur des machines IRIX/SGI ou avec des disques IRIX/SGI sous Linux.
Une table de partitions de type DOS peut décrire un nombre illimité de partitions. Dans le secteur 0, il y a de la place pour décrire 4 partitions (appelées « primaires »). L'une d'entre elles peut être une partition étendue ; c'est une sorte de boîte contenant des partitions logiques, dont les descripteurs sont trouvés dans une liste chaînée de secteurs, chacun précédant les partitions logiques correspondantes. Les quatre partitions primaires, présentes ou pas, portent les numéros 1-4. Les partitions logiques sont numérotées à partir de 5.
Dans une table de partitions de type DOS, le décalage de départ et la taille de chaque partition sont conservés de deux façons : comme un nombre absolu de secteurs (sur 32 bits), ou comme un triplet Cylindres/Têtes/Secteurs (sur 10+8+6 bits). La première manière fonctionne bien - avec des secteurs de 512 octets, cela marchera jusqu'à 2 To. La seconde possibilité souffre de deux problèmes différents. Primo, ces champs C/T/S ne peuvent être remplis que lorsque le nombre de têtes et le nombre de secteurs par piste sont connus. Secundo, même si l'on connaissait ces nombres, les 24 bits qui sont disponibles ne suffiraient pas. DOS utilise uniquement C/T/S, Windows utilise les deux, Linux n'utilise jamais C/T/S.
Si c'est possible, fdisk déterminera automatiquement la géométrie du disque. Ce n'est pas nécessairement la géométrie physique du disque (en effet, les disques modernes ne possèdent pas à proprement parler quoi que ce soit pouvant être assimilé à une géométrie physique, et encore moins quelque chose pouvant être décrit par la forme simpliste Cylindres/Têtes/Secteurs), mais c'est la géométrie de disque qu'utilise MS-DOS pour la table des partitions.
D'habitude, tout se passe bien par défaut, et il n'y a aucun problème si Linux est le seul système sur le disque. Néanmoins, si le disque doit être partagé avec d'autres systèmes d'exploitation, c'est en général une bonne idée de laisser créer au moins une partition par un fdisk d'un autre système d'exploitation. Quand Linux démarre, il examine la table des partitions, et essaie de déduire quelle (fausse) géométrie est requise pour une bonne coopération avec les autres systèmes.
Chaque fois qu'une table des partitions est écrite, un test de cohérence est effectué sur les entrées de la table des partitions. Ce test vérifie que les débuts et fins physiques et logiques sont identiques, et que la partition commence et se termine sur une limite de cylindre (sauf pour la première partition).
Certaines versions de MS-DOS créent une première partition qui ne commence pas sur une limite de cylindre, mais sur le secteur 2 du premier cylindre. Les partitions commençant au cylindre 1 ne peuvent débuter sur une limite de cylindre, mais il est peu probable que cela pose problème à moins que vous n'ayez également OS/2 sur votre machine.
Un sync() et un ioctl() BLKRRPART (relire la table des partitions à partir du disque) sont exécutés avant la sortie quand la table des partitions a été mise à jour. Il y a longtemps, il était nécessaire de redémarrer après l'utilisation de fdisk. Je ne crois pas que cela soit encore le cas - en effet, redémarrer trop rapidement pourrait causer la perte de données non encore écrites sur disque. Notez que le noyau et le matériel disque peuvent tous deux placer des données en mémoire tampon.

AVERTISSEMENT DOS 6.x


La commande DOS 6.x FORMAT recherche certaines informations sur le premier secteur de la zone de données de la partition, et suppose qu'elles sont plus fiables que celles contenues dans la table des partitions. Le FORMAT DOS suppose que FDISK DOS efface les 512 premiers octets de la zone de données de la partition à chaque fois qu'un changement de taille se produit. FORMAT DOS regardera cette information additionnelle même si le drapeau /U est fourni -- nous considérons que c'est un bogue dans les FORMAT et FDISK DOS.
Si vous utilisez cfdisk ou fdisk pour modifier la taille d'une entrée DOS de la table des partitions, alors vous devrez également utiliser dd pour mettre à zéro les 512 premiers octets de cette partition avant d'utiliser FORMAT DOS pour formater cette partition. Par exemple, si vous avez utilisé cfdisk pour créer une entrée DOS dans la table des partitions pour /dev/hda1, alors (après la sortie de fdisk ou de cfdisk et après avoir redémarré Linux afin que les informations sur la table des partitions soient valides) vous devriez utiliser la commande « dd if=/dev/zero of=/dev/hda1 bs=512 count=1 » pour mettre à zéro les 512 premiers octets de la partition.
SOYEZ EXTRÊMEMENT PRUDENT si vous utilisez la commande dd, car une petite faute de frappe peut rendre toutes les données de votre disque inutilisables.
Pour obtenir les meilleurs résultats, vous devriez toujours utiliser un programme de partitionnement spécifique au système d'exploitation. Par exemple, vous devriez créer des partitions DOS avec le programme FDISK DOS, et des partitions Linux avec l'un des programmes Linux fdisk ou cfdisk.

OPTIONS

-b taille-secteur
Spécifier la taille des secteurs du disque. Les valeurs valides sont 512, 1024 et 2048. (Les noyaux récents connaissent la taille de secteur. N'utilisez cette option que sur des noyaux anciens ou pour passer outre l'avis du noyau.)
-C cylindres
Indique le nombre de cylindres du disque. Je ne vois pas à quoi ça peut servir.
-H têtes
Indique le nombre de tête du disque. (Pas le nombre physique, bien sûr, mais celui utilisé pour la table de partitions.) Valeurs raisonables : 255 et 16.
-S secteurs
Indique le nombre de secteurs par piste du disque. (Pas le nombre physique, bien sûr, mais celui utilisé pour la table de partitions.) Une valeur raisonnable est 63.
-l
Lister les tables de partitions des périphériques spécifiés et ensuite se terminer. Si aucun périphérique n'est fourni, ceux mentionnés dans /proc/partitions (si ce fichier existe) sont utilisés.
-u
Lors du listage des tables de partitions, donner les tailles en secteurs plutôt qu'en cylindres.
-s partition
La taille de la partition (en blocs) est affichée sur la sortie standard.
-v
Afficher le numéro de version de fdisk et se terminer normalement.

BOGUES

Il existe plusieurs programmes *fdisk. Chacun a ses points forts et ses points faibles. Essayez-les dans l'ordre cfdisk, fdisk et sfdisk. (En effet, cfdisk est un beau programme qui a des exigences strictes sur les tables de partitions qu'il accepte, et qui produit des tables de partitions de haute qualité. Utilisez-le si vous le pouvez. fdisk est un programme bogué qui fait des choses assez floues - d'habitude, il arrive à produire des résultats raisonnables. Son seul avantage est qu'il supporte les étiquettes de disque BSD, et d'autres tables de partitions non DOS. Évitez-le si vous le pouvez. sfdisk est destiné uniquement aux hackers - l'interface utilisateur est quelque peu rebutante, mais il travaille mieux que fdisk et est plus puissant que fdisk et cfdisk. De plus, il peut être utilisé de façon non interactive.)
L'étiquette de disque de type IRIX/SGI n'est pas supportée actuellement par le noyau. De plus, les répertoires d'en-tête IRIX/SGI ne sont pas encore entièrement supportés.
Il manque l'option « écrire la table des partitions dans un fichier ».

VOIR AUSSI

cfdisk(8), parted(8), sfdisk(8)

TRADUCTION

Frédéric Delanoy <delanoy_f at yahoo.com>, 2002.
Christophe Blaess, 2003.