Linux内核(5) - 内核学习的相关资源

“世界上最缺的不是金钱,而是资源。”当我在一份报纸上看到这句大大标题时,我的第一反应是——作者一定是个自然环保主义者,然后我在羞愧得反省自身的同时油然生出一股对这样的无产主义理想者无比崇敬的情绪来。

于是,我继续往下看,“因此在XXX还未正式面市之时,前来咨询的客户已经不少,这些有眼光的购房者明白,谁能在目前最好的购房机会下最大化地占有绝版资源,谁就掌控了未来财富流向。”(为了避免做广告的嫌疑,请允许我使用XXX代替该楼盘的名字。)顿时,我悟道了!

其实,韩峰同志已经在日记里告诉了我们资源的重要性,因此我们在学习韩峰同志严谨细致的态度同时,还要领悟他对资源的灵活运用。只有在以内核源码为中心,坚持各种学习资源的长期建设不动摇,才能达到韩局长那样的高度,俯视Linux内核世界里的人生百态。

注意,这个观点与前面所说的学习效果主要取决于方法论和心理两个方面并不矛盾,它们属于不同层次上的问题。

内核文档

内核代码中包含有大量的文档,这些文档对于学习理解内核有着不可估量的价值,记住,在任何时候,它们在我们心目中的地位都应该高于那些各式的内核参考书。下面是一些内核新人所应该阅读的文档。

README
    这个文件首先简单介绍了Linux内核的背景,然后描述了如何配置和编译内核,最后还告诉我们出现问题时应该怎么办。

Documentation/Changes
    这个文件给出了用来编译和使用内核所需要的最小软件包列表。

Documentation/CodingStyle
    这个文件描述了内核首选的编码风格,所有代码都应该遵守里面定义的规范。

Documentation/SubmittingPatches
Documentation/SubmittingDrivers
Documentation/SubmitChecklist

这三个文件都是描述如何提交代码的,其中SubmittingPatches给出创建和提交补丁的过程,SubmittingDrivers描述了如何将设备驱动提交给2.4、2.6等不同版本的内核树,SubmitChecklist则描述了提交代码之前需要check自己的代码应该遵守的某些事项。
Documentation/stable_api_nonsense.txt
    这个文件解释了为什么内核没有一个稳定的内部API(到用户空间的接口——系统调用——是稳定的),它对于理解Linux的开发哲学至关重要,对于将开发平台从其他操作系统转移到Linux的开发者来说也很重要。

Documentation/stable_kernel_rules.txt
    解释了稳定版内核(stable releases)发布的规则,以及如何将补丁提交给这些版本。

Documentation/SecurityBugs
    内核开发者对安全性问题非常关注,如果你认为自己发现了这样的问题,可以根据这个文件中给出的联系方式提交bug,以便能够尽可能快的解决这个问题。

Documentation/kernel-docs.txt
    这个文件列举了很多内核相关的文档和书籍,里面不乏经典之作。

Documentation/applying-patches.txt
    这个文件回答了如何为内核打补丁。

Documentation/bug-hunting
    这个文件是有关寻找、提交、修正bug的。

Documentation/HOWTO
    这个文件将指导你如何成为一名内核开发者,并且学会如何同内核开发社区合作。它尽可能不包括任何关于内核编程的技术细节,但会给你指引一条获得这些知识的正确途径。

经典书籍

待到山花烂漫时,还是那些经典在微笑。

有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验。首先是5本久经考验的神作(个人概括为“2+1+2”,第一个2是指2本全面讲解内核的书,中间的1指1本讲解驱动开发的书,后面的2则指2本有关内核具体子系统的书,你是否想到了某某广告里三个人突然站起单臂齐举高呼“1比1比1”的场景?)。

《Linux内核设计与实现》
    简称LKD,从入门开始,介绍了诸如进程管理、系统调用、中断和中断处理程序、内核同步、时间管理、内存管理、地址空间、调试技术等方面,内容比较浅显易懂,个人认为是内核新人首先必读的书籍。新人得有此书,足矣!

