This page has been robot translated, sorry for typos if any. Original content here.

Enregistrement de démarrage à la maison - Enregistrement de démarrage principal (MBR)

D'abord, définissons la terminologie. Sous les mots dans le titre de l'article, deux choses différentes sont souvent comprises, qui dans certains cas peuvent être équivalentes, et dans certains cas, non. Le premier concept est en réalité Master Boot Record. Cette entrée (code de programme et données), chargée en mémoire depuis le disque dur et permettant l'identification des partitions logiques, détecte la partition active et télécharge un enregistrement de démarrage (Boot Record - BR), qui continuera le lancement du système d'exploitation. Et le deuxième concept est le secteur de démarrage, le secteur de démarrage principal (MBS) est le secteur situé sur le 0 cylindre, le plan (tête) 0 et le numéro 1. Dans la plupart des cas, le MBS contient tout le code nécessaire et toutes les données , mais il y a des cas (que nous verrons à la fin de l'article) lorsque le code et les données ne tiennent pas dans un secteur (espace insuffisant ou pour des raisons de sécurité), le code de ce secteur assure le chargement des autres secteurs. Dans ce cas, le MBR est une collection de tous les secteurs qui doivent être chargés, et MBS n'est que le premier secteur.
Cependant, nous commencerons par le cas où MBR et MBS sont les mêmes, et nous les appellerons plus familiers et plus couramment utilisés MBR. Légèrement digressant du sujet, je note qu'un tel MBR (fournissant le démarrage de n'importe quel système d'exploitation et occupant seulement MBS) est habituellement appelé le terme MBR générique.
En général MBR est apparu sur les disques durs à partir de MS DOS version 3.0, dans les versions antérieures, le disque dur était formaté comme une disquette, et dans le premier secteur se trouvait BR. En conséquence, le disque était une partition unique et ne pouvait pas être divisé en parties logiques - c'est vrai, à ces tailles de disques qui ont ensuite été libérés, ce n'était pas pertinent.
La taille du secteur sur le disque dur est de 512 octets. Cet espace est assez pour accueillir tout ce dont vous avez besoin - à la fois le code et les données. Cependant, une seule structure devrait y être présente - c'est une signature. Ce mot est une séquence spéciale, strictement établie, de 2 octets avec des valeurs hexadécimales de 55h AAh, qui est écrite sur les 2 derniers octets du secteur et a donc un décalage par rapport au début du secteur 1FEh. Si au moins un des deux derniers octets diffère en valeur, on considère que le premier secteur n'est pas un MBR et ne contient pas d'informations significatives. Si l'ordinateur au début, après avoir lu le premier secteur, ne trouve pas la bonne signature, il ne transférera pas le contrôle du code qui s'y trouve, même s'il est correct, mais signalera que l'enregistrement de démarrage principal n'a pas été trouvé. Ou va essayer de le trouver sur d'autres appareils - par exemple, sur une disquette. Légèrement déviant du sujet, je note que le BR contient également une signature 55h AAh dans les deux derniers octets.
Eh bien, si nous avons commencé avec la queue, nous irons au début du secteur. Avant la signature, à proximité, il y a 4 blocs de données de 16 octets chacun (respectivement avec un décalage depuis le début du secteur 1BEh, 1CEh, 1DEh, 1EEh). La totalité de ces blocs est appelée table de partition (PT) et chaque entrée individuelle est appelée une entrée de table de partition (entrée de table de partition) ou simplement une partition. Ces 16 octets suffisent à indiquer toutes les caractéristiques nécessaires de la partition, à savoir: type de partition, indicateur d'activité de partition, secteurs de partition de début et de fin au format Cylindre (chemin) - Cylindre (Tête - Secteur, CHS) , le nombre relatif du premier secteur (par rapport au MBR) et le nombre de secteurs dans la section.
Le reste de l'espace de secteur est occupé par le code de programme, qui fournit l'analyse syntaxique, la recherche de la partition active, le chargement de BR dans cette section et le transfert au contrôle. Comme il est facile à calculer, le code reste 512 - 4 * 16 - 2 = 446 octets. Cet espace est suffisamment abondant pour mener à bien ces actions.
Ainsi, la structure générale du MBR peut être représentée par le tableau suivant:
  Offset Longueur Description
 000h 446 Code du chargeur
 1BEh 64 Table de partition
  16 Section 1
 1CEh 16 Section 2
 1DEh 16 Section 3
 1EEh 16 Section 4
 1FEh 2 Signature (55h AAh)
Chaque bloc de 16 octets décrivant une partition a la structure suivante:
  Offset Longueur Description
 00h 1 Symptôme de l'activité de partition
 01h 1 Début de section - tête
 02h 1 Le début de la section est secteur (bits 0-5), la piste (bits 6,7)
 03h 1 Début de la section est la piste (les bits les plus élevés de 8.9 sont stockés dans l'octet du numéro de secteur)
 04h 1 Code de type de partition
 05h 1 Fin de section - tête
 06h 1 Fin de section - secteur (bits 0-5), piste (bits 6,7)
 07h 1 Fin de la section - la piste (les bits de poids fort 8.9 sont stockés dans l'octet du numéro de secteur)
 08h 4 Déplacement du premier secteur
 0Ch 4 Nombre de secteurs de la partition
Le code de type de partition est un identifiant à un octet. Si sa valeur est 00h, il est considéré que cet élément PT ne contient pas d'informations de partition et son contenu est ignoré. Toute valeur non nulle signifie qu'il y a une section d'un certain type dans l'espace spécifié. Certaines valeurs indiquent de manière unique le type de partition, d'autres correspondent à plusieurs types possibles, et la définition d'un type spécifique est affectée au système d'exploitation, les autres sont réservées pour une utilisation future. Vous trouverez un guide relativement complet et à jour sur les codes de type de partition dans la liste d'interruptions Ralf Brown du fichier INTERRUPT.D, table 00652, qui se trouve dans l'archive (au moment de la rédaction de ce document) inter61a.zip sur http://www.pobox.com/ ~ ralf / files.html . Ici, je vais donner une table de ces types de partitions qui sont créés par les systèmes d'exploitation Windows 9x et Windows NT / 2000 / XP:
  Type de partition de code
 01h FAT 12 bits
 04h FAT 16 bits jusqu'à 32 Mo
 05h Section avancée
 06h 16 bits FAT de plus de 32 Mo
 07h Windows NT NTFS (et quelques autres - le type est déterminé par le contenu BR)
 0Bh FAT 32 bits
 FAT 0Ch 32 bits avec gestion avancée INT13
 0Eh LBA VFAT (même que 06h, en utilisant le contrôle avancé INT13)
 0Fh LBA VFAT (même que 05h, en utilisant le contrôle avancé INT13)
 17h Partition NTFS cachée
 1Bh Une section cachée du FAT 32 bits (identique à 0Bh)
 1Ch Une section cachée du FAT 32 bits utilisant le contrôle avancé INT13 (le même que 0Ch)
 1Eh Partition cachée LBA VFAT (identique à 06h, en utilisant le contrôle INT13 avancé)
 86h Section FAT-16 stripe-array Windows NT
 87h partition NTFS stripe-array Windows NT
 B6h Cloison maîtresse en miroir FAT-16 Windows NT
 B7h partition maître mise en miroir NTFS Windows NT
 Cloison esclave en miroir C6h FAT-16 Windows NT
 C7h partition esclave en miroir NTFS Windows NT
Un signe de l'activité de la section - c'est-à-dire un signe que le système d'exploitation doit être téléchargé à partir de cette section - il peut avoir les valeurs 80h (partition active) et 00h (partition n'est pas active). En général, le nombre de partitions actives ne doit pas dépasser 1 (sinon comment faire un choix?). S'il n'y a pas de partitions actives, le système d'exploitation ne peut pas être chargé à partir de ce disque dur. Les autres valeurs sont considérées comme erronées et ignorées. Cependant, la décision de transférer le contrôle prend le code du chargeur, de sorte que la valeur de l'octet de l'attribut de démarrage n'est qu'un axiome pour les chargeurs standard.
Le bloc d'adresse à trois octets de l'adresse de début et de l'adresse de fin de section a le même format. Ici, en effet, les valeurs d'emballage sont utilisées pour qu'elles aient un volume minimum. Le format du paquet correspond entièrement à la façon dont ces données sont transférées aux procédures de travail avec le disque dur (Int 13h), qui se trouve dans le BIOS de l'ordinateur, et par conséquent les coûts de calcul sont minimes. Dans ce cas, les cylindres et les pistes sont numérotés à partir de la valeur zéro, et les secteurs - pour une raison quelconque de la première. Je ne sais pas pourquoi - c'est arrivé historiquement.
Le secteur pointé par l'adresse du début de la section contient un enregistrement spécial appelé enregistrement de démarrage (BR). Son but et sa composition seront examinés dans un article distinct.
Le décalage du premier secteur de la partition est en réalité le numéro de ce secteur si tous les secteurs du disque dur sont renumérotés à partir de 0 (selon la numérotation utilisée par Int 25h / 26h) dans l'ordre croissant des secteurs d'une piste, cylindres. Et quel est le nombre de secteurs dans la section - il est compréhensible sans explication.
Naturellement, toutes ces valeurs sont reliées par de simples dépendances, car les informations qu'elles contiennent sont redondantes. Par conséquent, je vais donner les formules pour la relation entre eux.
Donc, si nous notons:
C M est le cylindre sur lequel se trouve le MBR;
H M est la piste sur laquelle se trouve le MBR;
S M est le secteur dans lequel se trouve le MBR;
C S , H S , S S , C E , H E , S E sont les mêmes pour les secteurs du début (S) et de la fin (E) de la section;
H H - nombre de pistes sur le disque dur;
S H - le nombre de secteurs sur une piste sur le disque dur,
alors:
Le nombre absolu du secteur dans lequel se trouve PT:
Num PT = C M * H H * S H + H M * S H + S M -1
Numéro de secteur absolu du début de la section:
Nombre S = C S * H H * S H + H S * S H + S S -1
Numéro de secteur absolu de la fin de la section:
Nombre E = C E * H H * E H + H E * E H + E E -1
Déplacement du premier secteur de la section:
Décalage S = Num S - Num PT
Nombre de secteurs:
Montant = Num E - Num S +1
D'après les formules ci-dessus, en outre, il est clair que l'important est combien de pistes ont un cylindre d'un disque dur et combien sur chaque piste de secteurs. Ces valeurs dépendent à la fois de la géométrie du disque dur et du mode de traduction sélectionné dans les paramètres du BIOS. Par conséquent, un disque partitionné dans un seul mode de traduction peut être illisible lorsque le mode de traduction change.
Pour les lecteurs IDE, il existe plusieurs modes de traduction:
CHS (Cylinder-Head-Sector) - alors que la géométrie du disque est la même que celle qu'il indique à l'ordinateur. Ne vous flattez pas - la plupart des lecteurs n'ont pas la vraie géométrie. Cependant, le contrôleur qui fait partie du disque dur produit les transformations nécessaires par lui-même, et la manière dont il le fait n'est pas importante pour nous. Le nombre maximal de cylindres est de 1024 (de 0 à 1023), les pistes de 16 (de 0 à 15), les secteurs de 63 (de 1 à 63) et la capacité maximale disponible dans cette diffusion sans utiliser de programmes spéciaux est de 504 Mo. . Dans les opérations de disque, l'adresse de secteur est transférée au BIOS de l'ordinateur par le contrôleur de disque dur sans le modifier.
LBA (Logical Block Addressing) - ce mode de traduction n'utilise pas la géométrie du disque, qu'il indique au BIOS de l'ordinateur. La réduction est faite au format lorsque le nombre de cylindres n'excède pas 1024 et le nombre de secteurs par piste est 63. Le nombre de pistes dépend du BIOS de l'ordinateur et du volume du disque dur et peut être 16, 64, 128 ou 255, les dernières versions du BIOS Utilisez la réduction sur 255 (0-254) pistes quel que soit le volume du lecteur. Lors de l'accès au disque, le numéro du cylindre, les têtes et les secteurs transférés dans la traduction LBA sont recalculés au numéro de secteur absolu, et ils sont transférés au BIOS de l'ordinateur par le contrôleur de disque dur pour effectuer l'opération. Avec une capacité de disque de plus de 8 Go, le nombre de cylindres est supérieur à 1024, donc, sur les ordinateurs qui ne supportent pas le mode avancé Int 13h, sans installation de logiciel spécial, l'espace disponible n'est pas disponible (indépendamment du mode broadcast). Parfois, cependant, aide à mettre à jour le BIOS de l'ordinateur.
LARGE ou ECHS (Extended CHS) - dans ce mode de traduction, le nombre de cylindres est réduit à moins de 1024 en raison d'une augmentation multiple du nombre de pistes. Le nombre donné de pistes est strictement un multiple du nombre réel de secteurs par piste ne change pas. Cependant, dans la plupart des lecteurs modernes, le nombre de secteurs par piste (selon le contrôleur du lecteur) est 63. Le volume maximum disponible sur les ordinateurs ne prenant pas en charge le mode avancé Int 13h dépend du nombre réel de pistes, mais pas plus de 8 Go (par exemple a 16 pistes, alors dans la traduction LARGE ils peuvent être 16, 32, 48 ... 240, mais pas 255, parce que 255 n'est pas un multiple de 16, et le volume maximum disponible est 1024 * 240 * 63 * 512 / (1024 3 ) = 7,38 Go).
Lorsque vous utilisez la conversion LBA ou LARGE en raison de l'arrondi à des valeurs entières, plusieurs secteurs à la fin du lecteur peuvent "tomber" de l'espace décrit et devenir inaccessibles. Cependant, les pertes sont généralement faibles.
Comme pour les lecteurs SCSI, ils fonctionnent toujours en mode de traduction LBA. Au lieu de cela, le contrôleur SCSI représente la géométrie du lecteur conformément aux exigences de la traduction LBA et, lors de l'accès au disque, lui transfère l'adresse absolue du secteur. Naturellement, c'est le BIOS du contrôleur SCSI qui est chargé d'effectuer les conversions nécessaires.
Revenons au MBR. Comme déjà mentionné, il contient 4 blocs de données sur les éléments de la table de partition. Cela signifie que le nombre maximal de partitions pouvant être décrites dans le MBR est de quatre. Cependant, cela ne signifie pas que le nombre maximum de partitions sur lesquelles le lecteur peut être divisé est de quatre. Pour surmonter cette barrière, un type spécial de section avec le code 05h - une partition étendue (Extended Partition) a été introduit.
La partition étendue est très différente de tous les autres types de partition. Tout d'abord, il ne décrit pas la partition, mais la zone d'espace de stockage dans laquelle se trouvent les autres partitions. Le nombre de sections est théoriquement illimité. Certes, les sections situées dans cette zone sont un peu "limitées en droits", la plus importante est qu'elles ne peuvent pas être actives (ou plutôt, elles peuvent être effectuées à partir d'une telle section de l'OS, mais la plupart des OS ne le permet pas, vous devrez utiliser des outils spéciaux). Deuxièmement, un seul enregistrement de la partition étendue doit être présent dans le MBR. Au contraire, ils peuvent être fait et plus (bien que tous les quatre), mais comment se comportera le système d'exploitation, ayant rencontré tel, il est difficile à prévoir. Par exemple, MS-DOS 6.20 ignore simplement toutes les partitions étendues, à l'exception du premier dans la liste, comme si elles n'existaient pas du tout. Troisièmement, contrairement aux autres types de sections du secteur qui sont enregistrées dans la structure en tant que secteur du début de la section, il n'y a aucun BR. Il y a en fait un autre MBR qui a une table de signature et de partition, mais qui ne contient généralement pas de code de programme (habituellement le secteur contenant la table de partition, mais ne contenant pas le code de démarrage, s'appelle Abstract MBR). Cependant, puisqu'il n'y a pas de partitions actives, le code est inutile. Dans la table de partition d'un tel secteur, il y a généralement une ou deux entrées. Le premier décrit une partition régulière (Partition) et cette partition doit être complètement à l'intérieur de l'espace de la partition étendue. Si une partition normale n'occupe pas tout l'espace, une deuxième entrée apparaît dans la table de partition, qui décrit l'espace restant comme partition étendue. Dans le secteur suivant, une section est également décrite exactement et, si l'espace est laissé, un autre enregistrement de la partition étendue. Et cela continue jusqu'à ce que l'espace soit fini. En fait, tous les enregistrements pour les partitions étendues sont une chaîne de partition étendue dans laquelle les morceaux de l'espace disque sont plumés en partitions régulières jusqu'à ce que l'espace soit épuisé. Une erreur dans un élément de cette chaîne conduira à son déversement, par conséquent, tous les enregistrements après la pause ne seront pas trouvés par le système d'exploitation, et l'espace OS qu'ils occupent sera considéré comme inoccupé.
Lors du remplissage d'une chaîne, le système d'exploitation suit généralement plusieurs règles. Premièrement, la partition normale décrite dans le prochain "lien" du circuit ne doit pas être située au milieu, puisque pour décrire les deux espaces d'espace inoccupé, il faudra entrer deux entrées dans le PT de cet élément sur deux sections étendues de a, ignorez tous ces enregistrements sauf le premier, et par conséquent, une partie de l'espace disque tombera de la partition. Deuxièmement, en règle générale, un enregistrement sur une partition normale est fait de sorte qu'il occupe la zone initiale de la partition étendue, et l'élément suivant de la chaîne de partition est le reste.
Quels problèmes peuvent survenir avec le contenu du MBR? Premièrement, la destruction physique ou logique, c.-à-d. dommage à la surface ou autre problème mécanique ou la destruction du servo, ce qui empêche le secteur de lire le disque. Cependant, de tels cas vont au-delà de notre considération. Et le deuxième problème le plus commun est la destruction de tout ou partie des informations contenues dans le secteur, à la suite de quoi les partitions ne peuvent pas être trouvées par le système d'exploitation ou leurs paramètres sont déterminés de manière incorrecte.
Le cas le plus simple est la destruction de la signature. Dans ce cas, le système d'exploitation estime que le secteur contient des informations aléatoires, "déchets", et que le disque lui-même n'est pas divisé en sections et qu'il n'y a aucune information à ce sujet. Pour la récupération, il suffit seulement d'un quelconque moyen d'accès direct aux secteurs de disque (le paquet DISKEDIT de NORTON UTILITIES est le plus populaire) pour restaurer la signature. Toutefois, la plupart des systèmes d'exploitation doivent être redémarrés, car le système d'exploitation lit généralement les informations sur le partitionnement du disque en partitions et ne tient pas compte de ses changements dans le processus de travail.
Un cas plus compliqué est la destruction du code. Dans le même temps, la capacité de démarrer le système d'exploitation à partir du lecteur est perdue, et la tentative de démarrage se termine généralement avec l'ordinateur "raccrochage". En même temps, si vous démarrez à partir d'un autre lecteur (un autre disque dur, une disquette, un CD-ROM de démarrage, etc.), toutes les informations sur le lecteur sont disponibles. Dans ce cas, il est recommandé d'utiliser les outils de récupération de code bootstrap natifs disponibles dans chaque système d'exploitation. Par exemple, dans Windows 9x à cet effet, le programme FDISK.EXE, qui est démarré avec la clé / MBR, est utilisé.
La destruction du code n'est pas un cas aussi rare que cela puisse paraître. En règle générale, une telle nuisance se produit lorsqu'un disque est installé de manière cohérente sur différents systèmes d'exploitation dans une ou plusieurs partitions. N'importe quel système d'exploitation à l'installation souhaite avoir son propre code dans MBR, mais pas tout le soin de la préservation de ce code qui était dans le secteur plus tôt. Par exemple, Windows 9x réécrit le code du bootloader sans informer l'utilisateur et détruire irrémédiablement l'ancien contenu. Cependant, ce cas n'est pas très effrayant, car tous les chargeurs OS sont très similaires. Le problème se produit lorsque des outils logiciels tiers tels que EZ-drive, ODM ou SpeedStore sont utilisés pour partitionner un lecteur pour lequel les concepts MBR et MBS ne sont pas équivalents. En raison d'une autre idéologie de charge (que nous verrons plus tard), le code dans MBS effectue une autre fonction, à savoir, rechercher et charger un morceau de code MBR situé dans d'autres secteurs du disque. Le remplacement du code conduit au fait que cette fonction est perdue, et par conséquent il y a des problèmes de nature différente. L'utilisateur doit faire très attention en utilisant de tels outils logiciels - la restauration du code dans de tels cas peut être très difficile.
Et le cas le plus difficile et désagréable est la destruction de la table de partition elle-même. Cependant, comme vous le savez, le problème ne vient jamais seul, et le plus souvent les trois composants du MBR sont détruits, mais c'est la destruction de PT qui entraîne les conséquences les plus graves, car elle ne permet pas d'accéder aux informations stockées sur le disque. PT peut être détruit complètement, et peut-être partiellement - c'est-à-dire certains éléments sont détruits et le reste est intact. Il y a des moments où le PT dans le MBR est intact, et l'enregistrement de partition dans l'un des liens dans la chaîne de partition étendue est détruit. Cependant, étant donné que la structure du MBR et de la structure est absolument identique (sauf qu'il n'y a pas de code dans les éléments Extended Partition), la technique de récupération est la même dans les deux cas.
Il y a suffisamment de programmes pour réparer les TP détruits. La qualité de leur travail est différente et dépend principalement de la difficulté de partitionner le disque, si les types de partitions qui étaient sur le disque sont connus du programme et s'il y a d'autres corruption de données dans d'autres secteurs, en particulier dans les partitions BR. Cependant, nous ne cherchons pas des moyens faciles, et si vous n'avez pas de patron sur votre tête, "imprimez ma forme plus vite, sautez, je suis en retard pour les vacances!", Vous obtiendrez beaucoup plus de plaisir si vous, sans programmes automatiques, en utilisant seulement leurs connaissances, sera en mesure de restaurer toutes les informations. Vous pouvez même faire toutes les recherches nécessaires, obtenir tous les numéros dont vous avez besoin d'écrire dans PT, puis exécuter le programme de récupération et après son travail, assurez-vous que tout est calculé correctement. Ou peut-être même corriger les résultats de son travail, si elle n'a pas travaillé à 100%.
Donc, pour le travail nous avons besoin: disquette de démarrage avec n'importe quel DOS, qui a copié le fichier DISKEDIT.EXE, crayon, papier, calculatrice (cependant, la calculatrice est dans DISKEDIT) et quelques cerveaux. Il est souhaitable, bien sûr, que DOS et DISKEDIT soient plus frais. J'utilise DOS 7.10 de Windows 98 SE et DISKEDIT du paquet NORTON UTILITIES 2002. Aucun pilote n'est nécessaire à ce stade, sauf lorsque le lecteur est connecté à un ancien contrôleur SCSI et sans chargement, le pilote n'est tout simplement pas visible. Vous pouvez télécharger le pilote de la souris - ce sera un peu plus pratique. Maintenant, la bagatelle principale - sauf pour les fichiers spécifiés sur la disquette, il devrait y avoir rien! Ceci est important - s'il n'y a pas de fichier de configuration sur la disquette, DISKEDIT.EXE démarrera en mode lecture seule et aucune donnée sur le disque ne sera modifiée jusqu'à ce que nous le demandions explicitement. Une disquette en général serait fermée à partir du dossier.
Démarrer à partir de la disquette. Exécutez DISKEDIT.EXE. Après le chargement, appuyez sur les touches Alt-D (ou via le menu Object-Drive). Une fenêtre apparaît avec les périphériques de disque disponibles. Tout d'abord, nous soulignons que nous avons besoin de disques physiques, puis sélectionnez le bon disque (Disque dur 1) et cliquez sur OK. Dans ce cas, tous les secteurs du disque du premier au dernier seront sélectionnés comme plage de visualisation. C'est ce dont nous avons besoin.
Nous allons d'abord demander au programme de faire une analyse de disque et de trouver tous les secteurs qui peuvent être des éléments de la chaîne Extended Partition ou BR. Et bien que DISKEDIT cherchera simplement les secteurs qui ont une signature, et n'analyse pas le contenu (ce que nous prenons nous-mêmes), les résultats peuvent faciliter le travail. La vérité devra être patiente - le processus n'est pas rapide, et en plus de chaque secteur que vous trouverez devra être pris pour un crayon, mais les coûts de la chandelle.
Donc, Outils - Trouver un objet - Partition / démarrage. Allons-y. Chaque fois qu'un secteur avec une signature est rencontré, la recherche s'arrête, le vidage de secteur est affiché et le numéro de secteur dans le coin inférieur droit. Ce sont les adresses que vous devez prendre sur un crayon. Cependant, si nous n'utilisons pas de méthodes particulièrement sophistiquées lors du partitionnement d'un disque, tous les secteurs qui nous intéressent seront situés sur le zéro ou le premier côté dans le premier secteur, c'est-à-dire Côté 0 ou 1, secteur 1. D'autres secteurs, tels que certains Cyl 12, Side 4, Sector 52, peuvent être ignorés en toute sécurité - c'est par hasard. Certes, nous obtenons le numéro de secteur absolu, mais ce n'est pas terrible, pour les secteurs «droits», le nombre sera divisé par le nombre de secteurs par piste, habituellement 63 (d'autres valeurs sont beaucoup moins courantes maintenant - 17, 26, 40, 56 partout où je parlerai du nombre de secteurs 63, gardez à l'esprit que sur votre lecteur particulier peut avoir à utiliser un nombre différent). Et cette figure, nous pouvons regarder à travers le menu (Info - Drive Info). Malheureusement, le nombre de côtés et de cylindres peut être mauvais (non approprié pour la diffusion utilisée), mais ce n'est pas terrible non plus. Après avoir noté le numéro du secteur suivant, nous continuons la recherche (vous pouvez utiliser le menu Outils - Trouver de nouveau, vous pouvez juste Ctrl-G). Et ainsi jusqu'à ce que nous obtenions un message que l'objet n'a pas été trouvé. En ce moment, nous avons sur nos mains (ou plutôt, sur papier) tous les numéros de secteurs dans lesquels la signature est présente.
Теперь обрабатываем список, отсеивая явно случайные номера (это которые не делятся на 63), и особо выделяя пары номеров, которые различаются на 63. Эти пары - не что иное как пара из элемента Extended Partition и BR описанного в нём раздела.
Теперь отложим на минутку листок с цифрами и попытаемся вспомнить, какого размера разделы были на диске. Так, крупными мазками, 600 мегабайт, 12 гигабайт… запишем всё что помним. Если сумма не равна объёму накопителя - либо что-то забылось, либо неверно вспомнилось, либо было пространство, не принадлежавшее ни одному разделу (а что, бывает… знаю не один случай, когда десятигигабайтный жёсткий диск разбивался на компьютере, материнская плата которого не понимала более восьми гигабайт, а при апгрейде это как-то не вспомнилось… вот так 2 гигабайта и зависли). На этом этапе желательно вспомнить ещё и типы файловых систем в каждом из разделов.
Теперь возьмём оба листка и попытаемся совместить полученные данные. Мегабайт - две тысячи секторов, гигабайт - два миллиона… приблизительно. Но обычно удаётся совершенно однозначно наложить одно на другое. Полезно бывает нарисовать длинный прямоугольник, расставить на нём границы, соответствующие найденным секторам, и поделить на кусочки, соответствующие размерам разделов. Даже если однозначности нет - не беда. Разберёмся. При совмещении данных рекомендую помнить, что некоторые BR и элементы цепи Extended Partition могут быть разрушены (и соответственно не будут найдены), причём наиболее часто разрушаются BR первого (по положению на накопителе) раздела и BR активного раздела.
Впрочем, на данном этапе, пожалуй, всё… и не потому, что дальше некуда, а по другой причине - для дальнейшей работы по восстановлению требуется анализ других структур, которые располагаются уже в "найденных" разделах - это BR, FAT/MFT, каталоги и пр… мы их пока не рассматривали. Впрочем, иногда и найденной и вспомненной информации достаточно. В конце статьи приведен пример такого восстановления (пока не написан).
Иногда знание структуры разделов применяют совершенно для других целей - например, для создания своего собственного разбиения диска на разделы. Пример такого применения также есть в конце статьи.
При создании нестандартного разбиения диска на разделы, кроме требований, описанных ранее (один расширенный раздел и пр.), рекомендую также учитывать то, в каком порядке ОС MS-DOS и Windows назначают разделам буквы логических дисков ( Q51978 - Order in Which MS-DOS and Windows Assign Drive Letters ). Буквы присваиваются, начиная с C: (A: и B: зарезервированы для дисководов гибких дисков, возможно виртуальных). Порядок подключения таков:
  1. Раздел, с которого загружается ОС (при загрузке с жёсткого диска).
  2. Первые первичные разделы остальных жёстких дисков в порядке их нумерования (инициализации) BIOS компьютера.
  3. Разделы в Extended Partition жёстких дисков в порядке их нумерования (инициализации) BIOS компьютера, в порядке их записи в Partition Table дисков.
  4. Остальные первичные разделы дисков, в порядке их записи в Partition Table по порядку их нумерования (инициализации) BIOS компьютера.
  5. Устройства, формируемые драйверами, запускаемыми в файлах config.sys и autoexec.bat, в порядке их формирования и инициализации, если формируемому устройству не назначается в явной форме определённая буква или диапазон букв.
  6. Для ОС, которые могут опознавать и подключать накопители, не инициализируемые BIOS компьютера (не описанные в установках CMOS накопители) - разделы этих накопителей в соответствии с правилами 3 и 4 в порядке инициализации накопителей операционной системой.
