前言:磨刀不误砍柴功,本天我们需搭好,操作系统开发的环境,采用的开发语言是C语言和汇编语言,具体详细的内容请看博客。
本日开发参考以下资料:
《操作系统真象还原》
- C语言编译器:GCC
- 汇编语言编译器:NASM
- 虚拟机:vmware
- 虚拟机系统:Linux(因为书上说用linux)
kail linux 镜像文件(随便分享一个) 密码 tmll
- 虚拟机里面跑的虚拟机:bochs
一,安装bochs(地雷坑来了)
再次之前我们需要先安装一个Linux虚拟机,如果你实在嫌麻烦,那就windows上面跑吧,windows和下面linux教程同理,大家改改配置文件路径即可
boches.exe 链接密码:tmllhttps://pan.baidu.com/s/1LUekJt4copMmpevuD1CoHw
方法一,直接安装
sudo apt-get install bochs #可以直接安装bochs
方法二,下载压缩文件,解压自编译安装(坑比较多,这个地方太心累了,有兴趣的可以自己搞)
安装好后,请注意以下几个文件夹(自编译的不同)
/usr/share/doc/bochs 在该文件夹下应该放有bochsrc-sample.txt 即基础配置样例
/usr/share/bochs 即主要bochs文件
接下来我们来编写配置文件
一些配置的解释
# 设置虚拟机内存为32MB
megs: 32
# 设置BIOS镜像
romimage: file=$BXSHARE/BIOS-bochs-latest
# 设置VGA BIOS镜像
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
# 设置从硬盘启动
boot: disk
# 设置日志文件
log: bochsout.txt
# 关闭鼠标
mouse: enabled=0
# 打开键盘
keyboard: type=mf, serial_delay=250
# 设置硬盘
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
# 添加gdb远程调试支持
gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0
我的配置
megs: 32
#注意 /usr/share/bochs/ 是我的安装路径,如果你和我的不同,请更改路径,以下所有路径同理
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage : file=/usr/share/bochs/VGABIOS-lgpl-latest
boot: disk
log: bochs.out
mouse: enabled=0
keyboard:keymap=/usr/share/bochs/keymaps/x11-pc-us.map
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#这里path代表要读的你写的操作系统文件路径在哪,没有也可以写上
ata0-master: type=disk, path="/usr/share/geniusos.img", mode=flat, cylinders=121, heads=16, spt=63
gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0
- 把他保存为随意名字即可,我的名字叫做 bochsrc.disk,然后存放在你的安装目录 /usr/share/bochs(我的)下即可
- 输入bochs即可启动,默认输入2即可 (如果你不是默认的配置文件,一开始会不知道你配置文件,然后询问是否寻找配置文件)
- 接下来输入你的配置名字即可
- 如果接下来提示的不是【6】,那就代表你的配置文件可能有语法错误,看看是不是路径错误了,如果是【6】的话恭喜你,文件编译成功了,但是也许会有一些坑,如果没有坑且有以下画面说明你成功了
二,一些坑
-
Bochs is not compiled with gdbstub support
把gdbstub那行去掉或者注释掉即可
-
no alternative display libraries are available
sudo apt-get install bochs-x #安装该模块即可
三,明日预告
我们启动后会发现,他说我们没有xxx.img,我们应该要写个.img镜像文件,所以明天开始我们就要来写MBR引导记录,了解计算机到底是怎么启动的捏,想想就有点激动,现在比较晚了,还是先洗洗睡吧。