《深入理解Linux内核》
    简称ULK,相比于LKD的内容不够深入、覆盖面不广,ULK要深入全面得多。
    前面这两本,一本提纲挈领,一本全面深入。

《Linux设备驱动程序》
    简称LDD,驱动开发者都要人手一本了。

《深入理解Linux虚拟内存管理》
    简称LVMM,是一本介绍Linux虚拟内存管理机制的书。如果你希望深入的研究Linux的内存管理子系统,仔细的研读这本书无疑是最好的选择。

《深入理解LINUX网络内幕》
    一本讲解网络子系统实现的书,通过这本书,我们可以了解到Linux内核是如何实现复杂的网络功能的。

(忘了声明下,我这列出来的书名是中文的,但是并不代表我建议大家去看他们的中文版,其中有的翻译的实在太??了,呵呵)

这5本书各有侧重,正如下面的图所展示的那样,恰好代表了个人一直主张的内核学习方法:首先通过LKD或ULK了解内核的设计实现特点,对内核有个整体全局的认识和理解,然后可分为两个岔路,如果从事驱动开发,则钻研LDD,如果希望对内核不是泛泛而谈而是有更深入的理解,则可以选择一个自己感兴趣的子系统,仔细分析它的代码,不懂的地方就通过社区、邮件列表或者直接发Email给maintainer请教等途径弄懂,切勿得过且过,这样分析下来,对同步、中断等等内核的很多机制也同样会非常了解,俗话说的一通则百通就是这个道理。当然,如果你选择研究的是内存管理或者网络,则可以有上面的两本书可以学习,如果是其他子系统,可能就没有这么好的运气了。
 

内核社区

最近几年,社区网站非常的热火,不过此社区非彼社区。

Linux最大的一个优势就是它有一个紧密团结了众多使用者和开发者的社区,它的目标就是提供尽善尽美的内核。内核社区的中心是内核邮件列表(Linux
Kernel Mailing
List,LKML),我们可以在http://vger.kernel.org/vger-lists.html#linux-kernel上面看到订阅这个邮件列表的细节。

内核邮件列表的流量很大,每天都有几百条消息,这里是大牛们的战场,小牛们的天堂,任何一个内核开发者都可以从中受益非浅。
除了LKML,大多数子系统也有自己独立的邮件列表来协调各自的开发工作,比如USB子系统的邮件列表可以在http://www.linux-usb.org/mailing.html上面订阅。

其他网络资源

除了内核邮件列表,还有很多其他的论坛或网站值得我们经常关注。我们要知道,网络上不仅有兽兽和凤姐,也不仅有犀利哥和韩局长。

http://www.kernel.org/
    可以通过这个网站上下载内核的源代码和补丁、跟踪内核bug等。

http://kerneltrap.org
    Linux和BSD内核的技术新闻。如果没时间跟踪LKML,那么经常浏览kerneltrap是个好主意。

http://lwn.net/
    Linux weekly news,创建于1997年底的一个Linux新闻站点。

http://zh-kernel.org/mailman/listinfo/linux-kernel
    这是内核开发的中文邮件列表,里面活跃着很多内核开发领域的华人,比如Herbert Xu,、Mingming Cao、Bryan Wu等。

http://linux.chinaunix.net/
    全球最大的Linux/Unix中文技术社区。

原文地址:https://www.cnblogs.com/alantu2018/p/8448789.html

时间: 2024-10-09 21:46:19

Linux内核(5) - 内核学习的相关资源的相关文章

关于神经网络学习的相关资源

因为本人数学水平比较差劲,所以看东西要求通俗易懂,下面记录的资源都是自己觉得讲解的比较容易理解的,供大家参考,同时也为自己回头复习, 1.细说卷积神经网络 2.循环神经网络(RNN, Recurrent Neural Networks)介绍

Blacksmith学习的相关资源

1.Unity官网的Blacksmith主页 https://unity3d.com/pages/the-blacksmith 2.WRINKLE MAPS IN THE BLACKSMITH 褶皱贴图 http://blogs.unity3d.com/2015/05/28/wrinkle-maps-in-the-blacksmith/ 3.MAKING OF THE BLACKSMITH: SCENE SETUP, SHADING, LIGHTING场景,光照,Sequencer等详细介绍 h