Разделы не известных ОС типов не инициализируются и буквы им не присваиваются.
Следует помнить, что ОС семейства Windows NT имеют штатные средства переопределения букв логических дисков.

Пример 1. Ручное разбиение на разделы.

  • Параметры накопителя в LBA-трансляции (взяты из BIOS - Autodetect Hard Disk) - Cylinders 1216, Heads 255, Sectors 63, Capacity 10 Gb.
  • Желаемое разбиение: система 2 Гбайт, данные - 2 Гбайт, игры и дистрибутивы - остальное. Желательно разместить системный раздел в конце диска (по тестам там самая быстрая область), игры - в начале диска (по заверениям специалистов, наиболее часто данные повреждаются именно там).
  • Операционная система - Windows 98 SE rus, все разделы - FAT-32.
Исходя из желаемого разбиения, видится следующая схема: сначала расширенный раздел с двумя логическими дисками в нём - 6 и 2 Гбайт, потом первичный активный раздел 2 Гбайт, либо 3 первичных раздела в указанном порядке и с указанными размерами. Последний вариант нам не подходит (неважно по каким соображениям). Особенности работы программы FDISK выбранной ОС не позволяют выполнить разбиение штатно: если сначала мы создадим первичный раздел, он будет находиться в начале накопителя, если же мы сначала создадим расширенный раздел, то программа отказывается создавать первичный.
Принимаем решение провести разбиение с помощью FDISK насколько возможно, а затем доделать вручную. Первый этап: создать расширенный раздел с двумя дисками; второй: вручную добавить запись о первичном разделе.
Первый этап проблем не вызывает: загружаемся с дискеты, создаём extended partition размером 8 Гбайт, и в ней два логических диска - 6 Гбайт и 2 Гбайт. Перезагружаемся с дискеты, убеждаемся, что на диске появились (но недоступны - ведь мы не форматировали разделы!) диски C: и D:. Форматируем их при помощи стандартного FORMAT и в процессе форматирования убеждаемся, что диск C: имеет размер 6 Гбайт, диск D: - 2 Гбайт. Запускаем DISKEDIT и смотрим содержимое MBR. В нём имеется следующая запись:
 Starting location Ending location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sector Sectors Sectors
