# [DISQUE] Partition étendue -> Partition primaire

## Tuxifer

Salut,

Après avoir fait du ménage dans les partitions de mon disque dur, il ne reste qu'une partition que je souhaite conserver. Or elle se trouve dans une partition étendue. Or, je ne veux recréer qu'une seule autre partition qui prendra le reste de l'espace disque. Cela est actuellement impossible car il reste de l'espace disque dans et hors de la partition étendue.

C'est pourquoi j'aimerais convertir ma partition contenue dans la partition étendue en partition principale. Pour info, cette partition contient du reiserfs qui me semble est redimentionnable.

J'ai entendu parler de evms qui parait-il fait des miracles.  :Wink: 

En savez-vous plus que moi à ce sujet ?

Merci d'avance !

----------

## kernelsensei

ben evms c'est pour les systemes lvm il me semble ...

Les tables de partitions DOS ne sont pas dynamiques, d'ou l'interet d'avoir un lvm, donc dans ton cas, la seule solution possible est une bonne grosse backup + cfdisk + mkfs + restore backup

----------

## Tuxifer

Je vais manquer de place... Y a pres de 200 Go...   :Neutral: 

----------

## kernelsensei

 *Tuxifer wrote:*   

> Je vais manquer de place... Y a pres de 200 Go...  

 

c'est petit ça ...  :Razz: 

Tu dois bien avoir un copain qui a un HD de 250 Go en rab quelque part ? non ?

sinon tu peux pas squatter un disque a la fac / au boulot / ... ?

----------

## Marsu

t'en connais beaucoup des facs toi qui te laissent 200 Go comme ça  :Mr. Green:  ??

----------

## Tuxifer

 *kernel_sensei wrote:*   

>  *Tuxifer wrote:*   Je vais manquer de place... Y a pres de 200 Go...   
> 
> c'est petit ça ... 
> 
> Tu dois bien avoir un copain qui a un HD de 250 Go en rab quelque part ? non ?
> ...

 

Tu connais beaucoup de gens qui ont des disques de 250 Go et qui ne savant pas quoi en faire ??? Si c'est le cas je suis preneur parce que moi ceux que je connais, quand ils ont ce genre de matos, ils s'en servent...  :Wink: 

----------

## ghoti

 *Tuxifer wrote:*   

> Or, je ne veux recréer qu'une seule autre partition qui prendra le reste de l'espace disque. Cela est actuellement impossible car il reste de l'espace disque dans et hors de la partition étendue.

 

 *Tuxifer wrote:*   

> Y a pres de 200 Go...  

 

Heu, attend : tes données font 200 Go ou bien c'est la dimension de la partition ?

Transformer une partition étendue en partition primaire n'est pas possible à ma connaissance sans passer par un backup, comme le disait kernel_sensei.

Par contre, pour linux, il n'y aura aucun avantage à avoir une partition primaire pure plutôt qu'une partition logique dans une partition étendue. Tu pourrais donc avoir une partition étendue contenant une seule partition logique qui occuperait tout l'espace. Si l'espace libre en dehors de la partition étendue précède et/ou suit directement la partition étendue, tu devrais pouvoir t'en sortir avec l'option "resize" du package parted, une première fois sur la partition étendue et une seconde fois sur la partition logique.

N'empêche, c'est toujours une opération risquée et si tu tiens à tes données, un backup est plus que conseillé ...

----------

## anigel

Transformer une partition logique en partition primaire... C'est tout à fait possible, mais pas trivial.

Tu auras besoin de fdisk (celui de base, le tout simple, en texte avec des codes abscons), et... C'est tout. Mais il y a plusieurs conditions : tout d'abord, tu vas perdre dans l'opération toutes tes autres partitions étendues. Si ce n'est pas grave, alors c'est simple. Tout d'abord, lances fdisk sur le disque fautif :

```
fdisk /dev/hda (par exemple)
```

Puis appuies sur 'p', et valides, tu vas voir apparaitre ton schéma de disque, au format basique ; ça donne :

```
fdisk /dev/hda

Le nombre de cylindres pour ce disque est initialisé à 7297.

Il n'y a rien d''incorrect avec cela, mais c'est plus grand que 1024,

et cela pourrait causer des problèmes en fonction pour certaines configurations:

1) logiciels qui sont exécutés à l'amorçage (i.e., vieilles versions de LILO)

2) logiciels d'amorçage et de partitionnement pour d'autres SE

   (i.e., DOS FDISK, OS/2 FDISK)

Commande (m pour l'aide): p

Disque /dev/hda: 60.0 Go, 60022480896 octets

255 têtes, 63 secteurs/piste, 7297 cylindres

Unités = cylindres de 16065 * 512 = 8225280 octets

Périphérique Amorce    Début         Fin      Blocs    Id  Système

/dev/hda3   *           1         487     3911796   83  Linux

/dev/hda4             488        7297    54701325    5  Extended

/dev/hda5             488         550      506016   82  Linux swap / Solaris

/dev/hda6             551        7297    54195246   83  Linux
```

