环境:-bochs-2.6.9; -ssh客户端:termius; -参考书目:《一个64位操作系统的设计与实现》
一、安装bochs
0、Bochs 需要在 X11 环境下运行,因此你的 Linux 系统必须已经安装了X Window 系统才能使用Bochs,但我们的虚拟机在安装的时候选择了“Desktop”就已经装上了
1、Bochs是用C++写的,所以这里先检查有没有安装GNU gcc/g++
发现没有,所以先装上
3、CentOS可以用yum来安装,先安装编译器相关package,后面输入y然后等安装即可(注意CentOS下g++叫“gcc-c++”)
4、安装依赖gtk2、gtk2-devel、libXt、libXt-devel、libXpm、libXpm-devel
这里的几个依赖先记下,方便以后bochs在make时报错可以检测有没有装上
出现complete即安装完成
5、安装bochs去sourceforge下载bochs 2.6.9
下载默认是在目录/home/admin/Downloads下,之后我们在此目录下进行安装四部曲
6、安装四部曲:解压、配置、make、make install
(第一步)先说解压,直接进入上面那个目录tar即可
(第二步)至于配置,因为不清楚调试内核到底会使用多少功能,所以和书本上的一样把所有都添加上去了
(但有一点要注意,把prefix参数加上去用来指定安装目录——不指定就是用的默认,默认目录虽说在/usr/local下,但分散在三个目录内,如果觉得乱可以自己用“–-prefix=YOURPATH”来指定一个目录。我这里用的默认目录)
./configure --with-x11 --with-wx --enable-debugger --enable-disasm --enable-all-optimizations --enable-readline --enable-long-phy-address --enable-ltdl-install --enable-idle-hack --enable-plugins --enable-a20-pin --enable-x86-64 --enable-smp --enable-cpu-level=6 --enable-large-ramfile --enable-repeat-speedups --enable-fast-function-calls --enable-handlers-chaining --enable-trace-linking --enable-configurable-msrs --enable-show-ips --enable-cpp --enable-debugger-gui --enable-iodebug --enable-logging --enable-assert-checks --enable-fpu --enable-vmx=2 --enable-svm --enable-3dnow --enable-alignment-check --enable-monitor-mwait --enable-avx --enable-evex --enable-x86-debugger --enable-pci --enable-usb --enable-voodoo
“configure”成功的话,最后几条信息应该是没有error的,下面给出我的截图仅供参考
(第三步)make
结果报错 “没有规则可以创建’misc/bximage.o’需要的目标’misc/bximage.cc’,停止。”
解决:书里面也有说,网上也有很多类似的错误,主要是没有.cc文件,所以把所有的.cpp的文件拷贝一份成.cc文件(虽然我这用的virtualbox,但是下面带vmare也要拷贝),拷贝完再make一次
成功的话最后几句信息是不会有“error”
(第四步)最后一步“make install”就不截图了,成功同理无"error"
二、配置bochs
1、“/usr/local/bin”保存的是bochs主程序的路径,这里我们切换到这里先做一个镜像.img,在bin目录下有个bximage是用来创建镜像的
创建的这个镜像可能在”/usr/local”或”/usr/local/bin”下,找出来,我这里放到后一个目录路径
2、配置文件”bochsrc” 自己捣腾也可以,不过我直接用的作者书里面的, 用SSH客户端的文件传输功能传到centos中
这样bin目录下就拥有了.img镜像和bochsrc配置文件
3、其实到这步我们的bochs就已经安装好了,不过现在我们先将MBR写入磁盘,之后再一次性观察bochs的效果。要写一个boot需要安装汇编语言的编译器,这里用的是nasm
4、我在“/usr/local”下新建了一个目录”osdev”专门用来存放此次实验的代码,而boot代码又在此之上新建一个目录”boot”存放
5、编译汇编代码
6、将上一步编译出的二进制文件写入镜像
7、最后,由于启动bochs需要GUI,所以回到虚拟机启动boch(记得切换root否则没权限)
回车以后,直接按[6](由于我们的配置文件就是叫”bochsrc”,所以启动bochs就跳了一步显式指定配置文件名称),之后便成功了
完成
原文:https://www.cnblogs.com/bEngi1/p/12357537.html