一、准备工作
开发一个操作系统内核不是一个简单的工作,这需要很大的耐心和辛勤的汗水。常常会遇到一点点的小问题就会困扰你很久,所以从现在开始我们必须做好心理准备,准备打一场硬仗,打一场持久战。当然,在写我们自己的操作系统前,我们要先学习一些相关的基础知识。我们不建议你没有一点的程序设计基础就开始编写系统内核。我们建议要花大量时间去学习基础知识,并打好自己的基本功。我们需要学习的内容有汇编语言、C语言、数据结构和操作系统的相关课程。
我们在以后的开发时采用的是AT&T汇编语言和C语言混合编程。其中用到了栈、链表、多叉树等数据结构,其中更是频繁的使用了C语言的指针机制。所以希望你在开始编写我们自己的操作系统前先将这些知识学好。
二、开发平台
我们想要开发的操作系统内核是以Linux内核为参考,借鉴它许多优秀的内容。由于笔者是一个Linux爱好者,所用的操作系统平台也同样是Linux系统。使用的Linux发行版为Fedora21的Xfce定制版。在Linux下可以方便的使用Makefile文件按照我们自己的要求编译C程序代码,并可以方便的使用dd命令制作我们想要的iso光盘镜像文件(系统内核和引导程序被烧录在iso文件里)。笔者选用Linux作为日常工作的操作系统是因为在Linux下有着数以万计的优秀软件,而且他们大多都是免费的。你可以在下面的网址中找到安装镜像的下载地址:
Fedora: https://getfedora.org/en/workstation/
Fedora定制版: https://spins.fedoraproject.org/
Ubuntu: http://www.ubuntu.org.cn/index_kylin
当然你也可以选择在Windows下开发你的操作系统内核,使用Windows下的C语言开发环境,并通过一些iso制作软件烧录你的光盘镜像。
三、虚拟化软件
当我们编写一个操作系统内核程序之后,需要进行一些必要的测试,这就需要我们有一台闲置的电脑,来运行我们的系统内核。当然,这也是非常不现实的,还好现在我们可以使用虚拟化软件来创建一个虚拟机,并在其上运行我们的操作系统。这里我们推荐使用Oracle公司的一款叫作VirtualBox的开源、免费虚拟化软件,其下载地址如下:
https://www.virtualbox.org/wiki/Downloads
同样,你也可以选择其它的虚拟化软件,比如使用VMware公司的WMware Player。使用虚拟机来运程我们的操作系统非常之简单、流畅,同时又为我们节省不少使用真机的经济开销。
四、编译软件
由于笔者使用的Linux操作系统,所以使用的汇编和C语言编译软件是GNU编译器。GNU编译器套装(英语:GNU Compiler Collection,缩写為gcc),一套编程语言编译器,以GPL及LGPL许可证所发行的自由软体,也是GNU计画的关键部分,也是GNU工具链的主要组成部份之一。gcc(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。行者所使用的gcc版为:
gcc version 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)
有了gcc我们就可以编译C语言程序了,下面我们使用vim命令来写一个小小的Hello World程序并使用gcc来编译运行一下:
vim hw.c
#include <stdio.h>
int main(int argc, char **args)
{
printf("Hello World!\n");
return 0;
}
gcc hw.c -o hw
./hw
Hello World!
有了C语言的编译器,我们还需要一个GUI的编程工具,在Linux下使用vi或vim编写程序也是非常方便的,但是对于要编写一个代码结构复杂繁多的系统内核来说,使用一个高效的GUI编程工具必不可少,这里笔者采用的是一款在Java界倍受欢迎的GUI编程工具Eclipse。笔者采用的Eclipse版本为Eclipse IDE for C/C++ Developers。你可以在下面找到它的下载地址:
http://www.eclipse.org/downloads/
在Eclipse编写一个Hello World的C语言程序并编译运行:
五、内核源码
本教程所用到的源代码都放在github服务器上,你可以在下面的网址中找到我们所有的源代码,并通过你喜欢的方式下载(https方式或ssh方式):
https://github.com/magicworldos/lidqos
另外,本教程所使用的源代码完全开放、免费。你可以自由的使用和修改本教程中的所有源代码。源代码采用分支(branch)方式来管理各个不同的版本。我们在下面每个章节的每一个可运行的例子里都会附带一些源代码,并在章节结束时说明这一个章节所用到的源代码的分支,你就可以方便的从github上通过切换分支来取得这一个章节相应的源代码了。
好了,一切准备就绪,下面就要开始我们的开发操作系统之旅了。
Copyright © 2015-2023 问渠网 辽ICP备15013245号