Par exemple, dans mon cas, je veux transformer hda6 en partition primaire. Et bien je vais perdre hda4 et hda5 ! Dans mon exemple, je note (sur un papier) les blocs de début et de fin de ma partition. Ici, 551 et 7297. Ensuite, j'efface la partition étendue (hda4 dans mon cas), avec la commande 'd', suivie du numéro de partition à effacer (ici 4). On valide et on arrive à ça :

```
Commande (m pour l'aide): d

Numéro de partition (1-6): 4

Commande (m pour l'aide): p

Disque /dev/hda: 60.0 Go, 60022480896 octets

255 têtes, 63 secteurs/piste, 7297 cylindres

Unités = cylindres de 16065 * 512 = 8225280 octets

Périphérique Amorce    Début         Fin      Blocs    Id  Système

/dev/hda3   *           1         487     3911796   83  Linux
```

Ma partition secondaire a disparu, avec tout ce qu'elle contenait. Mais les données sont toujours présentes sur le disque ! Ensuite, on va ajouter une partition primaire, à l'endroit exact où se tenait la partition logique d'origine. Cela ne fait avec la commande 'n', et en répondant précisémment aux questions :

```
Commande (m pour l'aide): n

Action de commande

   e   étendue

   p   partition primaire (1-4)

p

Numéro de partition (1-4): 4

Premier cylindre (488-7297, par défaut 488): 551

Dernier cylindre ou +taille or +tailleM ou +tailleK (551-7297, par défaut 7297): 7297

Commande (m pour l'aide): p

Disque /dev/hda: 60.0 Go, 60022480896 octets

255 têtes, 63 secteurs/piste, 7297 cylindres

Unités = cylindres de 16065 * 512 = 8225280 octets

Périphérique Amorce    Début         Fin      Blocs    Id  Système

/dev/hda3   *           1         487     3911796   83  Linux

/dev/hda4             551        7297    54195277+  83  Linux
```

Voilà, c'est fini. Il ne reste plus qu'à sauvegarder puis quitter disk (commande 'wq'), et à modifier /etc/fstab pour corriger la ligne concernant cette partition.

Ne te lances pas là-dedans si tu n'as pas compris précisémment la procédure ! Si tu perds des données, il ne faudra pas m'en tenir pour responsable. C'est une opération très très délicate, qui demande de bien saisir le sens de ce que l'on fait. Donc si tu t'y colles : à tes risques et périls !

Bon courage,

----------

## anigel

Ah, j'oubliais : une fois que tu auras fait tout ça, il ne te restera plus qu'à "agrandir" ta partition avec un outil genre qtparted.

----------

## Tuxifer

 *ghoti wrote:*   

> 
> 
> Heu, attend : tes données font 200 Go ou bien c'est la dimension de la partition ?
> 
> 

 

Ma partition fait 200 Go mais elle est bien pleine sachant que j'ai massivement sauvegardé dessus en vue de la réinstallation de mon système.

 *ghoti wrote:*   

> 
> 
> Transformer une partition étendue en partition primaire n'est pas possible à ma connaissance sans passer par un backup, comme le disait kernel_sensei.
> 
> 

 

Malheureusement, je pense que tu voulais parler de partition logique... sinon c'est la partition logique que je voudrais convertir...

 *ghoti wrote:*   

> 
> 
> Par contre, pour linux, il n'y aura aucun avantage à avoir une partition primaire pure plutôt qu'une partition logique dans une partition étendue. Tu pourrais donc avoir une partition étendue contenant une seule partition logique qui occuperait tout l'espace. Si l'espace libre en dehors de la partition étendue précède et/ou suit directement la partition étendue, tu devrais pouvoir t'en sortir avec l'option "resize" du package parted, une première fois sur la partition étendue et une seconde fois sur la partition logique.
> 
> 

 

Je suis d'accord, mais si c'était possible, j'aurais préféré n'avoir que des partitions primaires. C'est plus propre, ne serait-ce que parcequ'on ne saute pas de numéro de partition. Ca peut éviter des erreurs. Merci du tuyau du reste...

 *ghoti wrote:*   

> 
> 
> N'empêche, c'est toujours une opération risquée et si tu tiens à tes données, un backup est plus que conseillé ...
> 
> 

 

