Content-type: text/html
% sfdisk -s /dev/hda9 81599 %
% sfdisk -s /dev/hda: 208896 /dev/hdb: 1025136 /dev/hdc: 1031063 /dev/sda: 8877895 /dev/sdb: 1758927 total : 12901917 blocs %
% 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é.
SOYEZ EXTRÊMEMENT PRUDENT. UNE ERREUR 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, 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.
% sfdisk -d /dev/hda > hda.out % sfdisk /dev/hda < hda.outcorrigera la dernière mauvaise partition étendue que le fdisk OS/2 a créé.
% 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).
% sfdisk --print-id /dev/hdb 5 6 % sfdisk --change-id /dev/hdb 5 83 OKdit d'abord que /dev/hdb5 possède l'Id 6, et le remplace ensuite par 83.
Un descripteur de partition comporte 6 champs :
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 n'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 (« partition étendue »), le secteur de début de la partition contient également 4 descripteurs de partition. MSDOS n'utilise que les deux premiers : 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 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 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 juste 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.
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.
sfdisk /dev/hdc << EOF 0,407 ,407 ; ; EOF
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ésente la première des quatre, que la deuxième est étendue, et que les troisième et quatrième sont vides.)
La commande FORMAT du DOS 6.x recherche certaines informations sur le premier secteur de la zone 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 octets de la zone 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 sfdisk 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 octets de cette partition avant d'utiliser le 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 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 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 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 le programme Linux sfdisk.
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. À moins de créer une piste ou un cylindre vide entre la partition DRDOS et celle 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: « Dr. DOS 5.0 et 6.0 ont des problèmes de coopération avec Linux, 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 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.
Il y a trop d'options.