n'Abend Christoph,
Zunächst einmal ist der Hinweis auf den MBR der Diskette tatsächlich hilfreich. Ich hatte meine Dateien für die modifizierte Startdiskette immer wieder auf säuberlich formatierte Disketten kopiert, und da gabs dann offenbar gar keinen oder einen leeren MBR.
doch, da gab's einen - und zwar den von Windows XP, der nachschaut, ob eine Datei namens ntldr existiert und die ggf. lädt und startet.
Jetzt habe ich folgendes probiert: Startdiskette erstellt, und sämtliche sichtbaren Dateien gelöscht (also nicht formatiert), danach meine Dateien draufkopiert. Siehe da, damit startet das gute Stück.
Das ist ein wichtiger Hinweis, aus dem auch ich noch lernen kann: Das sagt mir, dass Windows XP *wirklich* eine DOS-Startdiskette erstellt, wenn es behauptet, das zu tun. Das hätte ich nicht gedacht (und noch nie ausprobiert).
Den Code im Bootsektor der Disketten habe ich mir in einem Hexeditor mal angeschaut.
Nicht minder hilfreich wäre ein Disassembler - immerhin enthält der Bootsektor einer DOS/Windows-Bootdiskette x86-Assemblercode, der den ganzen Bootvorgang startet. Die ersten drei Bytes (z.B. EB 3C 90) stellen einen relativen Sprungbefehl auf den eigentlichen Bootcode und ein NOP zum Auffüllen dar, bei 003E beginnt dann der eigentlich interessante Code.
Tatsächlich gibt es Unterschiede, wenn eine Diskette nur formatiert oder aber diese Diskette als Startdiskette erstellt wurde. [...]
Okay, das ist der Beleg, dass Windows XP die Disketten mit einem anderen Bootsektor ausstattet, wenn es "DOS-Startdisketten" sein sollen.
Es funktioniert nun zum Beispiel, wenn ich mit Win98 eine Startdiskette erstelle, alle Dateien ohne die Diskette zu formatieren wieder lösche, und die Dateien einer unter WinXP hergestellten Startdiskette draufkopiere.
Natürlich. Der MSDOS-kompatible Code lädt die IO.SYS in den Arbeitsspeicher und führt diese Datei aus.
MSDOS.SYS enthält nur die Zeile ";W98EBD" und darunter eine Leerzeile. [...] Wenn ich die Zeile aber bis auf das Semikolon leer lasse, bootet die Diskette anstandslos.
Die Datei msdos.sys kann sogar ganz wegfallen, sie wird nicht unbedingt benötigt.
Es steht im MBR der Diskette noch deutlich mehr als oben angegeben, allerdings kann ich nicht alle Hex-Zeichen herüberkopieren - es ist mühsam genug, das überhaupt aus dem Hexeditor herauszukopieren.
Der Aufbau der Bootsektors und die darin enthaltenen Datenträger-Informationen sind hinreichend dokumentiert.
Was genau in der IO.SYS stehenbleiben muß, habe ich noch nicht herausgefunden.
Hm, ganz einfach: Der gesamte Programmcode darin. Etwas anderes enthält die io.sys nämlich nicht - außer bei Windows 98, da enthält sie noch das 127kB große Windows-Startlogo als Bitmap.
Also: unter WinXP eine DOS-Startdiskette erstellt, alle Dateien (ohne Neuformatierung) gelöscht, und danach die Dateien der ersten Diskette von DOS 6.22 draufkopiert. Diese Diskette sollte also einen solchen "NT-kompatiblen" MBR enthalten ...
Nein, da war ich im Irrtum: Du hast mir oben schon hinreichend überzeugend nachgewiesen, dass XP eine *echte* DOS-Bootdiskette erzeugt.
shell=pm.exe
Ja, kann man, so weit war ich auch schon. Allerdings muß es korrekterweise
shell=PQMAGIC.EXE
heißen.
Ah, okay. Ich hab den Dateinamen nur aus dem Gedächtnis hingeschrieben. ;-)
Jetzt bleibt nur noch zu klären, wie ich doch noch ein ZIP-Archiv bauen kann, aus dem sich eine bootfähge Diskette extrahieren läßt.
Am besten, du packst ein Image der Bootdiskette zusammen mit rawrite.exe in das Archiv.
Gute nacht erstmal,
Martin
Der Mensch denkt, Gott lenkt.
Der Mensch dachte, Gott lachte.