SFDISK
Section : Manuel de l'utilisateur Linux (
8)
Mise à jour de la version anglaise : 1er septembre 1995
Index
Menu principal
NOM
sfdisk - Manipulateur de tables de partitions pour Linux
SYNOPSIS
sfdisk [options] périphérique
sfdisk -s [partition]
DESCRIPTION
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
ne comprend pas les table de partitions GUID (GPT) et n'est pas conçue
pour les grandes partitions.
Pour les cas particuliers, veuillez utiliser la commande
parted(8)
du projet GNU.
Lister les tailles
sfdisk -s partition
donne la taille de la
partition
en blocs. Ceci peut être utile avec des programmes comme
mkswap
ou d'autres du même genre. Ici,
partition
est en général quelque chose du style
/dev/hda1
ou
/dev/sdb12,
mais peut également être un disque entier, comme
/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 blocs
%
Lister les partitions
Le deuxième type d'invocation :
sfdisk -l [options] périphérique
listera les partitions de ce périphérique. Si l'argument périphérique est
omis, les partitions de tous les disques durs sont listées.
% sfdisk -l /dev/hdc
Disque /dev/hdc: 16 têtes, 63 secteurs, 2045 cylindres
Unités = cylindres de 516096 octets, blocs de 1024 octets, à partir de 0
Périph. Boot. 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 périphérique
effectuera différents tests de cohérence sur la table des partitions du
périphérique.
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 périphérique
qui renvoie uniquement une valeur de retour (de statut).
Créer des partitions
Le quatrième type d'invocation :
sfdisk périphérique
fera lire par
sfdisk
les spécifications du partitionnement désiré de
périphérique
à 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 avortera pour n'importe quelle 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 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 identificateurs).
- -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 convenant
comme entrée pour sfdisk.
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 au dessus.)
- -i ou --increment
-
Numéroter les cylindres (etc.) en commençant à partir de 1 au lieu de 0.
- -N numéro
-
Ne modifier que la seule partition indiquée par numéro.
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
p.ex. « /mon_équipement/disques/2/5 » ou quelque chose du genre).
- -Anuméro(s)
-
Rend la(les) partition(s) indiquée(s) active(s), et toutes les autres
inactives.
- -c ou --id numéro [Id]
-
Si aucun argument ID n'est donné, afficher l'identificateur 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.
Exemple :
% sfdisk --print-id /dev/hdb 5
6
% sfdisk --change-id /dev/hdb 5 83
OK
dit d'abord que /dev/hdb5 possède l'Id 6, et le remplace ensuite par 83.
- -uS ou -uB ou -uC ou -uM
-
Accepte ou rapporte en unités de secteurs (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 têtes
-
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,
p.ex. 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 p.ex. 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
tables 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 » (p.ex. en
utilisant dd à partir d'une sauvegarde). Si le noyau se
plaint (« 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.
- --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 a échoué)
- -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 le drapeau -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 ou 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, 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, c.-à-d. son « Id », et si ce type est
5 ou f (« partition étendue »), le secteur de début de la partition
contient également 4 descripteurs de partition. MSDOS n'utilise que
les deux premières : la première comme partition des données réelles,
et la seconde 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> <bootable> <c,t,s> <c,t,s>
où chaque ligne correspond à 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.)
NOTES
Notes 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 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.
Notes 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.efdisk: « 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
Une interface interactive correspondant à
cfdisk
(avec une interface curses) manque toujours.
Il y a trop d'options.
Il n'y a pas de support pour les types de partitions non-DOS.
DISPONIBILITÉ
La commande
sfdisk
fait partie du paquetage util-linux-ng et est disponible à l'adresse
ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
VOIR AUSSI
cfdisk(8),
fdisk(8),
parted(8)
TRADUCTION
Ce document est une traduction réalisée par Frédéric Delanoy
<delanoy_f AT yahoo DOT com> le 15 août 2000
et révisée le 26 mai 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 8 sfdisk ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- Lister les tailles
-
- Lister les partitions
-
- Vérifier les partitions
-
- Créer des partitions
-
- OPTIONS
-
- THÉORIE
-
- FORMAT D'ENTRÉE
-
- EXEMPLE
-
- NOTES
-
- Notes DOS 6.x
-
- Notes DRDOS
-
- BOGUES
-
- DISPONIBILITÉ
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 26 mai 2008