ubuntu12.04 上搭建 bochs2.3.5 调试环境
在 ubuntu12.04 64 位环境下使用源码编译 bochs2.3.5 带 debug 带 gui 版本。
环境搭建
操作系统 ubuntu12.04
替换源
1、首先备份 Ubuntu12.04 源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
2、修改更新源
sudo gedit /etc/apt/sources.list
1 | 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 |
3、更新源
sudo apt-get update
bochs2.3.5
编译
1 | tar vxzf bochs-2.3.5 |
编译过程出错处理:
error: C compiler cannot create executables
1
2
3
4sudo apt-get install --reinstall build-essential
sudo apt-get install --reinstall gcc
sudo dpkg-reconfigure build-essential
sudo dpkg-reconfigure gccERROR: X windows gui was selected, but X windows libraries were not found.
apt-get install xorg-dev
仍然报错
只要编译的时候连接了 -lX11 这个库就可以了,所以可以让 configure 阶段出错的地方不退出,并且在 make 的时候 link X11 这个库,编辑 configure, 将退出的地方注释掉
echo ERROR: X windows gui was selected, but X windows libraries were not found.
#exit 1configure 命令后加 LDFLAGS=-L/usr/lib/i386-linux-gnu
该问题不能用 –with-nogui 解决,否则无法输出 hello os,因为需要使用 gui
./configure --enable-debugger --enable-disasm --enable-x86-64 LDFLAGS=-L/usr/lib/i386-linux-gnu
make
make 之前需要修改一份文件 bx_debug/symbol.cc
在 97 行之后加入代码如下:
1 | using namespace std; |
nasm 安装
sudo apt-get install nasm
测试
asm 源码
boot.asm
1 | org 07c00h ; 告诉编译器程序加载到7c00处 |
asm 源码编译
nasm boot.asm -o boot.bin
制作镜像
1. 生成镜像文件
bximage
第一步选 fd, 其余默认
生成软盘镜像 a.img
2. 写入引导扇区
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
生成 bochsrc
1 | how much memory the emulated machine will have |
运行
bochs -f bochsrc
- 输入回车
- 调试界面输入 c 回车, 运行
Sync From: https://github.com/TheBigFish/blog/issues/16