羽夏看Linux内核——简述
写在前面
此系列是本人一个字一个字码出来的,包括示例和实验截图。如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我。
前言
这个教程是给想涉足而不知道怎么学习 Linux 内核的同志写的,也是给我自己写的,催促巩固我的学习成果。
在这篇开始之前,我距离上一篇我认为好的博文已经有好几个月了。一是有自己有很多有关前途未来的事情,毕竟再过一年是要毕业的人了,这块忙了半个多月;二是去搞 Deepin 上开源基础软件建设上去了,感觉成果不错,做了我最有成就感的“羽云十六进制编辑器”,有一些使用人群了,也上了商店,当了版主,当然还有 GIF 编辑器“羽云 GIF 编辑器”,这个比较糙,毕竟到了我不太擅长的地方,不过用还是没问题的。
其实在这个暑假之前,我一直想搞搞 Linux 内核的。既然有了 Win 内核的基础,我 clone 了一份 Deepin 的代码,信心十足的想开一份教程,结果,我感觉我自己有点心急吃热豆腐了,发现学习方式和理论有很大的不同之处,尤其是代码量,看的就头疼,这辈子是不可能了。
为了学 Linux 内核,我各处找适合自己的资料,走了一些弯路,也浪费了一些时间,消磨了一些热情。自己的事情忙完了,开源项目也算是结束了,决定静下心来,回归博客园,开始知识的输入和输出。
本系列教程基于的 Linux 内核0.11版本,正和很多教程一样,至于原因,当你看到现在 Linux 的代码量你就能明白。
Linux 0.11 的内核代码虽然只有约两万行,但却是一个实实在在、不折不扣的现代操作系统。因为它具有现代操作系统最重要的特征——支持实时多任务,所以必然支持保护和分页……而且它还是后续版本的真正的始祖,有着内在的、紧密的传承关系。读者更容易看清设计者最初的、最根本的设计意图和设计指导思想。 ——《 Linux 内核的设计艺术》
如果你之前学过我的《羽夏看Win系统内核》,本教程应该学起来更容易一些。一是保护模式和分页相关知识,你最起码有了基础,当然,本系列肯定不能少,学过的可以当做复习;二是我的教程写作风格你也有了熟悉,就像老师带学生一样,如果是学生面对新的老师,还需要一定的适应时间。
我的学习环境是 Deepin ,使用的软件你的系统可能没有适配,建议找替代品,毕竟类似的软件肯定有,顶多不方便,如果是Win
就当我没说。
知识储备
学习本教程需要大量的扎实的基础储备和热情毅力,毕竟这个是自学,没有人来监督你。需要的基础和能力要求如下:
C/C++
语言的基础Intel x86
系列汇编基础,并且会使用Intel
和AT&T
汇编- 对于
位(bit)
具有明确的认识 - 长久的毅力和时间
- 认真把每一个实验做完且做对的付出
- 微机原理(最好有)
如果想具有看汇编
如C语言
,看C语言
如汇编
的能力,可以参考我的 羽夏看C语言系列教程 ,也可以看别的教程;对于AT&T
汇编不熟悉的,可以参考我的 羽夏笔记—— AT&T 与 GCC ,别的教程也可。我再提醒一句:不做实验,你是弄不懂的,不做到最后就是半瓶醋水平,说啥都会,但一做就不会。
主目录
- 羽夏看Linux内核——简述(本篇介绍)
- 羽夏看Linux内核——环境搭建
- 羽夏看Linux内核——启动那些事
- 羽夏看Linux内核——段相关入门知识
- 羽夏看Linux内核——门相关入门知识
- 羽夏看Linux内核——中断与分页相关入门知识
- 羽夏看Linux内核——引导启动(上)
- 羽夏看Linux内核——引导启动(下)
- 羽夏看Linux内核——内核初始化
- (正在更新中……)
装备
> 必须
- 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内核——门相关入门知识
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...
- 羽夏看Linux内核——中断与分页相关入门知识
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...
- 羽夏看Linux内核——引导启动(上)
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...
- 羽夏看Linux内核——引导启动(下)
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...
- 羽夏看Linux内核——段相关入门知识
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...
- 羽夏看Linux内核——环境搭建
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...
- 羽夏看Linux内核——启动那些事
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...
- 羽夏看Win系统内核——简述
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- (一)羽夏看C语言——简述
"羽夏看C语言"介绍什么 本系列从汇编的角度,比较翔实的介绍C语言.C++和C其实是一样的东西,C++的编译器只是更强大,更能帮助我们写代码,例如模板.没有特殊说明,本系列不会 ...
- 羽夏看Win系统内核——驱动篇
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
随机推荐
- KingbaseES例程_普通表在线转分区表(基于规则)
KingbaseES例程_普通表在线转分区表 概述 普通表转分区表,使用视图的替换式规则,以路由方式,实现在线转移数据. 数据准备 /*普通大表*/ create table tab_single a ...
- 标准库unsafe:带你突破golang中的类型限制
本文分享自华为云社区<突破语言golang中的类型限制>,作者:码乐. 1 简介 在使用c语言编程时,常常因为类型的问题大伤脑筋,而其他语言比如java,python默认类型又是难以改变的 ...
- K8s技术全景:架构、应用与优化
本文深入探讨了Kubernetes(K8s)的关键方面,包括其架构.容器编排.网络与存储管理.安全与合规.高可用性.灾难恢复以及监控与日志系统. 关注[TechLeadCloud],分享互联网架构.云 ...
- 强!推荐一款API 接口自动化测试平台!
在项目开发,迭代交付过程中开发人员,测试人员需要针对系统微服务API做调试,回归测试,性能测试.自动化测试,一个好的平台本质上需要解决API测试的5大基本问题. 1.支持不同的项目,角色,技术人员多人 ...
- 基于C语言的面向对象设计模式(持续更新)
前言 首先这篇文章只是初步的尝试,不涉及过于高深的编程技巧:同时需要表明的是,面向对象只是一种思想,不局限于什么样的编程语言,不可否认的是基于面向对象特性而设计的语言确实要比面向过程式的语言更加容易进 ...
- MySQL的下载、安装和配置
一.MySQL的下载 下载地址:http://dev.mysql.com/downloads/mysql 进入下载页面,选择所需版本,这里示范MySQL8.0 图一 选择版本,下载MSI(软件安装 ...
- 大型场景中通过监督视图贡献加权进行多视图人物检测 Multi-View People Detection in Large Scenes via Supervised View-Wise Contribution Weighting
Multi-View People Detection in Large Scenes via Supervised View-Wise Contribution Weighting 大型场景中通过监 ...
- 老者Java,奋战一线
1 语言优劣论 世上只有两种编程语言:一种被人骂,一种没人用. Java已经诞生20多年了,依然是企业级开发中使用最广泛的语言,也是挨骂最多的语言.技术圈经常有"A语言比B语言更好" ...
- Qt 从 QTransform 逆向解出 Translate/Scale/Rotate(平移/缩放/旋转)分析
QTransform 用于图形绘制,它定义了如何平移(translate).缩放(scale).切变(shear).旋转(rotate)或投射(project)坐标系.注意:QTransform 是作 ...
- HarmonyOS NEXT应用开发实战—组件堆叠
介绍 本示例介绍运用Stack组件以构建多层次堆叠的视觉效果.通过绑定Scroll组件的onScroll滚动事件回调函数,精准捕获滚动动作的发生.当滚动时,实时地调节组件的透明度.高度等属性,从而成功 ...