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.
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
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.
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.
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.
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
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.
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
|
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.
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.
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.
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
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 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.
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.
La commande toggle permet de changer le numéro de la partition amorçable. Cela est expliqué par cep ici.
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.

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