【LINUX】 GDB 再次学习 线程相关

yum install  gdb Downloading Packages: gdb-7.2-90.el6.i686.rpm                                  | 2.3 MB     02:25      Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction   Installing : gdb-7.2-90.el6.i686

Linux内核“问题门” - 学习问题、经验集锦

陈宪章说:"学贵有疑,小疑则小进,大疑则大进.疑者,觉悟之机也,一番觉悟一番长进." 培根说:"多问的人将多得." 还在学校的时候导师在激情讲演之后对着会议室里形态各异但均静默不语的我们痛心疾首的说:"会提问题很重要啊,同志们!不会提问题怎么有资格做研究!" 这样铿锵有力的训诫今日想起仍觉深受刺激,于是就要不可避免得要做出一些反应来.不过一是因为咱这年代还没有非主流的说法,二是因为也没有冯仰妍同学的性别优势,不可能受到刺激就整出个门来.咱能够做到

Linux内核(16) - 高效学习Linux内核

世界悲结束了,章鱼哥也退役了,连非诚勿扰中的拜金女也突然的少了很多.这本<Linux内核修炼之道>在卓越.当当.china-pub上也已经开卖了,虽然是严肃文学,但为了保证流畅性,大部分文字我还都是斟词灼句,反复的念几遍才写上去的,尽量考虑到写上去的每段话能够让读者产生什么疑惑,然后也都会紧接着尽量的去进行解释清楚,中间的很多概念也有反复纠结过怎么解释能够更容易的理解,力求即使对于初学者也可以有很少阻碍的一气读完.同时我也把书中一部分自己的感悟抽出来整理了精华版,share出来.当然水平有限,

Linux内核(17) - 高效学习Linux驱动开发

这本<Linux内核修炼之道>已经开卖(网上的链接为: 卓越.当当.china-pub ),虽然是严肃文学,但为了保证流畅性,大部分文字我还都是斟词灼句,反复的念几遍才写上去的,尽量考虑到写上去的每段话能够让读者产生什么疑惑,然后也都会紧接着尽量的去进行解释清楚,中间的很多概念也有反复纠结过怎么解释能够更容易的理解,力求即使对于初学者也可以有很少阻碍的一气读完.同时我也把书中一部分自己的感悟抽出来整理了精华版,share出来.当然水平有限,错漏之处有发现而修订时遗漏的,也有尚没有发现的.这本书

linux内核启动过程学习总结

下面是学习linux内核启动过程的记录 平台是:powerpc mpc8548 + linux2.6.23 内核 通用寄存器的作用r0 :在函数开始时使用r1 :存放堆栈指针,相当于ia32架构中的esp寄存器r2 :存放当前进程的描述符的地址r3 :存放第一个参数和返回地址r4-r10 :存放函数的参数r11 :用在指针的调用和当前一些语言的环境指针r12 :用于存放异常处理r13 :保留做为系统线程IDr14-r31 :作为本地变量,具有非易失性 Linux启动过程描述 第一步:使用Boot

Linux内核分析第一次学习报告

Linux内核分析第一次学习报告 学生 黎静 学习内容 1.存储程序计算机工作模型 冯诺依曼体系结构:核心思想为存储程序计算机. CPU抽象为for循环,总是执行下一条指令,内存保存指令和数据,CPU来解释和执行这些指令. API:应用程序编程接口(程序员与计算机的接口界面) ABI:二进制接口,指令编码(程序员与CPU的接口界面) 2.X86汇编 1.寄存器 (1)通用寄存器 (2)段寄存器: (3)标志寄存器 2.计算机的汇编指令 (1)movl指令: 寄存器寻址,寄存器模式,以%开头的寄存

Linux网络编程&amp;内核学习

c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: (美)Greg Perry    [作译者介绍] 译者: 谢晓钢 刘艳娟 丛书名: 图灵程序设计丛书 C/C++系列 出版社:人民邮电出版社 ISBN:9787115216359上架时间:2009-12-10出版日期:2010 年1月开本:16开页码:308 说明:这本是入门最好的,最简单,最好懂 2.<