写在前面

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

前言

  这个教程是给想涉足而不知道怎么学习 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内核——环境搭建

羽夏看Linux内核——简述的更多相关文章

  1. 羽夏看Linux内核——门相关入门知识

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...

  2. 羽夏看Linux内核——中断与分页相关入门知识

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...

  3. 羽夏看Linux内核——引导启动(上)

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...

  4. 羽夏看Linux内核——引导启动(下)

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...

  5. 羽夏看Linux内核——段相关入门知识

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...

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

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...

  7. 羽夏看Linux内核——启动那些事

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...

  8. 羽夏看Win系统内核——简述

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  9. (一)羽夏看C语言——简述

    "羽夏看C语言"介绍什么   本系列从汇编的角度,比较翔实的介绍C语言.C++和C其实是一样的东西,C++的编译器只是更强大,更能帮助我们写代码,例如模板.没有特殊说明,本系列不会 ...

  10. 羽夏看Win系统内核——驱动篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

随机推荐

  1. springboot整合视频点播

    1 //上传视频到阿里云 2 @Override 3 public String uploadAyl(MultipartFile file) { 4 try { 5 //accessKeyId,acc ...

  2. wordpress自建博客站,在页脚添加网站总访问次数

    wordpress自建博客站,在页脚添加网站总访问次数 笔者使用的主题是 GeneratePress 版本:3.1.3 打开footer.php编辑 <div style="text- ...

  3. CTFshow pwn31 wp

    PWN31 使用checksec查看保护 发现除了canary剩下保护全开,那么就没有前面几个题目那么简单了,ida打开看见他给了我们main函数地址 虽然开了pie但是在他们之间的偏移是一定的,那么 ...

  4. #Splay#洛谷 1486 [NOI2004]郁闷的出纳员

    题目 分析 考虑加减工资直接打标记,查询第\(k\)多可以用平衡树, 删除有点恶心,这里考虑Splay,将需要删除的部分的后继splay到根节点并将左子树断边 代码 #include <cstd ...

  5. 3. Vector Spaces and Subspaces

    3.1 Vector Spaces The space \(R^n\) consists of all colunm vectors \(v\) with n components. We can a ...

  6. 《深入理解Java虚拟机》读书笔记: 虚拟机类加载的时机和过程

    虚拟机类加载的时机和过程 一.类加载的时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading).验证(Verification).准备(Preparation ...

  7. opencv读取中文路径图片

    点击查看代码 img = cv2.imdecode(np.fromfile(filename, dtype=np.uint8), cv2.IMREAD_GRAYSCALE)

  8. Redis Stack功能介绍及redis-om-dotnet使用示例

    为了简化开发人员对较新的 Redis 模块及其提供的功能的体验,同时简化支持其功能的文档和客户端.以帮助开发人员从开始使用 Redis 的那一刻起,就能充分提高工作效率.Redis Stack诞生了. ...

  9. HarmonyOS—UI 开发性能提升的推荐方法

    注:本文转载自 HarmonyOS 官网文档 开发者若使用低性能的代码实现功能场景可能不会影响应用的正常运行,但却会对应用的性能造成负面影响.本章节列举出了一些可提升性能的场景供开发者参考,以避免应用 ...

  10. android android7以上无法连接蓝牙

    前言 在开发android 蓝牙的时候,发现一个问题,那就是android7无法连接上蓝牙. 原因 <!-- 管理蓝牙设备的权限 --> <uses-permission andro ...