ubuntu16.04
bochs2.6.8
1. 安装一系列包(装就完事了)
Bochs 需要在 X11 环境下运行,因此你的 Linux 系统必须已经安装了X Window 系统才能使用Bochs。
Bochs 是用C++写的,所以这里要安装GNU gcc/g++编译器。
sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install bison
sudo apt-get install libgtk2.0-dev
sudo apt-get install g++
2. 解压下载的bochs文件夹,或者用ubuntu归档管理器解压也行(推荐)
sudo tar -zxvf bochs-2.6.8.tar.gz
cd bochs-2.6.8
3. 运行configure脚本,它会测试你的机器,C/C++编译器以及一些库,用来判断何种配置适合于你的机器
sudo ./configure --enable-debugger --enable-disasm
--prefix=/你想要把bochs安装到哪里/bochs(如:我想安装到home/zzz/bochs下,则--prefix=/home/zzz/bochs)
--enable-iodebug
--enable-x86-debugger
--with-x --with-x11
4.切换到你安装bochs的目录,如我的 cd /home/zzz/bochs,然后执行
make
make install
我这里没有用sudo,管理员模式,因为以管理员模式安装后无法直接修改bochs文件夹中的文件,我们之后需要修改其中文件编写操作系统,比较麻烦。
安装完成后/home/zzz/bochs 中会有2个文件夹 bin 和 share
5. 至此我们已经安装成功了,接下来我们需要创建一个启动盘,这样才能让模拟计算机启动
在/home/zzz/bochs 目录下打开终端,然后输入 bin/bximage,按照提示即可(创建软盘或硬盘;默认hd硬盘;默认flat模式;60字节大小;hd60.img(文件名))
最后一行 ata0-master: type=disk, path="hd60.img", mode=flat,需要写在配置文件中(下一节创建配置文件)
6.创建配置文件
在/home/zzz/bochs 下新建一个文件 bochsrc.disk,文件中代码为
# Bochs配置文件
# 机器内存: 32MB
megs: 32
# 启动方式
boot: disk
# 关闭鼠标,打开键盘
mouse: enabled=0
keyboard:keymap=/你的路径/bochs/share/bochs/keymaps/x11-pc-us.map
# BIOS VGA
romimage:file=/你的路径/bochs/share/bochs/BIOS-bochs-latest
# 如 romimage:file=/home/zzz/bochs/share/bochs/BIOS-bochs-latest
vgaromimage:file=/你的路径/bochs/share/bochs/VGABIOS-lgpl-latest
# 输出日志
log:bochsout.txt
# 硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
# 这一行就是上一个步骤输出的
ata0-master: type=disk, path="hd60.img", mode=flat
7. 编写主引导程序 MBR,在/home/zzz/bochs文件夹下新建一个文件 mbr.s(汇编文件),文件内容如下
;主引导程序
SECTION MBR vstart=0x7c00
mov ax,cs
mov ds,ax
mov es,ax
mov ss,ax
mov fs,ax
mov sp,0x7c00
mov ax,0x600
mov bx,0x700
mov cx,0
int 0x10
mov ah,3
mov bh,0
int 0x10
mov ax,message
mov bp,ax
mov cx,5
mov ax,0x1301
mov bx,0x2
int 0x10
jmp $
message db "hello"
times 510-($-$$) db 0
db 0x55,0xaa
8. 编译汇编代码,并且写入hd60.img硬盘中
在/home/zzz/bochs目录下打开控制台,输入
nasm -o mbr.bin mbr.s
dd if=/你的路径/mbr.bin of=/你的路径/bochs/hd60.img bs=512 count=1 conv=notrunc
9. 启动bochs
在/home/zzz/bochs目录下,打开控制台,输入bin/bochs -f bochsrc.disk,然后你会看到一个新的黑窗口,在之前的控制台窗口继续输入c (continue),然后你会看到黑窗口成功显示了hello!