在Linux下安装带调试功能的bochs

1.下载bochs源码

bochs下载网站

2.解压后进入该目录进行配置

sudo ./configure --enable-debugger --enable-disasm

3.编译安装

sudo make

sudo make install

bochs 使用配置文件中的信息来寻找所使用的磁盘映像文件、运行环境外围设备的配置以及其他一些虚拟机器的设置信息。

4.新建自己的目录进行配置

4.1配置文件解析

4.1.1. megs

用于设置被模拟系统所含内存量。默认值:32MB
修改示例:

megs:128

4.1.2.floppya(floppyb)

floppya表示第一个软驱,floppyb代表第二个软驱。
如果需要从一个软盘上来引导系统,floppya需要指向一个可引导的磁盘。
示例:

在这里插入图片描述

4.1.3. ata0 ata1 ata2 ata3

4个参数名用来启动模拟系统中最多4ATA通道。
对于每个启用的通道,必须指明IO基地址和一个中断请求信号。
默认只有ata0是启用的,并且参数默认如下。
在这里插入图片描述

4.1.4. ata0-master(ata0-slave)

ata0-master用来指明模拟系统中第1ATA通道(0通道)上连接的第1ATA设备(硬盘或CDROM等);
ata0-slave指明第1个通道上链接的第2ATA设备。
在这里插入图片描述
177  表17-7\;设备配置的选项

选项 说明 可取的值
type 连接的设备类型 [ disk | cdrom ]
path 映像文件路径名
mode 映像文件类型、仅对disk有效 [ flat | concat | external | dll | sparse | vmware3 | undoable | growing | volatile ]
cylinders 仅对disk有效
heads 仅对disk有效
spt 仅对disk有效
status 仅对cdrom有效 [ inserted | ejected ]
biosdetect bios 进行变换的类型(int 13),仅对disk有效 [ none | lba | large | rechs | auto ]
model 确认设备ATA命令返回的字符串

在配置ATA设备时,必须指明连接设备的类型type,可以是diskcdrom。还必须指明设备的“路径名” path。“路径名”可以是一个硬盘映像文件、CDROMISO文件或者直接指向系统的CDROM驱动器。在Linux系统中,可以使用系统设备作为Bochs的硬盘,但由于安全原因,在Windows下不赞成直接使用系统上的物理盘。
对于类型是disk的设备,选项pathcylindersheadsspt是必须的。对于类型是cdrom的设备,选项path是必须的。
磁盘变换方案(在传统int 13 BIOS功能中实现,并且用于像DOS这样的老式操作系统)可以定义为:

名称 说明
none 无需变换,适用于容量小于512MB1032192个扇区)的硬盘。
large 标准移位算法,用于容量小于4.2GB8257536个扇区)的硬盘。
rechs 修正移位算法,使用15磁头的伪物理硬盘参数,适用于容量小于7.9GB15482880个扇区)的硬盘。
lba 标准lba-辅助算法。适用于容量小于8.4GB16450560个扇区)的硬盘。
auto 自动选择最佳变换方案(如果模拟系统启动不了就应该改变)。

mode选项用于说明如何使用硬盘映像文件。它可以是一些模式之一。

名称 说明
flat 一个平坦顺序文件。
concat 多个文件。
external 开发者专用,通过C++类来指定。
dll 开发者专用,通过DLL来使用。
sparse 可堆砌、可确认、可退回的。
vmware3 支持vmware3的硬盘格式。
undoable 具有确认重做日志的平坦文件。
growing 容量可扩展的映像文件。
volatile 具有易变重做日志的平坦文件。

以上选项默认值是:
在这里插入图片描述

4.1.5. boot

boot用来定义模拟机器中用于引导启动的驱动器。
示例:
在这里插入图片描述

4.1.6.cpu

cpu用来定义模拟系统中仿真的CPU的参数。四个参数如下:
|参数|说明|
|COUNT|指明系统模拟的处理器个数。(支持SMP最多为8,否则为1)|
|QUANTUM|指定控制从一个处理器切换到另一个之前最多可执行的指令数量。|
|RESET_ON_TRIPLE_FAULT|指定当处理器发生三重错误时需要对CPU执行复位操作而不是仅仅让其停机(PANIC)。|
|IPS(Instructions Per Second)|指定每秒钟仿真的指令条数。

在这里插入图片描述

4.1.7.log

指定log的路径名可以让Bochs记录执行的一些日志信息。
在这里插入图片描述

4.2 新建配置文件bochsrc

在这里插入图片描述

4.3 新建系统调试代码boot.s

在这里插入图片描述

4.4 创建软盘floppy

4.4.1 使用bximage工具

在这里插入图片描述

4.4.2 创建名为a.img,大小为1.44MB的软盘。

在这里插入图片描述

4.5 编译boot.s

as86 -0 -a -o boot.o boot.s
ld86 -0 -s -o boot boot.o
dd bs=32 if=boot of=./a.img skip=1

4.6 部分 Bochs 调试指令

在这里插入图片描述

发布了16 篇原创文章 · 获赞 37 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章