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

Kali环境Bochs运行NASM汇编引导程序触发PANIC报错求助

Bochs启动PANIC报错排查与引导代码修复

报错核心原因

该报错和使用Kali还是Ubuntu系统没有本质关联,两类系统均为Debian衍生版,Bochs运行逻辑完全一致,触发PANIC的核心原因有两类:

  • 直接执行bochs命令时,当前目录下不存在合法的Bochs配置文件,模拟器找不到启动必需的ROM、镜像、硬件参数配置,直接触发崩溃
  • 引导汇编代码的分区表段填写存在错误,可能导致Bochs无法正确识别镜像格式

修复步骤

1. 配置Bochs启动文件

在存放镜像的bootDir目录下新建名为bochsrc.txt的配置文件,写入以下最小可用配置:

megs: 32
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest
boot: disk
log: bochsout.txt
mouse: enabled=0
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path=boot.img, mode=flat

配置说明:

  • 若Kali下Bochs的BIOS文件路径和上述不一致,可执行whereis bochs查找对应BIOS、VGA BIOS文件的实际存放路径替换
  • path=boot.img替换为你编译生成的引导镜像实际文件名

后续启动Bochs时不要直接执行bochs命令,改用bochs -f bochsrc.txt指定配置文件启动,即可解决配置缺失导致的PANIC。

2. 修正引导汇编代码

原代码存在两处问题:一是标签后多余空格可能导致NASM编译产生意外偏移,二是手动填写的分区表参数值错误(将分区类型填为了扩展分区标识0xf0),测试引导阶段不需要构造真实分区表,直接填充到引导扇区规定长度即可。修正后的可正常运行代码如下:

[BITS 16]
[ORG 0x7c00]

start:  
    xor ax,ax
    mov ds,ax
    mov es,ax
    mov ss, ax
    mov sp, 0x7c00

PrintMessage:
    mov ah,0x13
    mov al, 1
    mov bx,0x000a  ; BH=页号0,BL=文字属性为亮绿色
    xor dx,dx      ; DH=起始行号0,DL=起始列号0
    mov bp, Message
    mov cx, MessageLen
    int 0x10

End:
    hlt
    jmp End

Message: db "Hello"
MessageLen: equ $-Message

; 填充到510字节位置,末尾写入引导扇区合法签名
times 510-($-$$) db 0
dw 0xaa55

使用以下命令编译代码生成可引导镜像:
nasm -f bin 你的汇编源文件名.asm -o boot.img
编译完成后再启动Bochs,即可正常看到引导输出的"Hello"字符串。

内容的提问来源于stack exchange,提问作者Achref Legend

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:21:21