Le disque est composé de plusieurs plateaux magnétiques, divisés en pistes et secteurs :
Chaque secteur contient 512 octets et chaque piste contient 63 secteurs ( un standard )
Le disque dur, Merci Jérome !
Un vieux bouzin….. pour illustrer la suite, mais on voit mieux !
Cette image, me rappelle, les atterissages de têtes pas toujours intempestifs au boulot.. qui labourraient sauvagement le disque. On changeait le plateau et on suspendait le plateau détruit dans le bureau du responsable de ce méfait : un concours de labour en somme ! On a plus ce problème aujourd'hui.
Un autre lien :
Le DOS (Disk Operating System) premier système d'exploitation des PC, capable de gérer des disques durs nous a aussi imposé le BIOS et la table des partitons des disque durs Disques de petites capacité à l'époque..
Il était possible de créer quatre partitions dites “primaires” sur un disque dur.
Un nombre qui est vite devenu insuffisant. On a inventé la partition étendue ( une partition primaire , mais qui est comme un conteneur pour les autres partitions : les partitions logiques Il peut y en avoir autant qu'on veut, en théorie… (mais chaque système a ses limites )
Au démarrage le BIOS reconnaît le partitionnement du disque grâce à la table des partitions primaires. Pour que le BIOS ( c'est persque du hard ) trouve facilement la table des partitions on l'a collée sur le secteur 0, du cylindre 0 de la première tête de lecture.
Un secteur dont la taille a été fixée à 512 octets. ( heureusement il y avait de la place en réserve pour stocker des choses.) Mais parce qu'il n'y avait plus la place de donner les caractéristiques de chacune des partitions, dans ces 512 octet, la table des partitions logiques qui a la même structure que celle des primaires se trouve sur les premiers secteurs de la partition étendue…
Lorsqu'on lit la table des partitions avec fdisk, c'est comme si on avait une seule table des partitions, alors qu'il y a la table des partitions primaires et la table des partitons logiques , dont l'emplacement dépend de la position de l'étendue sur le disque.
En rouge : les commandes à tapper. La cde fdisk est “encapsulée”… lol ! bin oui tappez “m” pour avoir l'aide et choisir ce que vous voulez faire avec cette commande ( gaffe quand même ! ). Bon “p” ça va ! on lit et “q” on quitte.
Voilà la table des partitions complète en CYLINDRES avec la cde fdisk, juste pour faire remarquer qu'elle apparaît de façon continue aLors que ce n'est pas la réalité sur le disque :
jackie@ip-10:~> su root ip-10:/home/jackie # fdisk /dev/hda Le nombre de cylindres pour ce disque est initialisé à 9964. 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): m Commande action a bascule le fanion d'amorce b éditer l'étiquette BSD du disque c basculer le fanion de compatibilité DOS d détruire la partition l lister les types de partitions connues m afficher ce menu n ajouter une nouvelle partition o créer une nouvelle table vide de partitions DOS p afficher la table de partitions q quitter sans faire de sauvegarde s créer une nouvelle étiquette vide pour disque de type Sun t modifier l'identificateur de la partition système u modifier l'affichage et la saisie des unités v vérifier la table de partitions w écrire la table sur le disque et quitter x fonctionnalité additionnelle (pour experts seulement) Commande (m pour l'aide): p Disque /dev/hda: 81.9 Go, 81964302336 octets 255 têtes, 63 secteurs/piste, 9964 cylindres Unités = cylindres de 16065 * 512 = 8225280 octets Périphérique Amorce Début Fin Blocs Id Système /dev/hda1 * 1 637 5116671 7 HPFS/NTFS /dev/hda2 638 1929 10377990 83 Linux /dev/hda3 1930 3221 10377990 83 Linux /dev/hda4 3222 9964 54163147+ f W95 Etendu (LBA) /dev/hda5 3222 3342 971901 82 Linux swap / Solaris /dev/hda6 3343 5235 15205491 83 Linux /dev/hda7 5236 7136 15269751 83 Linux /dev/hda8 7137 7288 1220908+ 83 Linux /dev/hda9 7289 7432 1156648+ 83 Linux /dev/hda10 7433 7570 1108453+ 83 Linux /dev/hda11 7571 8184 4931923+ 83 Linux /dev/hda12 8185 9354 9397993+ 83 Linux /dev/hda13 9355 9964 4899793+ b W95 FAT32 Commande (m pour l'aide):
Mention spéciale :
/dev/hda4 3222 9964 54163147+ f W95 Etendu (LBA)
La partition étendue : le conteneur des partitions logiques.
Chez moi, c'est la hda4, mais chez vous ça peut être la hda2 ou hda3 selon comme vous avez partitionné votre disque.
Elle commence au cylindre : 3222 et finit au dernier cylindre du disque : 9964 la première logique hda5 commence au premier cylindre de l'étendue : 3222, et la dernière logique se termine au dernier cylindre de l'étendue :9964
Il y a Win95 enface de l'étendue parce que je l'ai créée avec ” Paragon Partiton Manager” qui écrit celà dans les premiers secteurs de la partition, étendue… On peut savoir avec quoi a été créée la partition, avec plus de détails encore.. mais faut pas s'affoller pour ce détail : W95 je ne connais pas .. jamais installé
Par contre : notez LBA , on verra ça plus loin.
Pour la première partition primaire ( entrée 1 de la table ) la description de la partition est décrite ainsi sur les octets d'adresse absolue : O1BE à O1CE
| Adr. | Définition | Nb oct |
|---|---|---|
| 01BE | Etat de la partition : - 00 : non active - 80 : active | 1 |
| 01BF | N° de tête où commence la partition | 1 |
| 01C0 | N° de secteur et de cylindre où commence la partition | 2 |
| 01C2 | Type de partition : | 1 |
| 01C3 | N° de tête où finit la partition | 1 |
| 01C4 | N° de secteur et de cylindre où finit la partition | 2 |
| 01C6 | Distance en secteurs entre secteur de partition et secteur de boot de la partition | 4 |
| 01CA | Taille de la partition en nombre de secteurs de 512 octets | 4 |
Les deux denières lignes ont été rajoutées plus tard dans le BIOS ( voir LBA)
Pour les trois autres partitions primaires on a la même structure :
Les deux derniers octets du secteur 0 du disque, d'adresse 01FE et 01FF comportent la signature le la table : 55 AA.
N'importe quelle partition primaire peut être une étendue. La table des partitions logiques a la même structure.
Alors on indiquait dans la table des partitons ( juste après le MBR) l'adresse de début et de fin de chaque partition primaire avec trois valeurs correspondant à la constitution physique du disque, pour faire le moins de calculs possibles dans le BIOS, et parce qu'on adresse le disque de cette façon..
Chaque secteur du disque pour être lu ou écrit est adressé de cette façon par le pilote du disque dans le BIOS.
C'est de l'adressage géométrique dans l'espace ( trois dimensions )
Mais je ne sais pas quelle idée tordue ils ont eu pour coder ces trois valeurs dans la table des partitions.
Ils ont codé le numéro de tête sur un octet , c'est cool ( à mon avis c'est unoctet qu'ils ont rajouté par obligation lorsque les disques à plusieurs plateaux sont apparus et ils ont codé le numéro de cylindre et de secteur sur quatre octets de cette façon.
CCSS SSSS CCCC CCCC
C représente le cylindre et S le secteur : il faut passer par une conversion hexa/binaire pour retrouver les numéros de cylindre et de secteur dans ces quetre octets..
En plus pour les adresses en secteurs, ils ont inversé les octets : poids fiables à gauche.. poids forts à droite
Il n'est donc pas facile de décoder les adresses de début et de fin des partitions en lisant directement les octets de la table des partitions.
Voici les 512 octets du secteur 0 d'un disque quelconque : Dans ce secteur il y a en tête un petit bout de programme : le MBR…et quelques données intéressantes. Après de 01 BE à 01FD la table des partitions primaires. Il se termine par la signature de fin du MBR : 55 AA
0x000: FA EB 21 01 B4 01 4C 49 4C 4F 16 05 4B 7E BD 41 0x010: 00 00 00 00 57 B9 E5 01 B3 5F B3 5F 81 00 80 60 0x020: DA 0B FF 01 B8 C0 07 8E D0 BC 00 08 FB 52 53 06 0x030: 56 FC 8E D8 31 ED 60 B8 00 12 B3 36 CD 10 61 B0 0x040: 0D E8 66 01 B0 0A E8 61 01 B0 4C E8 5C 01 60 1E 0x050: 07 80 FA FE 75 02 88 F2 BB 00 02 8A 76 1E 89 D0 0x060: 80 E4 80 30 E0 78 0A 3C 10 73 06 F6 46 1C 40 75 0x070: 2C 88 F2 66 8B 7E 18 66 09 FF 74 21 52 B4 08 B2 0x080: 80 CD 13 72 55 92 98 91 BA 7F 00 42 66 31 C0 40 0x090: E8 71 00 66 3B BF B8 01 74 03 E2 EF 5A 53 8A 76 0x0A0: 1F BE 20 00 E8 4B 00 B4 99 66 81 7F FC 4C 49 4C 0x0B0: 4F 75 27 5E 68 80 08 07 31 DB E8 35 00 75 FB BE 0x0C0: 06 00 89 F7 B9 0A 00 F3 A6 75 0D B0 02 AE 75 08 0x0D0: 06 55 B0 49 E8 D3 00 CB B4 9A B0 20 E8 CB 00 E8 0x0E0: B8 00 FE 4E 00 74 08 BC E8 07 61 60 E9 60 FF F4 0x0F0: EB FD 66 AD 66 09 C0 74 0A 66 03 46 10 E8 04 00 0x100: 80 C7 02 C3 60 55 55 66 50 06 53 6A 01 6A 10 89 0x110: E6 53 F6 C6 60 74 58 F6 C6 20 74 14 BB AA 55 B4 0x120: 41 CD 13 72 0B 81 FB 55 AA 75 05 F6 C1 01 75 4A 0x130: 52 06 B4 08 CD 13 07 72 59 51 C0 E9 06 86 E9 89 0x140: CF 59 C1 EA 08 92 40 83 E1 3F F7 E1 93 8B 44 08 0x150: 8B 54 0A 39 DA 73 39 F7 F3 39 F8 77 33 C0 E4 06 0x160: 86 E0 92 F6 F1 08 E2 89 D1 41 5A 88 C6 EB 06 66 0x170: 50 59 58 88 E6 B8 01 02 EB 02 B4 42 5B BD 05 00 0x180: 60 CD 13 73 10 4D 74 0A 31 C0 CD 13 61 4D EB F0 0x190: B4 40 E9 45 FF 8D 64 10 61 C3 C1 C0 04 E8 03 00 0x1A0: C1 C0 04 24 0F 27 04 F0 14 40 60 BB 07 00 B4 0E 0x1B0: CD 10 61 C3 00 00 4A 7C B3 5F B3 5F 00 00 00 01 0x1C0: 01 00 07 0F FF FF 3F 00 00 00 B1 8D 38 01 80 0F 0x1D0: FF FF 83 0F FF FF 3B 8B 38 01 FC 08 FA 00 00 0F 0x1E0: FF FF 0F 0F FF FF 37 94 32 02 29 04 96 00 00 00 0x1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
Dans la partie supérieure : le MBR proprement dit :
Vous avez vu tout de suite, comme moi, que c'était un MBR Lilo. Lol !!!!! " Cuida te !" les MBR Lilo Grub et Windows sont différents...
Sur cet exemple on voit tout de suite qu'il n'y a que trois primaires : la dernière ne contient que des zéros) )
Et 55 AA, le code de fin de table. Pas vrai que c'est chiant à décoder ? Pourtant c'est ce qui permet de gérer le disque dur ( et ça ne sufiit pas ).
Pour plus de détails et si le coeur vous en dit , un site très bien fait : http://fdidier.club.fr/btsig/mbr/m_mbr.htm
Personnellement, pour en avoir fait l'expérience, je préfère utiliser les cdes Linux sur le disque, avec une Knoppix, si le disque est crashé, pour décoder sa table sans erreur, et l'analyser.. voire la réparer, et surtout on a la table complète ( primaires, plus logiques ).
Mais il est bon de savoir comment c'est organisé, où ça se trouve et sur quoi agissent les codes.
Le plus important est l'analyse des valeurs indiquées par les cdes de lecture de la table, pas de décoder les octets ( temps perdu et beaucoup de risques d'erreurs )
Il est évident que si l'adresse de début de l'étendue est fausse dans la table des partitions primaires toutes les indications sur les partitons logiques seront fausses.
Mais avant de paniquer, et de se dire que le disque est complètement foutu, il faut reconstituer l'étendue.. et relire la table complète.
Mais là n'est pas le problème qui nous préoccupe :
Mais personne ne sait fabriquer un disque avec 255 plateaux : lorsqu'il en avait un seul plateau double face et deux têtes magnétiques c'était déjà un disque d'enfer, qui coûtait la peau des fesses.
Alors un disque à une tête pouvait avoir une capacité maximum, en octets, de : C * H * S * (nbre d'octets par secteur : 512 )
1024 * 1 * 63 *512 = 33 030 144 octets…. c'est à dire 33 Mo.
Je sais ça vous fait marrer, mais sur mon Mac SE, j'avais un DD de 20 Mo et c'était l'eldorado, à comparais des disquettes..
Avec un disque de 16 plateaux , les limites ont été repoussées à :
1024 x 16 x 63x 512 = 528 482 304 octets = 504 Mo plus exactement. 1 Ko = 1024 octets
Mais le gros problème, malgré les besoins de plus grosses capacités de stockage rendues possibles avec l'évolution de la technologie des disques dur, est qu'on a conservé cette architecture pour ne pas tout refaire afin que tout ce qui tournait avant sur un PC, puisse encore fonctionner.. ( P… de monopoles )
Les disques ont augmenté leur nombre de plateaux superposés, mais il y a des limites mécaniques.. On ne sait pas faire des disques au delà de seize plateaux…sans augmenter leur épaisseur.
C'est le mode d'adressage Normal. qui doit encore exister dans le BIOS.
Les 16 têtes sont devenues un standard “soft” pour les contrôleurs de disque et le BIOS, mais celà ne signifie aucunement que votre DD a réellement 16 têtes…… il peut très bien n'en avoir que huit. C'est le contrôleur qui assure la correspondance. Aussi le constructeur ( maxtor) donne les caractéristiques de son disque en CHS “logique”.
Un très bon site sur les partitions et le multiboot , c'est grâce ce Monsieur que j'ai appris : JC.Bellamy, une référence ! Merci Mr Bellamy ! Dommage que vous ne soyez pas sous Linux…
Il a été mis à jour au niveau des types de partitions pour intégrer le LBA avec windows XP. Pour Linux, c'est fait depuis longtemps.
Pour windows, l'astuce (je dirais plutôt la magouille pour ratrapper la connerie de choix d'adressage en CHS) a été de créer un nouveau type de partition pour chacune des anciennes, selon que le BIOS est en CHS ou en LBA.
Avec la miniaturisation, la meilleure précision , par contre on a pu augmenter le nombre de cylindres..
Puis qu'il y avait de la place libre sur l'octet de codage du numéro de tête, et seulement la place pour 1024 cylindres , on a commencé à faire un traffic d'adressage : l'Overlaps.
Ainsi un disque de 16 plateaux comportant 2048 cylindres , s'est vu modifier sa géométrie ainsi :
On l'a transformé logiquement pour son adressage en un disque de 32 plateaux et de 1024 cylindres. Il a suffi de modifier le Bios, pour qu'il les recalcule et adresse correctement le disque.
Les adresses CHS , sont en C' H' S' et transformées en CHS pour correspondre à la réalité physique du disque.
Ainsi un programme pouvait tourner aussi bien sur un disque que sur l'autre, sans avoir à subir de modification.
Jusqu'où a-t-on pu aller ? et bien : 255 têtes puis qu'elles sont codées sur un octet
Mais rendez vous compte avec une telle astuce, qui ne coûtait presque rien on a pu multiplier la capacité des disques durs par 256 !!! ( admiration !), portant ainsi les limites à :
1024 x 63 x 255 x 512 = 8 422 686 720 octets = 8 032 Mo ( arrondi à 8 Go) 1 Go = 1024 Mo
Vous devez rire avec vos disque de 80 Go, mais il faut retenir que cette limite est encotre présente dans le BIOS pour l'adressage du disque. On ne peut pas installer n'importe quoi, n'importe où.
Il a fallu rendre le PC compatible avec d'autres OS qui ne travaillaient pas avec le mode d'adressage CHS… , mais avec un autre mode d'adressage : LBA : Logical Block Adress. :
Les secteurs sont numérotés de manière absolue et continue depuis le premier jusqu'au dernier…
Un coup de chance : il restait de la place dans le MBR pour glisser quelques adresses supplémentaires pour ce format différent. Mais là ils ont prévu très large : 4 octets pour coder l'adresse de début ou de fin de chaque partition dans la table des partitions. Ce qui laissait la possibilité d'adresser des disques avec un autre OS travaillant en LBA jusqu'à X G octets.
Mais le BIOS continuait à gérer le disque en CHS… avec les limites de l' Overlaps…
Tant que les disques n'ont pas atteint la capacité de 8 Go, celà ne posait pas de problèmes.
L'OS qui fonctionnait en LBA, pour communiquer avec le disque géré par le BIOS, afin de lire le secteur où commence un fichier, convertissait l'adresse LBA de ce secteur en format CHS avant de la communiquer au BIOS, et le tour était joué.
Au delà de 8 Go, c'est fini ! On ne sait plus gérer le disque dans les deux modes.. même si les capacités d'adressage du LBA paraissent illimitées…
Le BIOS limite les capacité d'adressage à celles du CHS… 8 Go. pourtant on a besoin de plus grandes cappacités de disques et les fabriquants savent les réaliser.
Il faudrait modifier le BIOS et la table des partitions mais le Dos et les anciens Windows et leurs programmes , ne seraient plus compatibles avec le PC…
Encore une fois, il a fallu sauver le soldat Bios
Une dernière chance : Les contrôleurs de disques, ne lisent pas un seul secteur, à chaque fois : ils ont des mémoires tampons qui vont juqu'à 8 Mo, voire plus selon les disques.
Ainsi le disque peut stocker dans son tampon le contenu de plusieurs cylindres (ou secteurs sur un plateau ) : un secteur c'est 512*63 octets soit 32 256 octets : 32 ko
Vous avez compris… l'astuce !
Ce n'est pas nécessaire de pouvoir adresser tous les cylindres individuellement : on va en adresser un sur deux ou un sur quatre, un sur 128, voir plus et le controleur de disque lit tout le paquet d'un coup, comme si c'était le même cylindre…
Du coup, le BIOS peut rester dans ses limites de CHS… qui ne correspondent plus à la réalité.
L'OS qui travaille en LBA, fait un calcul traffiqué d'adresse en C H S ( à partir de l'adresse LBA en secteurs ) pour qu'elle reste dans les limites du Bios… mais il adresse un groupe de cylindres.
Le gestionnaire de disque rétablit la situation…à partir de cette adresse CHS, et les convertit en C' H' S' puis en C H S pour adresser le disque selon et sa géométrie.
Retour des données recherchées : Ultra ATA Ultra DMA et inth13 ( je développerais plus tard )
Le Bios renvoie des adresses CHS fausses à l'OS en LBA Quelle pagaille ! pensez vous…
Mais non ! le Bios lui n'y a vu que du feu.. ( c'est à dire qu'il n'a pas besoin d' être modifié et peut encore faire tourner un vieux DOS ou un vieux Windows ! ).
Par contre c'est le gestionnaire de disque qui fait tout ce traffic. Il lui suffit d' être d'accord avec l'OS qui travaille en LBA sur ce traffic.. et de trier dans le paquet pour trouver le ou les seteurs qu'il voulait lire.
Le moyen simple de se mettre d'accord entre eux est d'avoir une géométrie de disque commune….
Attention ! Windows XP travaille en LBA, même lorsqu'il est en début de disque ce qui n'est pas obligatoire ( c'est pour celà que les commandes DOS ont été modifiés dans XP).
Exemple de sortie table des partitions en secteurs :
LBA, Tout s'enchaîne à merveille : premier/dernier secteur.
Il suffit de multiplier la longueur par 512 (octets par secteur ) pour avoir la taille de la partition :
ip-10:/home/jackie # cfdisk -P s /dev/hda
Table de partitions de /dev/hda
Premier Dernier
# Type Secteur Secteur Offset Longueur Sys.FichierT ype (ID) Fanions
-- ------- ----------- ----------- ------ ----------- --------------------- ----
1 Primair 0 10 233 404 63 10 233 405 HPFS/NTFS (07) Amorce
2 Primair 10 233 405 30 989 384 0 20 755 980 Linux (83) Aucun
3 Primair 30 989 385 51 745 364 0 20 755 980 Linux (83) Aucun
4 Primair 51 745 365 160 071 659 0 108 326 295 W95 Ext'd (LBA) (0F) Aucun
5 Logique 51 745 365 53 689 229 63 1 943 865 Linux swap / So (82) Aucun
6 Logique 53 689 230 84 100 274 63 30 411 045 Linux (83) Aucun
7 Logique 84 100 275 114 639 839 63 30 539 565 Linux (83) Aucun
8 Logique 114 639 840 117 081 719 63 2 441 880 Linux (83) Aucun
9 Logique 117 081 720 119 395 079 63 2 313 360 Linux (83) Aucun
10 Logique 119 395 080 121 612 049 63 2 216 970 Linux (83) Aucun
11 Logique 121 612 050 131 475 959 63 9 863 910 Linux (83) Aucun
12 Logique 131 475 960 150 272 009 63 18 796 050 Linux (83) Aucun
13 Logique 150 272 010 160 071 659 63 9 799 650 W95 FAT32 (0B) Aucun
ip-10:/home/jackie #
La même en CHS :
p-10:/home/jackie # cfdisk -P t /dev/hda
Table de partitions de /dev/hda
--- Début --- ---- Fin ---- Début Numéro de
# Fan. Tête Sect Cyl ID Tête Sect Cyl Secteur Secteurs
-- ----- ---- ---- ---- ---- ---- ---- ---- ----------- -----------
1 0x80 1 1 0 0x07 254 63 636 63 10 233 342
2 0x00 0 1 637 0x83 254 63 1023 10 233 405 20 755 980
3 0x00 254 63 1023 0x83 254 63 1023 30 989 385 20 755 980
4 0x00 254 63 1023 0x0F 254 63 1023 51 745 365 108 326 295
5 0x00 254 63 1023 0x82 254 63 1023 63 1 943 802
6 0x00 254 63 1023 0x83 254 63 1023 63 30 410 982
7 0x00 254 63 1023 0x83 254 63 1023 63 30 539 502
8 0x00 254 63 1023 0x83 254 63 1023 63 2 441 817
9 0x00 254 63 1023 0x83 254 63 1023 63 2 313 297
10 0x00 254 63 1023 0x83 254 63 1023 63 2 216 907
11 0x00 254 63 1023 0x83 254 63 1023 63 9 863 847
12 0x00 254 63 1023 0x83 254 63 1023 63 18 795 987
13 0x00 254 63 1023 0x0B 254 63 1023 63 9 799 587
ip-10:/home/jackie #
Seule la partie en vert qui est inférieure à 8 Go a une bonne correspondance CHS/LBA, après le CHS est saturé à 254/63/1023. N'allez surtout pas en déduire que votre table des partitons est naze !!!
Il faut oublier le CHS pour connaître le partitionnement de son disque
Mais si vous donnez votre disque à réparer à un partitionneur quelconque, qui bosse en CHS, avec ça , c'est la cata assurée.. Il va vous changer les adresses secteurs ( LBA ) et empiler toutes les partitions l'une sur l'autre sur un sceteur qui correspond à 254/63/1023.
Surtout oubliez votre vieille disquette DOS avec son fdisk pour partitionner ou lire le partitionnement…
Dans ce cas l 'OS en CHS et ses applictions ont besoin des adresses CHS de la table des partitions, elles doivent donc être correctes et il faut installer cet OS , dans les 8 premiers Giga.
Ne rêvez pas, comme je l'ai fait, d'installer un DOS que vous avez trouvé, à la fin de votre disque dans une place libre.. Tant pis , c'est trop tard !
Pour les vieux windows, je ne sais pas.. et je ne suis pas très concernée par le problème, mais méfiez vous si vous pensez réinstaller ce genre de choses sur votre disque.
Extrait du man de la cde fdisk :
Dans une table de partitions de type DOS, le décalage de départ et la taille de chaque partition sont conservés de deux façons : comme un nombre absolu de secteurs (sur 32 bits), ou comme un triplet Cylin- dres/Têtes/Secteurs (sur 10+8+6 bits). La première manière fonctionne bien - avec des secteurs de 512 octets, cela marchera jusqu'à 2 To. La seconde possibilité souffre de deux problèmes différents. Primo, ces champs C/T/S ne peuvent être remplis que lorsque le nombre de têtes et le nombre de secteurs par piste sont connus. Secundo, même si l'on con- naissait ces nombres, les 24 bits qui sont disponibles ne suffiraient pas. DOS utilise uniquement C/T/S, Windows utilise les deux, Linux n'utilise jamais C/T/S
Voilà, c'est clair ! (sauf pour lilo).
Windows XP et Linux doivent avoir la même géométrie de disque que le contrôleur de disque, le point commun.
Mais Windows XP généralement installé en début de disque, même s'il travaille en LBA avec les adresses secteur de la table des partitions, n'mpose pas forcément une géométrie de disque capable d'adresser tout le disque si on l'installe dans une petite partition.
Tout va bien dans la plage des 8 Go. Le nombre de secteur de CHS de la fin de la partition Windows ne dépasse pas 1024. Ainsi il fonctionne parfaitement avec un disque dont la gémométrie n'a pas été déterminée en LBA, mais il utilise les adresses LBA de la table des partitions, qui correspondent exactement au CHS.
Il se peut, selon le partitonneur utilisé pour cette unique partiton NTFS, la géométrie du disque ne soit plus bonne. Il est donc indispensable de la vérifier avant de poursuivre le partitionnement.
Le premier sytème installé, détermine une géométrie (ou utilise celle configurée dans le BIOS) ; le deuxième sytème installé, s'adapte à cette géométrie… si elle n'est pas bonne, et ne permet pas d'adresser tout le disque (en LBA) le deuxième système pourrait ne pas fonctionner.
Si vous ne retrouvez pas toute la capacité de votre disque, ce peut être une mauvais géométrie dans le BIOS, qui était suffisante cependant, pour faire fonctionner le premier sytème.
Attention à la géométrie du disque :
Si après avoir installé windows dans les huit premiers Go, vous installez à la suite un OS qui utilise l'adressage LBA, par exemple Mandrake… (une idée qu'elle est pas bonne
) Il va s'installer sans problème à la suite de windows, malgré une mauvaise géométrie de disque et s'adapter à cette géométrie existante.
Yast travaille peut être différemment… (il y a des variations importantes d'une distribution à l'autre).
Lors du partitionnement, le partitionneur va calculer pour chacune, les adresses secteurs LBA pour la table des partitions . Mais lorsqu'il dépasse les 8 Go, et les 1024 secteurs en CHS, il va les limiter à 1024. Donc plus de correspondabnce CHS LBA dans la table des partitions.
Ce n'est absolument pas génant pour Mandrake qui va fonctionner parfaitement, sans changer la géométrie choisie par windows XP pour que celui ci continue à fonctionner en accord avec le contrôleur de disque.
Mais parce que le disque n'a pas été configuré en LBA dans le Set Up du Bios avant d'installer windows XP.. (ou parce que le partionneur qui l'a installé a modifié la géomètrie du disque) , on peut se retrouver avec une limite inexpliquable et ne plus pouvoir ajouter de partition plus tard dans la dernière partie du disque.
Une limite due cette mauvaise géométrie. (30 Go dans un exemple réel avec un disque de 60 Go mal configuré). Diskdrake refusait de créer une nouvelle partition dans la place libre.
Utilisation de Partition Magic pour voir ce qui se passe.
Partition Magic ( qui travaille aussi bien avec des partitions windows, que des partitions Linux, donc les deux modes CHS et LBA) ne voit pas le disque comme configuré en LBA, à cause de cette mauvaise géométrie de départ. On ne sait pas comment travaillent exactement ces partionneurs… mixtes (windows/linux), je préferrais un peu moins de magie et plus d'explications.
D'où les recommandations répétées dans les commandes disques de Linux, à ne pas prendre à la légère.
root@ttyp0[knoppix]# fdisk /dev/hda Le nombre de cylindres pour ce disque est initialisé à 116280. 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)
Et celle ci dans le man de fdisk :
Pour obtenir les meilleurs résultats, vous devriez toujours utiliser un programme de partitionnement spécifique au système d'exploitation. Par exemple, vous devriez créer des partitions DOS avec le programme FDISK DOS, et des partitions Linux avec l'un des programmes Linux fdisk ou cfdisk.
Demande de réparation : il le prend pour un disque en CHS et recalcule les adresses de début de fin de partition en secteurs depuis le début.
Lorsqu'il arrive dans la zone LBA avec les CHS faux, il commence à faire chevaucher les partitions et s'arrète.
La table des partitions est foutue, c'est le crash..
Il faut alors enlever Windows XP, qui fonctionnait encore, afin de détruire toutes les partitions pour pouvoir refaire la géométrie du disque en LBA, et refaire tout le partitionnement plus le formatage.
Ceci peut expliquer pourquoi , chez ceratins partition magic fonctionne bien et que d'autres ont des problèmes.. Il n'y pas de mystères en info.
Avec Lilo la partition /boot doit se trouver dans les 8 premiers Go du disque puisque :
Avec Grub, c'est sans importance puisqu'il travaille en LBA et que son MBR est aussi au format LBA.
N' hésitez plus ! Préférez Grub ! (mais il y a d'autres raisons pour préférer Grub à Lilo )
Lilo (enfin, si les nouvelles verions n'ont pas corrigé le problème) travaille en CHS, il doit être installé dans la zone CHS des 8 premiers Go. Celà ne signifie pas que vous devez installer Linux dans les 8 premiers Go, mais au moins une partition /boot toute seule, qu'il faut créer avant et qui contiendra Lilo. ( une solution si vous manquez de place pour installer Linux, dans cette zone du disque.. et si vous ne voulez pas tout refaire.
Pensez y lorsque vous réorganisez votre disque, parce que sinon ça ne bootera jamais, le MBR ne retrouvera pas Lilo s'il est hors de la zone CHS. Idem si votre rep /boot est à cheval sur le Zone CHS et LBA, ça risque de coincer lorsque Lilo ira chercher un fichier de conf dans cette partition : il ne saura pas l' adresser en CHS.
Numérotation des partitions avec Linux.
Les primaires sont numérotées de hda1 à hda4.
Si vous n'avez que deux primaires , dont une étendue , vous aurez :
Puis à partir de hda5 la première logique et suivantes…
Parmi elles vous avez une vieille partition Windows qui vous paraît inutile au hasard la hda 5 ….
Vous l'enlevez… (après tout ça ne sert plus à rien ! lol !), mais vous ne recréez rien en attendant : vous verrez plus tard… ( ca m'est arrivée. ) Au premier reboot, c'est le crash assuré.
Pourquoi ?
La numérotation des partitions a changé elle se fait au reboot…
Bin pour retrouver la partoche et le rep de boot, le MBR est un peu largué..
ou alors ( dans mon cas pendant le boot impossible de trouver la /home parce que le fstab était dans les choux ! il avait l'ancien numéro alors que la partition avait subi un décalage..
Idem, si vous avez une grosse partition windows, dans laquelle vous voulez retailler deux partoches pour Linux, ça va encore tout décaler…
Pô grave ! Ce genre de truc se répare avec une Knoppix : on change les numéros de partoches dans le fstab.. de la root pour remettre la numérotation du fstab en phase avec la réalité..
Mais si la root se retrouve décalée, ça ne va jamais booter : il faut penser à remettre à jour le MBR , avec la réparation du Cd d'install de SuSE… (réinstaller le chargeur) pour que le MBR retrouve le bon numéro de partoche du /boot.
On ne va pas tout réinstaller pour si peu : ça va pas non ?
Aussi je vous renvoie au manuel détaillé de votre CM (généralement téléchargeable sur le site du fabricant et plus complet que la notice livrée avec la CM ) et à la fiche constructeur de votre DD.
Je n'ai pas eue besoin de cette commande non plus… Aussi pour l'instant, je ne saurais rien écrire, mais elle existe…
No lo se ! Plein de trucs à lire encore…
Si c'est possible, fdisk déterminera automatiquement la géométrie du disque. Ce n'est pas nécessairement la géométrie physique du disque (en effet, les disques modernes ne possèdent pas à proprement parler quoi que ce soit pouvant être assimilé à une géométrie physique, et encore moins quelque chose pouvant être décrit par la forme simpliste Cylindres/Têtes/Secteurs), mais c'est la géométrie de disque qu'utilise MS-DOS pour la table des partitions.
D'habitude, tout se passe bien par défaut, et il n'y a aucun problème si Linux est le seul système sur le disque.
Néanmoins, si le disque doit être partagé avec d'autres systèmes d'exploitation, c'est en général une bonne idée de laisser créer au moins une partition par un fdisk d'un autre système d'exploitation.
Quand Linux démarre, il examine la table des partitions, et essaie de déduire quelle (fausse) géométrie est requise pour une bonne coopération avec les autres systèmes.
Chaque fois qu'une table des partitions est écrite, un test de cohérence est effectué sur les entrées de la table des partitions. Ce test vérifie que les débuts et fins physiques et logiques sont identiques, et que la partition commence et se termine sur une limite de cylindre (sauf pour la première partition).
Certaines versions de MS-DOS créent une première partition qui ne commence pas sur une limite de cylindre, mais sur le secteur 2 du premier cylindre. Les partitions commençant au cylindre 1 ne peuvent débuter sur une limite de cylindre, mais il est peu probable que cela pose problème à moins que vous n'ayez également OS/2 sur votre machine.
Sans quelques sauvegardes basiques, la réparation de la table des partitions relève de l'art divinatoire !
A minima il est prudent de sauver tout le MBR et donc la table des partitions primaires sur une disquette, dans un fichier que l'on appellera par exemple : svmbrhda lorsque le système est en place, avec la cde suivante :
dd if=/dev/hda of=/dev/fd0/svmbrhda bs=512 Count=1
Evidemment la même chose sur le disque /hdb si vous avez deux disques
Important de l'avoir sur un support extérieur, parce que si le disque ne boote plus, cette sauvegarde est inaccessible. Sur disquette, on peut la restaurer avec une Knoppix avec la cde dd inverse :
dd if=/dev/fd0/svmbrhda of=/dev/hda bs=512 Count=1
Il faudrait également sauver la table des partitions logiques, mais il faut la localiser…. aussi bien pour la sauvegarder que pour la restaurer.
Je n'ai pas encore toutes les infos pour faire cette manip à coup sur, mais sauver la table des partitions primaires c'est déjà une bonne chose. En quelques minutes on peut réparer une grosse toile.
Mais il me semble indispensable de sauvegarder sur cette disquette, la sortie de la commande cfdisk qui donne la table des partitions compllète en secteurs. : Une reférence, si jamais il faut recréer les partitions avec la cde fdisk ou cfdisk.
cfdisk -P s /dev/hda
Si la table des partitions est détruite lors d'une mauvaise manip, il est possible de la réécrire, et c'est suffisant pour retrouver ses données intactes si on a pas formaté bien sûr. C'est moins long que de tout réinstaller et surtout de reconfigurer toute sa distrib.
Ne pas confondre céer des partitions et formater une partition.
Contrairement à ce qu'on lit trop souvent.. on a droit à l'erreur lors de la réparation. La table des partitions n'est qu'un repère. Si on s'est trompé lors de la réparation, au pire ça ne marche pas ( il y a toutes les chances pour que ça plante…) Alors on recalcule et on recommence. No panic ! Par contre il faut imprimer tout ce qu'on fait.
Réparer la table des partitions avec avec la cde cfdisk.
C'est là qu'il faut avoir la référence de la sortie de cfdisk sur disquette, lorsque tout marchait bien, pour ne pas se tromper et ne pas avoir à calculer. Ce qui permet de réparer les partitions logiques. Avec une knoppix on peut alors comparer partition par partition, l'existant obtenu avec la cde cfdisk sur /dev/hda, avec celle sauvegardée sur la disquette, et ainsi savoir ce qui a été détruit.
Après cette restauration, il faut refaire une cde cfdisk sur /dev/hda pour relire la table des logiques.. et recontrôler.
Si une ou plusieurs logiques ne corresponde pas, il faut les recréer avec les bons secteurs de la référence et la cde cfdisk.
Attention à la numérotation, si une partition a été détruite.. on doit trouver une discontinuité dans les sceteurs de début et de fin.
Refaire la ou les partitions détruites avec la cde cfdisk. Ca paraît fastidieux, contraignant je sais, mais on gagne des semaines de boulot… et on peut retrouver ses données. Ca évite aussi des crises de nerf… C'est un complément aux sauvegardes en image des partitions, pour pouvoir les restaurer. Qui se souvient du partitionnement de son disque pour le refaire exactement comme il était ?
Exemple : Sauvegarde de la cde cfdisk -P s /dev/hda dans un fichier texte sur la disquette.
Autre sauvegarde importante à faire sur la disquette : fstab ! Responsable de nombreux problèmes lors de modifs de partitionnement. Avec la knoppix, il sera possible de restaurer le fstab d'origine. Un simple copier/coller