Index général des pages de man   Index Section man 8   Table des Matières de sfdisk   Imprime la page de man sfdisk en mode Texte   Recherche dans les pages de man   Page de man en français      Outils d'dministration système (section 8)

sfdisk

 
  

Nom

sfdisk - Manipuler les 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 situées sur un périphérique, et - très dangereux - repartitionner un périphérique.

Lister les tailles

sfdisk -s partition donne la taille de partition en blocs. Ceci peut être utile en conjonction 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 les tailles 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 bytes, blocs de 1024 bytes, à 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 conjointement avec -l. Dans un script shell, on peut utiliser sfdisk -V -q périphérique qui renvoie uniquement une valeur de retour.

Créer des partitions

Le quatrième type d'invocation: sfdisk périphérique fera lire sfdisk les spécifications du partitionnement désiré de périphérique à partir de son entrée standard, et ensuite modifier la table des partitions sur ce disque. Donc, 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 ERREUR DE FRAPPE ET TOUTES VOS DONNéES PEUVENT ETRE PERDUES !

Comme précaution, vous pouvez sauver les secteurs modifiés par sfdisk:


% sfdisk /dev/hdd -O hdd-partition-sectors.save
...
%

Ensuite, si vous décrouvrez 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 sauver 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 quelquepart sur le disque, éventuellement sur des secteurs qui ne faisaient pas partie de l'ancienne table des partitions. Donc, l'information sauvée par l'option -O n'est 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 comment le noyau conçoit la géométrie du(des) disque(s) indiqué(s).
-l ou --list
Lister les partitions d'un périphérique.
-d
Sortir les partitions d'un périphérique dans un format convenant 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 de OS/2 a créée.
-V ou --verify
Tester si les partitions sembles 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
Modifier uniquement la partition indiqueée par numéro. Par exemple :

    % sfdisk /dev/hdb -N5
    ,,,*
    %
