写在前面

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

前言

  这个教程是给想涉足而不知道怎么学习 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. PostgreSQL与Java JDBC数据类型对照

    序号 数据库类型 Java类型 JDBC索引 JDBC类型 1 varchar java.lang.String 12 VARCHAR 2 char java.lang.String 1 CHAR 3 ...

  2. CSS---RGBA和position属性解释

    rgb与rgba的含义 RGB 是代表Red(红色) .Green(绿色). Blue(蓝色)三个单词的缩写. RGBA 颜色值是 RGB 颜色值的扩展,添加了一个 alpha 通道, 它规定了对象的 ...

  3. OpenHarmony技术挑战课题征集

    OpenHarmony技术挑战课题征集 OpenAtom OpenHarmony(以下简称"OpenHarmony")是由开放原子开源基金会(OpenAtom Foundation ...

  4. Docker 学习路线 3:安装设置 Docker Desktop 与 Docker 引擎指南

    Docker提供了一个名为Docker Desktop的桌面应用程序,简化了安装和设置过程.还有另一个选项可以使用Docker引擎进行安装. Docker Desktop网站 Docker引擎 Doc ...

  5. 掌握 Spring IoC 容器与 Bean 作用域:详解 singleton 与 prototype 的使用与配置

    在您的应用程序中,由 Spring IoC 容器管理的形成其核心的对象被称为 "bean".一个 bean 是由 Spring IoC 容器实例化.组装和管理的对象 这些 bean ...

  6. 获取 BSTR 字符串长度

    BSTR a = L"hello world"; int len = SysStringByteLen(a);

  7. openGauss升级脚本撰写

    概述 重要提示: 升级过程通过执行升级 sql 脚本实现系统表变更,这些脚本必须由开发人员在修改系统表的同时一并提供升级 sql 脚本,请将这些脚本代码提交至 openGauss-server/src ...

  8. Hypium框架使能ArkTS应用高效测试

     原文链接:https://mp.weixin.qq.com/s/Ncc-x_4zy4wBZmSjknw1lQ,点击链接查看更多技术内容:   HarmonyOS发布了声明式开发框架ArkUI,带来了 ...

  9. VS2019 community版本下载Extension太慢解决方案

    VS2019 community版本下载Extension太慢解决方案 今天在VS2019上更新Live Share拓展时,实在是太慢了,一直卡在如下界面.不过,除了没有进度条和速度很慢,还是可以下载 ...

  10. opencv实现数据增强(图片+标签)平移,翻转,缩放,旋转

    面试问到了,让手撕数据增强,图片+标签.这里整理一下,直接上代码. import math import cv2 import numpy as np def pan(img, anns, size= ...