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

于是,我继续往下看,“因此在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

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

  1. 线性代数的学习及相关资源

    线性代数的学习及相关资源 本来是想写"Coursera公开课笔记: 斯坦福大学机器学习第三课"线性代数回顾(Linear Algebra Review)"的,但是这一课仅 ...

  2. 《Linux内核修炼之道》精华分享与讨论(9)——内核学习的相关资源

    推荐博文: Linux内核"问题门"--学习问题.经验集锦 推荐下载:<Linux内核修炼之道>精华版之方法论 "世界上最缺的不是金钱,而是资源." ...

  3. 深度Linux拨号软件,Deepin调校及相关资源、常用软件整合贴

    4.常用免费软件推荐 在deepin商店里的: 1.享受超棒的浏览器体验(类似360极速浏览器):Brave(自带广告拦截,风险监测,超好用) 2.WPS2019 你懂得(顺便可以装上wps-font ...

  4. linux namespace 隔离内核资源的方式 简介

    namespace 的概念 namespace 是 Linux 内核用来隔离内核资源的方式.通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相 ...

  5. 八千字硬核长文梳理Linux内核概念及学习路线

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 来源 :头条号@Linux学习教程,冰凌块儿 整理:公众号:嵌入式Linux,发哥 ...

  6. 【嵌入式环境下linux内核及驱动学习笔记-(16)linux总线、设备、驱动模型之input框架】

    目录 1.Linux内核输入子系统概念导入 1.1 输入设备工作机制 1.2 运行框架 1.3 分层思想 2.驱动开发步骤 2.1 在init()或probe()函数中 2.2 在exit()或rem ...

  7. 驱动框架6——linux内核的gpiolib学习

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 八.linux内核的gpiolib学习1 1.gpiolib学习重点(主线) (1)主线一:gpiolib的建立过 ...

  8. linux内核体系学习路径_Linux内核分析(一)linux体系简介|内核源码简介|内核配置编译安装...

    从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解. 今天我们会分析到以下内容: 1. Linux体系结构简介 ...

  9. 查看linux系统版本,内核,CPU,MEM,位数的相关命令

    查看linux系统版本,内核,CPU,MEM,位数的相关命令 1.查看版本,内核 cat /etc/issue cat /proc/version uname -r 2.查看cpu,mem grep ...

最新文章

  1. 数据千万条,备份第一条,数据找不回,老板两行泪
  2. 解题报告:luogu P1688 新单词接龙问题【trie树、dfs、DP递推】
  3. git 基本操作语句
  4. 用数据说话——IOPS:RAID1+0 RAID5
  5. 关于meta的一些知识
  6. 你或许还未听说过的一些ASP.NET 2.0要诀 [转]
  7. oppo计算机的夜间模式,oppo夜间模式如何打开
  8. JEECG 3.2版本发布,基于代码生成器的智能开发平台
  9. 大学计算机基础教程模拟选择题,【浙江大学】大学计算机基础教程——习题与参考答案...
  10. WEB-移动端图片适配-弹框
  11. 我们要有把坏事看成好事的能力
  12. 机器学习的最佳入门学习资源【转】
  13. mysql自学完整_MySQL自学篇_MySQL
  14. 172.阶乘后的零 (力扣leetcode) 博主可答疑该问题
  15. endnote 参考文献加序号_EndNote插入文献序号排序混乱怎么破 | 科研动力
  16. dev-stack安装openstack
  17. android mp4转mp3格式转换,实现快速将MP4转MP3格式的完美攻略
  18. 史上最全的Go语言模块(Module)管理详解(基于Go1.19)
  19. smallpt: Global Illumination in 99 lines of C++讲解
  20. Outlook/Microsfot邮件配置:QQ邮箱/腾讯企业邮箱

热门文章

  1. 什么是简单的分析SQL注入漏洞
  2. 设计模式(17) 访问者模式(VISITOR) C++实现
  3. C#3.0笔记(一)预备知识之Delegate
  4. 贪婪算法在求解最小生成树中的应用(JAVA)--Kruskal算法
  5. 分治法在求解“最近对”问题中的应用(JAVA)
  6. python网络编程项目_Python网络编程攻略
  7. ipad如何连接电脑_电脑无法连接外网远程调试,一文教你如何用手机让台式机连接外网...
  8. nasa注册_今天是黑洞星期五!
  9. 鸿蒙第一款手机,拿下“国内第一手机商”的OPPO,打算弃用华为鸿蒙?
  10. Mysqldump命令参数介绍