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

Home Boot Record - Master Boot Record (MBR)

Zuerst definieren wir die Terminologie. Die Wörter im Titel des Artikels werden oft als zwei verschiedene Dinge verstanden, die in einigen Fällen gleichwertig sein können und in einigen Fällen nicht. Das erste Konzept ist Master Boot Record. Hierbei handelt es sich um einen Datensatz (Programmcode und Daten), der von der Festplatte in den Arbeitsspeicher geladen wird und die Identifizierung der logischen Partitionen auf diesem Datenträger ermöglicht. Er ermittelt die aktive Partition und lädt den Startdatensatz (Boot Record - BR) von diesem herunter. Anschließend wird das Betriebssystem (OS) gestartet. Das zweite Konzept ist der Boot-Sektor, der Master-Boot-Sektor (MBS) ist ein Sektor, der sich auf Zylinder 0, Ebene (Kopf) 0 und mit der Nummer 1 befindet. In den meisten Fällen enthält MBS den gesamten erforderlichen Code und alle Daten, daher ist der Inhalt MBR Es gibt jedoch Fälle (die wir am Ende des Artikels betrachten werden), in denen der Code und die Daten nicht in einen Sektor passen (es gibt einfach nicht genügend Speicherplatz oder aus Sicherheitsgründen), und der Code dieses Sektors stellt dann sicher, dass die anderen Sektoren in den Arbeitsspeicher geladen werden. In diesem Fall ist der MBR die Sammlung aller Sektoren, die geladen werden müssen, und MBS ist nur der erste Sektor.
Wir beginnen jedoch mit dem Fall, dass MBR und MBS ein und dasselbe sind, und wir nennen sie den bekannteren und weit verbreiteten Begriff MBR. Etwas vom Thema abweichend, stelle ich fest, dass ein solcher MBR (der den Download eines beliebigen Betriebssystems bereitstellt und nur MBS belegt) gewöhnlich als der Begriff "generischer MBR" bezeichnet wird.
Im Allgemeinen wurde der MBR ab MS DOS Version 3.0 auf Festplatten angezeigt. In früheren Versionen war die Festplatte als Diskette formatiert und der BR befand sich im ersten Sektor. Dementsprechend war die Platte eine einzelne Partition und konnte nicht in logische Teile unterteilt werden - bei den Festplattengrößen, die dann freigegeben wurden, war dies jedoch unerheblich.
Die Sektorgröße auf der Festplatte beträgt 512 Byte. Dieser Platz reicht aus, um alles Notwendige unterzubringen - und den Code und die Daten. Dort muss jedoch notwendigerweise nur eine Struktur vorhanden sein - das ist die Signatur. Dieses Wort ist eine spezielle, streng festgelegte Folge von 2 Bytes mit hexadezimalen Werten 55h AAh, die in die letzten 2 Bytes des Sektors geschrieben ist und dementsprechend vom Beginn des Sektors 1FEh versetzt ist. Wenn sich mindestens eines der letzten zwei Bytes im Wert unterscheidet, wird davon ausgegangen, dass der erste Sektor kein MBR ist und keine aussagekräftigen Informationen enthält. Wenn der Computer beim Start nach dem Lesen des ersten Sektors die richtige Signatur nicht findet, überträgt er die Kontrolle nicht auf den dort befindlichen Code, auch wenn er korrekt ist, und zeigt eine Meldung an, die besagt, dass der Hauptstartdatensatz nicht gefunden wurde. Oder Sie versuchen, es auf anderen Geräten zu finden, beispielsweise auf einer Diskette. Etwas abweichend vom Thema stelle ich fest, dass BR auch die Signatur 55h AAh in den letzten zwei Bytes enthält.
Nun, wenn wir vom Schwanz aus anfangen, dann gehen wir zum Anfang des Sektors. Vor der Signatur in der Nähe befinden sich 4 Datenblöcke mit jeweils 16 Bytes (jeweils mit einem Versatz vom Beginn des Sektors 1BEh, 1CEh, 1DEh, 1EEh). Die Kombination dieser Blöcke wird Partitionstabelle, Partitionstabelle (PT) genannt, und jeder einzelne Datensatz wird als Element der Partitionstabelle (Partition Table Entry) oder einfach als Partition (Partition) bezeichnet. Diese 16 Bytes reichen aus, um alle notwendigen Merkmale des Abschnitts anzugeben, nämlich: Abschnittsart, Angabe der Abschnittsaktivität, Anfangs- und Endsektorbereich im Format Zylinder (Spur) - Kopf (Seite) - Sektor (Zylinder - Kopf - Sektor, CHS) die relative Anzahl des ersten Sektors (relativ zum MBR) und die Anzahl der Sektoren in der Sektion.
Der Rest des Sektorraums wird durch den Programmcode belegt, der PT analysiert, nach der aktiven Partition sucht, das BR dieser Partition in den Speicher lädt und die Steuerung an diese überträgt. Da es einfach zu berechnen ist, lautet der Code 512 - 4 * 16 - 2 = 446 Bytes. Dieser Speicherplatz ist reichlich genug, um diese Aktionen auszuführen.
Die allgemeine MBR-Struktur kann also durch die folgende Tabelle dargestellt werden:
  Offset Länge Beschreibung
 000h 446 Ladercode
 1BEh 64 Partitionstabelle
  16 Abschnitt 1
 1CEh 16 Abschnitt 2
 1DEh 16 Abschnitt 3
 1EEh 16 Abschnitt 4
 1FEh 2 Unterschrift (55h AAh)
