写在前面

  此系列是本人一个字一个字码出来的,包括示例和实验截图。如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我

前言

  这个教程是给想涉足而不知道怎么学习 Linux 内核的同志写的,也是给我自己写的,催促巩固我的学习成果。
  在这篇开始之前,我距离上一篇我认为好的博文已经有好几个月了。一是有自己有很多有关前途未来的事情,毕竟再过一年是要毕业的人了,这块忙了半个多月;二是去搞 Deepin 上开源基础软件建设上去了,感觉成果不错,做了我最有成就感的“羽云十六进制编辑器”,有一些使用人群了,也上了商店,当了版主,当然还有 GIF 编辑器“羽云 GIF 编辑器”,这个比较糙,毕竟到了我不太擅长的地方,不过用还是没问题的。
  其实在这个暑假之前,我一直想搞搞 Linux 内核的。既然有了 Win 内核的基础,我 clone 了一份 Deepin 的代码,信心十足的想开一份教程,结果,我感觉我自己有点心急吃热豆腐了,发现学习方式和理论有很大的不同之处,尤其是代码量,看的就头疼,这辈子是不可能了。
  为了学 Linux 内核,我各处找适合自己的资料,走了一些弯路,也浪费了一些时间,消磨了一些热情。自己的事情忙完了,开源项目也算是结束了,决定静下心来,回归博客园,开始知识的输入和输出。
  本系列教程基于的 Linux 内核0.11版本,正和很多教程一样,至于原因,当你看到现在 Linux 的代码量你就能明白。

Linux 0.11 的内核代码虽然只有约两万行,但却是一个实实在在、不折不扣的现代操作系统。因为它具有现代操作系统最重要的特征——支持实时多任务,所以必然支持保护和分页……而且它还是后续版本的真正的始祖,有着内在的、紧密的传承关系。读者更容易看清设计者最初的、最根本的设计意图和设计指导思想。 ——《 Linux 内核的设计艺术》

  如果你之前学过我的《羽夏看Win系统内核》,本教程应该学起来更容易一些。一是保护模式和分页相关知识,你最起码有了基础,当然,本系列肯定不能少,学过的可以当做复习;二是我的教程写作风格你也有了熟悉,就像老师带学生一样,如果是学生面对新的老师,还需要一定的适应时间。
  我的学习环境是 Deepin ,使用的软件你的系统可能没有适配,建议找替代品,毕竟类似的软件肯定有,顶多不方便,如果是Win就当我没说。

知识储备

  学习本教程需要大量的扎实的基础储备和热情毅力,毕竟这个是自学,没有人来监督你。需要的基础和能力要求如下:

  • C/C++语言的基础
  • Intel x86系列汇编基础,并且会使用IntelAT&T汇编
  • 对于位(bit)具有明确的认识
  • 长久的毅力和时间
  • 认真把每一个实验做完且做对的付出
  • 微机原理(最好有)

  如果想具有看汇编C语言,看C语言汇编的能力,可以参考我的 羽夏看C语言系列教程 ,也可以看别的教程;对于AT&T汇编不熟悉的,可以参考我的 羽夏笔记—— AT&T 与 GCC ,别的教程也可。我再提醒一句:不做实验,你是弄不懂的,不做到最后就是半瓶醋水平,说啥都会,但一做就不会。

主目录

装备

> 必须

  • Linux 0.11 源码
  • Bochs 源码(一个 x86 硬件平台的开源模拟器)
  • 代码阅读工具(记事本都可)

> 选用

  • Intel白皮书,用来当字典用的,在讲解保护模式的所有知识点都在里面

参考书

  • 《操作系统真像还原》【如果是小白强烈推荐,不过最好也有点计算机基础】
  • 《Linux 内核的设计艺术》 第二版
  • 《Linux 内核0.11完全注释》 第三版(修正)

下载资源

  Intel 白皮书可能不太好搞,这个我是花 CSDN 40多积分下的:Intel白皮书英文版全卷 — — 密码:copt
  以上资源都可以到官方下载,这里我就说说如何下载 Linux 内核源码和 Bochs 源码,其它的应该好搜。

Linux 内核源码

  在浏览器地址栏把下面这个地址拷贝进去回车:

https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/old-versions/

  如下图所示:

  箭头所指的就是我们所需内核代码的压缩包,下载解压就可以了。

Bochs 源码

  在浏览器地址栏把下面这个地址拷贝进去回车:

https://sourceforge.net/projects/bochs/files/bochs/2.4.5/

  如下图所示:

  由于我是 Linux 系统( Deepin 是基于 Linux 的),所以下载上图红框的内容,至于编译安装请到下一篇环境搭建介绍。

下一篇

  羽夏看Linux内核——环境搭建