Ich versuche, einen Bootloader auf ein USB-Gerät zu schreiben.
"USB-Gerät" ist mehrdeutig. Es gibt USB-Video- und Audiogeräte sowie verschiedene Speichergeräte. Mit "USB-Laufwerk" meinen Sie vermutlich ein USB-Flashlaufwerk und nicht eine USB-Festplatte (die im ersten Sektor immer einen MBR hat und nicht einen Dateisystem-Bootsektor).
Es wurde bereits als FAT32 formatiert, Sektor 0 hatte jedoch eine völlig andere Struktur als auf dieser Webseite beschrieben
Das Flash-Laufwerk scheint einen MBR (Master Boot Record) mit einer Partitionstabelle (in Sektor 0) zu haben, und das FAT-Dateisystem befand sich in einer primären Partition.
Wie auf dieser Webseite erwähnt, handelt es sich dabei um Sektorabbilder von Bootsektoren, die im ersten Sektor eines Dateisystems installiert sind, das sich normalerweise in einer Partition (oder im ersten Sektor einer Diskette) befinden würde.
Und wie kann ich das für neue USB-Laufwerke reproduzieren?
Ich kann den Dateisystem-Bootsektor in Sektor 0 eines USB-Flashlaufwerks installieren
Nullstellen eines beliebigen MBR in Sektor Null. Bei einem Linux-System
sudo dd if=/dev/zero of=/dev/sdX count=64
Dies ist möglicherweise der entscheidende Schritt, insbesondere wenn bereits ein MBR vorhanden ist. Ich weiß nicht, wie ich diesen Schritt unter Windows ausführen kann.Formatieren Sie das USB-Flashlaufwerk mit Windows (Windows besteht darauf, es zu formatieren, bevor Sie es trotzdem verwenden können). Ich habe Win7 verwendet, um das Laufwerk schnell zu formatieren, um die Ergebnisse unten zu erhalten.
Der resultierende Sektor 0 auf dem USB-Flash-Laufwerk ähnelt dem, was Sie möchten (dh es ist kein MBR und es gibt keine Partitionstabelle).
Nachtrag
Ich bin nicht sicher, ob ich den Unterschied zwischen einem MBR- und einem Dateisystem-Bootsektor richtig verstehe
Der Master Boot Record, MBR, wird im ersten Sektor eines Massenspeichergerätes mit PC-Partition installiert. Am Ende des Sektors befindet sich eine Partitionstabelle, die das Gerät in kleinere logische Geräte unterteilt. Eine Partition wird als "aktiv" markiert, und der Startcode im MBR lädt und führt den ersten Sektor dieser "aktiven" Partition aus.
Der erste Sektor einer bootfähigen Partition (oder der erste Sektor einer Diskette) enthält einen Bootloader. Das in dieser Partition installierte Dateisystem verfügt über den entsprechenden Code in diesem ersten Sektor, um den Startvorgang fortzusetzen, wenn ein Betriebssystem installiert wird.
Wenn kein Betriebssystem oder das nächste zu ladende Boot-Programm (z. B. BOOTMGR) vorhanden ist, gibt der Bootloader Text aus, der besagt, dass es sich nicht um ein startfähiges Gerät / eine startfähige Partition handelt (z. B. "Entfernen von Datenträgern oder anderen Datenträgern. Datenträgerfehler. Drücken Sie eine beliebige Taste, um einen Neustart durchzuführen. ")
IOW Sie möchten, dass das USB-Flash-Laufwerk einer Superparty-Diskette und nicht einer (partitionierten) Festplatte ähnelt.
Beachten Sie die Grenzen des Dateisystems, z. B. ist das tragbarste Dateisystem, FAT32, auf 32 GB beschränkt.
Zu Ihrer Information Ich bin mir dieser Besonderheit bei USB-Flash-Laufwerken und SD-Karten bewusst, da durch das Weglassen der MBR- und Partitionstabelle solche Speichermedien auf einigen Linux-Embedded-Geräten (die Partitionen erwarten) nicht lesbar sind. In Tutorials zum Initialisieren von bootfähigen VFAT-Medien für Embedded Linux werden häufig Partitionierung und Formmatting unter Linux angegeben, um diese Windows- Fehler zu vermeiden .