最近在啃CSAPP的时候开了《操作系统真象还原》这本书,看着还挺有意思的,准备试着自己写一个操作系统。
我用的开发环境是 5.4.0-kali3-amd64 #1 SMP Debian 5.4.13-1kali1 (2020-01-20) x86_64 GNU/Linux
所以我的安装过程都是遵循的真象还原这本书来的,只是有几个错误提示需要记录一下。
首先bochs的下载与安装:
官方的下载地址是:https://sourceforge.net/projects/bochs/files/bochs/
选择自己喜欢的版本然后下载tar.gz文件 我下载的是 2.6.11版本
解压包 tar -zxvf bochs-2.6.11.tar.gz
然后进入到解压好的目录里设定好配置
./configure --prefix=/PATH/bochs --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11
这里的PATH要是一个绝对目录,同时也是bochs的安装目录
之后make install
这样安装就完成了,我中间没有遇到问题,所有有问题的就自行百度吧,哈哈,不过一般应该只是缺少几个依赖项
比如说 fatal error:x11/x11lib.h: no such file or directory 需要 sudo apt-get install libx11-dev
可能需要的依赖项:build-essential nasm, libx11-dev, xorg-dev, libgtk2.0-dev, bison
bochs的配置:
安装好之后,我们需要对它做一点配置,相当与我们要告诉它要模拟一个什么样的机器
配置文件在安装目录下的share/doc/bochs文件夹里有个样例,先把他拷贝出来然后做一些修改就行了
(后面BOCHSPATH均表示安装目录的路径)
cp BOCHSPATH/share/doc/bochs/bochsrc-sample.txt BOCHSPATH/bin/bochsrc.disk
这里配置文件的命名没有特殊要求,随便一个名字就好
这里我遇到了一个小坑,就是我一开始直接把bochsrc.txt放到了安装目录下,这样启动bochs之后要选择[2] read options from 当你写入bochsrc.txt之后会有一个错误
>>PANIC<< reading from bochsrc.disk failed
我猜测这是因为bochs是从bin这个目录下开始找起的,所以放在上层文件夹就找不到了。解决方法就是把配置文件放到bin目录下就好了,或者是运行./bochs -f PATH/bochsrc.disk 在启动的时候直接用参数把路径传进去就可以了
这样把配置文件复制到我们需要的地方之后,就要开始修改了
因为真象还原这本书上要求的是从硬盘启动,所以就把软盘给禁用了
需要修改的地方有
#设置bochs在运行的时候能使用的内存,单位是MB
megs: 32
#设置对应真实机器的BIOS和VGA BIOS
这里我保持了样例里的默认设置
因为不需要软盘,所以将其注销掉,不过这个默认好像也是注销的,如果没有自己手动注掉就好
大约是在这个位置
然后选择启动盘符
#boot: floppy #不需要软盘启动
boot: disk #从硬盘启动
设置日志文件的输出(输出位置在安装目录的bin下)
log: bochs.out
开启关闭某些功能
mouse: enable=0 #关闭鼠标
keyboard: keymap=BOCHSPATH/share/bochs/kemaps/x11-pc-us.map
这个地方树上写的是用keyboard_mapping: enable =1 map=...来做的,但是这样之后运行的时候也会有报错,上述写法没有,可能是版本迭代的问题
>>PANIC<< bochsrc.disk:495: keyboard directive malformed.#错误信息
之后 硬盘我也是用的默认设置
还有一个针对sound的报错
>>PANIC<< bochsrc.disk:928: Bochs is not compiled with lowlevel sound support
解决方法是吧配置文件的sound和speaker选项前面用#注释掉(虽然总觉得这样做不对,不过先运行起来再说吧不是吗,逃~)
还遇到了一个CPU相关的错误
>>PANIC<< .bochsrc:186: cpu directive malformed.
这个是因为配置文件中的cpu类型与实际机子上的类型不符合?(其实我也不是很清楚,再逃~)
结局方法是运行 ./bochs -help cpu 得到支持的型号
然后去配置文件里找到最接近的对应,然后修改一下就可以了
比如说我的是I7 8700 我就选了core_duo_t2400
(可能是指令集的问题?我还是不清楚....逃~)
修改如下
这样之后我就没有遇到其他的问题了,尝试运行一下
好了没有问题了,后面应该是开始创建硬盘镜像了。
逃~