Retour

parted



Article rédigé par tellmewhy.

Le but de ce document n'est pas d'apporter une réponse à toutes les questions mais de préciser l'utilisation de parted par quelques exemples commentés, et d'apporter des explications supplémentaires.

Parted est un outil de partitionnement disposant d'un grand nombre de possibilités. Redimensionner, copier, déplacer, créer avec ou sans système de fichiers vos partitions, voilà entre autres les services qu'il vous rendra si vous le sollicitez. Vous découvrirez aussi un affichage particulièrement riche en informations.

J'ai mis à la fin de ce document un lien vers le manuel officiel de parted, beaucoup plus complet. 

Chapitres traités :

SAUVEGARDER LE MBR
LANCER PARTED
PRINT
PARTICULARITÉS de PRINT
CRÉER UNE PARTITION PRIMAIRE, ÉTENDUE, LOGIQUE
MKPARTFS
MOVE
RESIZE
CP
CHECK
RESCUE
CHANGER FACILEMENT LA PARTITION AMORÇABLE AVEC TOGGLE
RM
DESCRIPTEURS DE PARTITIONS
PARTICULARITÉS
CONCLUSION
LIENS TRÈS UTILES

1° Sauvegarder le MBR :

Avant d'utiliser un outil de partitionnement il est prudent de sauvegarder son MBR, mais aussi la table des partitions.

Un exemple : si on veux sauvegarder le mbr partiel de /dev/hda, il faudra passer la commande :

sudo dd if=/dev/hda of=~/Desktop/mbr446.img bs=446 count=1

Cette commande va créer sur le bureau un fichier mbr446.img, qu'il faudra mettre en sécurité sur un autre disque, une clé usb, ou une disquette. 

S'il fallait restaurer la sauvegarde, on utiliserait la commande :

       sudo dd   if=~/ou_il_est/mbr.img   of=/dev/hda   bs=446   count=1

en remplaçant ~/ou_il_est/ par l'adresse du dossier ou périphérique dans lequel mbr446.img a été sauvegardé.

Si l'on veux sauvegarder aussi la table des partitions primaires, il faudra remplacer 446 par 512 pour avoir les octets dans lesquels sont inscrits les descripteurs de ces partitions.

Par contre cette procédure n'incorpore pas les partitions logiques, dont les "caractéristiques" sont inscrites ailleurs sur le disque. 

Pour sauvegarder l'emplacement des partitions logiques on va utiliser sfdisk et la commande :

sudo sfdisk -d  /dev/hda > ~/Desktop/hda.out

Ceci va créer un fichier texte, donnant la position en secteurs de chacune des partitions, pouvant par exemple ressembler à ceci :

# partition table of /dev/hda
unit: sectors

/dev/hda1 : start=       63, size=   385497, Id=83, bootable
/dev/hda2 : start=   385560, size= 19149480, Id=83
/dev/hda3 : start= 19535040, size= 19535040, Id=83
/dev/hda4 : start= 39070080, size= 58621185, Id= 5
/dev/hda5 : start= 39070143, size=  1975932, Id=82

Ce fichier a la particularité de pouvoir être exploité par sfdisk en retour pour repositionner les partitions à leur valeur initiale au cas ou elles auraient été malencontreusement corrompues. Et s'il fallait restaurer la sauvegarde, la commande à passer serait : 

 sudo sfdisk  /dev/hda --force  < ~/ou_elle_est/hda.out

Voir man sfdisk pour plus de détails. Pour autant il ne faut pas oublier que, si les systèmes de fichiers ont été endommagés, la restauration de l'emplacement des partitions ne servira à rien. Cela ne vous dispense en rien d'une sauvegarde totale de vos données. 

Voir par exemple : sauvegarder une partition en utilisant partimage.

2° Lancer parted : 

Pour accéder à parted en prenant comme exemple un disque /dev/hda : sudo parted /dev/hda

sudo parted /dev/hda
GNU Parted 1.7.1
On utilise /dev/hda
Bienvenu dans GNU Parted ! Tapez "help" pour voir la liste des commandes.
(parted)

