倒腾操作系统
操作系统倒腾了好久。
开始装了个ubuntu,结果看网上有人说,这个代码在64位操作系统上编译会报错,于是就去装了32位Ubuntu,之后又发现chrome浏览器已经不支持32位操作系统了……这没了chrome这各平台可怎么同步啊。最终还是在虚拟机里装了个32位的ubuntu。你说早知道这样折腾这干啥,重装那么多操作系统。
安装bochs和nasm
然后开始安装软件。说实话这个装了好几次了,每次装完都没用就又重装系统了……
软件就是./configure、make、make install 就装好了,中间bochs报了一次错,是因为少了有关gui的依赖。还有,这个在Linux 上,安装好之后这两个软件在哪都能运行,而不是只有在安装的文件夹下才能运行。所以我重新开了一个文件夹用来存放写好的操作系统。
试运行简单的bootloader
bximage新建一个a.img镜像很简单,但是建完以后运行dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc,提示找不到boot.bin。由于头一次用这个软件,所以没太搞明白原理,以为缺少什么文件呢。查询dd发现,if意为输入文件,of意为输出文件,刚才新建了a.img,怎么又往里写东西???懵逼了。
后来查了查才搞明白,原来之前得写的那个汇编程序,也就是bootloader,编译之后就是boot.bin,这是一个程序。而a.img就相当于一个启动盘,你得把那个程序写入到启动盘里。就是这个意思。这么做以后dd这条指令运行了。
然后就是bochs的配置文件。由于这个书比较老了,它那个写法是有问题的。首先是没有keyboard_mapping,得换成keyboard,还有没有enabled的选项,改了之后编译通过了。
然后运行,结果总是报Message: Cannot connect to X display,搜这个网上也没有直接解决的。最后七拐八拐发现,我用的mac终端连虚拟机闹的,没法启动图形界面啊!直接到虚拟机里启动就好了……
还有,这本书确实老了,有的那个调试的指令都不好使了。所以我准备看看它的文档。