2011-08-13 3 views
8

趣味OS用のブートローダを作成しようとしていて、それがうまく動作しています。 何も特別な、単なるテキストの行を出力します。カスタムブートローダーの問題

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が

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

でコンパイル私は最初の446のバイトはブートコードとバイト447であることを読んだ - 509は、パーティションテーブルであります。

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

上書きされるパーティションテーブルを防ぐためにしようとしませんが、まだ葉巻する: 私が使用して、その後みました。

イムOSXでのMacを使用してVirtualBoxの

とOSのテスト、私はVBoxのでfloppy.imgを実行することができますし、コードが正常に動作しますが、私はFAT 16フォーマットされたディスクにブートローダーをインストールしようとすると、 OSXはあたかもフォーマットされていないかのようにディスクイメージを読めないように見えます。

正確なメッセージアウトディスクユーティリティUnable to attach image "floppy.img."(No Mountable File Systems)私はFAT 16ファイルシステムでディスクをフォーマットしましたが、

これは私の最初の投稿であるため、不幸なことに、私はあなたに写真を送ることはできません。

本当に助けていただければ幸いです。ディスク構造は本当に私の特権ではありません。

答えて

8

ddを使用している場合は、conv=notruncオプションを追加してみてください。これにより、ファイルを切り捨てるのではなく、指定した部分を上書きします。

+1

ありがとうございました。私は推測していないだろう –