Bochs加载VHD文件作为主引导设备

最近在尝试通过8086汇编编写一个简单的主引导扇区,并在屏幕上打印一些字符。

相关的汇编代码(使用nasm)如下,已经写入到了VHD文件中,并在VirtualBox中完成测试。

mov ax, 0xb800
mov es, ax        ;将指向文本模式的显示缓冲区段地址放入es中

;设置数据段地址为当前代码段地址
mov ax, cs
mov ds, ax

;清空屏幕内容(防止某些BIOS在jump至0x7c00前不会提前清理屏幕缓冲区)
mov cx, 2000
mov bx, 0
clear_screen:
mov byte [es:bx], 0
mov byte [es:bx+1], 0x07
add bx, 2
loop clear_screen


;显示字符串“Hello, World!”
mov cx, 0
;ax表示字符顺序,dx表示要写入的显示缓冲区地址
mov ax, 0
mov dx, 0
mov bx, 0
print_str1:
mov bx, ax
mov cl, [bx+str1+0x7c00]
mov bx, dx
mov byte [es:bx], cl
mov byte [es:bx+1], 0x07
add ax, 1
add dx, 2
;最后让cx自增,因为字符串以0结尾。
add cx, 1
loop print_str1

; 无限循环
infi:jmp near infi

str1 db "Hello, World!",0

jmp $

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

但是我们知道,VirtualBox并不能单步调试,因此需要在Bochs中加载VHD该文件作为主引导设备。

由于Bochs的设置比VirtualBox复杂得多,因此在这里进行记录。

首先,想要在Bochs中进行单步调试,要使用其安装目录下的bochsdbg.exe。

 启动后,作如下配置:

 

 

完成如上配置后, 记得将配置文件保存,下次通过“Load”重新加载。

 然后即可成功引导并启动VHD文件中的主引导扇区。

 如果启动过程中出现“could not open hard drive image file”,见这篇博客:

(36条消息) 《操作系统真xiang还原》阅读实践问题记录 bochs [HD ] ata0-0: could not open hard drive image file ‘hd60M.img‘_晰烟的博客-CSDN博客

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这个错误提示表明您在运行Bochs模拟器时没有找到可引导设备,通常是因为Bochs配置文件中未正确设置引导设备或未正确配置镜像文件。 要解决此问题,您可以尝试以下步骤: 1. 确保在Bochs配置文件中正确设置了引导设备。这通常需要在配置文件中指定磁盘镜像文件的路径并将其设置为可引导设备。例如,在Bochs配置文件中设置: ``` boot: disk disk: image = "path/to/image/file", dev = "hd" ``` 这将使Bochs尝试从磁盘镜像文件引导,并将其视为硬盘设备。 2. 确保您的磁盘镜像文件是可引导的,并包含引导扇区和操作系统文件。您可以尝试在其他虚拟机软件中加载此镜像文件以验证其是否可引导。 3. 如果上述步骤均未解决问题,则可能需要重新安装操作系统或更换镜像文件。 希望这些建议能帮助您解决Bochs模拟器无法引导的问题。 ### 回答2: Bochs是一款基于x86架构的模拟器,可以用来运行各种不同的操作系统。但是,当在Bochs中运行时,可能会遇到“no bootable device”错误,这表示Bochs无法找到可启动的设备。那么,这个问题该如何解决呢? 一个常见的原因是没有将可启动的操作系统映像文件正确地加载Bochs中。为了解决这个问题,我们需要将映像文件的路径正确地指定到Bochs配置文件中,以便Bochs可以正确地识别映像文件并将其加载。 另外,也有可能是镜像文件本身出现问题,导致Bochs无法正常启动。这时,我们可以尝试使用其他镜像文件或重新下载镜像文件,并将其重新添加到Bochs中。 除此之外,Bochs的配置文件也可能对问题的出现有一定的影响。如果配置文件设备设置不正确,也可能导致启动问题的出现。因此,我们需要检查配置文件的设置是否正确,确保Bochs可以找到正确的启动设备。 综上所述,当出现“no bootable device”错误时,我们应该先检查配置文件和镜像文件的设置是否正确,以便Bochs可以正确地加载并启动操作系统。如果问题仍然存在,就需要考虑其他可能的原因,并做出相应的调整。 ### 回答3: Bochs 是一款免费的开源模拟器,可以在计算机上运行操作系统。当出现 Bochs no bootable device 错误时,意味着 Bochs 模拟器无法识别可引导设备,即计算机无法从其中启动操作系统。造成此错误的原因和解决方法如下: 1. 没有正确设置虚拟硬盘。Bochs 模拟器需要虚拟硬盘来模拟计算机硬件,如果虚拟硬盘没有正确设置或者不存在,那么 Bochs 就会无法引导系统。解决方法是检查虚拟硬盘的设置是否正确,并重新创建虚拟硬盘文件。 2. 虚拟硬盘中没有安装操作系统。当 Bochs 模拟器无法从虚拟硬盘中引导系统时,可能是因为虚拟硬盘中没有安装操作系统,或者操作系统被损坏。解决方法是在虚拟硬盘中安装操作系统,并确保操作系统镜像文件的完整性和正确性。 3. 没有正确设置启动顺序。Bochs 模拟器支持多种启动顺序,包括从磁盘、光盘、网络等启动。如果启动顺序没有正确设置,那么 Bochs 就无法找到可引导设备。解决方法是在 Bochs 配置文件中设置正确的启动顺序。 4. 操作系统不被支持。Bochs 模拟器支持多种操作系统,但不是所有操作系统都被支持。如果运行不支持的操作系统,那么 Bochs 就无法引导系统。解决方法是选择被支持的操作系统,并确保操作系统镜像文件的版本和兼容性。 总之,Bochs no bootable device 错误的解决方法需要根据具体情况而定,需要仔细检查硬件设置和软件配置,以确保能够成功引导操作系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没头发的米糊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值