Was macht die Signatur eines Bootssektors aus?

447
wazzy

Ich habe versucht, die Frage zu vereinfachen, indem ich zum Kern des Problems komme:

Was macht den "ersten Sektor" eines Geräts genau zum "Bootsector"?

  • Ist der Bootssektor ein logischer Sektor, ein physischer Sektor oder beides?
  • Wenn sich die Größen der logischen Sektoren und der physischen Sektoren zwischen den Geräten unterscheiden können, beeinflusst dies die Größe des Bootsektors?

Teile aus der alten Frage unten: Teil I: Was ist der Unterschied zwischen READING vom Bootsektor von 512-Byte- und Nicht-512-Byte-Sektorgeräten?

Welcher Sektor wird für die folgenden Geräte als "erster Sektor" oder "Bootssektor" betrachtet? Wie werden die Bootsektoren in 512-Byte-Sektorgeräten und Nicht-512-Byte-Sektorgeräten identifiziert? Was sind ihre Unterschriften?

  • Diskette (512-Byte-Sektor)
  • Herkömmliche Festplatte (512-Byte-Sektor)
  • CD-ROM (2048-Byte-Sektor)
  • DVD-ROM (? -Byte-Sektor)
  • BD-ROM (? -Byte-Sektor)
  • Flash-Speichergerät (sind "Sektoren" hier überhaupt anwendbar?)
  • SSDs (sind "Sektoren" hier überhaupt anwendbar?)
  • HDD mit erweitertem Format und 512-Byte-Emulation (4096-Byte-Sektor)
  • HDD im erweiterten Format ohne Emulation (4096-Byte-Sektor)

Wie groß ist die physische und logische Sektorgröße für CDs, DVDs und BDs? CDs sind 2048 Byte große Sektoren. Ich bin nicht sicher über die DVDs und BDs. Bei CDs folgen Sie dem El-Torito-Standard zum Lesen und Schreiben von Bootsektoren. Für DVDs und BDs weiß ich nicht, nach welchem ​​Standard. Mit dem El-Torito-Standard können Sie entweder 512-Byte-Sektoren (z. B. eine Diskette oder eine Festplatte) emulieren oder mit der nativen Größe booten.

Teil II: Was ist der Unterschied zwischen dem SCHREIBEN in den Bootsektor von 512-Byte- und Nicht-512-Byte-Sektorgeräten?

  • Wie schreiben Sie im Besonderen in den Bootsektor der oben genannten Geräte, damit Sie in Teil I von ihnen lesen können?
  • Ich sehe, ddkann verwendet werden, aber ich sehe auch, dass man einfach ein einfaches C-Programm in open()das Gerät schreiben kann, lseek()mit einem angegebenen Byte-Offset und write()direkt in die ersten 512 Bytes des Geräts. (dh schreiben Sie ab Index 0)
  • Ist dies bei Geräten ohne 512-Byte-Größe und bei Betriebssystemen, die keine Sektorgeräte für 512-Byte-Größe kennen, überhaupt möglich? Oder ist das völlig irrelevant?
  • In welche Teile des physischen Sektors sollte für Geräte geschrieben werden, die Folgendes unterstützen: (1) 512-Byte-Emulation und (2) keine Emulation?
0

1 Antwort auf die Frage

0
Brian

Das ist ein bisschen zu viel für eine Frage. Es hängt von dem Computer ab, von welchen Medien er booten kann, und von dem physischen Layout / den Schnittstellen / der Adressierung, die er für diese Medien unterstützt.

Im Allgemeinen werden ältere Schnittstellen und Adressierungsmodi emuliert / übersetzt, um neuere Geräte zu unterstützen, um ein großes Kompatibilitätsfenster aufrechtzuerhalten (neue Laufwerke funktionieren auf älteren Computern, ein neuer Gerätetyp funktioniert mit einer vorhandenen Schnittstelle). Die tatsächliche Größe des physischen Sektors spielt eigentlich nur für die Leistung eine Rolle. Das Anpassen von Daten und das Anpassen der Strukturen an solche Grenzen kann schneller sein als dies nicht der Fall ist.

Ein CDROM-Standard, El Tortio, unterstützt beispielsweise das Ablegen eines Disketten-Images auf der CD, das dann vom BIOS eines Computers gelesen und als Diskette emuliert wird. Dies bedeutet, dass eine startfähige Diskette verwendet werden kann, um eine startfähige CD-ROM zu booten.

Um zu wiederholen, was Sie gesagt haben, ist die physische Sektorgröße nur für die Leistung von Bedeutung. (1) Bedeutet dies, dass physikalische Sektorinformationen vom BIOS / OS / was auch immer abstrahiert werden und nur auf dem physischen Gerät selbst relevant sind? Und (2) bedeutet das, dass die Schnittstellen zum Gerät beeinflussen, wie die logischen Sektorgrößen vom System wahrgenommen werden? (3) Bedeutet dies, dass nur der erste LOGICAL-Sektor dem Bootssektor entspricht? wazzy vor 10 Jahren 0
Wer ist normalerweise für die Emulation / Übersetzung des Adressierungsmodus verantwortlich? Das Gerät? Die Schnittstelle? Das OS Das BIOS? wazzy vor 10 Jahren 0
Sie überdenken es. Wer verantwortlich ist, hängt davon ab, was mit welchem ​​kompatibel ist - ein neues Gerät, das einen älteren Standard unterstützt, oder eine neuere Schnittstelle, die ältere Geräte unterstützt, oder eine ältere Software-API. Wenn eine Nichtübereinstimmung zwischen physischen und logischen Sektorgrößen die Leistung beeinträchtigen würde, gibt es normalerweise einige Abhilfemaßnahmen - etwa das Anpassen von Partitionen an 4-KB-Grenzen auf Laufwerken im Advanced Format. Brian vor 10 Jahren 0
Mein Ziel ist es, zu versuchen, einige nützliche Verallgemeinerungen zu finden, deshalb stelle ich viele Fragen zur Klarstellung ... Ich habe immer noch keine Referenzen gefunden, die genau angeben, was einen Bootssektor auf einem bestimmten Gerät zu einem Bootssektor macht . Wenn Sie darüber nachdenken, können Sie daraus schließen, dass sich der Bootsektor im ersten "logischen Sektor" des Geräts befindet, wie durch die Rückgabe des Geräts angegeben. Natürlich wird das möglicherweise vom BIOS (Lesen vom Gerät) oder vom Betriebssystem (beim Schreiben auf das Gerät) neu interpretiert. Aber ich habe nichts, um diese Behauptung zu stützen oder zu widerlegen. wazzy vor 10 Jahren 0