Et on peut ensuite entrer les commandes voulues. La commande help ou h vous expliquera en détail l'utilisation et la syntaxe des commandes.

3° print :

Pour examiner la table des partitions, utilisez la commande : print ou en abrégé p.
On aura alors l'affichage par défaut qui correspond à print compact.
On peut avoir d'autres affichages, comme s pour affichage par secteurs, cyl pour cylindres, ou bien chs, B, kB, MB, GB, TB, %, compact.

Résultat de la commande print ou print compact :

       (parted) unit compact print                                               

Disque /dev/hda : 82,0GB
Taille des secteurs (logique/physique) : 512o/512o
Table de partitions : msdos

Numéro  Début   Fin     Taille  Type      Système de fichiers  Drapeaux
 1      32,3kB  5240MB  5239MB  primaire  fat32                amorce  
 2      5240MB  13,6GB  8390MB  primaire  ext3                         
 3      13,6GB  19,9GB  6317MB  étendue                                
 5      13,6GB  18,9GB  5239MB  logique   ext3                         
 6      18,9GB  19,9GB  1077MB  logique   linux-swap

Travailler avec une taille en GB n'est pas assez précis, et peut parfois créer des problèmes, partitions qui se chevauchent et mauvais calcul d'une partition. Il est préférable d'indiquer une taille soit en cylindres soit en secteurs.

Observons d'abord toutes les informations que parted nous communique. Pour cela nous allons choisir un affichage en chs (cylinders, heads, sectors,) avec la commande unit chs print :

(parted) unit chs print                                                   

Disque /dev/hda : 9964,235,62
Taille des secteurs (logique/physique) : 512o/512o
Géométrie BIOS (cylindre, tête, secteur) : 9964,255,63. Chaque cylindre est 8225kB.
Table de partitions : msdos

Numéro  Début     Fin          Type      Système de fichiers  Drapeaux
 1      0,1,0     636,254,62   primaire  fat32                amorce  
 2      637,0,0   1656,254,62  primaire  ext3                         
 3      1657,0,0  2424,254,62  étendue                                
 5      1657,1,0  2293,254,62  logique   ext3                         
 6      2294,1,0  2424,254,62  logique   linux-swap

Dans la première partie, ici pour une table de partitions msdos, on nous informe que chaque cylindre fait 8225kB. On peut calculer plus exactement avec une taille en octets, puisque chaque cylindre a 255 têtes de 63 secteurs de 512 octets :255 * 63 * 512 = 8225280 

En général, sur une table ms-dos le cylindre a une taille de 8MB. Cette table des partitions n'est pas une règle mais elle est très fréquente.

Poursuivons maintenant avec l'affichage en secteurs :

(parted) unit s print                                                     

Disque /dev/hda : 160086527s
Taille des secteurs (logique/physique) : 512o/512o
Table de partitions : msdos

Numéro  Début      Fin        Taille     Type      Système de fichiers  Drapeaux
 1      63s        10233404s  10233342s  primaire  fat32                amorce  
 2      10233405s  26619704s  16386300s  primaire  ext3                         
 3      26619705s  38957624s  12337920s  étendue                                
 5      26619768s  36853109s  10233342s  logique   ext3                         
 6      36853173s  38957624s  2104452s   logique   linux-swap

Une constation intéressante, la première partition ne commence qu'au 63ème secteur. Avec une table des partitions usuelle c'est toujours le cas. Ces 63 premiers secteurs peuvent être utilisés par les différents systèmes d'exploitation. Les partitions primaires suivantes ne débuteront pas elles au 63ème secteur, mais directement derrière la première partition, comme on le voit pour la partition n°2 qui commence au secteur 10233405. Par contre toutes les partitions logiques démarreront au 63ème secteur.

