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

Enregistrement de démarrage à domicile - Enregistrement de démarrage principal (MBR)

Premièrement, définissons la terminologie. Les mots dans le titre de l'article sont souvent compris comme deux choses différentes, qui dans certains cas peuvent être équivalentes, et dans d'autres cas non. Le premier concept est Master Boot Record lui-même. Il s’agit d’un enregistrement (code de programme et données) chargé en mémoire à partir du disque dur et identifiant les partitions logiques, détermine la partition active et télécharge un enregistrement d’amorçage (Boot Record - BR), qui continue à lancer le système d’exploitation. Et le second concept est le secteur de démarrage, le secteur de démarrage principal (MBS) est un secteur situé sur le cylindre 0, le plan (la tête) 0 et le numéro 1. Dans la plupart des cas, MBS contient tout le code nécessaire et toutes les données. Son contenu est donc MBR Cependant, il existe des cas (que nous examinerons à la fin de l'article) où le code et les données ne tiennent pas dans un secteur (il n'y a tout simplement pas assez d'espace ou pour des raisons de sécurité), puis le code de ce secteur garantit que les autres secteurs sont chargés en mémoire. Dans ce cas, le MBR est la collection de tous les secteurs qui doivent être chargés et le MBS n’est que le premier secteur.
Cependant, nous commençons par le cas où MBR et MBS sont identiques, et nous les appellerons le terme plus connu et plus répandu de MBR. S’écartant un peu du sujet, je noterai qu’un tel MBR (fournissant le téléchargement d’un système d’exploitation et occupant uniquement des MBS) est généralement appelé le terme MBR générique.
En général, le MBR est apparu sur les disques durs à partir de la version 3.0 de MS DOS. Dans les versions précédentes, le disque dur était formaté en tant que disquette et le BR était situé dans le premier secteur. En conséquence, le disque était une partition unique et ne pouvait pas être divisé en parties logiques. Cependant, avec les tailles de disques qui étaient ensuite libérées, il était sans importance.
La taille du secteur sur le disque dur est de 512 octets. Cet espace est suffisant pour accueillir tout le nécessaire, le code et les données. Cependant, une seule structure doit obligatoirement être présente - c'est la signature. Ce mot est une séquence spéciale, strictement établie, de 2 octets avec des valeurs hexadécimales 55h AAh, qui est écrite dans les 2 derniers octets du secteur et, par conséquent, a un décalage par rapport au début du secteur 1FEh. Si au moins un des deux derniers octets a une valeur différente, il est supposé que le premier secteur n'est pas un MBR et ne contient pas d'informations significatives. Si l'ordinateur au démarrage, après avoir lu le premier secteur, ne trouve pas la signature correcte, il ne transférera pas le contrôle au code qui s'y trouve, même s'il est correct, et affichera un message indiquant que l'enregistrement de démarrage principal n'a pas été trouvé. Ou va essayer de le trouver sur d'autres périphériques - par exemple, sur une disquette. Légèrement différent du sujet, je remarque que BR contient également la signature 55h AAh dans les deux derniers octets.
Eh bien, si nous partions de la queue, passons du début au secteur. Avant la signature, près de celle-ci, il y a 4 blocs de données de 16 octets chacun (respectivement, avec un décalage par rapport au début du secteur 1BEh, 1CEh, 1DEh, 1EEh). La combinaison de ces blocs est appelée table de partition, table de partition (PT), et chaque entrée individuelle est appelée un élément de la table de partition (entrée de table de partition) ou simplement une partition (partition). Ces 16 octets sont suffisants pour indiquer toutes les caractéristiques nécessaires de la section, à savoir: type de section, indication de l'activité de la section, sections de secteur de début et de fin au format Cylindre (voie) - Tête (côté) - Secteur (Cylindre - Tête - Secteur, SHC) , le nombre relatif du premier secteur (par rapport au MBR) et le nombre de secteurs de la section.
Le code de programme occupe le reste de l'espace du secteur. Il permet d'analyser le PT, de rechercher la partition active, de charger le BR dans cette mémoire et de lui transférer le contrôle. Comme il est facile à calculer, le code est 512 - 4 * 16 - 2 = 446 octets. Cet espace est assez abondant pour effectuer ces actions.
Ainsi, la structure générale du MBR peut être représentée par le tableau suivant:
  Longueur de décalage Description
 000h 446 code de 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:
  Longueur de décalage Description
 00h 1 Signe d'activité de section
 01h 1 Début de la section - tête
 02h 1 Début de la section - secteur (bits 0-5), piste (bits 6,7)
 03h 1 Début de la section - piste (les bits hauts 8.9 sont stockés dans l'octet de numéro de secteur)
 04h 1 Code du 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 section - piste (les bits hauts 8.9 sont stockés dans l'octet de numéro de secteur)
 08h 4 Décalage du premier secteur
 0Ch 4 Nombre de secteurs de partition
Le code de type de partition est un identifiant à un octet. Si sa valeur est 00h, alors on considère que cet élément PT ne contient pas de données sur la partition et son contenu est ignoré. Toute valeur non nulle signifie qu'il existe une partition d'un certain type dans l'espace spécifié. Certaines valeurs indiquent uniquement le type de partition, certaines correspondent à plusieurs types possibles et la définition d'un type spécifique est attribuée au système d'exploitation, les autres sont réservées pour une utilisation future. Un ouvrage de référence relativement complet et à jour sur les codes de type de partition est disponible dans Ralf Brown Interrupt List dans le fichier INTERRUPT.D, table 00652, présent dans l’archive (au moment de la rédaction) inter61a.zip à l’ adresse http://www.pobox.com/ ~ ralf / files.html . Ici, je vais donner un tableau des types de partitions créées par les systèmes d'exploitation Windows 9x et Windows NT / 2000 / XP:
  Type de section de code
 01h FAT 12 bits
 04h FAT 16 bits jusqu'à 32 Mo
 05h Section avancée
 06h FAT 16 bits sur 32 Mo
 07h Windows NT NTFS (et quelques autres - le type est déterminé par le contenu du BR)
 FAT 0Bh 32 bits
 FAT 0Ch 32 bits utilisant le contrôle étendu INT13
 0Eh LBA VFAT (identique à 06h, utilisant le contrôle étendu INT13)
 0Fh LBA VFAT (identique à 05h, avec le contrôle étendu INT13)
 17h partition cachée NTFS
 1Bh Section cachée de FAT 32 bits (identique à 0Bh)
 Section cachée 1Ch de FAT 32 bits utilisant le contrôle avancé INT13 (identique à 0Ch)
 1Eh Partition cachée LBA VFAT (identique à 06h, utilisant les contrôles étendus INT13)
 Section 86h FAT-16 de la matrice de bandes Windows NT
 87h Partition NTFS de la baie Windows NT
 B6h Partition maître en miroir de FAT-16 Windows NT
 B7h Partition NTFS maître en miroir Windows NT
 Partition C6h FAT-16 esclave miroir Windows NT
 C7h NTFS Windows NT Miroir Partition Esclave
Un signe d'activité de section - c'est-à-dire Un signe que le système d'exploitation doit être chargé à partir de cette section - il peut avoir une valeur de 80h (la partition est active) et de 00h (la partition n'est pas active). En général, le nombre de partitions actives ne devrait 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 contrôle du transfert est prise par le code du chargeur. Par conséquent, la valeur d'octet de l'indication de charge est un axiome uniquement pour les chargeurs standard.
Le bloc de trois octets des adresses de début et de fin de section a un format identique. Ici, en fait, le conditionnement des valeurs est utilisé pour qu'elles aient un volume minimal. Le format du package est parfaitement compatible avec la manière dont ces données sont transférées dans les procédures permettant de travailler avec un disque dur (Int 13h) situé dans le BIOS de l'ordinateur. Par conséquent, les coûts de traitement informatique sont minimes. Dans ce cas, les cylindres et les pistes sont numérotés, à partir de zéro, et les secteurs - pour une raison quelconque, à partir de la première. Je ne sais pas pourquoi - c'est arrivé historiquement.
Le secteur dans lequel l'adresse du début de la section contient un enregistrement spécial appelé enregistrement de démarrage (BR). Nous examinerons son objectif et sa composition dans un article séparé.
Le décalage du premier secteur de la partition est en fait le numéro de ce secteur si tous les secteurs du disque dur sont renumérotés en commençant par 0 (selon la numérotation utilisée par Int 25h / 26h) dans l'ordre croissant, d'abord par secteur d'une piste, puis dans l'ordre croissant des nombres d'en-tête et, enfin, cylindres. Et quel est le nombre de secteurs dans la section - il est clair sans explication.
Naturellement, toutes ces valeurs sont connectées par de simples dépendances, car les informations qu'elles contiennent sont redondantes. Par conséquent, je vais donner les formules de dépendance entre eux.
Donc, si on note:
C M - le cylindre sur lequel se trouve le MBR;
H M - le chemin sur lequel le MBR est situé;
S M - le secteur dans lequel le MBR est situé;
C S , H S , S S , C E , H E , S E - idem pour les secteurs du début (S) et de la fin (E) de la section;
H H - le nombre de pistes du disque dur;
S H - le nombre de secteurs sur une piste d'un disque dur
alors:
Le numéro de secteur absolu dans lequel se trouve le 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:
Num S = C S * H H * S H + H S * S H + S S -1
Numéro de secteur absolu à la fin de la section:
Num E = C E * H H * E H + H E * E H + E E -1
Décalage du premier secteur de la section:
Décalage S = Num S - Num PT
Nombre de secteurs de partition:
Montant = Num E - Num S +1
De plus, il ressort clairement des formules ci-dessus que le nombre de pistes ayant un cylindre d’un disque dur et le nombre de secteurs sur chaque piste. Ces valeurs dépendent à la fois de la géométrie du disque dur et du mode de diffusion sélectionné dans les paramètres du BIOS. Par conséquent, un disque divisé en sections dans un mode de diffusion peut se révéler illisible lorsque le mode de diffusion change.
Pour les lecteurs IDE, il existe plusieurs modes de traduction:
CHS (Cylinder-Head-Sector) - tandis que la géométrie du disque est considérée comme ce qu’elle dit à l’ordinateur. Ne vous y trompez pas: la plupart des disques n'ont pas du tout de géométrie réelle. Cependant, le contrôleur, qui fait partie du disque dur, effectue lui-même les conversions nécessaires, et sa manière de procéder n’est pas essentielle 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é de disque maximale disponible dans cette diffusion sans l'utilisation de programmes spéciaux est de 504 Mo . Pendant les opérations de disque, l'adresse du secteur est transmise sans changement par le BIOS de l'ordinateur au contrôleur de disque dur.
LBA (Logical Block Addressing) - Dans ce mode de traduction, la géométrie du disque utilisée n’est pas celle rapportée par le BIOS de l’ordinateur. Le format est réduit lorsque le nombre de cylindres ne dépasse pas 1024 et que le nombre de secteurs par piste est de 63. Le nombre de pistes indiqué ici dépend du BIOS de l'ordinateur et de la capacité du disque dur; il peut être 16, 64, 128 ou 255, les dernières versions du BIOS étant généralement les mêmes. utilisez un transtypage en 255 (0-254) pistes, quelle que soit la taille du lecteur. Lors de l'accès à un disque, les numéros de cylindre, de tête et de secteur transférés dans les émissions LBA sont recalculés dans le numéro de secteur absolu. Ce sont ces informations qui sont transmises au BIOS de l'ordinateur par le contrôleur de disque dur pour effectuer l'opération. Avec un lecteur de plus de 8 Go, le nombre de cylindres est supérieur à 1024. Par conséquent, sur les ordinateurs qui ne prennent pas en charge le mode Int 13h avancé, sans installer de logiciel spécial, l’espace au-delà des limites de 8 Go n’est pas disponible (quel que soit le mode de diffusion). Parfois, cependant, il est utile de mettre à jour le BIOS de l'ordinateur.
LARGE ou ECHS (Extended CHS) - dans ce mode de traduction, le nombre de cylindres est réduit à une valeur inférieure à 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 qui ne change pas. Toutefois, pour la plupart des lecteurs modernes, le nombre de secteurs par piste (selon les assurances du contrôleur de lecteur) est de 63. La capacité maximale disponible sur les ordinateurs qui ne prennent pas en charge le mode avancé Int 13h dépend du nombre réel de pistes, mais ne dépasse pas 8 Go (par exemple, si le disque a 16 pistes, puis en LARGE, leur diffusion peut être 16, 32, 48 ... 240, mais pas 255, puisque 255 n’est pas un multiple de 16, mais le volume maximum disponible est 1024 * 240 * 63 * 512 / (1024 3 ) = 7,38 Go).
Lorsque vous utilisez la traduction LBA ou LARGE en raison de l'arrondissement des valeurs entières, plusieurs secteurs à la fin du lecteur peuvent «tomber» de l'espace décrit et devenir indisponibles. Cependant, les pertes sont généralement petites.
Quant aux lecteurs SCSI, ils fonctionnent toujours en mode de diffusion LBA. Au lieu de cela, le contrôleur SCSI représente la géométrie du lecteur conformément aux exigences de la diffusion LBA et lors de l'accès au disque lui-même, il transmet l'adresse absolue du secteur. Naturellement, c'est le BIOS du contrôleur SCSI qui est chargé d'effectuer les recalculs 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. Toutefois, cela ne signifie pas que le nombre maximal de partitions dans lesquelles le lecteur peut être divisé est de quatre. Pour surmonter cet obstacle, un type spécial de partition portant le code 05h a été introduit - Partition étendue.
La partition étendue est très différente de tous les autres types de partition. Premièrement, il ne décrit pas la partition, mais la zone d’espace de stockage dans laquelle se trouvent d’autres sections. En même temps, le nombre de sections est théoriquement illimité. Certes, les sections situées dans cette zone sont quelque peu «limitées en droits». La principale limitation réside dans le fait qu’elles ne peuvent pas être actives (ou plutôt que cela peut être fait de manière à ce que le système d’exploitation soit chargé à partir d’une telle partition, mais les ressources en personnel de la plupart des systèmes existants). Le système d'exploitation ne le permet pas, vous devez utiliser des outils spéciaux). Deuxièmement, dans le MBR, il ne devrait y avoir qu'une seule entrée sur la partition étendue. Au lieu de cela, ils peuvent être faits plus (au moins tous les quatre), mais comment le système d’exploitation se comportera-t-il, étant donné que cela est difficile à prévoir. Par exemple, MS-DOS 6.20 ignore simplement toutes les partitions étendues, à l'exception de la première de la liste, comme s'il n'y en avait aucune. 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, ce n'est pas le BR. Il existe en fait un autre MBR qui a une signature et une table de partition, mais ne contient généralement aucun code de programme (généralement, le secteur contenant la table de partition, mais ne contenant pas le code de démarrage, est appelé Abstract MBR). Cependant, puisqu'il n'y a pas de partitions actives, le code est inutile. Il y a généralement une ou deux entrées dans la table de partition d'un tel secteur. La première décrit la partition habituelle (Partition), et cette section doit être complètement à l'intérieur de l'espace de la partition étendue. Si une partition ordinaire n'occupe pas tout l'espace, un deuxième élément apparaît dans la table des partitions, qui décrit l'espace restant en tant que partition étendue. Dans le secteur suivant, une section est également décrite de la même manière et, s'il reste de l'espace, il existe une autre entrée de partition étendue. Et ainsi de suite jusqu'à la fin de l'espace. Pratiquement toutes les entrées de partitions étendues sont une chaîne de partitions étendues, dans laquelle des morceaux de partitions ordinaires sont épinglés à partir de l'espace disque jusqu'à épuisement de l'espace disque. Une erreur dans l'un des éléments de cette chaîne entraînera sa désintégration, de sorte que tous les enregistrements après la rupture ne seront pas trouvés par le système d'exploitation et que l'espace occupé par celui-ci sera considéré comme vide.
Lors du remplissage de la chaîne, le système d'exploitation suit généralement plusieurs règles. Tout d’abord, la section habituelle décrite dans le «lien» suivant de la chaîne ne doit pas être située au milieu, car pour décrire les deux espaces résultants d’espace non alloué, vous devez saisir deux entrées dans le PT de cet élément relatif à deux partitions étendues différentes, et, comme je l’ai dit précédemment, le système d’exploitation. ignorer 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 concernant une partition normale est créé de sorte qu'il occupe la zone initiale de la partition étendue et que l'élément suivant de la chaîne de partition soit le reste.
Quels problèmes peuvent survenir avec le contenu du MBR? Tout d’abord, la destruction physique ou logique, c’est-à-dire dommages à la surface ou autre problème mécanique ou destruction de la balise asservie, rendant impossible la lecture de ce secteur à partir du disque. Cependant, de tels cas sortent du cadre de notre examen. Et le deuxième problème, le plus fréquemment rencontré, 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 signature. Dans le même temps, le système d'exploitation estime que le secteur contient des informations aléatoires, des “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 restaurer, il suffit simplement de restaurer la signature par tout moyen d’accès direct aux secteurs du disque (le plus populaire est DISKEDIT du paquet NORTON UTILITIES). Cependant, la plupart des systèmes d'exploitation doivent être redémarrés, car ce dernier lit généralement les informations de partitionnement sur le disque au début et ne prend pas ses modifications en compte plus tard dans le processus.
Un cas plus compliqué est la destruction du code. Dans le même temps, la possibilité de démarrer le système d’exploitation à partir du lecteur est perdue et la tentative de téléchargement se termine généralement avec le blocage de l’ordinateur. En même temps, si vous démarrez à partir d'un autre lecteur (un autre disque dur, une disquette, un CD-ROM amorçable, etc.), toutes les informations du lecteur sont disponibles. Dans ce cas, il est recommandé d'utiliser les outils habituels pour récupérer le code du chargeur d'amorçage disponible dans chaque système d'exploitation. Par exemple, dans Windows 9x, le programme FDISK.EXE est utilisé à cette fin, lancé avec la clé / MBR.
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 lorsque différents systèmes d'exploitation sont installés de manière séquentielle sur le même lecteur dans une ou plusieurs partitions. Lors de l’installation, tout système d’exploitation veut avoir son propre code dans le MBR, mais tout le monde ne se soucie pas de conserver le code qui était auparavant dans le secteur. Par exemple, Windows 9x écrase le code du chargeur de démarrage sans avertir l'utilisateur et détruire définitivement l'ancien contenu. Cependant, un tel cas n’est tout simplement pas très effrayant, car tous les chargeurs de systèmes d’exploitation sont très similaires. Le problème se pose si un logiciel tiers a été utilisé pour partitionner le lecteur en sections, telles que EZ-drive, ODM ou, par exemple, SpeedStore, pour lesquelles les concepts de MBR et de MBS ne sont pas équivalents. En raison d'une idéologie de chargement différente (dont nous parlerons plus loin), le code situé dans MBS remplit une fonction différente, à savoir la recherche et le chargement d'une partie du code MBR situé dans d'autres secteurs du disque. Le remplacement du code entraîne la perte de cette fonction et pose par conséquent divers problèmes. L'utilisateur doit faire très attention s'il utilise 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, les problèmes ne viennent jamais seuls et les trois composants du MBR sont le plus souvent détruits, mais c’est précisément la destruction du PT qui entraîne les conséquences les plus graves, car elle rend impossible l’accès aux informations stockées sur le lecteur. PT peut être détruit complètement, et peut-être partiellement - c'est-à-dire une partie des éléments est détruite et les autres sont intacts. Il existe des cas où le PT situé dans le MBR est intact et que l'enregistrement des partitions dans l'un des liens de la chaîne de partition étendue est détruit. Cependant, étant donné que la structure MBR et la structure sont absolument identiques (à l'exception du fait qu'il n'y a pas de code dans les éléments de partition étendue), la technique de récupération est la même dans les deux cas.
Il existe un nombre suffisant de programmes pouvant récupérer les TP détruits. La qualité de leur travail est différente et dépend principalement de la difficulté de partitionner le disque, de la connaissance par le programme de tous les types de partitions qui se trouvaient sur le disque et de l’endommagement des PT dans d’autres secteurs, en particulier dans les partitions BR. Cependant, nous ne cherchons pas de solution de facilité, et si votre patron ne vous cache pas la tête en criant: «Plutôt, allez vite, sautez, imprimez-moi un formulaire, je suis en retard!», Vous aurez beaucoup plus de plaisir si vous êtes seul, sans programme automatique en utilisant uniquement vos connaissances, vous pouvez récupérer toutes les informations. Vous pouvez même simplement faire toutes les recherches nécessaires, obtenir tous les nombres qui doivent être écrits dans PT, puis lancer le programme de récupération et s’assurer ensuite que tout est calculé correctement. Ou peut-être même corriger les résultats de son travail si elle ne travaillait pas à 100%.
Donc, pour le travail, il nous faut: une disquette de démarrage avec n’importe quel DOS, sur laquelle le fichier DISKEDIT.EXE est copié, un crayon, du papier, une calculatrice (il existe cependant une calculatrice dans DISKEDIT) et quelques cerveaux. Bien entendu, il est souhaitable que DOS et DISKEDIT soient plus récents. J'utilise DOS 7.10 sous Windows 98 SE et DISKEDIT depuis le package NORTON UTILITIES 2002. Nous n'avons besoin d'aucun pilote à ce stade, sauf lorsque le lecteur est connecté à l'ancien contrôleur SCSI et qu'il n'est pas visible sans charger le pilote. Vous pouvez télécharger le pilote de la souris - ce sera un peu plus pratique. Maintenant la bagatelle principale - à part les fichiers spécifiés sur la disquette, il ne devrait plus rien y avoir! 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 du disque ne sera modifiée jusqu'à ce que nous le demandions explicitement. Une disquette en général serait inscriptible.
Démarrez à partir d'une disquette. Exécutez DISKEDIT.EXE. Après le chargement, appuyez sur les touches Alt-D (ou via le menu Objet - Entraînement). Une fenêtre avec les unités de disque disponibles s’affiche. Tout d'abord, nous soulignons qu'il nous faut des périphériques physiques (disques physiques), puis nous sélectionnons le disque souhaité (par exemple, 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 d'affichage. C'est ce dont nous avons besoin.
Nous demandons d’abord au programme d’analyser le disque et de trouver tous les secteurs pouvant être des éléments de la chaîne de partition étendue ou BR. Et bien que, dans le même temps, DISKEDIT recherche simplement les secteurs qui ont une signature et n’analysent pas le contenu (ce que nous entreprenons), les résultats peuvent grandement faciliter le travail. La vérité devra être patiente - le processus n’est pas rapide et, en outre, chaque secteur découvert devra être pris sur un crayon, mais le jeu en vaut la chandelle.
Donc, Outils - Trouver un objet - Partition / Boot. Allons-y Chaque fois qu’un secteur comportant une signature est rencontré, la recherche s’arrête, un vidage de secteur s’affiche à l’écran et, dans le coin inférieur droit, se trouve le numéro du secteur. Ce sont ces adresses et doivent prendre un crayon. Toutefois, si le partitionnement d’un disque en sections n’utilisait pas de méthodes particulièrement sophistiquées, tous les secteurs qui nous intéressent seront situés du côté zéro ou du premier côté du premier secteur, c.-à-d. Côté 0 ou 1, secteur 1. Les secteurs restants, par exemple certains Cyl 12, côté 4, secteur 52 peuvent être ignorés sans risque - ceci est un hasard. Certes, nous obtenons le nombre absolu du secteur, mais ce n’est pas effrayant. Pour les secteurs "corrects", le nombre sera complètement divisé par le nombre de secteurs par piste, généralement 63 (les autres valeurs sont maintenant beaucoup moins communes - 17, 26, 40, 56, donc plus tard dans le texte). Partout où je parlerai du nombre de secteurs 63, gardez à l’esprit que vous devrez peut-être utiliser un numéro différent sur votre lecteur particulier). Et nous pouvons regarder cette figure à travers le menu (Info - Informations sur le lecteur). Malheureusement, le nombre de côtés et de cylindres peut être erroné (ne correspondant pas à l'émission utilisée), mais ce n'est pas grave non plus. Après avoir noté le numéro du prochain secteur, nous continuons la recherche (vous pouvez utiliser le menu Outils - Chercher à nouveau, vous pouvez simplement appuyer sur Ctrl-G). Et ainsi jusqu'à ce que nous obtenions le message que l'objet n'a pas été trouvé. En ce moment, nous avons (ou plutôt sur papier) tous les nombres de secteurs dans lesquels il y a une signature.
Теперь обрабатываем список, отсеивая явно случайные номера (это которые не делятся на 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
L'élément de circuit suivant ne contient pas d'enregistrement de partition étendue. La chaîne est finie.