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

Startaufzeichnung - Master Boot Record (MBR)

Definieren wir zunächst 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 Speicher geladen wird und die Identifizierung der darauf befindlichen logischen Partitionen ermöglicht, die aktive Partition ermittelt und den Startdatensatz (Boot Record - BR) von dieser herunterlädt, der das Betriebssystem (OS) weiterhin startet. Das zweite Konzept ist der Boot-Sektor. Der Master-Boot-Sektor (MBS) ist ein Sektor auf Zylinder 0, Ebene (Kopf) 0 und mit der Nummer 1. In den meisten Fällen enthält MBS den gesamten erforderlichen Code und alle Daten. Daher ist sein 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 dafür sorgt, dass die anderen Sektoren in den Speicher geladen werden. In diesem Fall ist der MBR die Sammlung aller Sektoren, die geladen werden müssen, und der MBS ist nur der erste Sektor.
Wir beginnen jedoch mit dem Fall, dass MBR und MBS ein und dasselbe sind, und wir werden sie den bekannteren und am weitesten verbreiteten Begriff MBR nennen. Wenn ich etwas vom Thema abweiche, würde ich bemerken, dass ein solcher MBR (der den Download eines beliebigen Betriebssystems ermöglicht und nur MBS belegt) normalerweise als generischer MBR bezeichnet wird.
Im Allgemeinen erschien der MBR auf Festplatten ab MS DOS Version 3.0, in früheren Versionen war die Festplatte als Diskette formatiert und der BR befand sich im ersten Sektor. Dementsprechend bestand der Datenträger aus einer einzelnen Partition und konnte nicht in logische Teile unterteilt werden. Bei den Größen der dann freigegebenen Datenträger war dies jedoch irrelevant.
Die Sektorgröße auf der Festplatte beträgt 512 Bytes. Dieser Platz reicht aus, um alle notwendigen - und den Code und die Daten aufzunehmen. Dort muss jedoch zwingend nur eine Struktur vorhanden sein - das ist die Signatur. Dieses Wort ist eine spezielle, streng festgelegte Folge von 2 Bytes mit hexadezimalen Werten von 55h AAh, die in die letzten 2 Bytes des Sektors geschrieben wird und dementsprechend einen Versatz vom Beginn des Sektors 1FEh aufweist. Wenn sich mindestens eines der letzten beiden 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 nicht die richtige Signatur findet, überträgt er die Kontrolle nicht auf den dort befindlichen Code, auch wenn dies korrekt ist, und zeigt eine Meldung an, die besagt, dass der Hauptstartdatensatz nicht gefunden wurde. Oder versuchen, es auf anderen Geräten zu finden - zum Beispiel auf einer Diskette. Etwas abweichend vom Thema stelle ich fest, dass BR in den letzten beiden Bytes auch die Signatur 55h AAh enthält.
Nun, wenn wir mit dem Heck angefangen haben, dann gehen wir von dort 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 als Partitionstabelle, Partitionstabelle (PT) bezeichnet, und jeder einzelne Eintrag wird als Element der Partitionstabelle (Partitionstabelleneintrag) oder einfach als Partition (Partition) bezeichnet. Diese 16 Bytes reichen völlig aus, um alle notwendigen Eigenschaften des Abschnitts anzugeben, nämlich: Abschnittsart, Anzeige der Abschnittsaktivität, Start- und Endsektoren eines Abschnitts 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 im Abschnitt.
Der Rest des Sektorraums wird vom Programmcode belegt, der das Parsen des NS-Terminals, die Suche nach der aktiven Partition, das Laden des BR in diesen Speicher und die Übertragung der Steuerung an diesen ermöglicht. Da es einfach zu berechnen ist, beträgt der Code 512 - 4 * 16 - 2 = 446 Bytes. Dieser Raum ist groß genug, um diese Aktionen auszuführen.
Die allgemeine MBR-Struktur kann also durch die folgende Tabelle dargestellt werden:
  Versatzlänge Beschreibung
 000h 446 Ladecode
 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 eine Partition beschreibt, hat die folgende Struktur:
  Versatzlänge Beschreibung
 00h 1 Zeichen der Sektionsaktivität
 01h 1 Beginn des Abschnitts - Kopf
 02h 1 Beginn des Abschnitts - Sektor (Bits 0-5), Spur (Bits 6,7)
 03h 1 Beginn des Abschnitts - Spur (hohe Bits 8,9 werden im Sektornummernbyte gespeichert)
 04h 1 Code des Partitionstyps
 05h 1 Ende des Abschnitts - Kopf
 06h 1 Abschnittsende - Sektor (Bits 0-5), Spur (Bits 6,7)
 07h 1 Ende des Abschnitts - Spur (hohe Bits 8,9 werden im Sektornummernbyte gespeichert)
 08h 4 Offset des ersten Sektors
 0Ch 4 Anzahl der Partitionssektoren
