《一个操作系统的实现》--- ubuntu下bochs2.3.5的配置与使用
《一个操作系统的实现》— ubuntu下bochs2.3.5的配置与使用
云平台:阿里云
操作系统:ubuntu14.04
bochs:2.3.5
本篇博客来源于本人在按照《ORANGE’S 一个操作系统的实现》配置环境时遇到的问题,遂发出来分享
安装过程中如果遇到权限问题,请使用sudo
安装图形化界面
安装ubuntu图形化界面
apt-get update
apt-get install vnc4server
apt-get install xfce4
apt-get install ubuntu-desktop
sudo apt-get install xrdp
允许图形化界面root登录
如果发现图形化界面登录只可以使用guest登录,则使用如下方法
打开50-unity-greeter.conf
cd /usr/share/lightdm/lightdm.conf.d/
vim ./50-unity-greeter.conf
修改配置文件,在文件中添加下面三行语句
user-session=ubuntu
greeter-show-manual-login=true
all-guest=false
打开.profile
文件
vim /root/.profile
将.profile
文件最后一行修改为
tty -s && mesg n || true
重启
reboot
随后便可以使用VNC登录
的方式进入服务器
安装bochs
下载bochs
点击链接,下载bochs-2.3.5.tar.gz
如果无法下载,可以使用如下的百度网盘链接(提取码:groy
)
安装依赖环境
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++
解压
tar vxzf bochs-2.3.5
cd bochs-2.3.5
配置
./configure --enable-debugger --enable-disasm
配置过程出错
配置过程如果报错
ERROR: X windows gui was selected, but X windows libraries were not found.
编辑configure
配置文件
vim configure
在配置文件内寻找
echo ERROR: X windows gui was selected, but X windows libraries were not found.
exit 1
将exit 1
注释掉
echo ERROR: X windows gui was selected, but X windows libraries were not found.
#exit 1
make
make前需要修改bx_debug/symbol.cc
的代码
打开symbol.cc
vim bx_debug/symbol.cc
编辑symbol.cc
在97行左右添加如下代码
using namespace std;
#ifdef __GNUC__ //修改
using namespace __gnu_cxx; //修改
#endif //修改
struct symbol_entry_t
安装
make install
安装nasm
apt-get install nasm
测试
asm源码及编译
在你的项目文件下建立boot.asm
文件
org 07c00h ; 告诉编译器程序加载到7c00处
mov ax, cs
mov ds, ax
mov es, ax
call DispStr ; 调用显示字符串例程
jmp $ ; 无限循环
DispStr:
mov ax, BootMessage
mov bp, ax ; ES:BP = 串地址
mov cx, 16 ; CX = 串长度
mov ax, 01301h ; AH = 13, AL = 01h
mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
mov dl, 0
int 10h ; 10h 号中断
ret
BootMessage: db "Hello, OS world!"
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55 ; 结束标志
编译
nasm boot.asm -o boot.bin
制作镜像
生成镜像文件
bximage
第一步选fd
,其余默认即可
会在你的项目文件下方生成a.img
软盘镜像
写入引导区
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
生成bochsrc
在本项目文件的目录下生成bochsrc
,作为配置文件
#how much memory the emulated machine will have
megs: 32
#filename of ROM images
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
#what disk images will be used
floppya: 1_44=a.img, status=inserted
#choose the boot disk
boot: floppy
#where do we send log messages?
log: bochsout.txt
#disable the mouse
mouse: enabled=0
#enable key mapping, using US layout as default.
keyboard_mapping: enabled=1, map=/usr/local/share/bochs/keymaps/x11-pc-us.map
注意romimage
vgaromimage
keyboard_mapping
要依照你的服务器中对应文件的路径填写,需要自己去找具体文件地址
运行
此步需要用图形化界面登录
bochs -f bochsrc
输入回车
调试界面按c回车,若虚拟机上显示Hello, OS world!
则配置成功