Jeder 16-Byte-Block, der einen Abschnitt beschreibt, hat die folgende Struktur:
  Offset Länge Beschreibung
 00h 1 Zeichen der Abschnittsaktivität
 01h 1 Beginn des Abschnitts - Kopf
 02h 1 Start des Abschnitts - Sektor (Bits 0-5), Spur (Bits 6,7)
 03h 1 Beginn des Abschnitts - Spur (High-Bits 8,9 werden im Sektornummernbyte gespeichert)
 04h 1 Partitionstypcode
 05h 1 Ende des Abschnitts - Kopf
 06h 1 Ende des Abschnitts - Sektor (Bits 0-5), Spur (Bits 6,7)
 07h 1 Ende des Abschnitts - Spur (High-Bits 8,9 werden im Sektornummernbyte gespeichert)
 08h 4 Offset des ersten Sektors
 0Ch 4 Anzahl der Partitionssektoren
Der Partitionstypcode ist eine Einzelbyte-Kennung. Wenn der Wert 00h ist, wird davon ausgegangen, dass dieses PT-Element keine Partitionsdaten enthält, und sein Inhalt wird ignoriert. Jeder Wert ungleich Null bedeutet, dass sich im angegebenen Bereich eine Partition eines bestimmten Typs befindet. Einige Werte geben eindeutig den Typ der Partition an, andere entsprechen mehreren möglichen Typen, und die Definition eines bestimmten Typs wird dem Betriebssystem zugewiesen, der Rest ist für die zukünftige Verwendung reserviert. Ein relativ umfangreiches und aktuelles Nachschlagewerk zu Partitionstypcodes finden Sie in der Ralf Brown-Interrupt-Liste in der Datei INTERRUPT.D, Tabelle 00652, die im Archiv (zum Zeitpunkt des Schreibens) inter61a.zip unter http://www.pobox.com/ enthalten ist. ~ ralf / files.html . Hier werde ich eine Tabelle der Arten von Partitionen geben, die von den Betriebssystemen Windows 9x und Windows NT / 2000 / XP erstellt werden:
  Code-Abschnittstyp
 01h 12-Bit-FAT
 04h 16-Bit-FAT bis zu 32 MB
 05h Fortgeschrittener Abschnitt
 06h 16-Bit-FAT über 32 MB
 07h Windows NT NTFS (und einige andere - der Typ wird durch den Inhalt der BR bestimmt)
 0Bh 32-Bit-FAT
 0Ch 32-Bit-FAT mit der erweiterten Steuerung INT13
 0Eh LBA VFAT (wie 06h mit erweiterter INT13-Steuerung)
 0Fh LBA VFAT (wie 05h, mit der erweiterten Steuerung INT13)
 17h Versteckte NTFS-Partition
 1Bh Versteckter Abschnitt von 32-Bit-FAT (wie 0Bh)
 1Ch Versteckter Abschnitt der 32-Bit-FAT mit der erweiterten Steuerung von INT13 (wie 0Ch)
 1Eh Versteckte LBA-VFAT-Sektion (wie 06h mit erweiterter INT13-Steuerung)
 86h FAT-16-Abschnitt des Windows NT-Stripe-Arrays
 87h NTFS-Partition des Windows NT-Stripe-Arrays
 B6h Gespiegelte Masterpartition von FAT-16 Windows NT
 B7h gespiegelte Master-NTFS-Partition Windows NT
 C6h FAT-16 Windows NT Mirror-Slave-Partition
 C7h NTFS Windows NT Mirror Slave
