操作系统真象还原 --- 1.部署工作环境

最近稍微空闲了一点点,想把以前搞操作系统的梦实现一下,所以按照《操作系统真象还原》进行学习。

1.配置环境

我使用的是Vmware虚拟机和deepin系统,为了减少不必要的麻烦建议使用和作者一样的软件版本bochs2.6.2(试过直接apt安装但是bochsrc.disk中的一些配置已经发生改变,需要自己查阅资料进行改进)
下载&解压

下载 2.6.2版本
https://telkomuniversity.dl.sourceforge.net/project/bochs/bochs/2.6.2/bochs-2.6.2.tar.gz
解压
tar zxvf bochs-2.6.2.tar.gz
进入 解压目录

配置环境生成makefile(下面可以写到一行)

./configure \
--prefix=/your_path/bochs \
--enable-debugger \ 
--enable-disasm \
--enable-iodebug \
--enable-x86-debugger \
--with-x \
--with-x11

参数解析:

  • --prefix=/your_path/bochs指定安装bochs的安装目录,需要根据自己的实际情况修改路径
  • --enable-debugger 开启bochs自己的调试器
  • --enable-disasm 使bochs支持反汇编
  • --enable-iodebug 启用io接口调试器
  • --enable-x86-debugger 支持x86调试器
  • --with-x 使用x windows
  • --with-x11 使用x11图形用户接口

编译&安装

编译bochs
make
安装
make install

报错&解决办法
遇到的报错和书上一模一样
问题1

报错信息
undefined reference to 'pthread_create'
undefined reference to 'pthread_join'
解决办法
在Makefile文件的92行末尾添加-lpthread
LIBS =  -lm -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lpthread

问题2

报错信息
x.cc:37:10: fatal error: X11/Xlib.h: 没有那个文件或目录
解决方法:安装相应的库
sudo apt-get install libx11-dev ................. for X11/Xlib.h
sudo apt-get install mesa-common-dev........ for GL/glx.h
sudo apt-get install libglu1-mesa-dev ..... for GL/glu.h
sudo apt-get install libxrandr-dev ........... for X11/extensions/Xrandr.h
sudo apt-get install libxi-dev ................... for X11/extensions/XInput.h

问题3

报错信息
/usr/bin/ld: gui/libgui.a(x.o): undefined reference to symbol 'XSetForeground'
/usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
解决办法
./configure 添加 LIBS='-lX11'

2.配置bochs

bochsrc.disk

###############################################
# Configuration file for Bochs
###############################################

# 第一步,首先设置Bochs在运行过程中能够使用的内存,本例为32MB。
# 关键字为:megs

megs: 32

# 第二步,设置对应真实机器的BIOS和VGA BIOS.
# 对应两个关键字为:romimage 和 vgaromimage
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/vgabios/vgabios.bin

# 第三步,设置Bochs所使用的磁盘,软盘的关键字为floppy。
# 若只有一个软盘,则使用floppya即可,若有多个,则为floppya,floppyb...
#floppya: 1_44=a.img, status=inserted

# 第四步,选择启动盘符。
#boot: floppy
boot: disk

# 第五步,设置日志文件的输出。
log: log.bochsrc.disk

# 第六步,开启或关闭某些功能。
# 下面是关闭鼠标,并打开键盘。
mouse: enabled=0
keyboard_mapping: enabled=1
map=/usr/share/bochs/keymaps/x11-pc-us.map

# 硬盘设置 
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14

# start gdb
gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0

使用bximages创建硬盘

./bximage -hd -mode="flat" -size=60 -q hd60M.img

参数解析:

  • -fd 创建软盘
  • -hd 创建硬盘
  • -mode创建硬盘的类型,有flat、sparse、growing三种
  • size 指定创建多大的硬盘,以MB为单位
  • -q 以静默方式创建,创建过程不会和用户交互

启动bochs
-f 指定启动的硬盘

bin/bochs -f bochsrc.disk
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值