[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]

Re: Problèmes table de partition



  En espérant ne pas répondre trop tard  :o)

Point wrote:
> 
> On dirait bien que mon hypothèse est mauvaise; je ne peux pas créer 2
> partitions Étendues!!  Si dans ma théorie je remplace ma partition hda4
> (Étendue) qui contenait Hda6 par Une partition Fat32 qui serait en fait
> hda6 est-ce que Windows fonctionnera tout de même?  Une autre chose qui me
> chicote, c'est qu'en testant, lorsque je fais "v" dans fdisk pour vérifier,
> il me dit qu'il y a des secteurs non aloués!  Pourtant je suis certain
> qu'ils sont tous inclu dans une partition!!  Et à quoi servent les boot
> flag?

  Boot flag: sur le PC, Le bios (ou le boot loader?) s'en sert pour savoir
quelle partition primaire il doit utiliser pour booter.

  Dans la table des partitions, il n'y a de la place que pour 4 partitions
(d'où hda1 à hda4, hda desigant le disque physique).  De memoire, le fdisk
du DOS ne permet de creer qu'une seule partition primaire (alors qu'il y a
de la place pour 4) et il est TRÈS limité, tandis que celui de Linux est pas
mal plus puissant.

  Pour avoir plus de partitions, on utilise une des 4 entrées et on y place
une partition etendue au lieu d'une partition primaire (c'est généralement
hda4).  Cette partition etendue peut etre fragmentee en un tres grand nombre
de partitions (je crois que Linux peut en supporter jusqu'à 63 avec une
petite patch, et seulement 15 pour Windoze).  J'ai vu ceci d'un courriel
précédent:

>hda3 Extended Cylindres 1 à 248
>        hda5 Cylindres 1 à 184 (Ext2)  (/)
>        hda7 Cylindres 185 à 248 (Ext2) (/home)
>
>hda2 Cylindres 249 à 260 (Linux Swap)
>
>hda1 Cylindres 261 à 757 (Fat32) (/mnt/win_c)
>
>hda6 Cylindres 758 à 1665 (Fat32) (/mnt/win_d)
>
>Je n'ai aucun problème avec toutes mes premières partitions, excepté la 
>dernière!  Le fait qu'elle se nommait hda6 implique qu'elle est une 
>partition logique.  Mais cela parait impossible à spécifier avec fdisk, 
>puisqu'il faudrait que ma partition étendue soit coupée par ma partition 
>primaire  hda1.  La seule solution logique à mon problème que j'ai envisagé 
>serait de créer une autre partition étendue à la fin de mon disque dans 
>laquelle je pourais spécifier la partition logique hda6.  Mais on ne peu 
>pas créer 2 partition étendues à l'aide de fdisk!


Réécrit comme avec fdisk, ca donnerais:

 Device      boot        Start    End    Blocs   Id      System
 /dev/hda2               249     260           + 82      Linux swap
 /dev/hda1      *        261     757           + b       Win95 Fat32
 /dev/hda6               758     1665          + b       Win95 Fat32

 /dev/hda3               1       248             f       Win95 Ext'd
 /dev/hda5               1       184             83      Linux
 /dev/hda7               185     248           + 83      Linux


  Ici, on a un problème évident.  Je mettrait hda3 dans hda4, et _ensuite_
hda6 dans hda3.  Ensuite je m'assurerais que hda7 se retrouve bien à hda6. 
Ça donnerais:


 Device      boot        Start    End    Blocs   Id      System
 /dev/hda1      *        261     757           + b       Win95 Fat32
 /dev/hda2               249     260           + 82      Linux swap
 /dev/hda3               758     1665          + b       Win95 Fat32

 /dev/hda4               1       248             f       Win95 Ext'd
 /dev/hda5               1       184             83      Linux
 /dev/hda6               185     248           + 83      Linux

  Et tout le monde serait content, resterais juste à réexécuter lilo pour
