阅读源码目的:为了更好地编撰驱动程序;对自己写的程序有更深入的理解;而且自己的岗位定位在底层开发。获取内核源码:
阅读linux内核,常用下边两种方式:bochs+linux0.11+书(linux内核完全注释、linux内核完全分析、linux内核设计的艺术)SourceInsight+linux2.X+书(linux内核情境剖析)另外:笨哥哥近三年出的两本书不错,《奔跑吧Linux内核入门篇》和《奔跑吧Linux内核》基于Linux4.x,只是配套视频有点贵,而且书写的很不错,以实际问题出发,在实际工作中很有用。阅读源码分为横向阅读和纵向阅读。横向就是跟随内核的执行流程来读,纵向就是根据内核的各大功能模块来读。
第一种方式横向或则纵向来读都可以,由于代码量不是很大。《linux内核完全分析》《linux内核完全注释》是引导你纵向阅读的书,《linux内核设计的艺术》是引导你横向阅读的书。建议纵向横向结合着来,横向跟随bochs调试工具来是必不可少的,当遇见问题时步入到相应的功能模块纵向拓展一下。
《linux内核情境剖析》中的内核版本是2.4.X,现代内核版本还是推荐纵向阅读,横向几乎不可能。(在Linux下搭建了quem虚拟机,之后用GDB调试内核也可以)其实阅读源码的方式也就前面两种,贵在坚持,而且别闭门N久学内核linux内核 书籍,没有意义。并且长时间只读代码,不敲代码是不行的。
假如想在简历中写上关于Linux内核的经验,先不要花大量时间看源码,先把《linux内核设计与实现》读了,在找工作中更有用。
Linux5.8.14
一般Linux会有以下目录
arch子目录包括所有和体系结构相关的核心代码。它还有更深的子目录,每一个代表一种支持的体系结构
include子目录包括编译核心所须要的大部份include文件。它也有更深的子目录,每一个支持的体系结构一个。include/asm是这个体系结构所须要的真实的include目录的软链接,比如include/asm-i386。为了改变体系结构,你须要编辑核心的makefile,重新运行Linux的核心配置程序
init这个目录包含核心的初始化代码,这时研究核心怎样工作的一个特别好的起点
mm这个目录包括所有的显存管理代码。和体系结构相关的显存管理代码坐落arch/*/mm/
drivers系统所有的设备驱动程序在这个目录。它们被界定成设备驱动程序类
ipc这个目录包含核心的进程间通信的代码
modules这只是一个拿来储存构建好的模块的目录
fs所有的文件系统代码。被界定成子目录,每一个支持的文件系统一个
kernel主要的核心代码。同样qq for linux,和体系相关的核心代码放到arch/*/kernel
net核心的网路代码
lib这个目录放置核心的库代码。和体系结构相关的库代码在arch/*/lib/
scripts这个目录包含脚本(比如awk和tk脚本),用于配置核心
根据以下次序阅读源代码会轻松点
核心功能(kernel)
显存管理(mm)
文件系统(fs)
进程通信(ipc)
网路(net)
系统启动和初始化(init/main和head.S)
其他等等
建议书籍说明(参考):
1,《Linux内核设计与实现》,中文名LinuxKernelDevelopment(所以有人叫它LKD),机械工业出版社,日本RobertLove著,陈莉君译者。评说:此书是现今首屈一指的入门最佳图书。作者是为2.6内核加入了占据的人,对调度部份十分精通,而调度是整个系统的核心,因而本书是很权威的。这本书讲解通俗易懂,全书没有列出一条汇编句子,而且给出了整个Linux操作系统2.6内核的概观,使你能通过阅读迅速获得一个overview。并且对内核中较为混乱的部份(如下半部),它的讲解是最透彻的。对没如何深入内核的人来说,这是强烈推荐的一本书。
2,《Linux内核源代码情境剖析》上、下。毛德操、胡希明著,四川学院出版社,评说:本书是基于2.4.0内核的。下册讲解显存管理、中断、异常与系统调用、进程控制、文件系统与传统UnixIPC;上册讲解socket、设备驱动、SMP和引导。关于这套书的评价褒贬不一,我个人觉得其深度是同类专著中最优秀的。本书基于IntelIA32体系,因为长度大,好多体系上的知识都捎带讲解了,所以假如你想深入了解内核的工作机制而又不十分熟悉IntelCPU的体系构造,本书是最合适的。缺点是:版本较老linux操作系统界面,没有TCP/IP合同栈部份(它讲的socket只是Unix域合同的),图表太少,不适宜初学者入门。还有就是对中学生同学来说,可能书价过高,这样的话可以考虑先买下册,由于下册是核心部份,上册一大部份都在讲具体PCI/ISA/USB设备的驱动。
3,《深入理解Linux内核》第二版。中国电力出版社。也是陈莉君译。此书是Linux内核黑客在推荐图书时的首选。评说:此书图表好多,形象地给出了关键数据结构的定义,与《情景剖析》相比,本书内容紧凑,不会一个问题讲解动辄上百页,有提纲挈领的功用,并且深度上要逊于《情景剖析》。
4,其它的几本书。市面上能看到的其它的Linux内核的图书,《Linux设备驱动程序》、《Linux内核源代码完全注释》以及新出的《Linux内核剖析及编程》等。《Linux设备驱动程序》第二版是基于2.4的,英文翻译不错,中国电力出版。这书指出动手实践,但它是讲解“设备驱动”的,不是最核心的东西,但是有些东西没硬件的话难以实践,可能更适宜驱动开发的程序员吧,不太适宜这些Forfunandprofit的人。此书有第三版中文版,西南学院出版社翻印,讲解2.6的,行文流畅linux内核 书籍,讲解的面也比第二版更广泛,我读过其中关于同步与互斥、内存分配的部份,觉得很不错。《Linux内核源代码完全注释》(机械工业出版社)是复旦学院的博士生赵炯的专著,讲解0.1Linux内核,我没买也没看,有看过的同学说一说。《Linux内核剖析及编程》(电子工业出版社)是刚才出版的,国人写的,讲解2.6.11。好多人说好,但有人说不够系统,我没买,不敢评说。还有一本北大出的《Linux内核编程手册(第三版)》,原书应当是好书,并且翻译、排版非常糟烂,脱字跳行,根本无法看,我买了一本又丢掉了。
5,其它资源。TLDP(TheLinuxDocumentationProject)有大量文档,其中不少是关于内核的,有些是在国外出版过的,像《LinuxKernelInterls》《TheLinuxKernel》《LinuxKernelModuleProgrammingGuide》等,作者都是亲身出席开发的人,专著较为可信。
6,一本不是讲解Linux的书:《现代体系结构上的Unix系统:内核程序员的SMP和Caching技术》,人民邮电出版社2003版,本书似乎不是讲解Linux,并且对所有Unix内核都是适用的,适宜对SMP和CPU的Cache那些组成原理知识不是很熟的同学,并且是好多美国牛人推荐的书。英文版翻译特别负责。
在线阅读Linux内核源码网站:
初学者建议书籍(实拍):
个人建议内核和驱动一起学。
假如喜欢我的文章,欢迎关注、点赞和转发,下边可以留言~~~