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

Home Boot Record - Master Boot Record (MBR)

Lassen Sie uns zuerst die Terminologie definieren. Unter den Wörtern im Titel des Artikels werden oft zwei verschiedene Dinge verstanden, die in einigen Fällen gleichwertig sein können und in einigen Fällen nicht. Das erste Konzept ist tatsächlich Master Boot Record. Dieser Eintrag (Programmcode und Daten), der von der Festplatte in den Speicher geladen wird und logische Partitionen identifiziert, erkennt die aktive Partition und lädt einen Boot-Record (Boot Record - BR) herunter, der den Start des Betriebssystems (OS) fortsetzt. Und das zweite Konzept ist der Boot-Sektor, der Master-Boot-Sektor (MBS) ist der Sektor auf dem 0-Zylinder, der Ebene (Kopf) 0 und der Nummer 1. In den meisten Fällen enthält der MBS den gesamten notwendigen Code und alle Daten, so dass sein Inhalt der MBR ist , aber es gibt Fälle (die wir am Ende des Artikels betrachten werden), wenn der Code und die Daten nicht in einen Sektor passen (einfach nicht genug Speicherplatz oder aus Sicherheitsgründen), und dann der Code dieses Sektors das Laden anderer Sektoren im Speicher sicherstellt. In diesem Fall ist der MBR eine Sammlung aller Sektoren, die geladen werden müssen, und MBS ist nur der erste Sektor.
Wir werden jedoch mit dem Fall beginnen, in dem MBR und MBS gleich sind, und wir werden sie als vertrauter und weit verbreiteter Begriff MBR bezeichnen. Etwas vom Thema abweichend, stelle ich fest, dass ein solcher MBR (der das Booten eines beliebigen Betriebssystems ermöglicht und nur MBS belegt) üblicherweise als MBR bezeichnet wird.
Im Allgemeinen erschien MBR auf Festplatten beginnend mit MS DOS Version 3.0, in früheren Versionen war die Festplatte als Diskette formatiert und im ersten Sektor befand sich BR. Dementsprechend war die Platte eine einzelne Partition und konnte nicht in logische Teile zerlegt werden - es ist wahr, bei diesen Größen von Platten, die dann veröffentlicht wurden, war es irrelevant.
Die Sektorgröße auf der Festplatte beträgt 512 Byte. Dieser Platz reicht aus, um alles, was Sie brauchen - Code und Daten - unterzubringen. Allerdings sollte dort nur eine Struktur vorhanden sein - es ist eine 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 werden und dementsprechend einen Offset vom Beginn des Sektors 1FEh haben. Wenn sich mindestens eines der beiden letzten Bytes im Wert unterscheidet, wird davon ausgegangen, dass der erste Sektor kein MBR ist und keine aussagekräftigen Informationen enthält. Wenn der Computer zu Beginn nach dem Lesen des ersten Sektors die richtige Signatur nicht findet, überträgt er die Steuerung des dort befindlichen Codes nicht, selbst wenn er korrekt ist, sondern meldet, dass der Master-Boot-Datensatz 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 der BR in den letzten zwei Bytes auch eine Signatur 55h AAh enthält.
Nun, wenn wir mit dem Schwanz angefangen haben, dann gehen wir davon zum Anfang des Sektors. Vor der Signatur befinden sich 4 Datenblöcke von jeweils 16 Bytes (jeweils mit einer Verschiebung vom Beginn des Sektors 1BEh, 1CEh, 1DEh, 1EEh). Die Menge dieser Blöcke wird als Partitionstabelle (PT) bezeichnet, und jeder einzelne Eintrag wird als Partitionstabelleneintrag (Partitionstabelleneintrag) oder einfach als Partition bezeichnet. Diese 16 Bytes reichen aus, um alle notwendigen Merkmale der Partition anzugeben, nämlich: Partitionstyp, Partitionsaktivitätsflag, Anfangs- und Endpartitionssektoren im Format Zylinder (Pfad) - Zylinder (Head - Sector, CHS) , die relative Nummer des ersten Sektors (relativ zum MBR) und die Anzahl der Sektoren in dem Abschnitt.
Der Rest des Sektorbereichs ist mit dem Programmcode belegt, der PT-Parsing bereitstellt, nach der aktiven Partition sucht, BR in diesem Abschnitt lädt und es an das Steuerelement überträgt. Wie es leicht zu berechnen ist, bleibt der Code 512 - 4 * 16 - 2 = 446 Bytes. Dieser Raum ist reichlich vorhanden, um diese Aktionen auszuführen.
So kann die allgemeine Struktur des MBR durch die folgende Tabelle dargestellt werden:
  Offset Länge Beschreibung
 000h 446 Ladecode
 1BEh 64 Partitionstabelle
  16 Abschnitt 1
 1CEh 16 Abschnitt 2
 1DEh 16 Abschnitt 3
 1EEh 16 Abschnitt 4
 1 FEh 2 Unterschrift (55h AAh)
