QEMU:无法识别自定义引导加载程序映像

时间:2015-01-04 16:51:23

标签: nasm qemu bootloader

我试图从a blog post运行示例引导加载程序:

[BITS 16]
[ORG 0x7c00]

jmp boot

boot:
  mov ah, 0x0e
  mov bh, 0x00
  mov bl, 0x07
  mov al, '!'

  int 0x10
  jmp $

times 510-($-$$) db 0
db 0xaa
db 0x55

nasm -f bin boot.nasm生成一个512字节boot文件,其中包含以下内容:

0000000: eb00 b40e b700 b307 b021 cd10 ebfe 0000
0000010: 0000 0000 0000 0000 0000 0000 0000 0000
0000020: 0000 0000 0000 0000 0000 0000 0000 0000
0000030: 0000 0000 0000 0000 0000 0000 0000 0000
0000040: 0000 0000 0000 0000 0000 0000 0000 0000
0000050: 0000 0000 0000 0000 0000 0000 0000 0000
0000060: 0000 0000 0000 0000 0000 0000 0000 0000
0000070: 0000 0000 0000 0000 0000 0000 0000 0000
0000080: 0000 0000 0000 0000 0000 0000 0000 0000
0000090: 0000 0000 0000 0000 0000 0000 0000 0000
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000
00000b0: 0000 0000 0000 0000 0000 0000 0000 0000
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000
00000f0: 0000 0000 0000 0000 0000 0000 0000 0000
0000100: 0000 0000 0000 0000 0000 0000 0000 0000
0000110: 0000 0000 0000 0000 0000 0000 0000 0000
0000120: 0000 0000 0000 0000 0000 0000 0000 0000
0000130: 0000 0000 0000 0000 0000 0000 0000 0000
0000140: 0000 0000 0000 0000 0000 0000 0000 0000
0000150: 0000 0000 0000 0000 0000 0000 0000 0000
0000160: 0000 0000 0000 0000 0000 0000 0000 0000
0000170: 0000 0000 0000 0000 0000 0000 0000 0000
0000180: 0000 0000 0000 0000 0000 0000 0000 0000
0000190: 0000 0000 0000 0000 0000 0000 0000 0000
00001a0: 0000 0000 0000 0000 0000 0000 0000 0000
00001b0: 0000 0000 0000 0000 0000 0000 0000 0000
00001c0: 0000 0000 0000 0000 0000 0000 0000 0000
00001d0: 0000 0000 0000 0000 0000 0000 0000 0000
00001e0: 0000 0000 0000 0000 0000 0000 0000 0000
00001f0: 0000 0000 0000 0000 0000 0000 0000 aa55

我现在希望qemu-system-x86_64 bootboot文件用作原始磁盘映像,将最后两个字节识别为引导扇区标记并执行指令。相反,它无法识别引导加载程序:

Booting from Hard Disk...
Boot failed: not a bootable disk

我做错了什么?

软件版本:

$ nasm -v
NASM version 2.11 compiled on Apr 26 2014
$ qemu-system-x86_64 --version
QEMU emulator version 2.1.0 (Debian 2.1+dfsg-4ubuntu6.3), Copyright (c) 2003-2008 Fabrice Bellard

1 个答案:

答案 0 :(得分:1)

您应该更改引导标志值的顺序:

db 0x55
db 0xaa