Je n'ai pas assez d'espace pour tout stocker... Mais je vais me débrouiller en répartissant les données sur les espaces libres de mes autres partitions/disques. Ca va prendre un temps fou, mais la sécurité en vaut la chandelle, surtout si je dois utiliser parted.

----------

## Tuxifer

Ahhh ! Tu me sauves !!!  :Very Happy: 

Cependant es-tu sûr que les données restent inchangées sur le disque ? Tu as déjà essayé par toi même ?

 *anigel wrote:*   

> 
> 
> Ne te lances pas là-dedans si tu n'as pas compris précisémment la procédure ! Si tu perds des données, il ne faudra pas m'en tenir pour responsable. C'est une opération très très délicate, qui demande de bien saisir le sens de ce que l'on fait. Donc si tu t'y colles : à tes risques et périls !
> 
> 

 

J'ai tout à fait compris la démarche mais permets moi de m'assurer à deux fois que tu es sûr de toi  :Wink: 

 *anigel wrote:*   

> 
> 
> Ah, j'oubliais : une fois que tu auras fait tout ça, il ne te restera plus qu'à "agrandir" ta partition avec un outil genre qtparted.
> 
> 

 

Ca tombe bien je n'ai pas besoin de la redimentionner ni même de la déplacer car elle est déjà à la fin du disque !!!

Merci encore !!!  :Smile: 

----------

## anigel

 *Tuxifer wrote:*   

> J'ai tout à fait compris la démarche mais permets moi de m'assurer à deux fois que tu es sûr de toi  

 

Maintenant que tu le dis, j'ai comme un doute...  :Twisted Evil:  .

----------

## ghoti

 *Tuxifer wrote:*   

>  *ghoti wrote:*   
> 
> Transformer une partition étendue en partition primaire n'est pas possible à ma connaissance sans passer par un backup, comme le disait kernel_sensei.
> 
>  
> ...

 

Oui, en effet, je parlais de redimensionner à la fois la partition étendue et la partition logique incluse. Perso, je préfère avoir des partitions logiques car c'est beaucoup moins limité en nombre que les partitions primaires. Affaire de goût  :Wink: 

Sinon, la solution d'anigel devrait marcher : j'ai déjà utilisé des techniques semblables pour récupérer des partitions détruites par mégarde. Mais c'est plutôt chaud ! 

 *Quote:*   

> Ca tombe bien je n'ai pas besoin de la redimentionner ni même de la déplacer car elle est déjà à la fin du disque !!!

  Bon, mais dans ce cas, il va te rester de l'espace libre et non partitionné sur ton disque ! 

Dans l'exemple d'anigel, il s'agit de l'espace compris entre les secteurs 488 et 550 ...

----------

## anigel

Des nouvelles de cette opération ?

 *anigel wrote:*   

>  *Tuxifer wrote:*   J'ai tout à fait compris la démarche mais permets moi de m'assurer à deux fois que tu es sûr de toi   
> 
> Maintenant que tu le dis, j'ai comme un doute...  .

 

Je plaisantais, bien entendu. Tu penses bien que si j'ai pris 30 minutes pour rédiger ce post, c'est que j'étais sûr de moi ^^.

----------

## Tuxifer

 *anigel wrote:*   

> 
> 
> Des nouvelles de cette opération ?
> 
>  *anigel wrote:*   
> ...

 

Bah j'ai pas fait !!! J'avais pas saisi la blague !! Je fais ça ce soir !  :Very Happy: 

----------

## Syl20

Euh... Normalement, une fois la partition créée, il faut créer le FS (mkfs, ou mke2fs...).

Et ça, c'est destructeur.

Tu es sûr que la recréation de partition sans recréation du FS marche ?

----------

## anigel

Plutôt que de me lancer dans une longue explication, je vous conseille la lecture de cet article, au sujet du partitionnement des disques durs.

----------

## ghoti

 *CneGroumF wrote:*   

> Euh... Normalement, une fois la partition créée, il faut créer le FS (mkfs, ou mke2fs...).
> 
> Et ça, c'est destructeur.
> 
> Tu es sûr que la recréation de partition sans recréation du FS marche ?

 

Oui, ça marche tant que, justement, on n'utilise pas mkfs  :Cool: 

Comme l'a dit anigel plus haut, ni les données ni leur structure (donc le FS) ne sont touchées par fdisk. 

La seule chose qui change, c'est la redéfinition du type de partition dans la table des partitions mais dans un premier temps, ni sa position ni sa grandeur ne changent.

----------

## blasserre

d'où l'interêt d'un joli backup papier de ta table de partitions

----------

## dapsaille

Je vote pour solution deja validée lors d'un fdisk foireux

à 5 heures du mat sur un serveur.

 /dev/hdc =/ /dev/sdc      