rendra la cinquième partition de /dev/hdb bootable (`active') et ne changera rien d'autre. (La cinquième partition sera sûrement appelée /dev/hdb5, mais vous êtes libres de l'appeler autrement, 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, modifier le type (Id) de la partition indiquée par Id. 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
dit d'abord que /dev/hdb5 possède l'Id 6, et ensuite le modifie en 83.
-uS ou -uB ou -uC ou -uM
Accepte ou renvoie en unités de secteurs (blocs, cylindres, mégabytes respcetivement). 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 surchargeant ce que pense le noyau.
-H têtes
Spécifier le nombre de têtes, en surchargeant ce que pense le noyau.
-S secteurs
Spécifier le nombre de secteurs, en surchargeant ce que pense le noyau.
-f ou --force
Faire ce que vous dites, même si cela semble stupide.
-q ou --quiet
Supprimer les messages d'avertissement.
-L ou --Linux
Ne pas se plaindre à propos 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 qu'il 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, 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 celui d'OS/2 ou comme LILO) vivent également dans cet espace libre, et donc vous pourriez avoir besoin d'utiliser cette option si vous utilisez l'un d'entre eux.
--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 tous 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 devez démonter certains systèmes de fichiers, ou désactiver certaines partitions de swap.
--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 de swap, 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, sauver 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 pouvez restaurer l'ancienne situation uniquement si vous l'avez préservée 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 sont appelées partitions primaires.

Un descripteur de partition comporte 6 champs :

struct partition {
    unsigned char bootable;        /* 0 ou 0x80 */
    hsc début_tsc;
    unsigned char id;
    hsc fin_tsc;
    unsigned int secteur_début;
    unsigned int nbre_de_secteurs;
}

Les deux champs hsc indique 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 bytes, seuls 24 bits sont disponibles, ce qui ne suffit pas pour les gros disques (disons > 8GB). En fait, à cause de la mauvaise représentation (qui utilise un byte pour le nombre de tête, alors qu'il est typiquement de 16), les problèmes commencent déjà avec 0.5GB. 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 ne soit démarré. Pour plus de détails, consultez la documentation lilo.

Chaque partition a un type, son `Id', et si ce type est 5 (`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 en tant que partition étendue (ou vide). De cette façon, on obtient une chaîne de partitions étendues. D'autres systèmes d'exploitation ont 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 frontière des 1024 cylindres, sans plantage du FDISK de DOS. (S'il n'y a pas de 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 booter à partir de telles partitions (car leur processus de recherche est plus compliqué que de juste regarder le MBR). Notez que sur une partition étendue, seul l'Id et le début sont utilisés. Il y a différentes conventions sur ce qu'il faut écrire dans les autres champs. On ne devrait pas essayer d'utiliser des partitions étendues pour le stockage de données ou pour la swap.

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 espaces, des virgules ou des points-virgules éventuellement suivis pas des espaces; les espaces blancs 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 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é booté - 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 assigne C: à la première d'entre elles qui est bootable.

Id est donné en hexadécimal, sans le préfixe 0x, ou est de la forme [E|S|L|X], où L (LINUX_NATIVE (83)) est utilisé par défaut, S est LINUX_SWAP (82), E est EXTENDED_PARTITION (partition étendue) (5), et X est LINUX_EXTENDED (85).

La valeur par défaut de début est le premier secteur/cylinder/... non assigné.

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écedente.

Exemple

La commande

sfdisk /dev/hdc << EOF
0,407
,407
;
;
EOF
partitionnera /dev/hdc comme indiqué ci-dessus.

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 avec un caractère de fin de fichier (Ctrl-D). (Et sfdisk supposera que votre ligne d'entrée représentent la première des quatre, que la deuxième est étendue, et que les troisième et quatrième sont vides.)

AVERTISSEMENT DOS 6.x

La commande DOS 6.x FORMAT recherche certaines informations sur le premier secteur de la zône de données de la partition, et suppose que cette information est plus fiable que l'information contenue dans la table des partitions. Le FORMAT de DOS suppose que FDISK (de DOS) efface les 512 premiers bytes de la zône de données de la partition chaque fois qu'un changement de taille se produit. FORMAT regardera cette information additionnelle même si l'option /U est donnée -- nous considérons que c'est un bogue dans FORMAT et FDISK de DOS.

Si vous utilisez cfdisk ou fdisk pour modifier la taille d'une entrée de la table des partitions DOS, alors vous devez aussi utiliser dd pour mettre à zéro les 512 premiers bytes de cette partition avant d'utiliser FORMAT de DOS pour formater cette partition. Par exemple, si vous avez utilisé cfdisk pour créer une entrée dans la table des partitions DOS pour /dev/hda1, alors (après la sortie de fdisk ou de cfdisk et après avoir redémarré Linux pour 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 bytes 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 de 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 les partitions Linux avec l'un des programmes Linux fdisk ou cfdisk.

Avertissements Drdos

Stephen Tweedie rapporta (15/05/1993): `La plupart des rapports de corruption de superbloc s'avèrent être dus à un mauvais partitionnement, où à un système de fichiers qui écrase le début du suivant et corrompt son superbloc. J'ai même eu ce problème avec le DRDOS (supposé fiable). C'était probablement dû à la commande FDISK du DRDOS-6.0. A moins de créer une piste ou un cylindre vide entre la partition DRDOS et celle suivant immédiatement, DRDOS écrase 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 dique.'

A. V. Le Blanc a écrit dans README.efdisk: `Dr. DOS 5.0 et 6.0 ont des problèmes de coopération avec Linux, at avec cette version de efdisk en particulier. Ce efdisk fixe le type de 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 efdisk `t' pour changer le code du 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 partition de code ID 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 swap 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 le byte 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.

Auteur

A. E. Brouwer (aeb@cwi.nl)

Traduction

Frédéric Delanoy, 2000.


Table des matières


Haut de page

© 1996-2000 Adaptation française "Christophe Blaess"