De même, vous avez peut-être déjà vu ce type de message sous fdisk : " La partition ne se termine pas sur une frontière de cylindre. "
Pour vérifier qu'elle finit bien sur une frontière de cylindres nous pouvons calculer cela très facilement en multipliant le nombre de cylindres par le nombre de secteurs qu'il contient. Comme nous avons 255 têtes de 63 secteurs par cylindre nous avons 16065 secteurs par cylindre, ce qui donne pour la première partition : 
637 * 16065 = 10233405.

On compte à partir de zéro sous parted donc quand on voit cylindre de fin 636 c'est en fait 637 (c'est le problème des écarts entre les poteaux et le nombre de poteaux), idem pour le nombre de têtes et de secteurs. On voit comme résultat 10233405, là encore pour parted c'est le secteur 10233404.

Normalement, même si vous vous trompez lors de la création d'une partition, parted rectifiera de lui-même pour qu'elle se termine sur une fin de cylindre.

3°bis Particularités de print :

 Vous pouvez afficher la table des partitions de tout les disques durs avec la commande : print all
ou d'une seule partition en spécifiant son numéro : print 1

Attention ! pour l'affichage d'une partition unique il faut le faire avec une partition démontée, donc pour la partition racine il faudra utiliser un live cdrom. Aussi, tenez compte des avertissements lorsqu'ils apparaissent et ne passez pas outre, donc au moindre souci c pour cancel. L'affichage d'une seule partition nous donne quelques renseignements supplémentaires :
 
Mineur :                 Numéro de partition
Fanions :                Présence ou absence du fanion d'amorce
Système de fichiers :
Taille :                 Taille en GB ou en MB et pourcentage d'occupation du disque dur
Taille minimum :         Taille minimum et espace occupé dans ce cas sur le disque dur
Taille maximum           Égale à la totalité du disque dur 

4° Créer une partition primaire, étendue, logique :

Syntaxe de cette commande : mkpart type (primaire, étendue, logique) début fin
 
a) Créer une partition étendue : cela permet d'avoir un grand nombre de partitions. Tout comme une partition primaire, une partition étendue occupe un des quatre descripteurs libres dans la table des partitions. Par contre les partitions logiques contenues dans la partition étendue n'auront pas de descripteur dans la table (mbr), d'ou l'utilité d'utiliser sfdisk en complément lorsqu'on sauvegarde le mbr et la table comme vu plus haut.

Pour créer une partition étendue du secteur 97675200 au secteur 625137344s : mkpart extended 97675200s 625137344s

Cela donne par exemple : 

Disque /dev/sda : 625142447s
Taille des secteurs (logique/physique) : 512o/512o
Table de partitions : msdos

Numéro  Début       Fin         Taille      Type      Système de fichiers  Drapeaux
 1      63s         97675199s   97675137s   primaire  ext3                 amorce  
 2      97675200s   625137344s  527462145s  étendue

Dans mon exemple on voit que j'ai placé ma partition étendue directement derrière la première partition primaire, mais on peut la placer où on veut sur le disque dur en fonction des possibilités.

b) Créer une partition primaire ou logique : pour créer une partition primaire ou logique, la syntaxe sera :
mkpart primary début fin ou bien mkpart logical début fin

La commande mkpart va produire une partition mais ne va pas créer de système de fichiers. Je peux utiliser mkfs sous parted si le sytème de fichiers est supporté.
Pour les autres systèmes de fichiers je peux quitter parted, puis utiliser la commande appropriée pour le faire.
man mkfs ou mkfs --help fourniront toutes les informations nécessaires. 
Mais il y a la commande mkpartfs sous parted qui peut très bien faire cela dans certains cas.

5° mkpartfs : 

