为了以下几个原因我正在重新修改教程:六年过去了,新的编译器和老代码之间不太兼容;新发现了一些bug;我比当年强。希望新的教程能很快上线……


我是个不追根究底就不舒服的人,所以当我学编译原理的时候,我写了一个编译器(其实更像汇编器)。当我开始用FreeBSD的时候,我就想知道它到底是怎么工作的,所以我尝试去读它的内核代码。正如你想象的那样,我很快就发现这是不可能完成的任务。它的几百万行代码完全把我淹没了。我只想要柄锤子,却被告知只有水压机。

所以我就想干嘛不自己来呢?写一个简单的操作系统内核,只用来展示它是怎么从系统引导到shell的,这就是Skelix的由来。Skelix是一个操作系统的框架(Skeleton),演示了内核如何在i386的32位保护模式下工作:引导、任务切换、分页、虚拟内存、文件系统等等。

这个教程通过一步一步地实现Skelix展示了一个简单的操作系统内核是如何工作的。请不要误会,Skelix只是一个用来展示的系统,并没有产品用途。我通过预设条件来让代码流程尽量简洁清晰。

感谢你对Skelix的兴趣,如果发现了任何bug,或者有任何想法或者建议,请联系我


教程00: 准备工作


教程01: 引导 -- 来自黑暗世界的声音:“Hello World!”


教程02: 保护模式 -- 这一节不容易。


教程03: 辅助函数 -- 很简单 _m_(^-^)_m_


教程04: 中断和异常 上 -- 出错了!我很高兴!


教程05: 中断和异常 下 -- 请原谅我贫乏的想象力,再一次说:“Hello World!”。


教程06: 多任务 -- 相信我,一位出错就能让你发疯。


教程07: 文件系统 -- 很长,但不难。


教程08: 内存管理 -- 拿不出手啊!


教程09: 系统调用和执行磁盘程序 -- 放松一下


Special Thanks
Pádraig Brady他帮助我矫正了一些英文错误。他的网站上有很多有用的关于Linux的技巧。http://www.pixelbeat.org.
Song Jiang发现了教程中的好几个错误。
Arshad Hussain他在教程02中发现了一个计算错误
沈峰他在教程04中发现了pic_install中的数条注释位置是错的。并解释了教程06中一个关于.bss问题

你可以自由使用我的代码,如有疑问请联系我