1.下载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
个参数名用来启动模拟系统中最多4
个ATA
通道。
对于每个启用的通道,必须指明IO
基地址和一个中断请求信号。
默认只有ata0
是启用的,并且参数默认如下。
4.1.4. ata0-master(ata0-slave)
ata0-master
用来指明模拟系统中第1
个ATA
通道(0
通道)上连接的第1
个ATA
设备(硬盘或CDROM
等);
ata0-slave
指明第1
个通道上链接的第2
个ATA
设备。
选项 | 说明 | 可取的值 |
---|---|---|
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
,可以是disk
或cdrom
。还必须指明设备的“路径名” path
。“路径名”可以是一个硬盘映像文件、CDROM
的ISO
文件或者直接指向系统的CDROM
驱动器。在Linux
系统中,可以使用系统设备作为Bochs
的硬盘,但由于安全原因,在Windows
下不赞成直接使用系统上的物理盘。
对于类型是disk
的设备,选项path
、cylinders
、heads
和spt
是必须的。对于类型是cdrom
的设备,选项path
是必须的。
磁盘变换方案(在传统int 13 BIOS
功能中实现,并且用于像DOS
这样的老式操作系统)可以定义为:
名称 | 说明 |
---|---|
none |
无需变换,适用于容量小于512MB (1032192 个扇区)的硬盘。 |
large |
标准移位算法,用于容量小于4.2GB (8257536 个扇区)的硬盘。 |
rechs |
修正移位算法,使用15 磁头的伪物理硬盘参数,适用于容量小于7.9GB (15482880 个扇区)的硬盘。 |
lba |
标准lba- 辅助算法。适用于容量小于8.4GB (16450560 个扇区)的硬盘。 |
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 调试指令