Ein Zeichen der Abschnittsaktivität - d. Ein Zeichen, dass das Betriebssystem aus diesem Abschnitt geladen werden soll - es kann Werte von 80h (Partition ist aktiv) und 00h (Partition ist nicht aktiv) haben. Im Allgemeinen sollte die Anzahl der aktiven Partitionen nicht mehr als 1 betragen (wie können Sie eine Auswahl treffen?). Wenn keine aktiven Partitionen vorhanden sind, kann das Betriebssystem nicht von dieser Festplatte geladen werden. Andere Werte werden als fehlerhaft betrachtet und ignoriert. Die Übertragungssteuerungsentscheidung wird jedoch vom Ladercode getroffen, daher ist der Bytewert der Lastanzeige nur für Standardlader ein Axiom.
Der Drei-Byte-Block der Adresse des Anfangs und der Adresse des Abschnittsendes haben dasselbe Format. Tatsächlich wird hier die Verpackung von Werten verwendet, um ein Mindestvolumen zu haben. Das Verpackungsformat ist vollständig konsistent mit der Art und Weise, wie diese Daten an die im BIOS des Computers gespeicherten Prozeduren für Festplattenlaufwerke (Int 13h) übertragen werden. Aus diesem Grund sind die Rechenaufwand gering. In diesem Fall sind die Zylinder und Spuren von Null aus nummeriert und die Sektoren aus irgendeinem Grund von Anfang an. Ich weiß nicht warum - es geschah historisch
Der Sektor, auf den die Adresse des Anfangs des Abschnitts verweist, enthält einen speziellen Datensatz, den so genannten Boot Record (BR). Wir werden den Zweck und die Zusammensetzung in einem separaten Artikel betrachten.
Der Versatz des ersten Sektors der Partition ist tatsächlich die Nummer dieses Sektors, wenn alle Sektoren der Festplatte beginnend mit 0 (gemäß der von Int 25h / 26h verwendeten Nummerierung) in aufsteigender Reihenfolge neu nummeriert werden, zuerst nach Sektor einer Spur, dann in der Reihenfolge der Kopfanzahl und schließlich Zylinder. Und wie hoch ist die Anzahl der Sektoren in der Sektion - das ist ohne Erklärung klar.
Alle diese Werte sind natürlich durch einfache Abhängigkeiten miteinander verbunden, da die darin enthaltenen Informationen redundant sind. Deshalb werde ich die Formeln der Abhängigkeit zwischen ihnen angeben.
Wenn wir also bezeichnen:
C M - der Zylinder, auf dem sich der MBR befindet;
H M - der Pfad, auf dem sich der MBR befindet;
S M - der Sektor, in dem sich der MBR befindet;
C S , H S , S S , C E , H E , S E - dasselbe für die Sektoren des Anfangs (S) und des Endes (E) des Abschnitts;
H H - die Anzahl der Spuren auf der Festplatte;
S H - Die Anzahl der Sektoren auf einer Spur einer Festplatte
dann:
Die absolute Sektornummer, in der sich der PT befindet:
Num PT = C M * H H * SH + H M * SH + SM -1
Absolute Sektornummer des Abschnittsanfangs:
Num S = C S * H H * SH + H S * SH + S -1
Absolute Sektornummer am Ende des Abschnitts:
Num E = CE * HH * EH + HE * EH + EE -1
Offset des ersten Sektors der Sektion:
Versatz S = Num S - Num PT
Anzahl der Partitionssektoren:
Betrag = Num E - Num S +1
Aus den obigen Formeln ist außerdem klar, wie viele Spuren einen Zylinder einer Festplatte haben und wie viele Sektoren sich auf jeder Spur befinden. Diese Werte hängen sowohl von der Festplattengeometrie als auch vom Übersetzungsmodus ab, der in den BIOS-Einstellungen ausgewählt wurde. Daher kann sich eine in einem Broadcast-Modus in Abschnitte unterteilte Platte als unlesbar erweisen, wenn sich der Broadcast-Modus ändert.
Es gibt verschiedene Übersetzungsmodi für IDE-Laufwerke:
CHS (Cylinder-Head-Sector) - während die Geometrie der Platte als dasjenige betrachtet wird, was sie dem Computer sagt. Machen Sie keinen Fehler - die meisten Laufwerke haben überhaupt keine echte Geometrie. Der Controller, der Teil der Festplatte ist, führt jedoch die erforderlichen Transformationen selbst aus, und die Art und Weise, wie sie ausgeführt wird, ist für uns nicht wesentlich. Die maximale Anzahl von Zylindern beträgt 1024 (von 0 bis 1023), die Spuren sind 16 (von 0 bis 15), die Sektoren sind 63 (von 1 bis 63) und die in dieser Sendung maximal verfügbare Festplattenkapazität ohne die Verwendung von Spezialprogrammen beträgt 504 MB . Während des Festplattenvorgangs wird die Sektoradresse ohne Änderung vom BIOS des Computers an den Festplattencontroller übertragen.
LBA (Logical Block Addressing) - Dieser Übersetzungsmodus verwendet die falsche Plattengeometrie, die er dem BIOS des Computers mitteilt. Das Format wird reduziert, wenn die Anzahl der Zylinder 1024 nicht überschreitet und die Anzahl der Sektoren pro Spur 63 beträgt. Die angegebene Anzahl von Spuren hängt vom BIOS und der Festplattenkapazität des Computers ab und kann 16, 64, 128 oder 255 sein. Die neuesten BIOS-Versionen sind normalerweise verfügbar Verwenden Sie einen Cast auf 255 (0-254) Spuren unabhängig von der Größe des Laufwerks. Wenn auf eine Platte zugegriffen wird, werden die an die LBA-Rundsendungen übertragenen Zylinder-, Kopf- und Sektornummern in die absolute Sektornummer umgerechnet, und diese Informationen werden vom Festplattencontroller an das Computer-BIOS übermittelt, um die Operation auszuführen. Bei einem Laufwerk mit mehr als 8 GB liegt die Anzahl der Zylinder über 1024. Daher ist auf Computern, die die Arbeit des erweiterten Modus Int 13h nicht unterstützen, ohne dass spezielle Software installiert werden muss, der Speicherplatz außerhalb der Grenzen von 8 GB nicht verfügbar (unabhängig vom Broadcast-Modus). Manchmal hilft jedoch ein Computer-BIOS-Update.
LARGE oder ECHS (Extended CHS) - In diesem Broadcast-Modus wird die Anzahl der Zylinder auf einen Wert von weniger als 1024 reduziert, da die Anzahl der Spuren um ein Vielfaches ansteigt. Die gegebene Anzahl von Spuren ist streng genommen ein Vielfaches der tatsächlichen Anzahl von Sektoren pro Spur, die sich nicht ändern. Bei den meisten modernen Laufwerken beträgt die Anzahl der Sektoren pro Spur (gemäß den Laufwerkcontroller-Zusicherungen) 63. Die maximal verfügbare Kapazität auf Computern, die die Arbeit des erweiterten Int 13h-Modus nicht unterstützen, hängt von der tatsächlichen Anzahl der Spuren ab, jedoch nicht mehr als 8 GB (z hat 16 Spuren, dann kann in LARGE ihre Sendung 16, 32, 48 ... 240 sein, aber nicht 255, da 255 kein Vielfaches von 16 ist, aber das maximal verfügbare Volumen ist 1024 * 240 * 63 * 512 / (1024 3 ) = 7,38 GB).
Bei Verwendung von LBA- oder LARGE-Konvertierung aufgrund von Rundungen auf ganzzahlige Werte können mehrere Sektoren am Ende des Laufwerks aus dem beschriebenen Bereich herausfallen und nicht verfügbar sein. Die Verluste sind jedoch normalerweise gering.
Die SCSI-Laufwerke arbeiten immer im LBA-Broadcast-Modus. Der SCSI-Controller stellt vielmehr die Geometrie des Laufwerks gemäß den Anforderungen der LBA-Rundsendung dar. Wenn Sie auf die Festplatte selbst zugreifen, übergibt sie die absolute Sektoradresse an diese. Natürlich ist es das BIOS des SCSI-Controllers, das die notwendigen Neuberechnungen durchführt.
Gehen wir zurück zum MBR. Wie bereits erwähnt, enthält es 4 Datenblöcke zu den Elementen der Partitionstabelle. Dies bedeutet, dass maximal vier Partitionen im MBR beschrieben werden können. Dies bedeutet jedoch nicht, dass maximal vier Partitionen möglich sind, in die das Laufwerk aufgeteilt werden kann. Um diese Barriere zu überwinden, wurde eine spezielle Partition mit dem Code 05h eingeführt - Extended Partition.
Die erweiterte Partition unterscheidet sich sehr von allen anderen Partitionstypen. Erstens beschreibt es nicht die Partition, sondern den Bereich des Speicherplatzes, in dem sich andere Abschnitte befinden. Gleichzeitig ist die Anzahl der Abschnitte theoretisch unbegrenzt. Es stimmt, dass die Abschnitte, die sich in diesem Bereich befinden, in gewisser Weise "eingeschränkter Rechte" sind. Die wichtigste Einschränkung ist, dass sie nicht aktiv sein können (oder eher so, dass das Betriebssystem von einer solchen Partition geladen wird, jedoch die Personalressourcen der meisten vorhandenen Ressourcen) Das Betriebssystem lässt dies nicht zu, Sie müssen spezielle Tools verwenden. Zweitens sollte der MBR nur einen Eintrag auf der erweiterten Partition enthalten. Sie können eher mehr getan werden (zumindest alle vier), aber wie wird sich das Betriebssystem verhalten, nachdem es dies getroffen hat, ist es schwierig vorherzusagen. Beispielsweise ignoriert MS-DOS 6.20 einfach alle erweiterten Partitionen außer der ersten in der Liste, als ob es überhaupt keine gab. Drittens handelt es sich im Gegensatz zu anderen Arten von Abschnitten in dem Sektor, die in der Struktur als der Sektor am Anfang des Abschnitts eingetragen sind, nicht um BR. Es gibt tatsächlich einen anderen MBR, der eine Signatur und eine Partitionstabelle enthält, aber normalerweise keinen Programmcode enthält (normalerweise wird der Sektor, der die Partitionstabelle enthält, aber nicht den Bootcode enthält, als abstrakter MBR bezeichnet). Da jedoch keine aktiven Partitionen vorhanden sind, ist der Code unbrauchbar. In der Partitionstabelle eines solchen Sektors befinden sich normalerweise ein oder zwei Einträge. Im ersten Abschnitt wird die übliche Partition (Partition) beschrieben. Dieser Abschnitt muss sich vollständig innerhalb des Bereichs der erweiterten Partition befinden. Wenn eine reguläre Partition nicht den gesamten Speicherplatz belegt, wird in der Partitionstabelle ein zweites Element angezeigt, das den verbleibenden Speicherplatz als erweiterte Partition beschreibt. Im nächsten Sektor wird auch ein Abschnitt auf dieselbe Weise beschrieben. Wenn noch Platz vorhanden ist, wird auch ein Eintrag für erweiterte Partitionen aufgezeichnet. Und so geht es weiter, bis der Raum endet. In der Tat handelt es sich bei allen erweiterten Partitionseinträgen um eine erweiterte Partitionskette, in der normale Partitionen vom Festplattenspeicher aus festgehalten werden, bis der Speicherplatz aufgebraucht ist. Ein Fehler in einem Element dieser Kette führt zu dessen Auflösung. Infolgedessen werden alle Datensätze nach dem Bruch vom Betriebssystem nicht gefunden, und der vom Betriebssystem belegte Speicherplatz wird als leer betrachtet.
Beim Befüllen der Kette befolgt das Betriebssystem normalerweise mehrere Regeln. Der übliche Abschnitt, der im nächsten "Link" der Kette beschrieben wird, sollte sich nicht in der Mitte befinden. Um die resultierenden zwei nicht zugeordneten Speicherplätze zu beschreiben, müssen Sie im PT dieses Elements zwei Einträge über zwei verschiedene erweiterte Partitionen eingeben, und, wie ich bereits sagte, das Betriebssystem Ignorieren Sie alle diese Datensätze mit Ausnahme der ersten und als Ergebnis fällt ein Teil des Speicherplatzes aus der Aufteilung heraus. Zweitens wird in der Regel eine Aufzeichnung einer regulären Partition so erstellt, dass sie den Anfangsbereich der erweiterten Partition einnimmt, und das nächste Element der Partitionskette ist der Rest.
Welche Probleme können mit dem Inhalt des MBR auftreten? Erstens physikalische oder logische Zerstörung, d.h. Beschädigung der Oberfläche oder andere mechanische Probleme oder Zerstörung des Servo-Tags, wodurch es unmöglich wird, diesen Sektor von der Festplatte zu lesen. Solche Fälle liegen jedoch außerhalb unseres Rahmens. Das zweithäufigste Problem ist die Zerstörung aller oder eines Teils der in diesem Sektor enthaltenen Informationen, wodurch Partitionen entweder vom Betriebssystem nicht gefunden werden können oder ihre Parameter nicht korrekt bestimmt werden.
Der einfachste Fall ist die Signaturzerstörung. Gleichzeitig glaubt das Betriebssystem, dass der Sektor einige zufällige Informationen enthält, „Müll“, und das Laufwerk selbst ist überhaupt nicht in Abschnitte unterteilt und es gibt keine Informationen darüber. Zum Wiederherstellen reicht es aus, die Signatur nur durch direkten Zugriff auf die Plattensektoren wiederherzustellen (am häufigsten ist DISKEDIT aus dem NORTON UTILITIES-Paket). Die meisten Betriebssysteme müssen jedoch neu gestartet werden, da das Betriebssystem normalerweise die Partitionsinformationen auf der Festplatte beim Start liest und seine Änderungen später im Prozess nicht berücksichtigt.
Ein komplizierterer Fall ist die Zerstörung des Codes. Gleichzeitig geht die Fähigkeit, das Betriebssystem von der Festplatte aus zu starten, verloren, und der Downloadversuch endet normalerweise, wenn der Computer hängen bleibt. Wenn Sie von einem anderen Laufwerk (einer anderen Festplatte, Diskette, startfähigen CD-ROM usw.) starten, stehen gleichzeitig alle Informationen zum Laufwerk zur Verfügung. In diesem Fall wird empfohlen, die normalen Bootcode-Wiederherstellungstools zu verwenden, die in jedem Betriebssystem verfügbar sind. In Windows 9x wird beispielsweise das Programm FDISK.EXE für diesen Zweck verwendet, das mit der Taste / MBR gestartet wird.
Code-Zerstörung ist nicht so selten, wie es den Anschein hat. In der Regel tritt eine solche Störung auf, wenn verschiedene Betriebssysteme nacheinander auf demselben Laufwerk in einer oder verschiedenen Partitionen installiert werden. Bei der Installation möchte jedes Betriebssystem einen eigenen Code im MBR haben, aber nicht jeder kümmert sich darum, den Code zu pflegen, der zuvor im Sektor vorhanden war. Beispielsweise schreibt Windows 9x den Loader-Code, ohne den Benutzer zu benachrichtigen und alten Inhalt dauerhaft zu löschen. Ein solcher Fall ist jedoch nicht sehr beängstigend, da alle OS-Loader sehr ähnlich sind. Das Problem tritt auf, wenn Drittanbieter-Software verwendet wurde, um das Laufwerk in Abschnitte zu unterteilen, z. B. EZ-Laufwerk, ODM oder beispielsweise SpeedStore, für die die Konzepte von MBR und MBS nicht gleichwertig sind. Aufgrund einer anderen Boot-Ideologie (die wir später besprechen werden) führt der in MBS befindliche Code eine andere Funktion aus, nämlich das Suchen und Laden eines Teils des MBR-Codes, der sich in anderen Sektoren der Platte befindet. Das Ersetzen des Codes führt dazu, dass diese Funktion verloren geht, und es treten verschiedene Probleme auf. Der Benutzer sollte bei der Verwendung solcher Software-Tools sehr vorsichtig sein - die Wiederherstellung des Codes kann in solchen Fällen sehr schwierig sein.
Und der schwierigste und unangenehmste Fall ist die Zerstörung des Partitionstisches selbst. Wie Sie wissen, gibt es jedoch nie Probleme, und meistens werden alle drei Komponenten des MBR zerstört. Die Zerstörung von PT führt jedoch zu den schwerwiegendsten Folgen, da der Zugriff auf die auf dem Laufwerk gespeicherten Informationen unmöglich ist. PT kann vollständig und möglicherweise teilweise zerstört werden - d. H. Ein Teil der Elemente wird zerstört und der Rest ist intakt. Es gibt Fälle, in denen der im MBR befindliche PT intakt ist und der Datensatz von Partitionen in einem der Glieder der erweiterten Partitionskette zerstört wird. Da jedoch die MBR-Struktur und die Struktur absolut identisch sind (mit Ausnahme der Tatsache, dass in den Elementen der erweiterten Partition kein Code vorhanden ist), ist die Wiederherstellungsmethode in beiden Fällen gleich.
Es gibt eine ausreichende Anzahl von Programmen, die zerstörtes PT wiederherstellen können. Die Qualität ihrer Arbeit ist unterschiedlich und hängt hauptsächlich davon ab, wie schwierig es war, die Festplatte zu partitionieren, ob alle Arten von Partitionen, die sich auf der Festplatte befanden, dem Programm bekannt sind und ob PT in anderen Sektoren, insbesondere in BR-Partitionen, nicht beschädigt wird. Wir sind jedoch nicht auf der Suche nach einfachen Wegen und wenn Ihr Chef nicht über Ihren Kopf hängt und schreit: „Springt schneller, druckt mir ein Formular aus, ich bin spät im Urlaub!“, Sie werden viel mehr Freude haben, wenn Sie alleine sind, ohne automatische Programme. Nur mit Ihrem Wissen können Sie alle Informationen wiederherstellen. Sie können sogar alle erforderlichen Nachforschungen anstellen, alle Zahlen abrufen, die in PT geschrieben werden müssen, und dann das Wiederherstellungsprogramm starten und nach der Arbeit sicherstellen, dass alles korrekt berechnet wird. Oder vielleicht sogar die Ergebnisse ihrer Arbeit korrigieren, wenn sie nicht zu 100% gearbeitet hat.
Für die Arbeit brauchen wir also: eine Bootdiskette mit einem beliebigen DOS, in die die Datei DISKEDIT.EXE kopiert wird, einen Stift, Papier, einen Taschenrechner (der Rechner befindet sich jedoch in DISKEDIT) und einige Gehirne. Es ist natürlich wünschenswert, dass sowohl DOS als auch DISKEDIT frischer sind. Ich verwende DOS 7.10 von Windows 98 SE und DISKEDIT aus dem Paket NORTON UTILITIES 2002. Wir benötigen zu diesem Zeitpunkt keine Treiber, außer wenn das Laufwerk an den alten SCSI-Controller angeschlossen ist und der Treiber ohne Laden einfach nicht sichtbar ist. Sie können den Maustreiber laden - es ist etwas bequemer. Nun die Hauptsache - neben den angegebenen Dateien auf der Diskette sollte nichts stehen! Dies ist wichtig - Wenn sich auf der Diskette keine Konfigurationsdatei befindet, startet DISKEDIT.EXE im schreibgeschützten Modus, und es werden keine Daten auf der Diskette geändert, bis wir explizit danach fragen. Eine Diskette wäre im Allgemeinen beschreibbar.
Booten Sie von Diskette. Führen Sie DISKEDIT.EXE aus. Drücken Sie nach dem Laden die Tasten Alt-D (oder über das Menü Object - Drive). Ein Fenster mit verfügbaren Festplattengeräten wird angezeigt. Zunächst weisen wir darauf hin, dass wir physische Geräte (physische Datenträger) benötigen, und wählen dann den gewünschten Datenträger (z. B. Festplatte 1) aus und klicken auf OK. In diesem Fall werden alle Plattensektoren vom ersten bis zum letzten als Betrachtungsbereich ausgewählt. Das brauchen wir.
Zuerst bitten wir das Programm, die Festplatte zu scannen und alle Sektoren zu finden, die Elemente der erweiterten Partitions- oder BR-Kette sein können. Und obwohl DISKEDIT zur gleichen Zeit einfach nach Sektoren sucht, die über eine Signatur verfügen, und nicht den Inhalt analysiert (den wir übernehmen), können die Ergebnisse die Arbeit erheblich erleichtern. Die Wahrheit muss geduldig sein - der Prozess ist nicht schnell, und außerdem muss jeder Sektor, den man findet, mit einem Bleistift aufgenommen werden, aber das Spiel ist die Kerze wert.
Also, Extras - Objekt suchen - Partition / Boot. Lass uns gehen. Jedes Mal, wenn ein Sektor mit einer Signatur gefunden wird, wird die Suche gestoppt, ein Sektorabbild wird auf dem Bildschirm angezeigt und in der rechten unteren Ecke wird die Sektornummer angezeigt. Es sind diese Adressen und müssen einen Stift nehmen. Wenn jedoch die Partitionierung einer Platte in Abschnitte nicht besonders ausgereifte Methoden verwendet hat, befinden sich alle für uns interessanten Sektoren auf der Null- oder ersten Seite des ersten Sektors, d. H. Seite 0 oder 1, Sektor 1. Die verbleibenden Sektoren, zum Beispiel einige Cyl 12, Seite 4, Sektor 52, können gefahrlos ignoriert werden - dies ist ein Unfall. Zwar erhalten wir die absolute Nummer des Sektors, aber das ist nicht so schlimm. Bei den "richtigen" Sektoren wird die Anzahl vollständig durch die Anzahl der Sektoren pro Spur geteilt, normalerweise 63 (andere Werte sind jetzt viel weniger üblich - 17, 26, 40, 56, daher im Folgenden) Überall, wo ich über die Anzahl der Sektoren 63 spreche, bedenken Sie, dass Sie möglicherweise eine andere Nummer für Ihr Laufwerk verwenden müssen. Und wir können diese Zahl über das Menü (Info - Drive Info) betrachten. Leider stellt sich die Anzahl der Seiten und Zylinder als falsch heraus (entspricht nicht der verwendeten Übertragung), dies ist jedoch keine große Sache. Wenn Sie die Nummer des nächsten Sektors schreiben, setzen wir die Suche fort (Sie können das Menü Tools - Erneut suchen, Sie können nur Strg-G drücken). Und so lange, bis wir die Nachricht erhalten, dass das Objekt nicht gefunden wurde. In diesem Moment haben wir (oder besser gesagt auf Papier) alle Nummern der Sektoren, in denen eine Signatur vorliegt.
Теперь обрабатываем список, отсеивая явно случайные номера (это которые не делятся на 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
Очередной элемент цепи не содержит записи о расширенном разделе. Цепь закончилась.