être certain que tout est ok.  2 partitions primaires Fat32, une primaire 82
(swap Linux) et 2 partitions ext2 dans une partition etendue Windows.  La
partition étendue Windows est juste une partition bidon dans laquelle on
peut placer pleins de sous partitions.  C'est un truc qui a ete développé
pour dépasser la limite physique de 4 partitions (et c'est un probleme
specifique aux PC).

  D'après-moi, tu as crée une partition étendue avec hda3 sans utiliser tout
l'espace disponible (en pensant créer une partition, alors que tu ne faisais
que réserver l'espace de toutes les partitions étendues).  Quand tu as voulu
mettre l'espace restant dans une partition primaire, elle s'est trouvée
inscrite à l'intérieur de la partition étendue au lieu d'être écrite dans
hda4.  Mais comme l'espace demandé n'appartient pas à la partition étendue,
tu n'arrives pas à y accéder.  D'apprès-moi, le résultat est que Linux et
windows fonctionnent, mais que personne ne peut accéder la 2e partition
fat32 (hda6).   Le problème ne se serait jamais présenté si la partition
étendue se serait retrouvée dans la 4e position (hda4).  Je crois aussi,
sans en être certain, que la partition étendue est nécessairement la
dernière entrée dans la table des partitions, et que les suivantes sont
ignorées, d'où l'utilité de la placer systématiquement à la position hda4. 
Dernier détail: la partition étendue doit être continue, et on n'est pas
supposé utiliser des morceaux au milieu pour les partitions primaires.

  Maintenant, comment régler le problème: personnellement, j'éditerais
directement la table des partitions pour hda3 et hda4 en placant directement
les valeures des cylindres, et je m'occuperais plus tard de hda[5-7].  Si ta
partition étendue avait été placée après hda1 et hda2 (au lieu de commencer
au cylindre 1) tu n'aurais eu qu'à changer la valeur du dernier ylindre pour
1665 et tout aurait été correct.  Aussi, assure-toi que le boot flag est sur
hda1 (ça boot pas fort une swap, et je ne pense pas qu'il soit normal de
voir ce flag sur une partition étendue).



D'un autre courriel plus récent, tu dis maintenant:

>Device      boot        Start    End    Blocs   Id      System
>/dev/hda1      *        1       1665            f        Win95 Ext'd
>/dev/hda5               1       184             83      Linux
>/dev/hda6               185     248           + 83      Linux
>/dev/hda7               249     260           + 82      Linux swap
>/dev/hda3               261     757           + b       Win95 Fat32
>/dev/hda8               758     1665          + b       Win95 Fat32

Issssh, C'est rendu très laid.  hda3 ne doit pas utiliser une plage réservée
à la partition étendue, et Windows ne peut booter qu'à partir d'une
partition primaire (contrairement à Linux) et je ne crois pas qu'une
partition étendue puisse avoir le boot flag.  Mets hda1 dans la 4e position
(hda4), change son cylindre END pour 260, Cylindres 261 à 757 pour hda1 +
boot flag, cylindres 758 à 1665 pour hda3, on se débarrasse de hda8 et on
espère que Windows va pouvoir lire deux partitions primaires (ça devrais). 
On obtient:

>Device      boot        Start    End    Blocs   Id      System
>/dev/hda1      *        261     757           + b       Win95 Fat32
>/dev/hda3               758     1665          + b       Win95 Fat32

>/dev/hda4               1       260             f       Win95 Ext'd
>/dev/hda5               1       184             83      Linux
>/dev/hda6               185     248           + 83      Linux
>/dev/hda7               249     260           + 82      Linux swap

Probablement que tu va devoir réexécuter lilo, mais c'est un moindre mal. 
Aussi, il est possible que tu doives mettre le boot flag sur hda3 selon
l'endroit ou windows est installé (si c'est le cas, alors tu aurrais pu
laisser hda8 là où il étais et mettre le dernier cilyndre de hda4 à 757 au
lieu de 260).

Alternativement (et beaucoup plus simple): tu fais un backup de tout ce qui
est important, tu detruis toutes les partition et tu recommences de facon
clean.

Simon Valiquette