Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: fr0z3n am 07. January 2007, 18:39
-
Hi!
Ich habe ein Problem. Ich habe ein Image einer leeren unter Windows XP formartierten FAT12 Diskette. Ich arbeite unter Mac OS X. Wenn ich dieses Image dort mounte, funktioniert auch alles einwandfrei. Wenn ich dann allerdings den Bootloader mittels dd if=boot.bin bs=512 count=1 of=floppy.img
in das Image schreiben will, erhalte ich beim Mounten die Fehlermeldung, dass er keine aktivierbaren Dateisysteme findet. Mit dem Bootsektor sollte allerdings alles in Ordnung sein, weil ich von dem Image booten kann und alles soweit funktioniert. Er scheint wohl die FAT Tabelle oder so zerstört zu haben. Aber mittels des dd Befehls wird ja nur der erste Sektor beschrieben.
Hier trotzdem mal der Boot-Sektor:
org 0x7C00
jmp start
OSName db "MSWIN4.1"
BytesPerSec dw 512
SecPerClus db 1
RsvdSecCnt dw 1
NumFATs db 2
RootEntCnt dw 224
TotSec dw 2880
MediaType db 0F0h
FATsize dw 9
SecPerTrack dw 18
NumHeads dw 2
HiddenSec dd 0
TotSec32 dd 0
DrvNum db 0
Reserved db 0
BootSig db 29h
VolumeID dd 0FFFFFFFFh
VolumeLabel db "MYOWNOS "
FileSysType db "FAT12 "
; Dateien werden eingefügt
; Variablen werden deklariert
start:
...
Ich hoffe ihr könnt mir helfen, damit mein Image auch weiterhin FAT12 formatiert bleibt.
EDIT:
Was vielleicht noch wichtig ist: Mac OS X basiert auf UNIX, dass heißt viele UNIX Befehle laufen auch in der Mac Konsole. Aber die Meisten werden das denke ich wissen.
-
Also an dem FAT12 Startblock kann es nicht liegen, der ist richtig.
bitmaster
-
probiers ma mit
jmp near start
dann müsste es funktionieren hatte das selbe problem als ich auf yasm umgestiegen bin.
-
Vergleiche mal den Startblock von deiner Diskette mit dem Startblock des Images. Da sind bestimmt Unterschiede. :)
Vielleicht ist irgendein Parameter etwas anders gesetzt, so dass er z.B. versucht, statt der FAT das Rootverzeichnis oder so zu laden. Vielleicht mag er irgendetwas nicht.
Ansonsten fällt mir auch nichts ein. Vielleicht kannst du das Image mal auf eine Diskette schreiben und unter verschiedenen Betriebssystemen testen (Windows, DOS) oder mal mit den mtools drauf losgehen?
mtools (bzw. mdir) sollte es auch für MacOS geben.
Gruß,
Svenska
-
@M.Nemo:
Also wenn ich jmp near
schreibe funktioniert es immer noch nicht.
@Svenska:
Du meinst, dass ich meinen Bootsektor mit dem was im Image ankommt vergleichen soll? Habe mir die beiden im Hexeditor angeschaut und die sind gleich.
Dabei ist mir aber etwas andere aufgefallen: Das Image ist nach dem Kopieren des Bootsektors per "dd" nur noch 512 Bytes groß. Also nur noch so groß wie der Bootsektor. Das sollte das Problem sein, denke ich. Nur habe ich keine Ahnung wie ich das beheben soll?
-
man dd hilft: conv=notrunc sollte es tun.
-
Dankeschön, dass war es. Jetzt funktioniert es.