hahahahahahah .. bon dodo pour moi :p

----------

## Tuxifer

 *anigel wrote:*   

> Je plaisantais, bien entendu. Tu penses bien que si j'ai pris 30 minutes pour rédiger ce post, c'est que j'étais sûr de moi ^^.

 

Ca n'a pas marché... J'ai testé sur un petit disque d'abord. J'ai suivi ta méthode point par point et mount n'a jamais été foutu de retrouver ma partition...

Mais la configuration du disque était un peu spéciale ! 

 :Arrow:  Les partitions n'étaient pas enregistrées dans un ordre naturel (/dev/hda3 est après /dev/hda2 alors que physiquement elle est avant) :

```

/dev/hda1     1        487    Linux

/dev/hda2   788       7297    W95 Ext'd (LBA)

/dev/hda3   488        787    Linux

/dev/hda4   788        850    Linux swap / Solaris

/dev/hda5   851       7297    Linux

```

 :Arrow:  La partition étendue était du type W95 Ext'd (LBA) qui corresponde au code f

Je ne sais pas si ces différences peuvent avoir un rapport mais ça n'a pas marché. Or je suis sûr de ne pas m'être trompé dans les commandes... 

Une idée ?  :Rolling Eyes: 

----------

## Tuxifer

 *anigel wrote:*   

> Plutôt que de me lancer dans une longue explication, je vous conseille la lecture de cet article, au sujet du partitionnement des disques durs.

 

Au passage, je ne trouve pas que cet article rentre suffisamment dans le détail pour pouvoir affirmer ou non que ta technique fonctionne  :Wink: 

Il se contente d'expliquer ce que sont des partitions et comment elles peuvent cohabiter sur un même disque.

Je me mets de ce pas en quête d'un article plus technique et je vous fait part du fruit de mes recherches  :Smile: 

----------

## Tuxifer

J'ai trouvé des informations sur les partitions étendues et partitions logiques à cette adresse.

Si j'ai bien compris, les partitions logiques créées au sein d'une partition étendue sont chaînées. C'est à dire que chaque partition logique est en fait une partition suivie d'une partition étendue. Cette partition étendue contiendra elle même la partition logique suivante et une partition étendue, etc...

Ce qui donnerait ceci : PP-PP-PE[PL-PE[PL-PE[....]]]

PP = Partition principale

PE = Paritition étendue

PL = Paritition logique

Ces informations sont enregistrées dans une table de partition étendue, présente dans le premier secteur de chaque partition étendue

L'outils sfdisk nous renseigne dans ce sens : 

```

# sfdisk -l -x /dev/hda

Disk /dev/hda: 16 heads, 63 sectors, 33483 cylinders

Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls   #blocks   Id  System

/dev/hda1          0+    101     102-    51376+  83  Linux

/dev/hda2        102    2133    2032   1024128   83  Linux

/dev/hda3       2134   33482   31349  15799896    5  Extended

/dev/hda4          0       -       0         0    0  Empty

/dev/hda5       2134+   6197    4064-  2048224+  83  Linux

    -           6198   10261    4064   2048256    5  Extended

    -           2134    2133       0         0    0  Empty

    -           2134    2133       0         0    0  Empty

/dev/hda6       6198+  10261    4064-  2048224+  83  Linux

    -          10262   16357    6096   3072384    5  Extended

    -           6198    6197       0         0    0  Empty

    -           6198    6197       0         0    0  Empty

...

/dev/hda10     30581+  33482    2902-  1462576+  83  Linux

    -          30581   30580       0         0    0  Empty

    -          30581   30580       0         0    0  Empty

    -          30581   30580       0         0    0  Empty

```

 :Idea:  Donc, d'après ce que j'en déduis, la partition qu'il faudrait créer pour transformer une partition étendue en partition principale commencerait au premier cylindre de la partition étendue + 1 secteur. D'ailleurs sfdisk semble matérialiser cela avec des + et des -.

Comprenez-vous la même chose ?

----------

## Tuxifer

Ca n'inspire personne ?  :Crying or Very sad: 

----------

## anigel

Si, moi.

Mais je ne suis pas d'accord avec ce que tu énonces : tu peux très bien créer une partition étendue, et placer une partition logique dedans, en plein milieu, sans que cela pose le moindre problème pour y accéder. Quand à tes partitions, le fait qu'elles ne soient pas numérotées dans l'ordre ne change rien à l'affaire. Elles ne sont d'ailleurs pas chaînées, mais se suivent, la plupart du temps. Supprimer la première n'empêche pas d'accéder aux suivantes. C'est simplement les numéros d'ordre qui se trouvent décalés (hda6 devient hda5, etc...).

