NOM
sfdisk - Manipulateur de tables de partitions pour Linux.
SYNOPSIS
sfdisk [options] priphrique
sfdisk -s [partition]
sfdisk a quatre (principales) utilisations : donner la taille d’une
partition, lister les partitions d’un périphérique, vérifier les
partitions d’un périphérique et - très dangereux - repartitionner un
périphérique.
sfdisk doesn’t understand GUID Partition Table (GPT) and it is not
designed for large partitions. In particular case use more advanced GNU
parted(8).
Lister les tailles
sfdisk -s partition gives the size of partition in blocks. This may be
useful in connection with programs like mkswap(8) or so. Here
partition is usually something like /dev/hda1 or /dev/sdb12, but may
also be an entire disk, like /dev/xda.
% sfdisk -s /dev/hda9
81599
%
Si l’argument partition est omis, sfdisk listera la taille de tous les
disques, et le total :
% sfdisk -s
/dev/hda: 208896
/dev/hdb: 1025136
/dev/hdc: 1031063
/dev/sda: 8877895
/dev/sdb: 1758927
total: 12901917 blocks
%
Lister les partitions
The second type of invocation: sfdisk -l [options] device will list the
partitions on this device. If the device argument is omitted, the
partitions on all hard disks are listed.
% sfdisk -l /dev/hdc
Disque /dev/hdc: 2045 cylindres, 16 têtes, 63 secteurs
Unités = cylindres de 516096 octets, blocs de 1024 octets, décompte à partir de 0
Périph Amor Début Fin #cyls #blocs Id Système
/dev/hdc1 0+ 406 407- 205096+ 83 Linux natif
/dev/hdc2 407 813 407 205128 83 Linux natif
/dev/hdc3 814 2044 1231 620424 83 Linux natif
/dev/hdc4 0 - 0 0 0 Vide
%
Les signes - et + de queue indiquent qu’un arrondi a été effectué, et
que la valeur réelle est légèrement plus petite (grande). Pour voir les
valeurs exactes, demandez un listing avec des secteurs comme unité.
Vérifier les partitions
Le troisième type d’invocation : sfdisk -V priphrique effectuera
différents tests de cohérence sur la table des partitions du
priphrique. Il affichera « OK » ou se plaindra. L’option -V peut être
utilisée avec -l. Dans un script shell, on peut utiliser sfdisk -V -q
priphrique qui renvoie uniquement une valeur de retour (de statut).
Créer des partitions
Le quatrième type d’invocation : sfdisk priphrique fera lire par
sfdisk les spécifications du partitionnement désiré de priphrique à
partir de son entrée standard, et lui fera ensuite modifier la table
des partitions sur ce disque. Ainsi, il est possible d’utiliser sfdisk
à partir d’un script shell. Quand sfdisk détermine que son entrée
standard est un terminal, il sera interactif ; sinon, il s’arrêtera à
la première erreur.
SOYEZ EXTRÊMEMENT PRUDENT. UNE FAUTE DE FRAPPE ET TOUTES VOS DONNÉES
PEUVENT ÊTRE PERDUES !
Comme mesure de précaution, vous pouvez sauvegarder les secteurs
modifiés par sfdisk :
% sfdisk /dev/hdd -O hdd-partition-sectors.save
...
%
Ensuite, si vous découvrez que vous avez fait quelque chose de stupide
(avant d’avoir écrit quoi que ce soit d’autre sur le disque), il peut
être possible de retrouver l’ancienne situation avec
% sfdisk /dev/hdd -I hdd-partition-sectors.save
%
Ce n’est pas la même chose que de sauvegarder l’ancienne table des
partitions : une version lisible de l’ancienne table des partitions
peut être sauvée avec l’option -d. Néanmoins, si vous créez des
partitions logiques, les secteurs les décrivant sont situés quelque
part sur le disque, éventuellement sur des secteurs qui ne faisaient
pas partie de l’ancienne table des partitions. Par conséquent, les
informations sauvées par l’option -O ne sont pas une version binaire de
la sortie de -d.
Il y a beaucoup d’options.
OPTIONS
-v ou --version
Afficher le numéro de version de sfdisk et se terminer
immédiatement.
-? ou --help
Afficher un message d’utilisation et se terminer immédiatement.
-T ou --list-types
Afficher les types de systèmes de fichiers reconnus (les
identifiants).
-s ou --show-size
Afficher la taille d’une partition.
-g ou --show-geometry
Afficher la façon dont le noyau conçoit la géométrie du(des)
disque(s) indiqué(s).
-G ou --show-pt-geometry
Afficher la géométrie des disques indiqués devinés par
l’observation de la table des partitions
-l ou --list
Lister les partitions d’un périphérique.
-d Produire les partitions d’un périphérique dans un format
utilisable comme entrée pour sfdisk. Par exemple :
% sfdisk -d /dev/hda > hda.out
% sfdisk /dev/hda < hda.out
corrigera la dernière mauvaise partition étendue que le fdisk
OS/2 a créé.
-V ou --verify
Tester si les partitions semblent correctes (voyez ci-dessus).
-i ou --increment
Numéroter les cylindres (etc.) en commençant à partir de 1 au
lieu de 0.
-N numro
Ne modifier que la seule partition indiquée par numro. Par
exemple :
% sfdisk /dev/hdb -N5
,,,*
%
rendra la cinquième partition de /dev/hdb amorçable (« active »)
et ne changera rien d’autre. (Celle-ci sera probablement appelée
/dev/hdb5, mais vous êtes libre de l’appeler autrement, comme
par exemple «/mon_équipement/disques/2/5 » ou quelque chose du
genre).
-A numro
Rendre la(les) partition(s) indiquée(s) active(s), et toutes les
autres inactives.
-c ou --id numro [Id]
Si aucun paramètre Id n’est donné, afficher l’identifiant de
partition de la partition indiquée. S’il est présent, remplacer
le type (Id) de la partition indiquée par la valeur fournie.
Cette option a également les deux formes longues --print-id et
--change-id. Par exemple :
% sfdisk --print-id /dev/hdb 5
6
% sfdisk --change-id /dev/hdb 5 83
OK
indique d’abord que /dev/hdb5 possède l’Id 6, et le remplace
ensuite par 83.
-uS ou -uB ou -uC ou -uM
Accepter ou rapporter en unités de secteurs (ou blocs,
cylindres, mégaoctets respectivement). L’unité par défaut est le
cylindre, du moins quand la géométrie est connue.
-x ou --show-extended
Lister également les partitions étendues non primaires en
sortie, ou en attendre des descripteurs en entrée.
-C cylindres
Spécifier le nombre de cylindres, en le substituant à l’avis du
noyau.
-H ttes
Spécifier le nombre de têtes, en le substituant à l’avis du
noyau.
-S secteurs
Spécifier le nombre de secteurs, en le substituant à l’avis du
noyau.
-f ou --force
Faire ce que vous dites, même si c’est stupide.
-q ou --quiet
Supprimer les messages d’avertissement.
-L ou --Linux
Ne pas se plaindre de choses non pertinentes pour Linux.
-D ou --DOS
Pour la compatibilité DOS : gaspiller un petit espace. Plus
précisément : si une partition ne peut contenir le secteur 0,
pare exemple parce qu’il est occupé par le MBR (Master Boot
Record, secteur d’amorçage principal) du périphérique, ou si
elle contient la table des partitions d’une partition étendue,
alors sfdisk la fera débuter au secteur suivant. Néanmoins,
quand cette option est fournie, il passe toute la piste courante
pour débuter à la piste suivante, en gaspillant par exemple 33
secteurs (s’il y a 34 secteurs/piste), comme le font certaines
versions de DOS. Certains Gestionnaires de Disque et chargeurs
de démarrage (comme OSBS, mais pas comme LILO ou le gestionnaire
d’amorçage OS/2) vivent également dans cet espace vide, et vous
pourriez donc avoir besoin d’utiliser cette option si vous
utilisez l’un d’entre eux.
-E ou --DOS-extended
Considérer que les numéros des secteurs de démarrage des
partitions étendues « internes » sont relatifs à la limite du
cylindre débutant la partition externe, (comme le font certaines
versions du DOS), plutôt que relatifs au secteur de démarrage
(comme le fait Linux). Le fait qu’il y ait ici une différence
signifie qu’il faudrait toujours laisser les partitions étendues
débuter sur une limite de cylindre si DOS et Linux doivent
interpréter la table des partitions de la même manière. Bien
sûr, on ne peut savoir où se situent les limites de cylindres
que lorsque l’on sait quelle géométrie DOS utilisera pour ce
disque.
--IBM ou --leave-last
Certains programmes IBM de diagnostic supposent qu’ils peuvent
utiliser le dernier cylindre d’un disque à des fins de tests de
disque. Si vous pensez devoir utiliser de tels programmes,
utilisez cette option pour dire à sfdisk qu’il ne devrait pas
allouer le dernier cylindre. Parfois, le dernier cylindre
contient une table des secteurs défectueux.
-n Effectuer tout ce qu’il y a à faire, mais ne pas réellement
écrire sur le disque.
-R Exécuter uniquement l’ioctl BLKRRPART (pour faire relire au
noyau la table des partitions). Ceci peut être utile pour
vérifier à l’avance que le BLKRRPART final se terminera avec
succès, et également quand vous modifiez la table des partitions
« à la main » (par exemple en utilisant dd à partir d’une
sauvegarde). Si le noyau se plaint (« device busy for
revalidation (usage = 2) », c’est-à-dire « périphérique occupé
pour la revalidation (utilisation = 2) »), alors quelque chose
utilise encore ce périphérique, et vous devrez démonter certains
systèmes de fichiers, ou désactiver certaines partitions
d’échange avec swapoff.
--no-reread
Au début du repartitionnement d’un disque, sfdisk vérifie que ce
disque n’est pas monté, ou n’est pas utilisé en tant que
périphérique d’échange, et refuse de continuer si c’est le cas.
Cette option supprime le test (d’un autre côté, l’option -f
forcerait sfdisk à continuer même si ce test échouait).
-O fichier
Juste avant d’écrire la nouvelle partition, sauvegarder les
secteurs qui vont être écrasés dans fichier (il vaut mieux que
fichier réside sur un autre disque, ou sur une disquette).
-I fichier
Après avoir détruit vos systèmes de fichiers par une commande
sfdisk malheureuse, vous ne pourrez restaurer l’ancienne
situation que si vous l’avez préservée au préalable en utilisant
l’option -O.
THÉORIE
Le bloc 0 d’un disque (le Master Boot Record) contient entre autres
choses quatre descripteurs de partition. Les partitions décrites ici
sont appelées partitions primaires.
Un descripteur de partition comporte 6 champs :
struct partition {
unsigned char bootable; /* 0 or 0x80 */
hsc begin_hsc;
unsigned char id;
hsc end_hsc;
unsigned int starting_sector;
unsigned int nr_of_sectors;
}
Les deux champs hsc indiquent la tête (« head »), le secteur et le
cylindre du début et de la fin de la partition. Puisque chaque champ
hsc ne prend que 3 octets, seuls 24 bits sont disponibles, ce qui ne
suffit pas pour les gros disques (disons > 8 Go). En fait, à cause du
gaspillage dans la représentation (qui utilise un octet pour le nombre
de têtes, alors qu’il est typiquement de 16), les problèmes commencent
déjà à partir de 0.5 Go. Néanmoins, Linux n’utilise pas ces champs, et
les problèmes ne peuvent survenir qu’au moment de l’amorçage, avant que
Linux ait été démarré. Pour plus de détails, consultez la documentation
de lilo.
Chaque partition a un type, son « Id », et si ce type est 5 ou f
(«partition tendue »), le secteur de début de la partition contiendra
également 4 descripteurs de partition. MSDOS n’utilise que les deux
premiers : le premier comme partition des données réelles, et le second
comme partition étendue (ou vide). De cette façon, on obtient une
chaîne de partitions étendues. D’autres systèmes d’exploitation
obéissent à des conventions légèrement différentes. Linux accepte
également le type 85 comme étant équivalent à 5 - ceci peut être utile
si vous voulez avoir des partitions étendues sous Linux après la limite
des 1024 cylindres, sans plantage du FDISK de DOS (à moins d’avoir une
bonne raison, vous devriez utiliser 5, qui est compris par les autres
systèmes).
Les partitions qui ne sont ni primaires ni étendues sont appelées
logiques. Souvent, on ne peut amorcer à partir de partitions logiques
(car leur processus de recherche est plus compliqué que de simplement
regarder le MBR). Notez que sur une partition étendue, seuls l’Id et le
début sont utilisés. Il y a différentes conventions concernant ce qu’il
y a lieu d’écrire dans les autres champs. On ne devrait pas essayer
d’utiliser des partitions étendues pour le stockage de données ou pour
une partition d’échange.
FORMAT D’ENTRÉE
sfdisk lit des lignes de la forme
<début> <taille> <id> <amorçable> <c,t,s> <c,t,s>
où chaque ligne remplit à un descripteur de partition.
Les champs sont séparés par des caractères d’espacement, des virgules
ou des points-virgules éventuellement suivis par des caractères
d’espacement ; les caractères d’espacement initiaux et finals sont
ignorés. Les nombres peuvent être octaux, décimaux ou hexadécimaux
(représentation décimale par défaut). Quand un champ est absent ou
vide, une valeur par défaut est utilisée.
Les parties <c,t,s> peuvent (et probablement devraient) être omises car
sfdisk les calcule à partir de <début> et <taille>, et la géométrie du
disque est donnée par le noyau ou est spécifiée par les drapeaux -H, -S
et -C.
Bootable (amorçable) est spécifié par [*|-] (non bootable par défaut).
La valeur de ce champ n’a pas d’importance pour Linux - quand Linux
tourne, il a déjà été amorcé - mais pourrait jouer un rôle pour
certains gestionnaires de démarrage ou pour d’autres systèmes
d’exploitation. Par exemple, quand il y a plusieurs partitions DOS
primaires, DOS affecte C: à la première d’entre elles qui est bootable.
Id est donné en hexadécimal, sans le préfixe 0x, ou sous la forme
[E|S|L|X], où L (LINUX_NATIVE (83)) est utilisé par défaut, S est
LINUX_SWAP (82) (partition d’échange Linux), E est EXTENDED_PARTITION
(5) (partition étendue), et X est LINUX_EXTENDED (85).
La valeur par défaut de début est le premier secteur/cylindre/... non
affecté.
La valeur par défaut de taille est aussi grande que possible (jusqu’à
la partition suivante ou la fin du disque).
Néanmoins, pour les quatre partitions à l’intérieur d’une partition
étendue, l’occupation par défaut est : partition Linux, partition
étendue, vide, vide.
Mais quand l’option -N est fournie (modifier uniquement une partition),
la valeur par défaut pour chaque champ est sa valeur précédente.
EXEMPLE
La commande
sfdisk /dev/hdc << EOF
0,407
,407
;
;
EOF
partitionnera /dev/hdc comme indiqué ci-dessus.
La commande
sfdisk /dev/hdb << EOF
,3,L
,60,L
,19,S
,,E
,130,L
,130,L
,130,L
,,L
EOF
partitionnera /dev/hdb en deux partitions Linux de 3 et 60 cylindres,
un espace swap de 19 cylindres, et une partition étendue sur tout le
reste de l’espace. À l’intérieur de la partition étendue il y a quatre
partitions logique Linux, trois de 130 cylindres et une sur l’espace
restant.
Avec l’option -x, le nombre de lignes d’entrée doit être un multiple
de 4: vous devez lister les deux partitions vides que vous ne voulez
pas en utilisant deux lignes vides. Sans l’option -x, vous donnez une
ligne pour les partitions à l’intérieur d’une partition étendue, au
lieu de quatre, et vous terminez par un caractère de fin de fichier
(Ctrl-D). (Et sfdisk supposera que votre ligne d’entrée représente la
première des quatre, que la deuxième est étendue, et que les troisième
et quatrième sont vides).
AVERTISSEMENT CONCERNANT DOS 6.x
La commande FORMAT de DOS 6.x recherche certaines informations dans le
premier secteur de la section de données de la partition. Elle
considère ces informations comme étant plus fiables que celles de la
table des partitions. La commande DOS FORMAT s’attend à ce que DOS
FDISK efface les 512 premiers octets de la section de données d’une
partition chaque fois qu’il y a une modification de sa taille. La
commande DOS FORMAT recherchera cette information supplémentaire même
si l’indicateur /U est indiqué - nous considérons que ceci est un bogue
des commandes DOS FORMAT et DOS FDISK.
Si vous utilisez sfdisk 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é sfdisk pour créer une entrée DOS dans la table des
partitions pour /dev/hda1, alors (après la sortie de sfdisk 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 le programme Linux sfdisk.
AVERTISSEMENTS DRDOS
Stephen Tweedie rapporta (15/05/1993) : « La plupart des rapports de
corruption de superbloc s’avèrent être dûs à un mauvais
partitionnement, où un système de fichiers écrase le début du suivant
et corrompt son superbloc. J’ai même eu ce problème avec le
prétendument fiable DRDOS. C’était probablement dû à la commande FDISK
du DRDOS-6.0. À moins de créer une piste ou un cylindre vide entre la
partition DRDOS et celle la suivant immédiatement, DRDOS écrase
joyeusement le début de la partition suivante. Remarquez qu’aussi
longtemps que je garde un petit espace disque vide après toute
partition DRDOS, je n’ai aucun autre problème de coexistence entre les
deux partitions sur le même disque. »
A. V. Le Blanc a écrit dans README.efdisk: « On a rapporté des
problèmes de coopération entre Dr. DOS 5.0 et 6.0 et Linux, et avec
cette version de efdisk en particulier. Ce efdisk fixe le type de
système de fichiers à 81 (hexadécimal). Dr. DOS semble le confondre
avec le 1 hexadécimal, un code DOS. Si vous utilisez Dr. DOS, utilisez
la commande « t » de efdisk pour remplacer le code de système de
fichiers de toute partition Linux en un nombre plus petit que 80 en
hexadécimal. Je suggère 41 et 42 pour le moment. »
A. V. Le Blanc a écrit dans README.fdisk: « DR-DOS 5.0 et 6.0 ont
certaines difficultés avec les codes d’ID de partition de 80 ou plus.
Le fdisk Linux fixe habituellement le type des nouvelles partitions à
81 en hexadécimal. DR-DOS semble le confondre avec le 1 hexadécimal, un
code DOS. Les valeurs 82 pour la partition d’échange et 83 pour les
systèmes de fichiers ne devraient pas causer de problèmes avec DR-DOS.
S’il y en a, vous pouvez utiliser la commande « t » du fdisk Linux pour
modifier le code du système de fichiers de toute partition Linux en un
nombre plus petit que 80 en hexadécimal. Je suggère 42 et 43 pour le
moment. »
En fait, il semble que seuls 4 bits soient significatifs pour le FDISK
de DRDOS. Ainsi, par exemple, 11 et 21 sont listés comme étant DOS 2.0.
Néanmoins, DRDOS lui-même semble utiliser l’octet complet. Je n’ai pas
été capable de reproduire une corruption avec DRDOS ou avec son fdisk.
BOGUES
Il y a trop d’options.
Il n’y a pas de support pour les types de partitions non-DOS.
VOIR AUSSI
cfdisk(8), fdisk(8), mkfs(8), parted(8), partprobe(8), kpartx(8)
DISPONIBILITÉ
La commande sfdisk fait partie du paquet util-linux-ng, elle est
disponible sur ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
TRADUCTION
Cette page de manuel a été traduite par Frédéric Delanoy en 2000. La
version présente dans Debian est maintenue par les membres de la liste
<debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler
toute erreur de traduction par un rapport de bogue sur le paquet
manpages-fr-extra.