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

Home-Boot-Datensatz - Master-Boot-Record (MBR)

Zuerst definieren wir die Terminologie. 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 eigentlich Master Boot Record. Dieser Eintrag (Programmcode und Daten), der von der Festplatte in den Arbeitsspeicher geladen wird und die logischen Partitionen identifiziert, erkennt die aktive Partition und lädt einen Bootdatensatz (Boot Record - BR) herunter, der den Start des Betriebssystems fortsetzt. Das zweite Konzept ist der Bootsektor. Der MBS (Master Boot Sector) ist der Sektor, der sich auf dem Zylinder 0 befindet, die Ebene 0 und die Nummer 1. In den meisten Fällen enthält der MBS den gesamten erforderlichen Code und alle Daten. , 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 Platz oder aus Sicherheitsgründen), und der Code dieses Sektors stellt sicher, dass andere Sektoren in den Speicher geladen werden. 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, merke ich, dass solch ein MBR (der den Start eines Betriebssystems bereitstellt und nur MBS belegt) normalerweise als Generischer MBR bezeichnet wird.
Im Allgemeinen erschien MBR auf Festplatten, die mit MS DOS Version 3.0 anfingen, in früheren Versionen wurde die Festplatte als Diskette formatiert und im ersten Sektor befand sich BR. Dementsprechend war der Datenträger eine einzelne Partition und konnte nicht in logische Teile zerlegt werden - es war wahr, bei den Plattengrößen, die dann veröffentlicht wurden, war es irrelevant.
Die Sektorgröße auf der Festplatte beträgt 512 Byte. Dieser Platz reicht aus, um alles zu befriedigen, was Sie brauchen - sowohl Code als auch Daten. Es sollte jedoch nur eine Struktur vorhanden sein - es ist eine Unterschrift. Dieses Wort ist eine spezielle, genau festgelegte Folge von 2 Bytes mit hexadezimalen Werten von 55h AAh, die in die letzten 2 Bytes des Sektors geschrieben werden und entsprechend einen Versatz vom Beginn des Sektors 1FEh haben. 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 nach dem Lesen des ersten Sektors am Anfang nicht die korrekte Signatur findet, überträgt er die Kontrolle über den dort befindlichen Code nicht, auch wenn er korrekt ist, meldet aber, 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 auch eine Signatur 55h AAh in den letzten zwei Bytes enthält.
Nun, wenn wir mit dem Schwanz beginnen, dann werden wir von dort an den Anfang des Sektors gehen. Vor der Signatur in der Nähe befinden sich 4 Datenblöcke mit jeweils 16 Byte (jeweils mit einer Verschiebung vom Beginn des Sektors 1BEh, 1CEh, 1DEh, 1EEh). Die Menge dieser Blöcke heißt Partition Table (PT) und jeder einzelne Eintrag wird als Partition Table Entry (Partition Table Entry) oder einfach als Partition bezeichnet. Diese 16 Byte reichen aus, um alle notwendigen Merkmale der Partition anzugeben: Partitionstyp, Partitionsaktivitätsflag, Start- und Endpartitionssektoren im Format Zylinder (Pfad) - Zylinder (Kopfbereich, CHS) , die relative Anzahl des ersten Sektors (relativ zu MBR) und die Anzahl der Sektoren in dem Abschnitt.
Der Rest des Sektorraums ist durch den Programmcode belegt, der PT-Parsen bereitstellt, nach der aktiven Partition sucht, BR in diesem Abschnitt lädt und an die Steuerung überträgt. Da es leicht zu berechnen ist, bleibt der Code 512 - 4 * 16 - 2 = 446 Bytes. Dieser Raum ist reichlich genug, um diese Aktionen auszuführen.
Die allgemeine Struktur des MBR kann daher durch die folgende Tabelle dargestellt werden:
  Offsetlänge Beschreibung
 000h 446 Ladekode
 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:
  Offsetlänge Beschreibung
 00h 1 Symptom der Partitionsaktivität
 01h 1 Beginn des Abschnitts - Kopf
 02h 1 Der Anfang des Abschnitts ist Sektor (Bits 0-5), die Spur (Bits 6, 7)
 03h 1 Beginn des Abschnitts ist die Spur (die höchsten Bits von 8.9 werden im Byte der Sektornummer gespeichert)
 04h 1 Partitionscode
 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 Single-Byte-Kennung. Wenn der Wert 00h ist, wird berücksichtigt, dass dieses PT-Element keine Partitionsinformationen enthält und sein Inhalt ignoriert wird. Jeder Wert ungleich Null bedeutet, dass sich im angegebenen Bereich ein Abschnitt eines bestimmten Typs befindet. Einige Werte geben eindeutig den Typ der Partition an, einige entsprechen mehreren möglichen Typen, und die Definition eines bestimmten Typs ist dem Betriebssystem zugewiesen, die anderen sind für die zukünftige Verwendung reserviert. Eine relativ vollständige und aktuelle Anleitung zu Partitionstypcodes finden Sie in der Interrupt-Liste von Ralf Brown 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-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 durch BR-Inhalt bestimmt)
 0Bh 32-Bit-FAT
 0Ch 32-Bit FAT mit erweitertem Management INT13
 0Eh LBA VFAT (wie 06h, unter Verwendung der erweiterten INT13 Steuerung)
 0Fh LBA VFAT (wie 05h, unter Verwendung der erweiterten INT13 Steuerung)
 17h Versteckte NTFS-Partition
 1Bh Ein versteckter Abschnitt der 32-Bit-FAT (das gleiche wie 0Bh)
 1Ch Ein versteckter Abschnitt der 32-Bit-FAT mit der INT13 Advanced-Steuerung (die gleiche wie 0Ch)
 1Eh Versteckte Partition LBA VFAT (wie 06h, unter Verwendung der erweiterten INT13-Steuerung)
 86h Abschnitt FAT-16 Stripe-Array Windows NT
 87h NTFS-Partition Stripe-Array Windows NT
 B6h Gespiegelte Masterpartition FAT-16 Windows NT
 B7h Gespiegelte Masterpartition NTFS Windows NT
 C6h Gespiegelte Slave-Partition FAT-16 Windows NT
 C7h Gespiegelte Slave-Partition NTFS Windows NT