La table de partition (ce sur quoi travaille fdisk), n'est qu'un carnet d'adresse, contenant les coordonnées des partitions. Et gommer sur la page 1 d'un carnet les coordonnées d'une personne enregistrée à 'M', pour les recopier en page 3 n'empêche pas de lire la page 'M'.

Tu as pu t'emmêler les pinceaux dans tes numéros de partitions, ou dans les offsets de la partition que tu as essayé de modifier, mais, pour avoir déjà effectué cette manip, je peux t'assurer qu'elle fonctionne.

(fdisk travaille sur la table de partition, autrement dit les 447 premiers octets de ton disque. Or, tes données sont stockées quelques gigaoctets plus loin. Aucun rapport entre les entrées d'index, et le stockage des données.)

Dans mon exemple, je supprimais hda6 (offsets 551 à 7297), pour le recréer sous hda4 (même offsets). Il suffisait de modifier /etc/fstab, pour remplacer les appels à hda6 par des appels à hda4. C'est nécessaire, et suffisant.

----------

## ghoti

Bon, je vais vous mettre d'accord !  :Wink: 

 *Tuxifer wrote:*   

> # sfdisk -l -x /dev/hda

 

sfdisk -l -x -uS  /dev/hda serait encore plus informatif  :Wink: 

 *Tuxifer wrote:*   

>  Donc, d'après ce que j'en déduis, la partition qu'il faudrait créer pour transformer une partition étendue en partition principale commencerait au premier cylindre de la partition étendue + 1 secteur. D'ailleurs sfdisk semble matérialiser cela avec des + et des -.
> 
> Comprenez-vous la même chose ?

 

A peu près, sauf que si on veut être rigoureux dans ton cas,, ce n'est pas la partition étendue que tu transformes, mais bien la partition logique. Ce sont donc les limites de celle-ci (en secteurs!) qu'il faut prendre en considération. 

Si on est d'accord que la table de partition d'une partition étendue occupe son secteur 0, la partition logique commence au moins au secteur 1 mais elle pourrait commencer au secteur 25 par exemple.

Cela veut dire aussi qu'après transformation, tu auras au moins un secteur inutilisé (mais non vide) : celui du descripteur de l'ancienne partition étendue.

Par ailleurs, la transformation proposée par anigel a pour but de déplacer les 16 octets d'entrée (ou info) de partition, depuis la table de la partition étendue vers le MBR. 

On pourrait sûrement y arriver en faisant directement des "pokes" sur le disque mais ce serait encore plus casse-gueule.

@anigel : il y a bel et bien un chaînage au sein des partitions étendues dans la mesure où la seconde entrée dans la table de partition d'une partition étendue pointe sur la "sous-partition" étendue suivante.

(Hypothèse : ce serait la raison pour laquelle on pourrait avoir des partitions "pas dans l'ordre", cas courant avec le fdisk de base  :Question:   )

Par contre, il est vrai que, strictement, les partitions logiques ne sont pas chaînées

----------

## anigel

En fait, si on regarde les choses au niveau basique des données écrites sur le disque, il n'y a pas de chaînage au sens strict du terme. Pour bien tout comprendre, il faut remonter aux origines des structures de disques telles que nous les connaissons aujourd'hui, et ne pas se laisser induire en erreur par la représentation "user-friendly" de sfdisk des structures de disque.

Les 447 premiers octets du disques décrivent l'agencement des partitions sur disque. Mais il n'y a pas de structure logique là-dedans. Il s'agit simplement d'une convention, qui dit : de tel offset à tel offset, c'est la première partoche. Ensuite, la seconde, etc.... Genre :

```
part1 : 1 - 45

part2 : 46 - 78

part3 : 79 - 150

[etc...]
```

Mais rien ne vous empêche de les placer dans le désordre lors de la création, en commençant par celles du milieu, etc... Simplement, sur le disque, le descripteur de partition 3 sera toujours en 3ème position dans la table. Ensuite, c'est au niveau des offsets des partitions que le programme utilisé pour l'interprétation (fdisk, cfdisk, sfdisk) pourra interpréter les données, et vous dire que votre schéma de partition n'est pas valide. Mais en fait, il n'est pas invalide, mais simplement non-conventionnel. exemple :

```
part1 : 46 - 78

part2 : 1 - 45

part3 : 79 - 150

[etc...]
```

Dans ce cas, j'ai interverti les part1 et 2. Mais cela n'empêche pas d'accéder aux données ! Par contre, sfdisk ne comprendra pas pourquoi part2 décrit une partition en début de disque, alors que part1 décrit des données situées, physiquement, plus loin sur le disque que celles de part1. Et il va râler.

C'est clair ? Pas trop ? J'avais prévenu lors de ma première réponse  :Laughing:  !

Maintenant, entrons dans le vif du sujet : le système de partitions étendues. Comme vous l'aurez compris, la table de partitions primaire est décrite dans un espace fixe (447 octets). Elle ne peut donc décrire qu'un nombre fini de partitions, en l'occurrence, 4 et pas plus. Pour pallier à ce souci, on a inventé les partitions étendues. Il ne s'agit pas de partitions au sens strict du terme, mais simplement d'un espace défini, qui peut contenir en d'autres.

```
part1 : linux : 1-60

part2 : swap : 61-65

part3 :

part4 : étendue : 66-150
```

Dans cet exemple, on a 1 partition système (part1), une partoche de swap (part2), et une partition étendue (part4). Vous noterez que j'ai volontairement zappé part3. La table de partition primaire ne décrit donc que 3 partitions, et pas 4. Mais elle n'en occupe pas moins 447 octets ! Il faut donc utiliser l'espace occupé par part4, pour, à la fois, stocker une table de partition secondaire, et les données associées (les partitions secondaires).

Pour stocker le schéma de partitions secondaires, on utilise donc 1 bloc disque complet. ce qui signifie qu'une partition secondaire qui occupé 50 blocs n'en aura en fait que 49 réellement utilisables pour les données. Le premier bloc sera toujours utilisé pour décrire le schéma des partitions logiques.

Dans mon exemple, part4 réserve donc le bloc 66 pour stocker la structure de partitions logiques, et les blocs 67 à 150 pour stocker lesdites partitions.

Ce qui nous donne :

```
bloc 66 : table de partitions secondaire

          part5 : linux : 67 - 90

          part6 : linux : 95 : 150
```

Vous noterez que j'ai volontairement laissé quelques blocs libres, en plein milieu de la partitions étendue (91 à 94). Cela ne pose aucun problème. Vous pouvez très bien supprimer part5, sans pour autant perdre part6. Il n'y a pas de chaînage entre les 2, simplement, comme les partitions étendues ne fonctionnent pas comme la table de partitions primaire, les numéros changeront (part6 deviendrait part5). Et ceci, pour une raison toute simple : le nombre de partitions dans une table secondaire n'est pas limité par l'espace disque (comme pour la table primaire), et il n'y a pas d'espace dédié, comme dans le cas des 4 premières (447 octets pour décrire 4 partitions, pas un octet de plus). Et donc... elles ne sont pas numérotées "fixement". La première rencontrée dans la table secondaire est nommé part5, la seconde, part6, etc... Je me rends compte que ce n'est pas très clair, mais j'ai du mal à expliciter les choses mieux  :Sad: .

Il suffit de lire la table de partitions (avec fdisk, seul programme à ne pas "interpréter" les données du disque), pour savoir à quel bloc commence et finit telle partition, pour pouvoir la transformer en partition primaire, en supprimant la partition étendue qui la contient. Notez que la suppression d'une partition étendue supprime également les partitions logiques qui y sont contenues, puisqu'on supprime par là même la table de partitions secondaire. Enfin, pour être exact, on supprime le moyen d'y accéder, et non réellement les données qui y sont contenues. C'est d'ailleurs grâce à cela que les outils de recovery pros peuvent récupérer vos données sur des disques à priori vierges : en lisant les blocs.

Bref, si je peux me permettre un conseil : ne vous basez pas sur des outils de haut niveau pour comprendre la structure des choses, sinon vous risquez de vous faire enduire d'erreur par le système de représentation choisi par le programmeur de l'outil.

PS : @Ghoti : le MBR et la table de partition primaire, ce n'est pas du tout la même chose. Si tu "déplace les 16 octets d'entrée (ou info) de partition, depuis la table de la partition étendue vers le MBR", alors ton système ne bootera jamais, et tu n'auras pas de table de partition valide. Le MBR sert juste à stocker le code qui permet de booter ton système. C'est, par convention, le premier code lancé par le BIOS.

----------

## ghoti

Pas mal de choses à mettre au point dans ton explication...

Commençons par la fin :

 *anigel wrote:*   

> PS : @Ghoti : le MBR et la table de partition primaire, ce n'est pas du tout la même chose. Si tu "déplace les 16 octets d'entrée (ou info) de partition, depuis la table de la partition étendue vers le MBR", alors ton système ne bootera jamais, et tu n'auras pas de table de partition valide. Le MBR sert juste à stocker le code qui permet de booter ton système. C'est, par convention, le premier code lancé par le BIOS.

 

 *anigel wrote:*   

> Les 447 premiers octets du disques décrivent l'agencement des partitions sur disque.

 

Tu identifies MBR et code d'amorçage alors que ce n'est pas non plus tout-à-fait la même chose ! 

En effet, le MBR (Master Boot Record - Secteur de Partition Principal) est une "enveloppe" : il contient le code d'amorçage principal (446 octets et non 447  :Wink:  ) suivi de 4 entrées de 16 octets pouvant contenir la description de 4 partitions dites "primaires" (une seule d'entre elles peut être "étendue" - on y reviendra), suivi de 2 octets de "signature" de secteur de partition. (total : 512 octets, soit 1 secteur)