Jeder 16-Byte-Block, der eine Partition beschreibt, hat die folgende Struktur:
  Offset Länge Beschreibung
 00h 1 Symptom der Partitionsaktivität
 01h 1 Start der Sektion - Kopf
 02h 1 Der Anfang des Abschnitts ist Sektor (Bits 0-5), die Spur (Bits 6,7)
 03h 1 Anfang des Abschnitts ist die Spur (die höchsten Bits von 8.9 werden im Byte der Sektornummer 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 - die Spur (die höherwertigen Bits 8.9 werden im Byte der Sektornummer gespeichert)
 08h 4 Verschiebung des ersten Sektors
 0Ch 4 Anzahl der Sektoren der Partition
Der Partitionstypcode ist eine Einzelbyte-Kennung. Wenn der Wert 00h ist, wird davon ausgegangen, dass dieses PT-Element keine Partitionsinformationen enthält und sein Inhalt ignoriert wird. Jeder Wert ungleich Null bedeutet, dass ein Abschnitt eines bestimmten Typs im angegebenen Bereich vorhanden ist. Einige Werte geben den Typ der Partition eindeutig an, einige entsprechen mehreren möglichen Typen und die Definition eines bestimmten Typs wird dem Betriebssystem zugewiesen, die anderen sind für die zukünftige Verwendung reserviert. Eine relativ vollständige und aktuelle Anleitung zu Partitionstyp-Codes finden Sie in der Interrupt-Liste von Ralf Brown in der Datei INTERRUPT.D, Tabelle 00652, die im Archiv enthalten ist (zum Zeitpunkt der Erstellung dieses Artikels). Inter61a.zip unter http://www.pobox.com/ ~ ralf / files.html . Hier werde ich eine Tabelle der Partitionstypen angeben, die von den Betriebssystemen Windows 9x und Windows NT / 2000 / XP erstellt werden:
  Code Partitionstyp
 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 vom BR-Inhalt bestimmt)
 0Bh 32-Bit-FAT
 0Ch 32-Bit-FAT mit fortgeschrittener INT13-Verwaltung
 0Eh LBA VFAT (wie 06h, unter Verwendung der fortgeschrittenen INT13 Steuerung)
 0Fh LBA VFAT (wie 05h, mit fortgeschrittenen INT13 Kontrolle)
 17h Versteckte NTFS-Partition
 1Bh Ein versteckter Abschnitt der 32-Bit-FAT (das gleiche wie 0Bh)
 1Ch Ein versteckter Abschnitt des 32-Bit-FAT mit dem erweiterten Steuerelement INT13 (das gleiche wie 0Ch)
 1Eh Versteckte Partition LBA VFAT (wie 06h, unter Verwendung der fortgeschrittenen INT13 Steuerung)
 86h Abschnitt FAT-16 Stripe-Array Windows NT
 87h NTFS-Partitions-Stripe-Array Windows NT
 B6h Gespiegelte Hauptpartition FAT-16 Windows NT
 B7h Gespiegelte Hauptpartition NTFS Windows NT
 C6h Gespiegelte Slave-Partition FAT-16 Windows NT
 C7h Gespiegelte Slave-Partition NTFS Windows NT