Ein Zeichen der 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 (andernfalls, wie man eine Wahl trifft?). 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, übernimmt jedoch den Ladeprogrammcode, sodass der Wert des Byte des Startattributs nur ein Standard für Standardlader ist.
Der 3-Byte-Adreßblock der Start- und Endadressenadressen hat das gleiche Format. In der Tat werden Verpackungswerte so verwendet, dass sie ein minimales Volumen haben. Das Format des Pakets entspricht vollständig der Art und Weise, wie diese Daten an die Prozeduren für das Arbeiten mit der Festplatte (Int 13h) übertragen werden, die sich im BIOS des Computers befindet, und daher sind die Kosten für die Overhead-Berechnungen minimal. In diesem Fall sind die Zylinder und Spuren beginnend mit Nullwert und Sektoren nummeriert - aus irgendeinem Grund von der ersten. Ich weiß nicht warum - es geschah historisch.
Der Sektor, auf den die Adresse des Anfanges des Abschnitts verweist, enthält einen speziellen Datensatz, der Boot-Record (BR). Sein Zweck und seine Zusammensetzung werden in einem gesonderten Artikel behandelt.
Der Versatz 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 zunächst in Sektoren einer Spur neu nummeriert werden, dann in der Reihenfolge der Erhöhung der Anzahl der Köpfe und, Zylinder. Und was ist die Anzahl der Sektoren in der Sektion - es ist ohne Erklärung verständlich.
Natürlich sind alle diese Werte durch einfache Abhängigkeiten verbunden, weil die darin enthaltenen Informationen redundant sind. Deshalb gebe ich die Formeln für die Beziehung zwischen ihnen.
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 sind für die Sektoren des Anfangs (S) und des Endes (E) des Abschnitts gleich;
H H - Anzahl der Spuren auf der Festplatte;
S H - Die Anzahl der Sektoren auf einer Spur auf der Festplatte,
dann:
Die absolute Zahl des Sektors, in dem sich PT befindet:
Num PT = C M * H H * S H + H M * S H + S M -1
Absolute Sektornummer am Anfang des Abschnitts:
Num S = C S * H H * S H + H S * S H + S S -1
Absolute Sektornummer am Ende 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 = Num S - Num PT
Anzahl der Sektoren:
Betrag = Num E - Num S +1
Aus den obigen Formeln ist darüber hinaus 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 ausgewählten Übersetzungsmodus in den BIOS-Einstellungen ab. Daher kann eine Festplatte, die in einem einzigen Übersetzungsmodus partitioniert ist, nicht lesbar sein, wenn sich der Übersetzungsmodus ändert.
Für IDE-Laufwerke gibt es verschiedene Übersetzungsmodi:
CHS (Zylinderkopf-Sektor) - während die Geometrie der Platte dieselbe ist, wie sie es dem Computer sagt. Schmeichle nicht selbst - die meisten Laufwerke haben keine echte Geometrie. Der Controller, der Teil der Festplatte ist, erzeugt jedoch die notwendigen Transformationen selbst und die Art und Weise, wie dies geschieht, ist für uns nicht wichtig. Die maximale Anzahl an 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 maximale verfügbare Speicherkapazität in dieser Sendung ohne spezielle Programme beträgt 504 MB . Bei Plattenvorgängen wird die Sektoradresse vom Festplattencontroller auf 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 erfolgt auf das Format, wenn die Anzahl der Zylinder 1024 nicht überschreitet und die Anzahl der Sektoren pro Spur 63 beträgt. Die Anzahl der Tracks hängt vom BIOS des Computers und der Festplatte ab und kann in der Regel 16, 64, 128 oder 255 sein Verwenden Sie die Reduzierung auf 255 (0-254) Spuren unabhängig von der Lautstärke des Laufwerks. Beim Zugriff auf die Festplatte wird die Anzahl der in der LBA-Übersetzung übertragenen Zylinder, Köpfe und Sektoren auf die absolute Sektornummer neu berechnet und vom Festplattencontroller an das BIOS des Computers übertragen, um die Operation auszuführen. Bei einer Festplattenkapazität von mehr als 8 GB ist die Anzahl der Zylinder mehr als 1024. Daher ist auf Computern, die den Int 13h Advanced-Modus nicht unterstützen, ohne Installation spezieller Software kein Speicherplatz außerhalb von 8 GB verfügbar (unabhängig vom Broadcast-Modus). Manchmal hilft jedoch das BIOS des Computers zu aktualisieren.
GROSS oder ECHS (Extended CHS) - in diesem Übersetzungsmodus ist die Anzahl der Zylinder aufgrund einer mehrfachen Erhöhung der Anzahl der Spuren auf weniger als 1024 reduziert. Die gegebene Anzahl von Spuren ist streng genommen ein Vielfaches der tatsächlichen Anzahl von Sektoren pro Spur ändert sich nicht. Bei den meisten modernen Laufwerken beträgt die Anzahl der Sektoren pro Spur (laut Controller des Laufwerks) jedoch 63. Die maximale verfügbare Lautstärke auf Computern, die den Int 13h Advanced-Modus nicht unterstützen, hängt von der tatsächlichen Anzahl der Tracks ab, aber nicht mehr als 8 GB (zum Beispiel, hat 16 Spuren, dann können sie in der GROSSEN Übersetzung 16, 32, 48 ... 240 aber nicht 255 sein, weil 255 kein Vielfaches von 16 ist und das maximal verfügbare Volumen 1024 * 240 * 63 * 512 / (1024 3 ) 7,38 GB).
Bei der Verwendung von LBA oder LARGE Translation wegen der Aufrundung auf ganzzahlige Werte können mehrere Sektoren am Ende des Laufwerks aus dem beschriebenen Bereich herausfallen und nicht mehr zugänglich sein. Die Verluste sind jedoch normalerweise gering.
Bei SCSI-Laufwerken arbeiten sie immer im Modus der LBA-Übersetzung. Stattdessen stellt der SCSI-Controller die Geometrie des Laufwerks gemäß den Anforderungen der LBA-Übersetzung dar und überträgt beim Zugriff auf die Platte die absolute Adresse des Sektors an diese. Natürlich ist es das BIOS des SCSI-Controllers, das für die Durchführung der notwendigen Konvertierungen verantwortlich ist.
Lassen Sie uns zum MBR zurückkehren. Wie bereits erwähnt, enthält es 4 Datenblöcke zu den Elementen 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 der Antrieb geteilt werden kann, vier ist. Um diese Barriere zu überwinden, wurde eine spezielle Art von Abschnitt mit Code 05h - eine erweiterte Partition (Extended Partition) eingeführt.
Die erweiterte Partition unterscheidet sich sehr von allen anderen Partitionstypen. Zuerst beschreibt es nicht die Partition, sondern den Speicherplatzbereich, in dem sich die anderen Partitionen befinden. Die Anzahl der Abschnitte ist theoretisch unbegrenzt. Zwar sind die Abschnitte, die sich in diesem Bereich befinden, etwas "in Rechten" beschränkt, die bedeutendste Einschränkung besteht darin, dass sie nicht aktiv sein können (oder vielmehr kann dies aus einem solchen Abschnitt des Betriebssystems erfolgen, OS erlaubt dies nicht, Sie müssen spezielle Tools verwenden). Zweitens sollte nur ein Datensatz der erweiterten Partition im MBR vorhanden sein. Vielmehr können sie getan werden und mehr (obwohl alle vier), aber wie wird sich das Betriebssystem verhalten, wenn es sich so getroffen hat, ist es schwierig vorherzusagen. Beispielsweise ignoriert MS-DOS 6.20 einfach alle erweiterten Partitionen außer dem ersten in der Liste, als ob sie überhaupt nicht vorhanden sind. Drittens gibt es im Gegensatz zu den anderen Arten von Abschnitten in dem Sektor, die in der Struktur als Sektor des Beginns des Abschnitts eingetragen sind, keineswegs ein BR. Es gibt tatsächlich einen anderen MBR, der eine Signatur und eine Partitionstabelle hat, aber normalerweise keinen Code enthält (normalerweise der Sektor, der die Partitionstabelle enthält, aber nicht den Startcode enthält, heißt Abstrakt MBR). Da jedoch keine aktiven Partitionen vorhanden sind, ist der Code nicht von Nutzen. In der Partitionstabelle eines solchen Sektors gibt es normalerweise einen oder zwei Einträge. Die erste beschreibt eine reguläre Partition (Partition), und diese Partition sollte vollständig im Speicher der erweiterten Partition sein. Wenn eine reguläre Partition nicht den gesamten Speicherplatz belegt, wird in der Partitionstabelle ein zweiter Eintrag angezeigt, der den verbleibenden Speicherplatz als erweiterte Partition beschreibt. Im nächsten Sektor wird auch ein Abschnitt genau beschrieben und, falls der Platz noch ü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 Speicherplatzes in reguläre Partitionen gezupft werden, bis der Speicherplatz erschöpft ist. Ein Fehler in einem Element dieser Kette führt zum Auslaufen, so dass alle Datensätze nach der Unterbrechung vom Betriebssystem nicht gefunden werden und der von ihnen belegte Speicherplatz als unbesetzt betrachtet wird.
Beim Befüllen einer Kette folgt das Betriebssystem in der Regel mehreren Regeln. Erstens sollte die normale Partition, die in der nächsten "Verbindung" der Schaltung beschrieben wird, nicht in der Mitte liegen, da dann, um die resultierenden zwei Teile unbesetzten Raums zu beschreiben, zwei Einträge in der PT dieses Elements über zwei verschiedene erweiterte Abschnitte von a eingegeben werden müssen, ignorieren Sie alle solche Datensätze außer dem ersten, und als Folge davon wird ein Teil des Speicherplatzes aus der Partition herausfallen. Zweitens wird in der Regel ein Datensatz über eine normale Partition erstellt, so dass er den Anfangsbereich der erweiterten Partition belegt und das nächste Element der Partitionskette der Rest ist.
Welche Probleme können mit den Inhalten des MBR auftreten? Erstens, physikalische oder logische Zerstörung, d. H. Beschädigung der Oberfläche oder andere mechanische Probleme oder die Zerstörung des Servos, die den Sektor daran hindert, die Platte zu lesen. Solche Fälle gehen jedoch über unsere Überlegung hinaus. Und das zweithäufigste Problem ist die Zerstörung aller oder eines Teils der in dem Sektor enthaltenen Informationen, wodurch die Partitionen entweder nicht vom Betriebssystem 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 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 durch direkten Zugriff auf Disk-Sektoren aus (DISKEDIT von NORTON UTILITIES ist am populärsten), um die Signatur wiederherzustellen. Der Großteil des Betriebssystems muss jedoch neu gestartet werden, da das Betriebssystem in der Regel beim Start Informationen über die Partitionierung der Festplatte in Partitionen liest und die Änderungen im Arbeitsprozess nicht berücksichtigt.
Ein komplizierterer Fall ist die Zerstörung des Codes. Gleichzeitig ist die Möglichkeit, das Betriebssystem vom Laufwerk zu booten, verlorengegangen, und der Boot-Versuch endet normalerweise, wenn der Computer "aufhängt". Wenn Sie von einem anderen Laufwerk (einer anderen Festplatte, Diskette, CD-ROM usw.) booten, sind alle Informationen auf dem Laufwerk verfügbar. In diesem Fall wird empfohlen, die systemeigenen Bootstrap-Code-Wiederherstellungstools zu verwenden, die in jedem Betriebssystem verfügbar sind. Beispielsweise wird in Windows 9x zu diesem Zweck das Programm FDISK.EXE verwendet, das mit dem Schlüssel / MBR gestartet wird.
Die Zerstörung von Code ist nicht so selten, wie es scheint. Normalerweise tritt ein solches Ärgernis auf, wenn ein Laufwerk durchgängig in einem oder mehreren Partitionen installiert wird. Jedes Betriebssystem bei der Installation wünscht einen eigenen Code in MBR, aber nicht alle kümmern sich um die Konservierung dieses Codes, der im Sektor früher war. Beispielsweise überschreibt Windows 9x den Bootloader-Code, ohne den Benutzer zu informieren und den alten Inhalt unwiederbringlich 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 das MBR- und MBS-Konzepte nicht gleichwertig sind. Aufgrund einer anderen Ladeideologie (die wir später in Betracht ziehen werden) führt der Code in MBS eine andere Funktion aus, nämlich das Suchen und Laden eines MBR-Codes, der sich in anderen Sektoren der Platte befindet. Der Austausch des Codes führt dazu, dass diese Funktion verloren geht und dementsprechend Probleme anderer Art auftreten. Der Benutzer sollte sehr vorsichtig sein, wenn er solche Software-Tools verwendet - die Wiederherstellung des Codes in solchen Fällen kann sehr schwierig sein.
Und der schwierigste und unangenehmste Fall ist die Zerstörung des Partitionstisches selbst. Wie Sie jedoch wissen, kommt der Ärger niemals allein, und am häufigsten werden alle drei Komponenten des MBR zerstört, aber es ist die Zerstörung von PT, die zu den schwersten Konsequenzen führt, da der Zugriff auf die auf dem Laufwerk gespeicherten Informationen nicht erlaubt ist. PT kann vollständig zerstört werden, und möglicherweise teilweise - d. H. einige der Elemente werden 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 die Struktur des MBR und der Struktur jedoch absolut identisch sind (mit der Ausnahme, dass in den Elementen der erweiterten Partition kein Code vorhanden ist), ist die Wiederherstellungsmethode in beiden Fällen gleich.
Es gibt genug 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 war, die Festplatte zu partitionieren, ob die Partitionstypen, die auf der Festplatte lagen, dem Programm bekannt sind und ob in anderen Sektoren, insbesondere in den BR-Partitionen, andere Daten beschädigt sind. Wir suchen aber nicht nach einfachen Wegen, und wenn Sie keinen Chef über dem Kopf hängen, "meine Formulare schneller ausdrucken, springen, ich komme zu spät zu Urlaub!", Werden Sie viel mehr Freude haben, wenn Sie selbst ohne automatische Programme, nur mit ihrem Wissen, in der Lage, alle Informationen wiederherzustellen. Sie können sogar alle nötigen Recherchen durchführen, alle Zahlen erhalten, die Sie in PT schreiben müssen, und dann das Wiederherstellungsprogramm ausführen und nach seiner Arbeit sicherstellen, dass alles richtig berechnet wird. Oder vielleicht sogar die Ergebnisse ihrer Arbeit korrigieren, wenn sie nicht 100% arbeitete.
Also für die Arbeit brauchen wir: Boot-Diskette mit einem DOS, die die Datei DISKEDIT.EXE, Bleistift, Papier, Rechner (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 benutze DOS 7.10 von Windows 98 SE und DISKEDIT aus dem Paket NORTON UTILITIES 2002. Zu diesem Zeitpunkt werden keine Treiber benötigt, außer wenn das Laufwerk an einen alten SCSI-Controller angeschlossen ist und der Treiber nicht geladen werden kann. 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 - falls keine Konfigurationsdatei auf der Diskette vorhanden ist, startet DISKEDIT.EXE im Nur-Lese-Modus und keine Daten auf der Festplatte werden geändert, bis wir sie explizit anfordern. Eine Diskette im Allgemeinen würde von der Aufzeichnung geschlossen werden.
Booten Sie von der Diskette. Führen Sie DISKEDIT.EXE aus. Drücken Sie nach dem Laden die Alt-D-Tasten (oder durch das Objekt-Laufwerk-Menü). Ein Fenster mit den verfügbaren Plattengeräten wird angezeigt. Zunächst weisen wir darauf hin, dass wir physische Festplatten benötigen, und wählen Sie dann die richtige Festplatte aus (sagen Sie Festplatte 1) und klicken Sie auf OK. In diesem Fall werden alle Sektoren der Platte vom ersten bis zum letzten als Anzeigebereich ausgewählt. Das brauchen wir.
Zuerst werden wir das Programm bitten, einen Datenträger-Scan durchzuführen und alle Sektoren zu finden, die Elemente der erweiterten Partition oder der BR-Kette sein können. Und obwohl DISKEDIT einfach nach Sektoren suchen wird, die eine Signatur haben und nicht die Inhalte analysieren (dies nehmen wir selbst an), können die Ergebnisse die Arbeit erheblich erleichtern. Die Wahrheit muss geduldig sein - der Prozess ist nicht schnell, und neben jedem Sektor, den Sie finden, wird für einen Bleistift genommen werden müssen, aber das Kerzenschein kostet.
Also, Werkzeuge - Objekt finden - Partition / Boot. Lass uns gehen. Jedes Mal, wenn ein Sektor mit einer Signatur auftritt, wird die Suche beendet, der Sektorauszug wird angezeigt und die Sektornummer in der unteren rechten Ecke. Es ist diese Adressen und Sie müssen einen Bleistift nehmen. Wenn jedoch bei der Partitionierung einer Platte 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. Andere Sektoren, z. B. einige Cyl 12, Seite 4, Sektor 52, können sicher ignoriert werden - dies ist zufällig. Zwar erhalten wir die absolute Sektornummer, aber es ist nicht schlimm, für die "richtigen" Sektoren wird die Anzahl durch die Anzahl der Sektoren pro Spur geteilt, gewöhnlich 63 (andere Werte sind jetzt viel weniger verbreitet - 17, 26, 40, 56 wo immer ich über die Anzahl der Sektoren sprechen werde 63, bedenken Sie, dass auf Ihrem Laufwerk möglicherweise eine andere Nummer verwendet werden muss). Und diese Zahl können wir durch das Menü sehen (Info - Drive Info). Unglücklicherweise ist die Anzahl der Seiten und Zylinder dort falsch (nicht für die verwendete Sendung geeignet), aber es ist auch nicht schlimm. Nach dem Schreiben der Nummer des nächsten Sektors setzen wir die Suche fort (Sie können das Menü Extras - Wiederholen verwenden, Sie können nur Strg-G). Und so, bis wir eine Nachricht erhalten, dass das Objekt nicht gefunden wurde. In diesem Moment haben wir alle Sektornummern, in denen die Unterschrift vorhanden ist, auf unseren Händen (oder besser gesagt auf 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.
Исходя из желаемого разбиения, видится следующая схема: сначала расширенный раздел с двумя логическими дисками в нём - 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
Очередной элемент цепи не содержит записи о расширенном разделе. Цепь закончилась.