1. 通读《linux 内核完全注释》,请看薄的那本

2. 选读《Linux 内核情景分析》, 想了解哪一块就读哪一节

三、驱动

驱动包含两部分:硬件本身的操作、驱动程序的框架。

又是硬件,还是要看得懂原理图、读得懂芯片手册,多练吧。

①硬件本身的操作

说到驱动框架,有一些书介绍一下。LDD3,即《Linux 设备驱动》,老外写的那本,里面介绍了不少概念,值得一读。但是,它的作用 也就限于介绍概念了。入门之前可以用它来熟悉一下概念。

②驱动程序的框架

驱动方面比较全的介绍,应该是宋宝华的《linux 设备驱动开发详解》了。要想深入了解某一块,《Linux 内核情景分析》绝对是超 5 星级推荐。别指望把它读完,1800 多页,上下两册呢。某一块不清楚时,就去翻一下它。任何一部分,这书都可以讲上 2、3 百页,非常详细。并且是以某个目标来带你分析内核源码。它以 linux2.4 为例,但是原理相通,同样适用于其它版本的 linux。

把手上的开发板所涉及的硬件,都去尝试写一个驱动吧。有问题就先“痛苦地思考”,思考的过程中会把很多不相关的知识串联起来,最终贯通。

四、根文件系统

大家有没有想过这 2 个问题:

Q:对于 Linux 做出来的产品,有些用作监控、有些做手机、有些做平板。那么内核启动后,挂载根文件系统后,应该启动哪一个应用程序呢?

A:内核不知道也不管应该启动哪一个用户程序。它只启动 init 这一个应用程序,它对应 /sbin/init。

显然,这个应用程序就要读取配置文件,根据配置文件去启动用户程序(监控、手册界面、平板界面等等,这个问题提示我们,文件系统的内容是有一些约定的,比如要有 /sbin/init,要有配置文件 。