EXTEND No 1 0 1 254 972 63 63 15631182
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0
Нам нужно добавить запись о первичном разделе. Тип (System) будет 0Ch (FAT32x), признак загрузки установлен, начало раздела по адресу 973/0/1, конец раздела по адресу 1215/254/63, относительный сектор начала раздела 15631245 (973*255*63+0*63+1-1), относительный сектор конца раздела 19535039 (1215*255*63+254*63+63-1), количество секторов 3903795 (19535039-15631245+1). Весьма существенная тонкость - если номер цилиндра более 1023, в соответствующее поле вносится значение 1023 - увы, это максимальное значение, которое можно туда записать - а правильное значение ОС рассчитает исходя из заданного количества секторов.
Переводим DISKEDIT в режим Read-Write (Tools-Configuration) и во второй строке вписываем рассчитанные данные. После ввода и проверки всех значений выходим из DISKEDIT клавишей Esc, а на вопрос, что делать с изменениями, отвечаем - записать (write). Перезагружаем компьютер. Убеждаемся, что на диске теперь три раздела - C: - недоступен, D: - 6 Гбайт, E: - 2 Гбайт. Форматируем диск C: с переносом на него системных файлов, в процессе форматирования убеждаемся, что диск C: имеет размер 2 Гбайт. Обновляем код MBR командой FDISK /MBR, вынимаем дискету, перезагружаем компьютер, убеждаемся, что ОС загрузилась, диски C:, D: и E: доступны и имеют размеры 2, 6 и 2 Гбайт. Запускаем NDD и убеждаемся, что ошибок ни в таблице разделов, ни на дисках нет. Разбиение закончено.
Теперь таблица разделов при просмотре через DISKEDIT выглядит так:
 Starting location Ending location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sector Sectors Sectors
EXTEND No 1 0 1 254 972 63 63 15631182 ; Расширенный раздел
FAT32x Yes 0 973 1 254 1023 63 15631245 3903795 ; Первичный раздел (C :)
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0
Если поставить курсор на строку с записью о расширенном разделе и нажать Enter, то DISKEDIT автоматически перенесёт просмотр в сектор, на который указывает адрес начала раздела (для первичного раздела это будет BR, для расширенного - элемент цепи разделов). В нашем случае мы увидим такое содержимое элемента цепи разделов:
 Starting location Ending location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sector Sectors Sectors
FAT32x No 2 0 1 254 728 63 63 11711259 ; Логический раздел (D :)
EXTEND No 0 729 1 254 972 63 11711322 3919923 ; Расширенный раздел
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0
Продолжим движение по цепи разделов в следующий элемент:
 Starting location Ending location Relative Number of
System Boot Side Cylinder Sector Side Cylinder Sector Sectors Sectors
FAT32x No 1 729 1 254 972 63 63 3919860 ; Логический раздел (E :)
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0
unused No 0 0 0 0 0 0 0 0
Очередной элемент цепи не содержит записи о расширенном разделе. Цепь закончилась.