Ein Zeichen für die Aktivität des Abschnitts - d.h. ein Zeichen, dass das Betriebssystem von diesem Abschnitt heruntergeladen werden soll - es kann die Werte 80h (Partition aktiv) und 00h (Partition ist nicht aktiv) haben. Im Allgemeinen sollte die Anzahl der aktiven Partitionen nicht mehr als 1 sein (sonst wie kann eine Auswahl getroffen werden?). Wenn keine aktiven Partitionen vorhanden sind, kann das Betriebssystem nicht von dieser Festplatte geladen werden. Andere Werte gelten als fehlerhaft und werden ignoriert. Die Entscheidung, das Steuerelement zu übertragen, erfordert jedoch den Ladeprogrammcode, so dass der Wert des Bytes des Boot-Attributs nur ein Axiom für Standardlader ist.
Der Drei-Byte-Adressblock der Startadresse und die Endabschnittadresse haben das gleiche Format. Hier werden tatsächlich Packungswerte verwendet, so dass sie ein minimales Volumen haben. Das Format des Pakets entspricht vollständig der Übertragung dieser Daten zu den Prozeduren für die Arbeit mit der Festplatte (Int 13h), die sich im BIOS des Computers befindet, und daher sind die Overhead-Berechnungskosten minimal. In diesem Fall werden die Zylinder und Spuren von Null beginnend nummeriert und Sektoren - aus irgendeinem Grund von der ersten. Ich weiß nicht warum - das ist historisch passiert.
Der Sektor, auf den die Adresse des Abschnittsanfangs zeigt, enthält einen speziellen Datensatz, den sogenannten Boot Record (BR). Sein Zweck und seine Zusammensetzung werden in einem gesonderten Artikel diskutiert.
Der Offset des ersten Sektors der Partition ist tatsächlich die Nummer dieses Sektors, wenn alle Sektoren der Festplatte ausgehend von 0 (gemäß der von Int 25h / 26h verwendeten Nummerierung) in aufsteigender Reihenfolge zuerst in Sektoren einer Spur nummeriert werden, dann in der Reihenfolge der Erhöhung der Anzahl der Köpfe und Zylinder. Und wie groß ist die Anzahl der Sektoren in der Sektion - es ist ohne Erklärung verständlich.
Alle diese Werte sind natürlich durch einfache Abhängigkeiten verbunden, weil die darin enthaltenen Informationen redundant sind. Daher werde ich die Formeln für die Beziehung zwischen ihnen geben.
Also, wenn wir bezeichnen:
C M ist der Zylinder, auf dem sich der MBR befindet;
H M ist die Spur, auf der sich der MBR befindet;
S M ist der Sektor, in dem sich der MBR befindet;
C S , H S , S S , C E , H E , S E - das gleiche für die Sektoren des Anfangs (S) und des Endes (E) des Abschnitts;
H H - Anzahl der Tracks auf der Festplatte;
S H - die Anzahl der Sektoren auf einer Spur auf der Festplatte,
dann:
Die absolute Nummer des Sektors, in dem sich PT befindet:
Num PT = CM * H * SH + HM * SH + SM- 1
Absolute Sektornummer des Abschnittsanfangs:
Num S = C S · H H · S H + H S · S H + S S -1
Absolute Sektornummer des Endes des Abschnitts:
Num E = C E * H H * E H + H E * E H + E E -1
Verschiebung des ersten Sektors des Abschnitts:
Offset S = Nummer S - Nummer PT
Anzahl der Sektoren:
Betrag = Num E - Num S +1
Aus den obigen Formeln ist außerdem klar, dass die wichtige Sache ist, wie viele Spuren einen Zylinder einer Festplatte haben und wie viele auf jeder Spur von Sektoren. Diese Werte hängen sowohl von der Geometrie der Festplatte als auch vom gewählten Übersetzungsmodus in den BIOS-Einstellungen ab. Daher kann eine in einem einzelnen Übersetzungsmodus partitionierte Platte nicht lesbar sein, wenn sich der Übersetzungsmodus ändert.
Für IDE-Laufwerke gibt es mehrere Arten der Übersetzung:
CHS (Cylinder-Head-Sector) - während die Geometrie der Festplatte die gleiche ist, wie sie dem Computer mitgeteilt wird. Schmeichele dich nicht selbst - die meisten Laufwerke haben nicht die richtige Geometrie. Der Controller, der Teil der Festplatte ist, erzeugt jedoch selbst die notwendigen Transformationen, und die Art und Weise, wie dies geschieht, ist für uns nicht wichtig. Die maximale Anzahl von Zylindern ist 1024 (von 0 bis 1023), Spuren - 16 (von 0 bis 15), Sektoren - 63 (von 1 bis 63) und die maximale Festplattenkapazität in dieser Sendung ohne spezielle Programme ist 504 MB . Bei Plattenoperationen wird die Sektoradresse vom Festplattencontroller an das BIOS des Computers übertragen, ohne sie zu ändern.
LBA (Logical Block Addressing) - Dieser Übersetzungsmodus verwendet nicht die Geometrie der Festplatte, die dem BIOS des Computers mitgeteilt wird. Die Reduzierung wird auf das Format vorgenommen, wenn die Anzahl der Zylinder 1024 nicht überschreitet und die Anzahl der Sektoren pro Spur 63 beträgt. Die Anzahl der Spuren hängt vom BIOS des Computers und dem Volumen der Festplatte ab und kann 16, 64, 128 oder 255, in der Regel die neuesten BIOS-Versionen sein Verwenden Sie die Reduzierung auf 255 (0-254) Spuren unabhängig von der Lautstärke des Laufwerks. Wenn auf die Platte zugegriffen wird, werden die Anzahl der Zylinder, Köpfe und Sektoren, die in der LBA-Übersetzung übertragen wurden, auf die absolute Sektornummer neu berechnet, und sie wird durch die Festplattensteuerung zum BIOS des Computers übertragen, um die Operation durchzuführen. Bei einer Laufwerkskapazität von mehr als 8 GB beträgt die Anzahl der Zylinder mehr als 1024. Daher sind auf Computern, die den erweiterten Modus "Int 13h" nicht unterstützen, ohne die Installation spezieller Software kein Speicherplatz über 8 GB verfügbar (unabhängig vom Übertragungsmodus). Manchmal hilft es jedoch, das BIOS des Computers zu aktualisieren.
LARGE oder ECHS (Extended CHS) - in diesem Übersetzungsmodus wird die Anzahl der Zylinder auf weniger als 1024 verringert, da die Anzahl der Spuren mehrfach erhöht wird. Die angegebene Anzahl von Spuren ist streng genommen ein Vielfaches der tatsächlichen Anzahl von Sektoren pro Spur ändert sich nicht. In den meisten modernen Laufwerken beträgt die Anzahl der Sektoren pro Spur 63 (entsprechend dem Controller des Laufwerks). Das maximal verfügbare Volumen auf Computern, die den erweiterten Modus Int 13h nicht unterstützen, hängt von der tatsächlichen Anzahl der Spuren ab, jedoch nicht mehr als 8 GB (wenn z hat 16 Spuren, dann in der großen Übersetzung können sie 16, 32, 48 ... 240 sein, aber nicht 255, weil 255 kein Vielfaches von 16 ist, und die maximal verfügbare Lautstärke ist 1024 * 240 * 63 * 512 / (1024 3 ) = 7.38 GB).
Bei Verwendung von LBA oder LARGE-Übersetzung durch Aufrunden auf Integer-Werte können mehrere Sektoren am Ende des Laufwerks aus dem beschriebenen Platz "herausfallen" und unzugänglich werden. Die Verluste sind jedoch in der Regel gering.
Wie für SCSI-Laufwerke, arbeiten sie immer im Modus der LBA-Übersetzung. Vielmehr repräsentiert der SCSI-Controller die Geometrie des Laufwerks gemäß den Anforderungen der LBA-Übersetzung und überträgt beim Zugriff auf die Platte die absolute Adresse des Sektors an diesen. Natürlich ist es das BIOS des SCSI-Controllers, das für die Durchführung der notwendigen Konvertierungen verantwortlich ist.
Kommen wir zum MBR zurück. Wie bereits erwähnt, enthält es 4 Datenblöcke über die Elemente der Partitionstabelle. Dies bedeutet, dass die maximale Anzahl von Partitionen, die im MBR beschrieben werden können, vier ist. Dies bedeutet jedoch nicht, dass die maximale Anzahl von Partitionen, auf die das Laufwerk aufgeteilt werden kann, vier ist. Um diese Barriere zu überwinden, wurde eine spezielle Sektion mit Code 05h - eine erweiterte Partition (Extended Partition) - eingeführt.
Die erweiterte Partition unterscheidet sich sehr von allen anderen Partitionstypen. Erstens beschreibt es nicht die Partition, sondern den Speicherplatzbereich, in dem sich die anderen Partitionen befinden. Die Anzahl der Abschnitte ist theoretisch unbegrenzt. Zwar sind diese Bereiche, die sich in diesem Bereich befinden, etwas "eingeschränkt in Rechten", die wichtigste Einschränkung ist, dass sie nicht aktiv sein können (oder vielmehr aus einem solchen Bereich des Betriebssystems geladen werden können, sondern die Besetzungen der meisten vorhandenen OS erlaubt dies nicht, Sie müssen spezielle Werkzeuge verwenden). Zweitens sollte nur ein Datensatz der erweiterten Partition im MBR vorhanden sein. Vielmehr können sie und mehr (obwohl alle vier) getan werden, aber wie wird sich das OS verhalten, nachdem es so getroffen wurde, ist es schwer vorherzusagen. Beispielsweise ignoriert MS-DOS 6.20 einfach alle erweiterten Partitionen mit Ausnahme der ersten in der Liste, als ob sie überhaupt nicht vorhanden wären. Drittens, im Gegensatz zu den anderen Arten von Sektionen in dem Sektor, der in der Struktur als der Sektor des Beginns des Abschnitts registriert ist, gibt es keinesfalls einen BR. Es gibt tatsächlich einen anderen MBR, der eine Signatur- und Partitionstabelle hat, aber normalerweise keinen Code enthält (normalerweise wird der Sektor, der die Partitionstabelle enthält, aber den Boot-Code nicht enthält, als abstrakter MBR bezeichnet). Da es jedoch keine aktiven Partitionen gibt, ist der Code nutzlos. In der Partitionstabelle eines solchen Sektors gibt es normalerweise einen oder zwei Einträge. Der erste beschreibt eine reguläre Partition (Partition), und diese Partition sollte vollständig innerhalb des erweiterten Partitionsbereichs liegen. Wenn eine reguläre Partition nicht den gesamten Speicherplatz belegt, erscheint ein zweiter Eintrag in der Partitionstabelle, der den verbleibenden Speicherplatz als erweiterte Partition beschreibt. Im nächsten Sektor wird auch ein Abschnitt genau beschrieben und, wenn der Platz übrig ist, ein weiterer Datensatz der erweiterten Partition. Und das geht weiter, bis der Raum vorbei ist. Tatsächlich sind alle Datensätze für die erweiterten Partitionen eine erweiterte Partitionskette, in der Teile des Plattenplatzes in reguläre Partitionen gepflückt werden, bis der Speicherplatz erschöpft ist. Ein Fehler in einem Element dieser Kette führt zu einem Überlauf, daher werden alle Datensätze nach der Unterbrechung vom Betriebssystem nicht gefunden und der von ihnen belegte OS-Speicherplatz wird als nicht belegt betrachtet.
Beim Füllen einer Kette folgt das Betriebssystem im Allgemeinen mehreren Regeln. Erstens sollte die normale Partition, die in der nächsten "Verbindung" der Schaltung beschrieben wird, nicht in der Mitte liegen, da dann zur Beschreibung der resultierenden zwei Stücke von unbesetztem Raum zwei Einträge in der PT dieses Elements über zwei verschiedene erweiterte Abschnitte von a eingegeben werden müssen. Ignorieren Sie alle diese Datensätze außer dem ersten, und dadurch wird ein Teil des Speicherplatzes aus der Partition fallen. Zweitens wird in der Regel ein Datensatz über eine normale Partition erstellt, so dass er den Anfangsbereich der erweiterten Partition einnimmt, und das nächste Element der Partitionskette ist der Rest.
Welche Probleme können mit den Inhalten des MBR auftreten? Erstens, physische oder logische Zerstörung, d.h. Beschädigung der Oberfläche oder andere mechanische Probleme oder die Zerstörung des Servos, was verhindert, dass der Sektor die Platte liest. Solche Fälle gehen jedoch über unsere Überlegungen hinaus. Und das zweithäufigste Problem ist die Zerstörung aller oder eines Teils der Informationen, die in dem Sektor enthalten sind, wodurch die Partitionen entweder vom Betriebssystem nicht gefunden werden oder ihre Parameter falsch bestimmt werden.
Der einfachste Fall ist die Zerstörung der Signatur. In diesem Fall glaubt das Betriebssystem, dass der Sektor einige zufällige Informationen enthält, "Müll", und das Laufwerk selbst ist nicht in Abschnitte unterteilt, und es gibt keine Informationen darüber. Für die Wiederherstellung reicht es nur aus, direkten Zugriff auf Plattensektoren zu haben (DISKEDIT aus dem NORTON UTILITIES-Paket ist am beliebtesten), um die Signatur wiederherzustellen. Der größte Teil des Betriebssystems muss jedoch neu gestartet werden, da das Betriebssystem beim Hochfahren in der Regel Informationen über das Partitionieren des Datenträgers in Partitionen liest und dann seine Änderungen im Arbeitsprozess nicht berücksichtigt.
Ein komplizierterer Fall ist die Zerstörung des Codes. Gleichzeitig geht die Fähigkeit, das Betriebssystem von dem Laufwerk zu starten, verloren, und der Startversuch endet normalerweise mit dem "Aufhängen" des Computers. Wenn Sie gleichzeitig von einem anderen Laufwerk booten (eine andere Festplatte, eine Diskette, eine Boot-CD-ROM usw.), können alle Informationen auf dem Laufwerk verwendet werden. In diesem Fall wird empfohlen, die systemeigenen Tools zur Bootstrap-Code-Wiederherstellung 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.
Die Zerstörung von Code ist nicht so selten, wie es scheinen mag. In der Regel tritt eine solche Störung auf, wenn ein Laufwerk konsistent verschiedene Betriebssysteme in einer oder mehreren Partitionen installiert. Jedes Betriebssystem bei der Installation wünscht, den eigenen Code im MBR zu haben, aber bei weitem nicht alle Sorge um die Erhaltung dieses Codes, der im Sektor früher war. Zum Beispiel schreibt Windows 9x den Bootloader-Code neu, ohne den Benutzer zu informieren und den alten Inhalt unwiderruflich zu zerstören. Dieser Fall ist jedoch nicht sehr beängstigend, da alle OS Loader sehr ähnlich sind. Das Problem tritt auf, wenn Softwaretools von Drittanbietern wie EZ-Laufwerk, ODM oder SpeedStore zum Partitionieren eines Laufwerks verwendet werden, für die MBR- und MBS-Konzepte nicht äquivalent sind. Aufgrund einer anderen Lade-Ideologie (die wir später betrachten werden), führt der Code in MBS eine andere Funktion aus, nämlich das Suchen und Laden eines Teils von MBR-Code, der sich in anderen Sektoren der Platte befindet. Das Ersetzen des Codes führt dazu, dass diese Funktion verloren geht und dementsprechend gibt es Probleme anderer Art. Der Benutzer sollte sehr vorsichtig sein, wenn er solche Softwaretools verwendet - die Wiederherstellung des Codes in solchen Fällen kann sehr schwierig sein.
Und der schwierigste und unangenehmste Fall ist die Zerstörung der Partitionstabelle selbst. Wie Sie jedoch wissen, kommt das Problem nie allein, und meistens werden alle drei Komponenten des MBR zerstört, aber die Zerstörung des PT führt zu den schlimmsten Konsequenzen, da es keinen Zugriff auf die auf dem Laufwerk gespeicherte Information erlaubt. PT kann vollständig und teilweise zerstört werden - d.h. einige der Elemente sind zerstört, und der Rest ist intakt. Es gibt Zeiten, in denen das PT im MBR intakt ist und der Partitionsdatensatz in einem der Links in der erweiterten Partitionskette zerstört wird. Da jedoch die Struktur des MBR und die Struktur absolut identisch sind (mit der Ausnahme, dass in den Elementen der erweiterten Partition kein Code vorhanden ist), ist die Wiederherstellungstechnik in beiden Fällen dieselbe.
Es gibt genügend Programme, die zerstörte PTs reparieren können. Die Qualität ihrer Arbeit ist unterschiedlich und hängt hauptsächlich davon ab, wie schwierig es ist, die Platte zu partitionieren, ob alle Partitionstypen, die auf der Platte waren, dem Programm bekannt sind und ob es andere Datenkorruption in anderen Sektoren gibt, besonders in den BR-Partitionen. Wir suchen jedoch keine einfachen Wege, und wenn Ihnen kein Chef über den Kopf hängt, "drucken Sie meine Form schneller aus, springen Sie, ich komme spät in den Urlaub!", Sie werden viel mehr Freude haben, wenn Sie selbst, ohne automatische Programme, Nur mit ihrem Wissen können alle Informationen wiederhergestellt werden. Sie können sogar alle notwendigen Nachforschungen anstellen, alle Zahlen erhalten, die Sie in PT schreiben müssen, und dann das Wiederherstellungsprogramm ausführen und nach dessen Arbeit sicherstellen, dass alles korrekt berechnet wird. Oder vielleicht sogar die Ergebnisse ihrer Arbeit korrigieren, wenn sie nicht 100% gearbeitet hat.
Also, für die Arbeit brauchen wir: Boot-Diskette mit jedem DOS, die die Datei DISKEDIT.EXE, Bleistift, Papier, Taschenrechner (aber der Rechner ist in DISKEDIT) und ein paar Gehirne kopiert. 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. In diesem Stadium sind keine Treiber erforderlich, außer wenn das Laufwerk an einen alten SCSI-Controller angeschlossen ist und ohne das Laden des Treibers einfach nicht sichtbar ist. Sie können den Maustreiber herunterladen - es wird ein wenig bequemer sein. Jetzt die Hauptkleinigkeit - außer den angegebenen Dateien auf der Diskette sollte es nichts geben! Dies ist wichtig - wenn keine Konfigurationsdatei auf der Diskette vorhanden ist, wird DISKEDIT.EXE im schreibgeschützten Modus gestartet und keine Daten auf dem Datenträger werden geändert, bis wir explizit danach gefragt werden. Eine Diskette im Allgemeinen würde von der Aufzeichnung geschlossen werden.
Starten Sie von der Diskette. Führen Sie DISKEDIT.EXE aus. Drücken Sie nach dem Laden die Tasten Alt-D (oder über das Menü Objekt-Laufwerk). Ein Fenster mit den verfügbaren Festplattengeräten wird angezeigt. Zuerst weisen wir darauf hin, dass wir physische Festplatten brauchen, und wählen dann die richtige Festplatte (sagen wir Festplatte 1) und klicken auf OK. In diesem Fall werden alle Sektoren der Festplatte vom ersten bis zum letzten als Betrachtungsbereich ausgewählt. Das brauchen wir.
Zuerst werden wir das Programm auffordern, einen Festplatten-Scan durchzuführen und alle Sektoren zu finden, die Elemente der erweiterten Partition oder BR-Kette sein können. Und obwohl DISKEDIT einfach nach Sektoren sucht, die eine Signatur haben, und nicht den Inhalt analysieren (das nehmen wir uns zu), können die Ergebnisse die Arbeit viel einfacher machen. Die Wahrheit wird geduldig sein müssen - der Prozess ist nicht schnell, und außerdem muss jeder Sektor, den Sie finden, für einen Bleistift genommen werden, aber das Kerzenlicht kostet.
Also, Werkzeuge - Finde Objekt - Partition / Boot. Lass uns gehen. Jedes Mal, wenn ein Sektor mit einer Signatur erscheint, stoppt die Suche, der Sektor-Dump wird angezeigt und die Sektornummer in der unteren rechten Ecke. Es sind diese Adressen und du musst einen Stift nehmen. Wenn wir jedoch beim Partitionieren einer Platte keine besonders ausgeklügelten Methoden verwenden, werden alle Sektoren, die für uns von Interesse sind, auf der Null- oder ersten Seite im ersten Sektor liegen, d.h. Seite 0 oder 1, Sektor 1. Andere Sektoren, zum Beispiel einige Zyl 12, Seite 4, Sektor 52, können gefahrlos ignoriert werden - das ist Zufall. Es stimmt, wir bekommen die absolute Sektornummer, aber es ist nicht schrecklich, für die "richtigen" Sektoren wird die Nummer durch die Anzahl der Sektoren pro Spur geteilt, normalerweise 63 (andere Werte sind jetzt viel seltener - 17, 26, 40, 56, wo immer ich über die Anzahl der Sektoren 63 sprechen werde, bedenke, dass auf deiner speziellen Festplatte möglicherweise eine andere Nummer verwendet werden muss). Und diese Figur können wir über das Menü (Info - Drive Info) einsehen. Leider kann die Anzahl der Seiten und Zylinder falsch sein (nicht passend für die verwendete Sendung), aber es ist auch nicht schrecklich. Nachdem Sie die Nummer des nächsten Sektors notiert haben, setzen wir die Suche fort (Sie können das Menü "Extras - Erneut suchen" verwenden, Sie können nur Strg-G drücken). Und bis wir eine Nachricht bekommen, dass das Objekt nicht gefunden wurde. In diesem Moment haben wir alle Sektornummern, in denen die Signatur vorhanden ist, auf unseren Händen (oder vielmehr auf dem Papier).
Теперь обрабатываем список, отсеивая явно случайные номера (это которые не делятся на 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 Partition wird das folgende Schema angezeigt: zuerst die erweiterte Partition mit zwei logischen Festplatten - 6 und 2 GB, dann die primäre aktive Partition 2 GB oder 3 primäre Partitionen in der angegebenen Reihenfolge und mit den angegebenen Größen. Die letztgenannte Option passt uns nicht (aus welchen Gründen auch immer). Die Besonderheiten der FDISK-Programmoperation des ausgewählten Betriebssystems erlauben keine Partitionierung: Wenn wir zuerst die primäre Partition erstellen, befindet sie sich am Anfang des Laufwerks. Wenn wir zuerst die erweiterte Partition erstellen, weigert sich das Programm, die primäre Partition zu erstellen.
Wir entscheiden uns, eine Aufteilung mit FDISK so viel wie möglich zu machen und dann manuell zu beenden. Die erste Stufe: Erstellen Sie eine erweiterte Partition mit zwei Festplatten; Zweitens: Fügen Sie manuell einen Datensatz des primären Abschnitts hinzu.
Die erste Stufe der Probleme verursacht nicht: Booten von einer Diskette, erstellen Sie eine erweiterte Partition von 8 GB und darin zwei logische Laufwerke - 6 GB und 2 GB. Starten Sie von der Diskette neu, stellen Sie sicher, dass die Diskette erschienen ist (aber nicht verfügbar - weil wir keine Partitionen formatiert haben!) Laufwerke C: und D:. Wir formatieren sie mit dem Standard FORMAT und während der Formatierung stellen wir sicher, dass das Laufwerk C: 6 GB groß ist, Laufwerk D: - 2 GB. Führen Sie DISKEDIT aus und schauen Sie sich den Inhalt des MBR an. Es hat folgenden Eintrag:
  Startort Endort Relative Anzahl von
 System Boot-Seitenzylinder Sektor-Seitenzylinder Sektor Sektoren Sektoren
 ERWEITERT Nr. 1 0 1 254 972 63 63 15631182
 unbenutzt Nein 0 0 0 0 0 0 0 0
 unbenutzt Nein 0 0 0 0 0 0 0 0
 unbenutzt Nein 0 0 0 0 0 0 0 0
Wir müssen einen Eintrag für den primären Abschnitt hinzufügen. Der Typ ist 0Ch (FAT32x), das Download-Flag ist gesetzt, der Anfang des Abschnitts ist unter Adresse 973/0/1, das Ende des Abschnitts ist unter Adresse 1215/254/63, der relative Sektor des Abschnittsanfangs ist 15631245 (973 * 255 * 63 + 0 * 63 + 1-1), der relative Sektor am Ende des Abschnitts ist 19535039 (1215 * 255 * 63 + 254 * 63 + 63-1), die Anzahl der Sektoren ist 3903795 (19535039-15631245 + 1). Eine sehr bedeutsame Subtilität - wenn die Zylindernummer mehr als 1023 ist, wird der Wert 1023 in das entsprechende Feld eingetragen - leider ist dies der maximale Wert, der dort geschrieben werden kann - und der korrekte OS-Wert wird basierend auf einer gegebenen Anzahl von Sektoren berechnet.
Wir übersetzen DISKEDIT in den Schreib-Lese-Modus (Tools-Konfiguration) und geben in der zweiten Zeile die berechneten Daten ein. Nachdem wir alle Werte eingegeben und überprüft haben, verlassen wir DISKEDIT mit der Esc-Taste, und wenn wir gefragt werden, was wir mit den Änderungen anfangen sollen, antworten wir - schreiben. Перезагружаем компьютер. Stellen Sie sicher, dass die Festplatte jetzt drei Partitionen hat - C: - nicht verfügbar, D: - 6 GB, E: - 2 GB. Wir formatieren das Laufwerk C: mit der Übertragung der Systemdateien darauf. Während der Formatierung stellen wir sicher, dass das Laufwerk C: 2 GB groß ist. Wir aktualisieren den MBR-Code mit dem FDISK / MBR-Befehl, nehmen die Diskette heraus, booten den Computer neu, stellen sicher, dass das Betriebssystem hochgefahren ist, die C:, D: und E: Laufwerke sind verfügbar und haben Größen von 2, 6 und 2 GB. Wir starten NDD und stellen sicher, dass es keine Fehler in der Partitionstabelle oder auf den Festplatten gibt. Разбиение закончено.
Jetzt sieht die Partitionstabelle bei der Anzeige über DISKEDIT folgendermaßen aus:
  Startort Endort Relative Anzahl von
 System Boot-Seitenzylinder Sektor-Seitenzylinder Sektor Sektoren Sektoren
 EXTEND Nr. 1 0 1 254 972 63 63 15631182;  Erweiterter Bereich
 FAT32x Ja 0 973 1 254 1023 63 15631245 3903795;  Primärteil (C :) unbenutzt Nein 0 0 0 0 0 0 0 0
 unbenutzt Nein 0 0 0 0 0 0 0 0
Wenn Sie den Cursor auf eine Zeile mit einem Datensatz über den erweiterten Abschnitt setzen und die Eingabetaste drücken, überträgt DISKEDIT automatisch den Scan an den Sektor, auf den die Adresse des Abschnittsanfangs zeigt (für den primären Abschnitt ist es BR, für den erweiterten Abschnitt das Element der Schnittkette). In unserem Fall sehen wir den Inhalt des Partitionskettenelements:
  Startort Endort Relative Anzahl von
 System Boot-Seitenzylinder Sektor-Seitenzylinder Sektor Sektoren Sektoren
 FAT32x Nr. 2 0 1 254 728 63 63 11711259;  Logische Partition (D :) EXTEND Nr. 0 729 1 254 972 63 11711322 3919923;  Erweiterter Bereich
 unbenutzt Nein 0 0 0 0 0 0 0 0
 unbenutzt Nein 0 0 0 0 0 0 0 0
Fahren Sie entlang der Gliederkette zum nächsten Element:
  Startort Endort Relative Anzahl von
 System Boot-Seitenzylinder Sektor-Seitenzylinder Sektor Sektoren Sektoren
 FAT32x Nr. 1 729 1 254 972 63 63 3919860;  Logische Partition (E :) unbenutzt Nein 0 0 0 0 0 0 0 0
 unbenutzt Nein 0 0 0 0 0 0 0 0
 unbenutzt Nein 0 0 0 0 0 0 0 0
Das nächste Element der Kette enthält keinen Eintrag für die erweiterte Partition. Die Kette ist vorbei.