汇编 - 问题 运行 bochs 中的引导加载程序
Assembly - Problems running a bootloader in bochs
我目前正在尝试在 bochs 中编译 运行 一个简单的引导加载程序。目前,这是我的 bootloader.asm 文件:
[BITS 16]
[ORG 0x7C00] ;Where the code gets mapped
top:
jmp top ;Loop forever
times 510-($-$$) db 0 ;Pad with 0
dw 0xAA55 ;Bootloader signature (backwards)
;; dw declares a word (2 bytes because we’re 16 bits)
然后在我的 pragmalinux-img 目录中输入以下命令:
yasm bootloader.asm
dd if=bootloader bs=512
bochs
在 运行ning bochs 我收到以下错误消息。 (对不起文字墙)
Bochs x86 Emulator 2.6
Built from SVN snapshot on September 2nd, 2012
========================================================================
00000000000i[ ] LTDL_LIBRARY_PATH not set. using compile time default '/usr/lib/bochs/plugins'
00000000000i[ ] BXSHARE not set. using compile time default '/usr/share/bochs'
00000000000i[ ] lt_dlhandle is 0x2d78540
00000000000i[PLGIN] loaded plugin libbx_unmapped.so
00000000000i[ ] lt_dlhandle is 0x2d79270
00000000000i[PLGIN] loaded plugin libbx_biosdev.so
00000000000i[ ] lt_dlhandle is 0x2d79bf0
00000000000i[PLGIN] loaded plugin libbx_speaker.so
00000000000i[ ] lt_dlhandle is 0x2d7b2d0
00000000000i[PLGIN] loaded plugin libbx_extfpuirq.so
00000000000i[ ] lt_dlhandle is 0x2d7bbf0
00000000000i[PLGIN] loaded plugin libbx_parallel.so
00000000000i[ ] lt_dlhandle is 0x2d7d7c0
00000000000i[PLGIN] loaded plugin libbx_serial.so
00000000000i[ ] lt_dlhandle is 0x2d813a0
00000000000i[PLGIN] loaded plugin libbx_gameport.so
00000000000i[ ] lt_dlhandle is 0x2d81e40
00000000000i[PLGIN] loaded plugin libbx_iodebug.so
00000000000i[ ] reading configuration from bochsrc
00000000000e[ ] bochsrc:9: 'vga_update_interval' will be replaced by new 'vga: update_freq' option.
00000000000e[ ] bochsrc:10: 'i440fxsupport' will be replaced by new 'pci' option.
00000000000i[ ] lt_dlhandle is (nil)
00000000000p[ ] >>PANIC<< dlopen failed for module 'sdl': file not found
========================================================================
Event type: PANIC
Device: [ ]
Message: dlopen failed for module 'sdl': file not found
A PANIC has occurred. Do you want to:
cont - continue execution
alwayscont - continue execution, and don't ask again.
This affects only PANIC events from device [ ]
die - stop execution now
abort - dump core
debug - continue and return to bochs debugger
Choose one of the actions above: [die] die
00000000000i[CPU0 ] CPU is in real mode (active)
00000000000i[CPU0 ] CS.mode = 16 bit
00000000000i[CPU0 ] SS.mode = 16 bit
00000000000i[CPU0 ] EFER = 0x00000000
00000000000i[CPU0 ] | EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000
00000000000i[CPU0 ] | ESP=00000000 EBP=00000000 ESI=00000000 EDI=00000000
00000000000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf
00000000000i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D
00000000000i[CPU0 ] | CS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | DS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | SS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | ES:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | FS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | GS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | EIP=00000000 (00000000)
00000000000i[CPU0 ] | CR0=0x00000000 CR2=0x00000000
00000000000i[CPU0 ] | CR3=0x00000000 CR4=0x00000000
bx_dbg_read_linear: physical memory read error (phy=0x0000000000000000, lin=0x0000000000000000)
00000000000i[CTRL ] quit_sim called with exit code 1
我是组装和这类事情的新手,所以非常感谢您的帮助。谢谢。
根据@Someprogrammerdude 的提示修复了它。只是 运行:
sudo apt-get install bochs-sdl
很快就修好了。要注意我也是运行:
sudo apt-get install bochs-x
在此之前,根据旧论坛的建议 post。可能与修复有关。
我目前正在尝试在 bochs 中编译 运行 一个简单的引导加载程序。目前,这是我的 bootloader.asm 文件:
[BITS 16]
[ORG 0x7C00] ;Where the code gets mapped
top:
jmp top ;Loop forever
times 510-($-$$) db 0 ;Pad with 0
dw 0xAA55 ;Bootloader signature (backwards)
;; dw declares a word (2 bytes because we’re 16 bits)
然后在我的 pragmalinux-img 目录中输入以下命令:
yasm bootloader.asm
dd if=bootloader bs=512
bochs
在 运行ning bochs 我收到以下错误消息。 (对不起文字墙)
Bochs x86 Emulator 2.6
Built from SVN snapshot on September 2nd, 2012
========================================================================
00000000000i[ ] LTDL_LIBRARY_PATH not set. using compile time default '/usr/lib/bochs/plugins'
00000000000i[ ] BXSHARE not set. using compile time default '/usr/share/bochs'
00000000000i[ ] lt_dlhandle is 0x2d78540
00000000000i[PLGIN] loaded plugin libbx_unmapped.so
00000000000i[ ] lt_dlhandle is 0x2d79270
00000000000i[PLGIN] loaded plugin libbx_biosdev.so
00000000000i[ ] lt_dlhandle is 0x2d79bf0
00000000000i[PLGIN] loaded plugin libbx_speaker.so
00000000000i[ ] lt_dlhandle is 0x2d7b2d0
00000000000i[PLGIN] loaded plugin libbx_extfpuirq.so
00000000000i[ ] lt_dlhandle is 0x2d7bbf0
00000000000i[PLGIN] loaded plugin libbx_parallel.so
00000000000i[ ] lt_dlhandle is 0x2d7d7c0
00000000000i[PLGIN] loaded plugin libbx_serial.so
00000000000i[ ] lt_dlhandle is 0x2d813a0
00000000000i[PLGIN] loaded plugin libbx_gameport.so
00000000000i[ ] lt_dlhandle is 0x2d81e40
00000000000i[PLGIN] loaded plugin libbx_iodebug.so
00000000000i[ ] reading configuration from bochsrc
00000000000e[ ] bochsrc:9: 'vga_update_interval' will be replaced by new 'vga: update_freq' option.
00000000000e[ ] bochsrc:10: 'i440fxsupport' will be replaced by new 'pci' option.
00000000000i[ ] lt_dlhandle is (nil)
00000000000p[ ] >>PANIC<< dlopen failed for module 'sdl': file not found
========================================================================
Event type: PANIC
Device: [ ]
Message: dlopen failed for module 'sdl': file not found
A PANIC has occurred. Do you want to:
cont - continue execution
alwayscont - continue execution, and don't ask again.
This affects only PANIC events from device [ ]
die - stop execution now
abort - dump core
debug - continue and return to bochs debugger
Choose one of the actions above: [die] die
00000000000i[CPU0 ] CPU is in real mode (active)
00000000000i[CPU0 ] CS.mode = 16 bit
00000000000i[CPU0 ] SS.mode = 16 bit
00000000000i[CPU0 ] EFER = 0x00000000
00000000000i[CPU0 ] | EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000
00000000000i[CPU0 ] | ESP=00000000 EBP=00000000 ESI=00000000 EDI=00000000
00000000000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf
00000000000i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D
00000000000i[CPU0 ] | CS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | DS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | SS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | ES:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | FS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | GS:0000( 0000| 0| 0) 00000000 00000000 0 0
00000000000i[CPU0 ] | EIP=00000000 (00000000)
00000000000i[CPU0 ] | CR0=0x00000000 CR2=0x00000000
00000000000i[CPU0 ] | CR3=0x00000000 CR4=0x00000000
bx_dbg_read_linear: physical memory read error (phy=0x0000000000000000, lin=0x0000000000000000)
00000000000i[CTRL ] quit_sim called with exit code 1
我是组装和这类事情的新手,所以非常感谢您的帮助。谢谢。
根据@Someprogrammerdude 的提示修复了它。只是 运行:
sudo apt-get install bochs-sdl
很快就修好了。要注意我也是运行:
sudo apt-get install bochs-x
在此之前,根据旧论坛的建议 post。可能与修复有关。