/ / Niestandardowe problemy z bootloaderem - montaż, x86, dysk, narzędzie, bootloader

Niestandardowe problemy z bootloaderem - assembly, x86, disk, utility, bootloader

Próbuję napisać program ładujący dla systemu operacyjnego Hobby i sprawić, by działał świetnie. Nic specjalnego, po prostu drukuje wiersz tekstu:

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

Kompiluję się z

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

Przeczytałem, że pierwsze 446 bajtów to kod rozruchowy, a bajty 447 - 509 to tablica partycji. Próbowałem wtedy używając:

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

aby nie dopuścić do zastąpienia tabeli partycji, ale nadal nie cygara.

Używam komputera Mac z systemem OSX i testuję system operacyjny za pomocą VirtualBox

Mogę uruchomić dyskietkę.img w VBox i kod działa poprawnie, ale kiedy próbuję zainstalować bootloader na sformatowanym dysku FAT 16, OSX nie może już odczytać 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 właśnie sformatowałem dysk za pomocą systemu plików FAT 16.

Niestety, ponieważ jest to mój pierwszy post, nie mogę dać ci zdjęcia.

Naprawdę doceniłbym każdą pomoc. Struktura dysku naprawdę nie jest moją mocną stroną.

Odpowiedzi:

8 dla odpowiedzi № 1

Kiedy używasz dd, spróbuj dodać conv=notrunc opcja. Wymusza to, że nie będzie próbował obciąć pliku, ale po prostu zastąpi określone części.