2011-08-13 16 views
8

Próbuję napisać bootloader dla systemu Hobby i sprawić, by działał świetnie. Nic specjalnego, po prostu drukuje wiersz tekstu:Niestandardowe problemy z bootloaderem

BITS 16 
ORG 0 

start: jmp main 


OEM   db "Test OS "   
BytesPerSector:  DW 512 
SectorsPerCluster: DB 1 
ReservedSectors: DW 1 
NumberOfFATs: DB 2 
RootEntries: DW 224 
TotalSectors: DW 2880 
Media:  DB 0xf8 
SectorsPerFAT: DW 9 
SectorsPerTrack: DW 18 
HeadsPerCylinder: DW 2 
HiddenSectors: DD 0 
TotalSectorsBig: DD 0 
DriveNumber:  DB 0 
Unused:   DB 0 
ExtBootSignature: DB 0x29 
SerialNumber: DD 0xa0a1a2a3 
VolumeLabel: DB "HOBBY OS " 
FileSystem:   DB "FAT12 " 



main: 
    ;Adjust code Seg. 
    cli 
    mov ax, 0x07c0 
    mov ds, ax 
    mov es, ax 
    mov fs, ax 
    mov gs, ax 
    ;Set up Stack 
    mov ax, 0x0000 
    mov ss, ax 
    mov sp, 0xFFFF 
    sti 

    mov si, msg 
    call print 

print: 

    .charLoop: 

     lodsb 
     or al,al 
     jz .done 
     mov ah, 0x0E 
     int 0x10 
    .done 
     ret 

msg db "Hello World",13,10,0 

Im kompilacji z

nasm -f bin loader.asm -o loader.bin 
dd if=loader.bin of=floppy.img bs=512 count=1 seek=0 

Czytałem, że pierwsze 446 bajtów kod inicjujący i bajty 447 - 509 jest tablica partycji . Próbowałem następnie przy użyciu:

dd if=loader.bin of=floppy.img bs=446 count=1 seek=0 

próbować zapobiec tablicę partycji przed zastąpieniem ale nadal nie cygaro.

Im przy użyciu komputera Mac z OSX i Testowanie OS z VirtualBox

mogę uruchomić floppy.img w VBox i kod działa poprawnie, ale gdy próbuję zainstalować bootloader na FAT 16 sformatowany dysk, OSX nie może wydawać się czytać obrazu dysku, tak jakby stał się niesformatowany.

Dokładny komunikat z narzędzia dyskowego to Unable to attach image "floppy.img."(No Mountable File Systems) Mimo że sformatowałem dysk w systemie plików FAT16.

Niestety, ponieważ jest to mój pierwszy wpis, nie mogę podać Ci obrazu.

Byłbym wdzięczny za każdą pomoc. Struktura dysku naprawdę nie jest moją mocną stroną.

Odpowiedz

8

Jeśli używasz dd, spróbuj dodać opcję conv=notrunc. Zmusza to to, aby nie próbować skracać pliku, a raczej nadpisać wybrane części.

+1

Dziękuję bardzo. Nigdy bym nie zgadł –