自制操作系统(CoolOS) - Plan
Posted
近两个月各种考试、课设比较多,再加上懒的原因,已经两个多月没有动博客了(".")。现在终于放假了,大好的时光怎么能不学习呢?于是呢就打算写点东西。一直以来对Linux,操作系统都挺感兴趣。于是呢就打算写个小小的操作系统练练手,学点东西。 老实说,我并不指望自己能写出个像Linux这种牛逼的、像模像样的操作系统。首先,我觉得我自己也没那个能力。其次,我觉得也不值得。因为,现在开源的Linux已经很牛逼、很好用了,为什么还要重复造轮子呢?是吧。所以呢,写这么个"操作系统”,只是用来练练手,学点新东西。我个人主要目的有以下几条:
-
加深对操作系统的理解。虽然已近学过了操作系统,但我发现学校老师讲的大都是理论性的东西,都是一些算法。很多东西都只是讲个大概,都不会讲太多细节。而且实验也都是一些简单的小实验。总感觉有点“飘”。就比如讲开机启动的时候,老师就只讲了BIOS调用操作系统启动程序,然后就操纵系统就启动了。再比如讲系统调用的时候,关于中断的GDT、IDT都没讲。我是希望通过写这么个小小的操作系统,去理解一些细节的、老师没讲的东西,从而加深自己对操作系统的理解。
-
了解一点稍微底层的东西。作为程序猿,我觉得了解一点底层还是很有必要的。在写操作系统的过程中,有的内容还是比较底层的。
-
练习汇编。虽然说已经学过了汇编了,但我觉得自己还是很菜。而且上课老师讲的都是16位汇编。虽然说大体原理都懂,但自己写起来就跟没学过一样。操作系统有的东西是需要用汇编写的,而且不止是16位汇编,还有32位汇编。所以,借此来练练汇编。
-
学习Linux。虽然使用Linux也已经一年多了。但学无止境嘛。本次开发环境主要使用Linux。
-
提高编码水平。虽然说现在编码水平已经比之前提高了不少。但跟大佬比起来,还是小菜鸟啊。所以,革命尚未成功,还需努力。
参考书籍
开发过程和思路主要参考以下书籍:
开发环境
开发平台为Archlinux,使用到的工具主要有:
-
Nasm :x86汇编器。使用Intel语法(AT&T语法太“高深”)。
-
gcc :C编译器。
-
dd :主要用来做磁盘映像。比如img啦、iso啦。
-
qemu :模拟器。用来跑我们的操作系统(测试)。
-
bless :十六进制编辑器。可以用来对任何文件按照字节进行编辑。带GUI界面。
-
hexedit :十六进制编辑器。同上。但不带GUI。
-
make :构建工具。
-
ld :链接器.
以上工具可用各Linux发行版的包管理器进行安装。