前言
自从上次安装了跟哈工大李治军老师操作系统课程实验环境的一个docker
后,因为x11
跟ssh
配置的原因,一直无法启动bochs
模拟器,总是黑屏,所以索性自己不在docker
里面操作了,直接在本机安装bochs
。
下载bochs
点击下载网址,我选择的是旧版的2.4.5
。因为没发现自己apt
源的问题导致自己以为最新版的bochs
无法安装才选择了2.4.5
。(事实证明并不是……)
点进去后选择bochs-2.4.5.tar.gz
编译bochs
我选择的是下载到自己的主用户目录下,下载后解压,在解压出来的文件夹下输入命令
./configure -enable-debugger -enable-disasm
命令执行后如果没有出现Makefile
文件的话,可以自行去上网搜索问题的解决方法,这里就不赘述了,但是在安装的过程中,自己出现的一个无法安装libgtk2.0-dev
的问题,网上没找到解决的方法,最后是猜测是软件源的问题,解决方法可以看上一个博客。
一切编译中的问题解决后,有了Makefile
文件,执行
sudo make
make
结束后报错:DOS missing from command line
解决方法:
在Makefile
的LIBS =
这一行的最后面添加如下内容 : -lz -lrt -lm -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 -lz -lrt -lm -lpthread
修改之后一定要先make clean
然后在执行make
。
make
成功
执行安装命令
sudo make install
安装完成后,记住最后一行的显示信息,记住这个路径。
ok到这里bochs
就安装结束了。
下载Linux0.11镜像
下载网址:点击这里
最终得到的镜像文件名字叫做bootroot-0.11
启动bochs
配置文件
在解压包出来的那个路径下,编写bochs
启动的配置文件,我命名为bochrush.txt
。(如果没有编写的话,会默认使用该目录下的一个配置文件,可以去上网搜索)
bochrush.txt
:
#模拟器的内存
megs:128
#BIOS-bochs-latest的路径
romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
#VGABIOS-lgpl-latest的路径
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
#启动软盘,1_44后面就是我们下载的linux0.11镜像文件
floppya:1_44=bootroot-0.11,status=inserted
#表示从软盘启动
boot:floppy
#日志输出文件
log:bochsout.txt
#友情提示不要设置为1
mouse: enabled=0
编写bochs
配置文件的选项还有很多,可以参照原始的.bochsrc
文件或者自己上网搜索。
关于vgaromimage
和romimage
的路径,在上面提到的make install
的时候,命令执行完成后显示的那个路径。
在上面的配置文件中没有指定bootroot-0.11
镜像的路径,所以默认是跟bochrush.txt
同个路径下,所以也要把镜像放在同个目录下。
启动
在刚刚的目录下启动bochs
,-f
表示指定某个配置文件
bochs -f bochrush.txt
敲入命令后,选择6
,开始模拟
按下6
之后,出现了一个黑屏
这时候在终端的输入框里面输入c
后再按回车
当当当,出来啦。如果想关闭bochs
的话可以按下这个power
按钮。
后续工作
安装bochs
本意是为了完成操作系统的实验,现在加载的是已经从官网下载好的了linux0.11
的镜像,接下来准备下载linux-0.11
的源代码,编译出需要实现“自己功能”的镜像,同时放到bochs
里面去模拟。