You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

制作VirtualBox可引导镜像失败求助:自定义引导扇区运行异常

问题排查与解决

一、虚拟机崩溃的核心原因(VirtualBox本身故障)

从提供的日志来看,虚拟机崩溃是因为VirtualBox无法加载内核模块VMMR0.r0,错误码VERR_LDR_GENERAL_FAILURE,这和引导扇区代码无关,属于VirtualBox系统级故障,解决步骤如下:

  • 检查BIOS/UEFI设置,确保**虚拟化技术(VT-x/AMD-V)**已启用
  • 右键以管理员权限启动VirtualBox,再尝试运行虚拟机
  • 关闭系统中其他虚拟化相关程序:比如Hyper-V、WSL2、VMware等,这类程序会和VirtualBox内核模块冲突
  • 若以上操作无效,卸载VirtualBox并重新下载最新版本安装,修复损坏的文件

二、引导扇区代码的潜在优化(提前规避后续问题)

你的代码本身可正常运行,但存在几个可优化的点:

1. 字符串长度自动计算

当前代码手动写死mov cx,13,若修改message内容,需手动同步数值,建议改为读取定义好的length:

mov cx, [length]  ; 替换原来的mov cx,13

length的定义逻辑正确,汇编时会自动计算字符串长度。

2. 冗余代码清理

cli+hlt执行后,因已关闭中断,CPU会持续暂停,后续的jmp $永远不会执行,可删除该行冗余代码。

优化后的完整代码:

[ORG 0x7c00]   
BITS 16

main:
                mov ax, 0x07C0                                  
                mov ds, ax         
                mov es, ax         

                mov bp, message    
                mov bh, 0          
                mov bl, 00001111b  
                                   
                mov cx, [length]   ; 自动读取字符串长度
                mov al, 1          
                                   
                mov ah, 0x13       
                mov dx, 0          
                int 0x10           

                cli
                hlt
                
message     db      "Hello, World!"
length      db      (length - message)
                             
times   510-($-$$) db 0
dw      0xaa55           

三、更可靠的ISO制作方式

使用mkisofs工具制作引导ISO比CDBurnerXP更可控,命令如下:

# Windows可通过Cygwin/WSL运行,Linux直接安装mkisofs后执行
mkisofs -o boot.iso -b sboot.img -no-emul-boot -boot-load-seg 0x7C00 -boot-load-size 1 .

参数说明:

  • -o boot.iso:指定输出的ISO文件名
  • -b sboot.img:指定引导镜像文件
  • -no-emul-boot:不使用软盘/硬盘仿真模式
  • -boot-load-seg 0x7C00:指定引导程序加载的段地址
  • -boot-load-size 1:加载1个扇区(512字节)

内容的提问来源于stack exchange,提问作者Jerzy z Bialowiezy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:42:24