Je maintiens donc ma phrase :  *ghoti wrote:*   

>  la transformation proposée par anigel a pour but de déplacer les 16 octets d'entrée (ou info) de partition, depuis la table de la partition étendue vers le MBR

 

Cela me paraissait couler de source mais j'aurais dû être plus précis en disant "...depuis la table de la partition vers une des quatre entrées de partition du MBR."  :Wink: 

La confusion est sans doute entretenue par l'inconsistance du paramètre /MBR de la commande FDISK pondue par M$ ! En effet, ce paramètre (non documenté au surplus !) n'écrase pas tout le MBR mais uniquement la partie "code d'amorce" ...

 *anigel wrote:*   

> Maintenant, entrons dans le vif du sujet : le système de partitions étendues. Comme vous l'aurez compris, la table de partitions primaire est décrite dans un espace fixe (447 octets).

 

Non : 64 octets (4 x 16) ...

 *anigel wrote:*   

>  Pour pallier à ce souci, on a inventé les partitions étendues. Il ne s'agit pas de partitions au sens strict du terme, mais simplement d'un espace défini, qui peut contenir en d'autres.

 

Non : strictement, une partition étendue est bel et bien une partition primaire puisqu'elle fait l'objet d'une entrée dans le MBR! C'est l'usage qu'on en fait qui n'est pas "habituel pour une partition". (Au passage, ne confondons pas "création de partition" et "création de système de fichiers" ...)

