2012-08-06 33 views
1

我目前正在使用mkisofs,dd和程序集。我创建了简单的引导程序:在可启动媒体上找不到引导程序

BITS 16 
;------------------- 
;SIMPLE BOOTLOADER 
;------------------- 
start: 
    mov ax, 0x07C0 
    mov ds, ax 

    mov si, welcmsg 
    call printstr 

    mov ah, 0Eh 
    mov al, 65 
    int 10h 

    cli; 
    hlt;  

printstr: 
    pusha 
    mov ah, 0Eh 
    .loop: 
     mov al, byte [ds:si] 

     cmp al, 0 
     jz .end 
     int 10h 

     inc si 
     jmp .loop 
    .end: 
     popa 
    ret 
;------------------- 
;DATA 
;------------------- 
welcmsg: db "Welcome!", 0x0D, 0x0A, 0 
;------------------- 
;FILL 
;------------------- 
times 510-($-$$) db 0 
dw 0xAA55 

我使用NASM在Linux上编译了它。成功编译后,我复制了512字节.bin文件的内容,然后用Okteta十六进制编辑器将其粘贴到空的.img文件中。

dd if=/dev/zero of=boot.img bs=512 count=2880 

然后我用mkisofs创建.iso文件。

mkisofs -U -D -floppy-boot -b boot.img -c boot.catalog -hide boot.img -hide boot.catalog -V "test" -iso-level 3 -L -o test.iso content 

我已将此.iso映像添加到虚拟机设置,并启动它。 面对我的问题是VirtualBox的错误信息:

FATAL: No bootable medium found. 

有谁知道我在做什么错了,我怎样才能使它的工作?请帮忙。

+0

'mkisofs -v -r -J -o os.iso -b floppy.img <要写入iso的文件的路径>'为我工作。 – 2012-08-06 08:56:45

+0

好的。现在它什么都不做。 welcmsg和A没有被显示。为什么?什么是你的floppy.img的大小? – user35443 2012-08-07 06:43:09

+0

1474560字节。你的代码很好。不过,目前我没有任何东西可以启动ISO映像。 – 2012-08-07 08:09:01

回答

1

这是其他人正在开发SO开发引导程序。您可能想要查看OSDev以获取更多想法,并与一个从头开始构建它的社区联系起来。至于为什么你的努力无法启动,我不知道是否有什么,你需要检查Using Virtualbox as a bootloader testing environment。正如我之前所说的,你已经开了个好头,一切都好。干杯!