Der Abschnittstypcode ist eine Einzelbyte-Kennung. Wenn sein Wert 00h ist, wird angenommen, dass dieses PT-Element keine Daten über die Partition enthält, und sein Inhalt wird ignoriert. Jeder Wert ungleich Null bedeutet, dass sich in dem angegebenen Bereich eine Partition eines bestimmten Typs befindet. Einige Werte geben den Partitionstyp eindeutig an, andere entsprechen mehreren möglichen Typen, und die Definition eines bestimmten Typs ist dem Betriebssystem zugewiesen. Die übrigen Werte sind für die zukünftige Verwendung reserviert. Ein relativ umfassendes 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 Partitionstypen 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 Erweiterter Bereich
 06h 16-Bit-FAT über 32 MB
 07h Windows NT NTFS (und einige andere - der Typ wird durch den Inhalt des 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 erweiterter INT13-Steuerung)
 17h Versteckte NTFS-Partition
 1Bh Versteckter Abschnitt von 32-Bit-FAT (wie 0Bh)
 1Ch Versteckter Abschnitt der 32-Bit-FAT mit der erweiterten Steuerung INT13 (wie 0Ch)
 1Eh versteckter LBA VFAT-Bereich (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-Spiegelslave
 C7h NTFS Windows NT-Spiegelslave
Ein Zeichen der Abschnittsaktivität - d. H. Ein Zeichen, dass das Betriebssystem aus diesem Abschnitt geladen werden sollte - 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 (ansonsten, wie trifft man eine Auswahl?). Wenn keine aktiven Partitionen vorhanden sind, kann das Betriebssystem nicht von dieser Festplatte geladen werden. Andere Werte werden als fehlerhaft angesehen und ignoriert. Die Übertragungssteuerungsentscheidung wird jedoch vom Loader-Code getroffen, daher ist der Bytewert der Load-Anzeige nur für Standard-Loader ein Axiom.
Der Drei-Byte-Block der Adressen des Anfangs und die Adressen des Endes des Abschnitts haben ein identisches Format. Tatsächlich wird hier die Verpackung von Werten so verwendet, dass sie ein Mindestvolumen haben. Das Format des Pakets stimmt voll und ganz mit der Art und Weise überein, wie diese Daten an die Prozeduren für die Arbeit mit einer Festplatte (Int 13h) im Computer-BIOS übertragen werden. Daher sind die Overhead-Rechenkosten minimal. In diesem Fall werden die Zylinder und Spuren von Null an und die Sektoren aus irgendeinem Grund von Anfang an nummeriert. Ich weiß nicht warum - es ist historisch passiert.
Der Sektor, auf den die Adresse am Anfang des Abschnitts verweist, enthält einen speziellen Datensatz namens 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 Erhöhung der Kopfnummern und schließlich Zylinder. Und was ist die Anzahl der Sektoren in dem Abschnitt - es ist ohne Erklärung klar.
Natürlich sind alle diese Werte durch einfache Abhängigkeiten verbunden, da die darin enthaltenen Informationen redundant sind. Daher werde ich die Formeln der Abhängigkeit zwischen ihnen geben.
Also, wenn wir 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;
CS , HS, SS, CE , HE, SE - dasselbe für die Sektoren von Anfang (S) und Ende (E) des Abschnitts;
H H - die Anzahl der Titel auf der Festplatte;
S H - Die Anzahl der Sektoren auf einer Spur einer Festplatte
dann:
Die absolute Sektornummer, in der sich das NS-Terminal befindet:
Num PT = C M · H H · SH + H M · SH + SM - 1
Die absolute Sektornummer des Beginns des Abschnitts:
Num S = CS * HH * SH + HS * SH + SS -1
Absolute Sektornummer am Ende des Abschnitts:
Num E = C E · H H · E H + H E · E H + E E –1
Offset des ersten Sektors des Abschnitts:
Offset S = Num S - Num PT
Anzahl der Partitionssektoren:
Betrag = Num E - Num S +1
Aus den obigen Formeln ist außerdem ersichtlich, 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 Broadcast-Modus ab, der in den BIOS-Einstellungen ausgewählt wurde. Daher kann sich herausstellen, dass eine in Abschnitte in einem Sendemodus unterteilte Platte nicht lesbar ist, wenn sich der Sendemodus ändert.
Es gibt verschiedene Übersetzungsmodi für IDE-Laufwerke:
CHS (Cylinder-Head-Sector) - während die Geometrie der Scheibe als das angesehen wird, was sie dem Computer mitteilt. Machen Sie keinen Fehler - die meisten Laufwerke haben überhaupt keine echte Geometrie. Der Controller, der Teil der Festplatte ist, führt die notwendigen Transformationen jedoch selbst durch, und die Art und Weise, wie dies geschieht, ist für uns nicht wesentlich. Die maximale Anzahl der Zylinder beträgt 1024 (von 0 bis 1023), die Anzahl der Spuren beträgt 16 (von 0 bis 15), die Anzahl der Sektoren beträgt 63 (von 1 bis 63) und die in dieser Sendung ohne die Verwendung spezieller Programme verfügbare maximale Plattenkapazität beträgt 504 MB . Während des Festplattenbetriebs wird die Sektoradresse vom BIOS des Computers unverändert an den Festplattencontroller übertragen.
LBA (Logical Block Addressing) - In diesem Übersetzungsmodus wird die falsche Datenträgergeometrie verwendet, die dem BIOS des Computers mitgeteilt wird. Das Format wird erzwungen, wenn die Anzahl der Zylinder 1024 nicht überschreitet und die Anzahl der Sektoren pro Spur 63 beträgt. Die angegebene Anzahl der Spuren hängt vom Computer-BIOS und der Festplattenkapazität ab und kann 16, 64, 128 oder 255 betragen. Die neuesten BIOS-Versionen sind normalerweise Verwenden Sie unabhängig von der Größe des Laufwerks eine Umwandlung in 255 (0-254) Spuren. Wenn auf eine Festplatte zugegriffen wird, werden die Zylinder-, Kopf- und Sektornummern, die an die LBA-Broadcasts übertragen wurden, in die absolute Sektornummer umgerechnet. Diese Informationen werden vom Festplattencontroller an das Computer-BIOS übertragen, um den Vorgang auszuführen. Bei einem Laufwerk mit mehr als 8 GB beträgt die Anzahl der Zylinder mehr als 1024. Auf Computern, die die Arbeit im erweiterten Int 13h-Modus nicht unterstützen, ist ohne Installation einer speziellen Software kein Speicherplatz über die Grenzen von 8 GB verfügbar (unabhängig vom Broadcast-Modus). Manchmal hilft es jedoch, das BIOS des Computers zu aktualisieren.
LARGE oder ECHS (Extended CHS) - In diesem Übersetzungsmodus wird die Anzahl der Zylinder aufgrund einer mehrfachen Erhöhung der Anzahl der Spuren auf einen Wert von weniger als 1024 reduziert. Die angegebene Anzahl von Spuren ist genau genommen ein Vielfaches der tatsächlichen Anzahl von Sektoren pro Spur, was sich nicht ändert. Bei den meisten modernen Laufwerken beträgt die Anzahl der Sektoren pro Spur (gemäß den Zusicherungen des Laufwerks-Controllers) 63. Die maximal verfügbare Kapazität auf Computern, die die Arbeit im erweiterten Int 13h-Modus nicht unterstützen, hängt von der tatsächlichen Anzahl der Spuren ab, jedoch nicht mehr als 8 GB (z. B. der Festplatte) 16 Spuren hat, dann kann in LARGE ihre Sendung 16, 32, 48 ... 240 sein, aber nicht 255, da 255 kein Vielfaches von 16 ist, aber die maximal verfügbare Lautstärke 1024 * 240 * 63 * 512 / (1024 3 ) = 7,38 GB).
Bei Verwendung von LBA- oder LARGE-Konvertierung aufgrund der Rundung auf ganzzahlige Werte können mehrere Sektoren am Ende des Laufwerks aus dem beschriebenen Bereich herausfallen und nicht mehr verfügbar sein. Die Verluste sind jedoch normalerweise gering.
Die SCSI-Laufwerke arbeiten immer im LBA-Broadcast-Modus. Der SCSI-Controller repräsentiert vielmehr die Geometrie des Laufwerks gemäß den Anforderungen des LBA-Broadcasts und übergibt beim Zugriff auf die Festplatte selbst die absolute Adresse des Sektors. Natürlich ist das BIOS des SCSI-Controllers für die Durchführung der erforderlichen Neuberechnungen verantwortlich.
Kehren wir zum MBR zurück. Wie bereits erwähnt, enthält es 4 Datenblöcke zu den Elementen der Partitionstabelle. Dies bedeutet, dass im MBR maximal vier Partitionen beschrieben werden können. Dies bedeutet jedoch nicht, dass die maximale Anzahl von Partitionen, in die das Laufwerk unterteilt werden kann, vier beträgt. Um diese Barriere zu überwinden, wurde ein spezieller Partitionstyp mit dem Code 05h eingeführt - Extended Partition.
Die erweiterte Partition unterscheidet sich stark 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. Zwar sind die in diesem Bereich befindlichen Bereiche in ihren Rechten etwas „eingeschränkt“. Die wichtigste Einschränkung besteht jedoch darin, dass sie nicht aktiv sein können (oder vielmehr, dass das Betriebssystem von einer solchen Partition geladen wird, sondern die Personalressourcen der meisten vorhandenen Das Betriebssystem erlaubt dies nicht, Sie müssen spezielle Werkzeuge verwenden). Zweitens sollte der MBR nur einen Eintrag auf der erweiterten Partition enthalten. Eher können sie mehr getan werden (mindestens alle vier), aber wie wird sich das Betriebssystem verhalten, wenn man dies erreicht hat, ist es schwer vorherzusagen. Beispielsweise ignoriert MS-DOS 6.20 einfach alle erweiterten Partitionen mit Ausnahme der ersten in der Liste, als ob es überhaupt keine gäbe. Drittens handelt es sich im Gegensatz zu anderen Arten von Abschnitten in dem Sektor, der in der Struktur als Sektor am Anfang des Abschnitts registriert ist, nicht um BR. Es gibt tatsächlich einen anderen MBR mit einer Signatur und einer Partitionstabelle, der jedoch normalerweise keinen Programmcode enthält (normalerweise wird der Sektor, der die Partitionstabelle, aber nicht den Startcode enthält, als abstrakter MBR bezeichnet). Da es jedoch keine aktiven Partitionen gibt, ist der Code unbrauchbar. In der Partitionstabelle eines solchen Sektors befinden sich normalerweise ein oder zwei Einträge. Die erste beschreibt die übliche Partition (Partition), und dieser Abschnitt muss sich vollständig im Bereich 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 auf die gleiche Weise auch ein Abschnitt beschrieben, und wenn noch Platz vorhanden ist, wird auch ein Eintrag für eine erweiterte Partition aufgezeichnet. Und so geht es weiter, bis der Raum endet. Praktisch alle erweiterten Partitionseinträge sind eine erweiterte Partitionskette, in der Teile normaler Partitionen vom Festplattenspeicher abgelegt werden, bis der Speicherplatz erschöpft ist. Ein Fehler in einem Element dieser Kette führt zu seiner Auflösung. Infolgedessen werden alle Datensätze nach der Unterbrechung vom Betriebssystem nicht gefunden, und der vom Betriebssystem belegte Speicherplatz wird als leer betrachtet.
Das Betriebssystem befolgt beim Befüllen der Kette in der Regel mehrere Regeln. Erstens sollte sich der übliche Abschnitt, der im nächsten „Glied“ der Kette beschrieben wird, nicht in der Mitte befinden, da Sie dann zur Beschreibung der resultierenden zwei nicht zugewiesenen Speicherbereiche zwei Einträge in den PT dieses Elements über zwei verschiedene erweiterte Partitionen und, wie bereits erwähnt, das Betriebssystem eingeben müssen Ignorieren Sie alle derartigen Datensätze mit Ausnahme des ersten. Infolgedessen fällt ein Teil des Speicherplatzes aus der Aufteilung heraus. Zweitens wird in der Regel eine Aufzeichnung über eine reguläre Partition erstellt, die 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 Platte zu lesen. Derartige Fälle liegen jedoch außerhalb unseres Geltungsbereichs. Das zweithäufigste Problem ist die Zerstörung aller oder eines Teils der in dem Sektor enthaltenen Informationen, wodurch Partitionen entweder vom Betriebssystem nicht gefunden werden können oder deren Parameter nicht korrekt bestimmt werden.
Der einfachste Fall ist die Signaturvernichtung. Gleichzeitig ist das Betriebssystem der Ansicht, 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 über einen direkten Zugriff auf Datenträgersektoren wiederherzustellen (am beliebtesten ist DISKEDIT aus dem NORTON UTILITIES-Paket). Die meisten Betriebssysteme müssen jedoch neu gestartet werden, da das Betriebssystem normalerweise die Partitionierungsinformationen auf der Festplatte beim Start liest und die Änderungen später im Prozess nicht berücksichtigt.
Ein komplizierterer Fall ist die Zerstörung des Codes. In diesem Fall geht die Möglichkeit verloren, das Betriebssystem vom Laufwerk zu starten, und der Download-Versuch endet normalerweise, wenn der Computer hängt. Wenn Sie von einem anderen Laufwerk booten (einer anderen Festplatte, einer Diskette, einer bootfähigen CD-ROM usw.), stehen gleichzeitig alle Informationen auf dem Laufwerk zur Verfügung. In diesem Fall wird empfohlen, die regulären Tools zur Wiederherstellung des Startcodes zu verwenden, die in jedem Betriebssystem verfügbar sind. In Windows 9x wird zu diesem Zweck beispielsweise das Programm FDISK.EXE verwendet, das mit dem Schlüssel / MBR gestartet wird.
Code-Zerstörung ist nicht so selten, wie es scheinen mag. In der Regel tritt eine solche Störung auf, wenn verschiedene Betriebssysteme nacheinander auf demselben Laufwerk in einer oder mehreren 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 sich zuvor in diesem Sektor befand. Beispielsweise überschreibt Windows 9x den Bootloader-Code, ohne den Benutzer zu benachrichtigen und alte Inhalte dauerhaft zu zerstören. Ein solcher Fall ist jedoch nicht sehr beängstigend, da alle OS-Loader sehr ähnlich sind. Das Problem tritt auf, wenn Drittanbieter-Software zum Partitionieren des Laufwerks in Abschnitte wie ein EZ-Laufwerk, ODM oder z. B. SpeedStore verwendet wurde, für die die Konzepte MBR und MBS nicht gleichwertig sind. Aufgrund einer anderen Ladeideologie (die wir später erläutern werden) erfüllt der in MBS befindliche Code eine andere Funktion, nämlich das Suchen und Laden eines Teils des MBR-Codes, der sich in anderen Sektoren der Festplatte befindet. Das Ersetzen des Codes führt dazu, dass diese Funktion verloren geht und dementsprechend verschiedene Probleme auftreten. 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 der Partitionstabelle selbst. Wie Sie wissen, treten Probleme niemals alleine auf, und meistens werden alle drei Komponenten des MBR zerstört. Die Zerstörung von PT führt jedoch zu den schwerwiegendsten Konsequenzen, da der Zugriff auf die auf dem Laufwerk gespeicherten Informationen nicht möglich ist. PT kann vollständig und möglicherweise teilweise zerstört werden - d.h. Ein Teil der Elemente ist zerstört und der Rest ist intakt. Es gibt Fälle, in denen der im MBR befindliche PT intakt ist und die Aufzeichnung der Partitionen in einem der Glieder der Extended Partition-Kette zerstört wird. Da jedoch die MBR-Struktur und die Struktur absolut identisch sind (mit Ausnahme der Tatsache, dass die Extended Partition-Elemente keinen Code enthalten), ist die Wiederherstellungstechnik in beiden Fällen dieselbe.
Es gibt eine ausreichende Anzahl von Programmen, die zerstörte 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, keinen weiteren Schaden erleidet. Wir suchen jedoch nicht nach einfachen Wegen, und wenn Ihr Chef nicht über Ihrem Kopf hängt und schreit: "Lieber, schneller, springt, drucke mir ein Formular aus, ich bin spät im Urlaub!", Werden Sie viel mehr Freude haben, wenn Sie alleine sind, ohne automatische Programme. Wenn Sie nur Ihr Wissen verwenden, können Sie alle Informationen wiederherstellen. Sie können sogar einfach alle erforderlichen Nachforschungen anstellen, alle Zahlen abrufen, die in PT geschrieben werden müssen, und dann das Wiederherstellungsprogramm starten. Stellen Sie anschließend sicher, dass alles korrekt berechnet wurde. Oder vielleicht sogar die Ergebnisse ihrer Arbeit korrigieren, wenn sie nicht zu 100% gearbeitet hat.
Für die Arbeit benötigen wir also: eine Bootdiskette mit einem beliebigen DOS, auf die die Datei DISKEDIT.EXE kopiert wird, einen Stift, Papier, einen Taschenrechner (der Taschenrechner befindet sich jedoch in DISKEDIT) und einige Gehirne. Es ist natürlich wünschenswert, dass DOS und DISKEDIT frischer sind. Ich verwende DOS 7.10 aus Windows 98 SE und DISKEDIT aus dem Paket NORTON UTILITIES 2002. Wir benötigen zum jetzigen Zeitpunkt keine Treiber, außer wenn das Laufwerk an den alten SCSI-Controller angeschlossen ist und nicht sichtbar ist, ohne den Treiber zu laden. Sie können den Maustreiber herunterladen - er wird etwas praktischer. Nun die Hauptsache - zusätzlich zu den angegebenen Dateien auf der Diskette sollte es nichts geben! Dies ist wichtig - wenn sich keine Konfigurationsdatei auf der Diskette befindet, wird DISKEDIT.EXE im schreibgeschützten Modus gestartet und es werden keine Daten auf der Diskette geändert, bis wir ausdrücklich danach fragen. Eine Diskette ist im Allgemeinen beschreibbar.
Booten Sie von Diskette. Führen Sie DISKEDIT.EXE aus. Drücken Sie nach dem Laden die Alt-D-Taste (oder über das Menü Objekt - Laufwerk). 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 Festplattensektoren vom ersten bis zum letzten als Anzeigebereich ausgewählt. Das brauchen wir.
Zuerst werden wir das Programm auffordern, die Festplatte zu scannen und alle Sektoren zu finden, die möglicherweise Elemente der Extended Partition- oder BR-Kette sind. Und obwohl DISKEDIT gleichzeitig nur nach Sektoren sucht, die eine Signatur haben, 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 gefundene Sektor mit einem Bleistift festgehalten werden, aber 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 Sektor-Dump wird auf dem Bildschirm angezeigt und in der unteren rechten Ecke wird die Sektornummer angezeigt. Es sind diese Adressen und müssen einen Bleistift nehmen. Wenn jedoch beim Partitionieren einer Festplatte in Abschnitte keine besonders ausgeklügelten Methoden verwendet wurden, befinden sich alle für uns interessanten Sektoren auf der Null oder der ersten Seite im ersten Sektor, d. H. Seite 0 oder 1, Sektor 1. Die verbleibenden Sektoren, z. B. einige Cyl 12, Seite 4, Sektor 52, können ohne Bedenken ignoriert werden - dies ist ein Zufall. Zwar erhalten wir eine absolute Sektornummer, aber das ist nicht beängstigend. Für die "richtigen" Sektoren wird die Nummer vollständig durch die Anzahl der Sektoren pro Spur dividiert, normalerweise 63 (andere Werte sind jetzt viel seltener - 17, 26, 40, 56, daher Überall dort, wo ich über die Anzahl der Sektoren 63 sprechen werde, sollten Sie bedenken, dass Sie möglicherweise eine andere Nummer für Ihr bestimmtes Laufwerk verwenden müssen. Und wir können diese Abbildung über das Menü (Info - Drive Info) betrachten. Leider kann sich herausstellen, dass die Anzahl der Seiten und Zylinder falsch ist (nicht der verwendeten Sendung entsprechend), aber dies ist auch keine große Sache. Notieren Sie sich die Nummer des nächsten Sektors und setzen Sie die Suche fort (Sie können das Menü Extras - Erneut suchen verwenden, Sie können nur Strg-G verwenden). Und so lange, bis wir die Nachricht erhalten, dass das Objekt nicht gefunden wurde. Momentan haben wir (oder besser gesagt, auf dem Papier) alle Sektoren, in denen es eine Signatur gibt.
Теперь обрабатываем список, отсеивая явно случайные номера (это которые не делятся на 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.
Basierend auf der gewünschten Partitionierung wird das folgende Schema angezeigt: Zuerst eine erweiterte Partition mit zwei logischen Laufwerken - 6 und 2 GB, dann eine primäre aktive Partition mit 2 GB oder 3 primäre Partitionen in der angegebenen Reihenfolge und mit den angegebenen Größen. Die letzte Option passt nicht zu uns (egal aus welchen Gründen). Die Funktionen des FDISK-Programms des ausgewählten Betriebssystems ermöglichen keine reguläre Partitionierung: Wenn Sie zuerst eine primäre Partition erstellen, befindet sich diese am Anfang des Laufwerks. Wenn Sie zuerst eine erweiterte Partition erstellen, weigert sich das Programm, die primäre Partition zu erstellen.
Wir treffen die Entscheidung, mit FDISK so viel wie möglich zu teilen, und beenden es dann manuell. Die erste Phase: Erstellen Sie eine erweiterte Partition mit zwei Festplatten. Zweitens: Fügen Sie manuell einen Eintrag für die primäre Partition hinzu.
Die erste Phase verursacht keine Probleme: Starten Sie von einer Diskette, erstellen Sie eine erweiterte 8-GB-Partition, und sie verfügt über zwei logische Festplatten - 6 GB und 2 GB. Starten Sie von einer Diskette und vergewissern Sie sich, dass die Diskette angezeigt wird (aber nicht verfügbar ist - da Partitionen nicht formatiert wurden!). Laufwerke C: und D:. Wir formatieren sie mit dem Standard-FORMAT und stellen beim Formatieren sicher, dass das Laufwerk C: 6 GB groß ist, das Laufwerk D: 2 GB. Führen Sie DISKEDIT aus und beobachten Sie den Inhalt des MBR. Es hat den folgenden Eintrag:
  Startort Endort Relative Anzahl von
 System-Boot-Zylinder
 VERLÄNGERUNG Nr. 1 0 1 254 972 63 63 15631182
 nicht verwendet Nein 0 0 0 0 0 0 0 0
 nicht verwendet Nein 0 0 0 0 0 0 0 0
 nicht verwendet Nein 0 0 0 0 0 0 0 0
Wir müssen einen Eintrag für die primäre Partition hinzufügen. Der Typ (System) ist 0Ch (FAT32x), die Ladeanzeige ist gesetzt, der Beginn des Abschnitts bei 973/0/1, das Ende des Abschnitts bei 1215/254/63, der relative Sektor des Beginns des Abschnitts bei 15631245 (973 * 255 * 63 + 0 * 63 + 1-1), der relative Sektor des Abschnittsendes 19535039 (1215 * 255 * 63 + 254 * 63 + 63-1), die Anzahl der Sektoren 3903795 (19535039-15631245 + 1). Sehr subtil: Wenn die Zylindernummer größer als 1023 ist, wird der Wert 1023 in das entsprechende Feld eingegeben - leider ist dies der Maximalwert, der dort geschrieben werden kann - und das Betriebssystem berechnet den korrekten Wert basierend auf der angegebenen Anzahl von Sektoren.
Wir übersetzen DISKEDIT in den Lese-Schreib-Modus (Tools-Konfiguration) und geben die berechneten Daten in die zweite Zeile ein. Nachdem wir alle Werte eingegeben und überprüft haben, verlassen wir DISKEDIT mit der Esc-Taste und die Frage, was mit den Änderungen geschehen soll, wird beantwortet - schreiben Sie. Starten Sie den Computer neu. Wir sind davon überzeugt, dass die Festplatte jetzt drei Bereiche hat - C: - nicht verfügbar, D: - 6 GB, E: - 2 GB. Wir formatieren das Laufwerk C: mit der Übertragung von Systemdateien auf das Laufwerk. Bei der Formatierung stellen wir sicher, dass das Laufwerk C: eine Größe von 2 GB hat. Wir aktualisieren den MBR-Code mit dem Befehl FDISK / MBR, entfernen die Diskette, starten den Computer neu, vergewissern uns, dass das Betriebssystem gestartet wurde. Die Festplatten C:, D: und E: sind verfügbar und haben Größen von 2, 6 und 2 GB. Wir starten NDD und stellen sicher, dass weder in der Partitionstabelle noch auf den Festplatten Fehler vorliegen. Die Aufteilung ist abgeschlossen.
Jetzt sieht die Partitionstabelle in DISKEDIT so aus:
  Startort Endort Relative Anzahl von
 System-Boot-Zylinder
 VERLÄNGERUNG Nr. 1 0 1 254 972 63 63 15631182;  Erweiterter Abschnitt
 FAT32x Ja 0 973 1 254 1023 63 15631245 3903795;  Primäre Partition (C :) nicht verwendet Nein 0 0 0 0 0 0 0 0
 nicht verwendet Nein 0 0 0 0 0 0 0 0
Wenn Sie den Cursor auf die Zeile mit dem Datensatz über den erweiterten Abschnitt setzen und die Eingabetaste drücken, überträgt DISKEDIT die Ansicht automatisch in den Sektor, der durch die Adresse am Anfang des Abschnitts angegeben ist (für den primären Abschnitt ist es BR, für den erweiterten Abschnitt ist es ein Element der Abschnittskette). In unserem Fall sehen wir den folgenden Inhalt des Partitionskettenelements:
  Startort Endort Relative Anzahl von
 System-Boot-Zylinder
 FAT32x Nr. 2 0 1 254 728 63 63 11711259;  Logische Partition (D :) EXTEND Nr. 0 729 1 254 972 63 11711322 3919923;  Erweiterter Abschnitt
 nicht verwendet Nein 0 0 0 0 0 0 0 0
 nicht verwendet Nein 0 0 0 0 0 0 0 0
Fahren Sie in der Abschnittskette mit dem folgenden Element fort:
  Startort Endort Relative Anzahl von
 System-Boot-Zylinder
 FAT32x Nr. 1,729, 1,254,972, 63, 63, 3919860;  Logische Partition (E :) nicht verwendet Nein 0 0 0 0 0 0 0 0
 nicht verwendet Nein 0 0 0 0 0 0 0 0
 nicht verwendet Nein 0 0 0 0 0 0 0 0
Das nächste Element der Kette enthält keinen Eintrag für den erweiterten Abschnitt. Die Kette ist vorbei.