Et cela traduit effectivement l'évolution historique de l'architecture : lorsqu'on a été bloqué par la limite des 4 partitions primaires, on a décidé que l'une d'entre elles pourrait avoir des propriétés tout-à-fait particulières. Mais soit, ne jouons pas sur les mots!  :Wink: 

 *anigel wrote:*   

> Pour stocker le schéma de partitions secondaires, on utilise donc 1 bloc disque complet. ce qui signifie qu'une partition secondaire qui occupé 50 blocs n'en aura en fait que 49 réellement utilisables pour les données. Le premier bloc sera toujours utilisé pour décrire le schéma des partitions logiques.

 

On ne peut pas parler de blocs mais de secteurs. Chez moi, un bloc vaut 2 secteurs, soit 1024 octets !

Pour être précis, la structure du secteur en question est identique à celle du MBR. Il contient également un maximum de 4 entrées possibles pour décrire des partitions. Parmis ces 4 entrées, seules deux sont réellement utilisées :

- entrée 1 : description de LA partition logique

- entrée 2 : description de la partition étendue suivante

- entrées 3 et 4 : vides

Remarquons que ce secteur peut parfaitement contenir un grub ou un lilo dans ses 446 premiers octets. C'est parfois utile  pour "chaîner" des bootloaders

On voit donc bien que si l'entrée 1 ci-dessus est recopiée dans une des entrées de partition du MBR (  :Wink:  ), la partition logique deviendra une partition primaire. En réalité, le principe est aussi élémentaire que cela et pourrait probablement être mis en pratique à coup de dd ! Il y a aussi l'éditeur de disque LDE (sys-fs/lde dans portage).

La "partition étendue suivante" évoquée ci-dessus commence à son tour par un secteur de partition de 512 octets, qui contient deux entrées non vides et caetera ...

C'est cette cascade que j'appelle "chaînage" :  pour trouver une partition logique quelconque, il faut d'abord connaître la partition étendue qui la contient, laquelle est à son tour décrite par la partition étendue "parent", et ainsi de suite jusqu'à la partition étendue "primaire".

Ce schéma est extrêmement bien illustré sur le site de J-C Bellamy (avec des couleurs et tout et tout !  :Wink:  )

Notons au passage que cette structure n'impose aucunement que les partitions (étendues ou logiques) soient contiguës ni qu'elles doivent commencer ou se terminer sur la limite de la partition "parente étendue". En cela, je confirme tes propos  :Smile: 

 *anigel wrote:*   

> le nombre de partitions dans une table secondaire n'est pas limité par l'espace disque (comme pour la table primaire)

 

Eh bien si, justement ! Chaque partition étendue ne peut contenir que 4 entrées de partitions dont 2 seulement sont utilisées en pratique (voir plus haut)