Pour créer une partition et son système de fichiers en même temps, la commande est : mkpartfs. Au moment où j'écris ces lignes, le support du format ext3, en création, n'est pas disponible pour mkpartfs, (mais il est fort probable que l'ext3 pour mkpartfs soit très rapidement intégré). Vous devrez donc créer votre partition avec mkpart puis la formater indépendamment avec par exemple mkfs.ext3. Nous y reviendrons en fin de sujet au chapitre particularités car il y a des précisions à faire.

Par contre, pour les formats fat32, ext2, reiserfs, ou linux-swap, mkpartfs marche très bien si vous avez installé toutes les librairies nécessaires.

Je vais pour cet exemple créer une partition de 1000 cylindres. Dans mon cas cela représente une taille de 8 225 280 000 octets (1000 * 255 * 63 * 512) soit 8.225GB Gigaoctets. Attention au différences entre Gigaoctets et Gibioctets (base 1000 et base 1024), pour cela on peut en apprendre plus grâce à Wikipedia

(parted) mkpartfs logical ext2 21275cyl 22275cyl 

et le résultat visible grace à print :

Numéro  Début      Fin           Type      Système de fichiers  Drapeaux
 1      0,1,0      6079,254,62   primaire  ext3                 amorce  
 2      6080,0,0   38912,254,62  étendue                                
 5      6080,1,0   15806,254,62  logique   ext3                         
 6      15807,1,0  17023,254,62  logique   ext3                         
 7      17024,1,0  18240,254,62  logique   ext3                         
 8      19458,1,0  20789,254,62  logique   ext3                         
 9      20790,1,0  21274,254,62  logique   linux-swap                
10      21275,1,0  22274,254,62  logique   ext2

La comande unit compact print confirme bien la taille de 8.225GB :

10      175GB   183GB   8225MB  logique   ext2

6° move :

La commande move déplace une partition d'un endroit à un autre en gardant toutefois le même numéro de partition.

Move marche pour fat32, linux-swap, reiserfs (si vous avez installé les librairies nécessaires). Pour l'ext2 et l'ext3 sous certaines conditions. Pour les autres formats il faut consulter le manuel.

Déplacer une partition peut-être extrêmement pratique. Sur une configuration qui contenait une partition pour XP, une pour /, une pour /home, une pour swap, enfin une autre partion en ext3, j'ai décidé de réduire la place utilisé par XP en le faisant passer à 8Go. Je reste donc avec une partie inoccupée entre la partition 1 XP et la partition 2 / . Théoriquement je ne peux pas redimensionner ma partition / car la place vacante la précède.

Ceci va démontrer l'utilité de la commande move. Bien sûr il faut que la partition soit démontée pour pouvoir la manipuler, et comme il s'agit de la partition / je vais devoir utiliser un livecd.

Exemple avec un disque dur hda. On va travailler avec les cylindres. Situation de départ :

(parted) unit chs print                                                       

Disque /dev/hda : 6081,14,26
Taille des secteurs (logique/physique) : 512o/512o
Géométrie BIOS (cylindre, tête, secteur) : 6081,255,63. Chaque cylindre est 8225kB.
Table de partitions : msdos

Numéro  Début     Fin          Type      Système de fichiers  Drapeaux
 1      0,1,0     973,254,62   primaire  fat32                lba     
         974,0,0   3647,254,62  espace    libre
 2      3648,0,0  5470,254,62  primaire  ext3                 amorce  
 4      5471,0,0  6080,254,62  étendue                        lba     
 5      5471,1,0  5957,254,62  logique   ext3                         
 6      5958,1,0  6080,254,62  logique   linux-swap

La syntaxe est : move n° de partition début fin. 

(parted)  move     2     974c     2796c

et le résultat affiché par la commande print :

Numéro  Début     Fin          Type      Système de fichiers  Drapeaux
 1      0,1,0     973,254,62   primaire  fat32                lba     
 2      974,0,0   2796,254,62  primaire  ext3                 amorce  
 4      5471,0,0  6080,254,62  étendue                        lba     
 5      5471,1,0  5957,254,62  logique   ext3                         
 6      5958,1,0  6080,254,62  logique   linux-swap

Je peux donc maintenant utiliser resize pour agrandir ma partition /dev/hda2.

 7° resize :

La commande resize sert à redimensionner une partition. Dans les limites du possible vous pouvez donc réduire ou agrandir une partition et le système de fichiers qu'elle contient sans l'endommager. Si le redimensionnement n'est pas possible parted vous le signalera.

Resize marche pour linux-swap, reiserfs (si vous avez installé les librairies nécessaires), fat32, ext2 et ext3 sous certaines conditions. Je n'ai pas testé pour les autres types de systèmes de fichiers, pour cela il faut se référer au manuel.

Restriction : le début de la partition doit rester le même. Parted peut redimensionner des partitions, qu'elles aient été ou non défragmentées.
Grâce à la commande help vous pouvez vérifier quels systèmes de fichiers peuvent être manipulés par parted.

La syntaxe de la commande resize est : resize n° de partition début fin

(parted) resize     11     22275cyl     22501cyl

Après un redimensionnement il est conseillé de faire un fsck du système de fichiers démonté.

Sur ext3 (et ext2) on peut aussi utiliser resize2fs. Resize2fs ne fait pas partie de parted. Il représente une excellente alternative si l'option resize de parted refuse de redimensionner une partition en ext2 ou en ext3.

Vous trouverez toutes les explications nécessaires pour son utilisation grâce à cep ici

8° cp :

La commande cp copie le système de fichiers d'une partition sur une autre.
CP marche avec les systèmes de fichiers fat32, reiserfs, ainsi qu'avec ext2 et ext3 sous certaines conditions. Pour les autres formats il faut consulter le manuel.

La syntaxe de cette commande est : cp n° partition source n° partition cible.

Comme toutes les manipulations sous parted les partitions doivent êtres démontées.

 9° check :

La commande check vérifie qu'il n'y ait pas d'erreurs sur le système de fichiers de votre partition, cela correspond à un fsck mais sans réparation et le système de fichiers doit être démonté.

La syntaxe est : check n° partition

9° rescue : 

La commande rescue sert à récupérer les partitions si elles ont été effacées par erreur. Cela fonctionne très bien si on prête attention à quelques particularités.

La syntaxe pour rescue est : rescue début fin

Pour le cylindre de début la marge est extrêmement faible, pour être exact, après plusieurs essais, pas plus d'un cylindre. Par contre il n'est pas nécessaire de déterminer avec précision la fin de la partition à retrouver, loin s'en faut, il suffit d'indiquer le dernier cylindre du disque dur, ou le dernier secteur ou Mo, et parted adapte en conséquence. En régle générale, les partitions s'enchaînent les unes derrières les autres et cela va nous servir.

Voici ma table de partitions affichée en valeur chs, qui servira d'exemple :

1    0,1,0     636,254,62 primary fat 32 boot
2  637,0,0    1656,254,62 primary ext3
3 1657,0,0    2424,254,62 extended
5 1657,1,0    2293,254,62 logical ext3
6 2294,1,0    2424,254,62 logical linux-swap

Sous parted j'utilise la commande rm pour supprimer toutes mes partitions, donc rm 6, puis rm 5, rm 4, rm 3, rm 2, rm 1.

Pour cela, j'utilise un live cdrom puisque je ne pourrais pas effacer des partitions en cours d'utilisation.

Il faut savoir que la première partition, dans une table ms-dos, commence toujours au cylindre 0. Donc comme on l'a vu précédemment rescue marche parfaitement si on lui indique le cylindre de départ. Admettons que je ne me souvienne plus de la fin, le début de la première partition lui je le connais. Donc :

(parted)  rescue 0cyl 5000cyl
Information: A fat32 primary partition was found at 0,1,0 -> 636,254,62.
Do you want to add it to the partition table ?
Yes/No/Cancel?
yes
print
1 0,1,0 636,254,62 primary fat32

Il manque juste le témoin d'amorce qu'il sera facile d'ajouter avec la commande  set 1 boot one

Mon disque fait 9964cyl, allons y pour retrouver la deuxième partition :

(parted) rescue     637cyl     9964cyl
Information: A ext3 primary partition was found at 637,0,0 -> 1656,254,58.
Do you want to add it to the partition table?

Dans un premier temps, j'avais refusé sa proposition. Malgré tout un tas d'essais, en finissant même par lui donner les références exactes avec les secteurs, il n'arrivera jamais à trouver la partition comme il convient. Le cylindre est bon, la tête aussi, mais pas le secteur. J'ai donc accepté la proposition qui m'est faite de rétablir une partition sur  637,0,0 1656,254,58. Méfiant, j'ai ensuite quitté provisoirement parted pour une petite expérience, c'est à dire créer un répertoire et vérifier que cette partition peut être montée sans problème, ce qui sera le cas. J'ai aussi lancé un e2fsck qui n'a rien noté d'anormal.

Retournons sous parted pour récupérer les autres partitions :

(parted)  rescue     1657cyl     5000cyl
Information : A fat32 primary partition was found at 1657,0,6      ---2294,0,4.
Do you want to add it to the partition table ?
Yes/No/Cancel?
No

Je refuse la proposition pour deux raisons : 
1° : la partition ne finit pas sur le bon cylindre comme on peut le voir en comparant avec ma table des partitions précédente.
2° : le système de fichiers n'est pas celui que j'attends. Parted ne se trompe pas, il y a bien eu par le passé une telle partition, mais ce n'est pas celle que je cherche. 

Puisque je refuse sa première proposition, parted m'en fait une autre :

A ext3 primary partition was found at 1657,1,0     ----2293,254,56.
Do you want to add it to the partition table ?

Ici arrêtons-nous un moment. Comme je l'ai déjà signalé, on sait où doit commencer chaque partition selon qu'elle est la première partition primaire, une autre primaire, ou une logique. De la proposition que vient de me faire parted on peut conclure que la partition commençant à 1657,1,0 est la première partition logique. Si rescue peut vous aider à retrouver vos partitions primaires ou logiques, il ne peut en revanche vous aider à retrouver la partition étendue.

La raison en est simple, la partition étendue n'est pas une partition en soi, mais un contenant. Toutefois comme nous venons de retrouver la première partition primaire à 1657,1,0 nous savons que la partition étendue commençait à 1657,0,0. Commme je dois impérativement créer la partition étendue avant la partition logique, je vais d'abord interrompre rescue.

Je vais créer maintenant la partition étendue avec mkpart, et comme je ne me rappelle plus de son cylindre de fin je vais lui proposer le dernier cylindre de mon disque dur :

(parted) mkpart  extended  1657cyl   9965cyl
(parted) unit chs print
3  1656,254,59  9964,235,62

Ce n'est pas bon, je vais donc utiliser le secteur comme unité  en tenant compte de ces calculs :
(c * h * s ou 1657 * 255 * 63 = 26619705s pour le secteur de début et 9964 * 255 * 63 = 160087725 -1 = 160071659s pour le secteur de fin).

(parted) rm 3
(parted) mkpart extended 26619705s 160071659s
(parted) unit chs print
. . .
3 1657,0,0  9963,254,62   extended      lba

C'est bon nous pouvons reprendre rescue :

(parted)  rescue     1657cyl      5000cyl

Malheureusement rescue me restaure d'autorité l'ancienne partition fat32 commençant à 1657,0,6. Je l'efface donc avec rm 5, puis je quitte parted.
J'y retourne aussitôt et là il veut bien me faire de nouveau des propositions. Je refuse celle en fat 32 qui ne se termine pas sur le bon cylindre, mais accepte
l'autre proposition 1657,1,0  --2293,254,56 :

5 1657,1,0     2293,254,56    logical    ext3

Il me manque une dernière partition dans mon exemple : la partition /dev/hda6. On retourne donc sous parted. Dans un premier temps il me propose de récupérer une partition sur : 2294,0,0 --2424,254,51. Comme ce n'est pas bon, je refuse. Il me fait une nouvelle proposition :

A linux-swap logical partition was found at 2294,1,0 --2424,254,50.
Do you want to add it to the partition table?
yes

Je vais maintenant quitter et essayer de redémarrer mon ordinateur.
Tout marche bien, aucune erreur de signalée, voici ma table des partitions :

Disque /dev/hda : 9964,235,62
Taille des secteurs (logique/physique) : 512o/512o
Géométrie BIOS (cylindre, tête, secteur) : 9964,255,63. Chaque cylindre est 8225kB.
Table de partitions : msdos

Numéro  Début     Fin          Type      Système de fichiers  Drapeaux
 1      0,1,0     636,254,62   primaire  fat32                amorce 
 2      637,0,0   1656,254,58  primaire  ext3                        
 3      1657,0,0  9963,254,62  étendue                        lba    
 5      1657,1,0  2293,254,56  logique   ext3                        
 6      2294,1,0  2424,254,50  logique   linux-swap

Voilà on peut quand même remarquer que plusieurs partitions ne se terminent pas comme elles le devraient. On aurait pu rectifier à la volée les fins des partitions. Il n'est pas trop tard, et nous pouvons encore faire cela maintenant. On redémarre donc sur un live cd pour pouvoir travailler sur des partitions démontées :

sudo parted /dev/hda
. . .
unit s print
. . .
rm 2
mkpart primary 10233405s 26619704s

On quitte, on fait les vérifications, puis on revient sous parted :

rm 5
mkpart logical 26619768s 36853109s

Ici attention, temporairement le numéro de partition a changé. C'est /dev/hda6.
On quitte, on fait les vérifications , puis on revient sous parted :

rm 5     (ex 6)
mkpart logical 36853173s 38957624s

Une précaution importante, quand on manipule des partitions il faut toujours faire attention au numéros de partitions qui leur sont attribuées.
Dans mon cas j'ai supprimé mes partitions dans l'ordre et je les ai recrées dans l'ordre. Une fois toutes les manipulations faites, toutes mes partitions ont retrouvé leur numéro d'origine. Si cela n'est pas possible, il faut bien sûr modifier le fstab en conséquence, en vérifiant entre autre que les uuid n'aient pas changés, si votre fstab est configuré pour leur utilisation. On en apprendra plus sur les uuid ici (merci cep).

Je redémarre pour m'assurer que tout va bien. C'est le cas, voici ma table des partitions :

Disque /dev/hda : 9964,235,62
Taille des secteurs (logique/physique) : 512o/512o
Géométrie BIOS (cylindre, tête, secteur) : 9964,255,63. Chaque cylindre est 8225kB.
Table de partitions : msdos

Numéro  Début     Fin          Type      Système de fichiers  Drapeaux
 1      0,1,0     636,254,62   primaire  fat32                amorce 
 2      637,0,0   1656,254,62  primaire  ext3                        
 3      1657,0,0  9963,254,62  étendue                        lba    
 5      1657,1,0  2293,254,62  logique   ext3                        
 6      2294,1,0  2424,254,62  logique   linux-swap

Conclusion, en choisissant des partitions dont le début soit cohérent, j'ai pu récupérer la totalité de ma table des partitions.

D'autres programmes tels que testdisk et gpart font également cela de manière plus automatisée.

10° rm :

La commande rm est très utile mais doit être utilisé avec précaution. RM vous permet d'effacer une partition, en apparence du moins car, tout comme avec fdisk, si vous avez noté les débuts et fins de vos partitions, vous pouvez les restaurer. Heureusement, si vous aviez oublié de noter les débuts et fins de vos partitions, il y a rescue.

Le danger avec rm n'est pas rm en soi, mais ce que vous faites après. Par exemple recréer un système de fichiers ( formater ) serait alors rédhibitoire. Tant que vous avez seulement effacé la partition, que ce soit avec d (delete) sous fdisk ou rm sous parted, vous pouvez encore récupérer vos partitions.

Donc la syntaxe pour rm est : rm n° de partition.

11° toogle :

La commande toggle permet de changer le numéro de la partition amorçable. Cela est expliqué par cep ici.

12° Descripteurs de partitions :

Les descripteurs de partitions sont les données nécessaires au système d'expoitation pour définir les partitions. Ces données se trouvent dans le MBR, juste après les 446 premiers octets dédiés en partie au bootloader. Elles sont donc comprises entre l'octet 446 et l'octet 510, les deux derniers octets étant occupés par les Magic Numbers.

Ces données ne concernent que les partitions primaires et la partition étendue. Les données des partitions logiques ne sont pas stockées dans le MBR, mais dans l'EBR. Voici ma table des partitions :

Numéro  Début       Fin         Taille      Type      Système de fichiers  Drapeaux
 1      63s         97675199s   97675137s   primaire  ext3                 amorce 
 2      97675200s   625137344s  527462145s  étendue                               
 5      97675263s   253939454s  156264192s  logique   ext3                        
 6      253939518s  273490559s  19551042s   logique   ext3                        
 7      273490623s  293041664s  19551042s   logique   ext3                        
 8      312592833s  333991349s  21398517s   logique   ext3                        
 9      333991413s  341782874s  7791462s    logique   linux-swap

Comme on peut le remarquer, ma partition étendue commence juste après la première partition et occupe tout l'espace restant. Nous ne verrons donc dans les descripteurs du MBR que deux partitions.

Pour visionner le contenu de mon MBR sur /dev/sda je dispose de la commande :

sudo dd bs=512 count=1 if=/dev/sda | od -Ax -tx1z -v

Le tableau suivant vous montrera la partie réservée aux descripteurs.
En marron le descripteur de la première partition primaire.
En bleu le descripteur de la seconde partition primaire.
En magenta le descripteur de la troisième partition primaire.
En vert le descripteur de la quatrième partition primaire.
En rouge les Magic Numbers.

mbr_des.png

En 0x1be, le premier nombre indique si le témoin d'amorce est présent ou absent. 80 si il est présent, 0 si il est absent. 

Pour avoir un aperçu des significations de ces chiffres et de leurs interprétations, voir ceci

Afin de ne pas alourdir cette étude, je réserverai ultérieurement une autre page pour l'explication du mbr et de la table de partitions. 

13° Particularités :

Vous ne pouvez retailler (resize), déplacer (move),copier (cp), une partition ext2 ou ext3 que sous certaines conditions sous parted 1.7.1.
Ceci est dû à une incompatibilité de parted 1.7.1 avec certaines nouvelles fonctions apportées par les versions les plus récentes de e2fsprogs.
Vous devez vérifier que votre partition n'a pas les attributs suivants : dir_index et resize_inode.
Pour cela c'est la commande suivante (ex pour hda1):

sudo tune2fs -l /dev/hda1 |grep feat

On ne peut enlever l'attribut resize_inode que lors de la création du système de fichiers (formatage) en ajoutant -O ^resize_inode à la commande mke2fs ou mkfs.ext3 :

mkfs.ext3 -O ^resize_inode /dev/hda1

On peut par contre enlever et remettre (vivement conseillé) dir_index avec la commande tune2fs -O ^ pour l'enlever, ou +dir_index pour l'ajouter, comme ceci :

sudo tune2fs -O ^dir_index /dev/hda1    (on enlève)
sudo tune2fs -O +dir_index /dev/hda1    (on ajoute)

Dans tout les cas il faudra parfaire ces manipulations sur la partititon démontée par : sudo e2fsck -fD /dev/hda1

Je pense que dans un avenir proche parted pourra manipuler des partitions avec les attributs resize_inode et dir_index.

14° Conclusion :

Quel bel objet ? Non, quel bel outil ! Car si découvrir parted à été un très beau voyage pour moi, parted est avant tout un outil. Très complet, très précis, bénéficiant de nombreuses options et d'un affichage à la mesure de ses possibilités, qui iront en croîssant j'en suis sûr. Laissez-lui donc une très belle place dans votre boite à outil, car vous ne pourrez plus vous en passer.
On en apprendra plus encore grâce à cette commande si vous avez installé le paquet parted-doc : info parted

15° Liens très utiles :

www.gnu.org/software/parted/ Le manuel de parted
www.gnu.org Une très belle vision de la liberté
fr.wikipedia.org Quand la culture s'associe au monde du libre




Retour


Valid HTML 4.01 Transitional        Valid CSS!