| sfdisk | |||
Nomsfdisk - Manipuler les tables de partitions pour Linux.Synopsissfdisk [options] périphériquesfdisk -s [partition] Descriptionsfdisk 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 taillessfdisk -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.Si l'argument partition est omis sfdisk listera les tailles de tous les disques, et le total :
Lister les partitionsLe 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 partitionsLe 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 partitionsLe 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:
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
(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
ThéorieLe 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éesfdisk 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.
ExempleLa commandepartitionnera /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.xLa 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 DrdosStephen 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.
BoguesUne interface interactive correspondant à cfdisk (avec une interface curses) manque toujours.Il y a trop d'options.
AuteurA. E. Brouwer (aeb@cwi.nl)
TraductionFrédéric Delanoy, 2000.
|