C'est le chaînage (ou effet de cascade) qui donne l'impression que la partition étendue principale gère toutes les partitions logiques! A la rigueur, on pourrait parler d'appartenance indirecte : si A contient B et que B contient C alors A contient C  :Wink: 

De plus, si le chaînage peut théoriquement se poursuivre à l'infini, il y a bel et bien des limites pratiques pour les partitions logiques : autour de 64 en IDE et seulement 16 en SCSI! (chiffres exacts à confirmer!) 

En particulier, méfiez-vous avec les disques SATA : le driver BLK_DEV_IDE_SATA vous permet de créer 64 partitions logiques mais le driver SCSI_SATA_* ne vous permettra de gérer que les 16 premières ....

 *anigel wrote:*   

> Il suffit de lire la table de partitions (avec fdisk, seul programme à ne pas "interpréter" les données du disque), pour savoir à quel bloc commence et finit telle partition, pour pouvoir la transformer en partition primaire, en supprimant la partition étendue qui la contient.

 

Si occulter des informations fondamentales de structure n'est pas de l'interprétation de données, alors je mange mon chapeau !  :Laughing: 

Se méfier aussi de la notation en "blocs" : c'est plutôt trompeur et pourrait aboutir à des décalages intempestifs si on n'y prend garde.

Au contraire, c'est sfdisk qui me semble coller le plus à la réalité!

- fdisk se contente de présenter la partition étendue principale mais ignore complètement les partitions étendues secondaires (à ne pas confondre avec partitions logiques ! )

- cfdisk va encore plus loin en n'affichant carrément aucune partition étendue, ce qui, bien qu'incomplet, est plus cohérent que fdisk !

 *anigel wrote:*   

> Bref, si je peux me permettre un conseil : ne vous basez pas sur des outils de haut niveau pour comprendre la structure des choses, sinon vous risquez de vous faire enduire d'erreur par le système de représentation choisi par le programmeur de l'outil.

 

Se méfier aussi des représentations simplistes qui ne correspondent pas à la réalité ...  :Wink: 

----------

## Pachacamac

Heu les gars vous faites quoi de vos journées ? Détendez vous et prenez une mousse.

J'ai appris plein de truc mais je ne sais pas si je vais tout mémoriser  :Smile: 

----------

## anigel

Merci pour ces corrections Ghoti.

Pour les 447 octets, je ne sais pas où je suis allé les pêcher (puisque comme chacun sait, 447 est multiple de 4...  :Laughing: ). Pour le reste, ma foi, rien à ajouter !

PS : En revanche... Bon courage à ceux qui vont devoir se taper ce thread pour essayer de transformer leur partition logique en primaire  :Laughing:  !

PPS : pour fdisk, je dois avouer que j'ai fait une énorme boulette : celle de penser que le mode "normal", était aussi précis que le mode "x"... Et aussi, ne pas relire précisémment ce que j'ai écrit  :Confused: .

```
fdisk /dev/hda

Le nombre de cylindres pour ce disque est initialisé à 7297.

Il n'y a rien d''incorrect avec cela, mais c'est plus grand que 1024,

et cela pourrait causer des problèmes en fonction pour certaines configurations:

1) logiciels qui sont exécutés à l'amorçage (i.e., vieilles versions de LILO)

2) logiciels d'amorçage et de partitionnement pour d'autres SE

   (i.e., DOS FDISK, OS/2 FDISK)

Commande (m pour l'aide): x

Commande pour experts (m pour de l'aide): p

Disq /dev/hda: 255 têtes, 63 secteurs, 7297 cylindres

Nr AF  Hd Sec  Cyl  Hd Sec  Cyl     Début      Tail.ID

 1 00   0   0    0   0   0    0          0          0 00

 2 00   0   0    0   0   0    0          0          0 00

 3 80   1   1    0 254  63  486         63    7823592 83

 4 00   0   1  487 254  63 1023    7823655  109402650 05

 5 00   1   1  487 254  63  549         63    1012032 82

 6 00   1   1  550 254  63 1023         63  108390492 83

Commande pour experts (m pour de l'aide): q
```

Pas d'occultation des infos de structure ^^.

----------

## Pachacamac

Oui c'est du costaud ! Pour ma part j'ai pas tout lu  :Embarassed: 

----------

## Tuxifer

Eh bien puisque c'est moi qui suis à l'origine de ce troll^H^H^H^H^Hthread  :Smile:  je vais vous dire comment j'ai fait finalement...

J'ai sauvegardé mes données tant bien que mal et j'ai recréé mes partitions  :Razz: 

Cela dit, j'ai appris plein de choses et je testerai tout ça sur un disque ne contenant aucune donnée importante !!

Merci à tous ceux qui ont pris part à ce thread !

----------

