第11
章Linux内核源代码
本章述说在Linux内核源码中,应当从何处开始查找特定的内核函数。
本书并不要求读者具有C语言编程能力,也不要求读者有一份可参阅的Linux内核源码linux解压命令,事实上,通过查看内核源码可以在一定深度上理解Linux操作系统,同时这也是一个挺好的实践机会。本章给出了对内核源码的概览:它们是怎么编排的以及从何处开始查找特定代码。11.1如何得到Linux内核源码
所有主要的Linux系统(Craftworks、Debian、Slackware、RedHat等等)都包含有内核源码,一般所安装的Linux系统都是通过这种源码创建的。因为Linux总是不断更新,因而用户所安装的Linux可能已过时,不过从附表A所列的站点上可得到最新的源码linux内核编程 pdf,所有那些站点地址都可在ftp://ftp.cs.helsinki.fi上查到。
Linux内核源码的版本号表示方式十分简单:所有质数版(如2.0.30)都是已发行的稳定版;所有质数版(如2.1.42)都是测试版,本书是基于2.0.30版撰写的。测试版包含所有的新特点,并支持所有的新设备,尽管测试版并不稳定,而且可能提供了一些用户不想要的东西,但对于Linux与用户沟通而言,测试新的内核是很重要的。不过请注意,在尝试非产品型的测试版之前linux内核编程 pdf,最好先完全备份系统。
对内核源码的更改是作为patch文件出现的,patch工具提供了一组对源码文件的编辑。诸如linux操作系统安装,倘若把2.0.29源码升级为2.0.30版,则要使用patch文件来完成对源码的编辑,操作如下:
这样做可以防止对所有源码文件的拷贝。在http://www.站点上可找到挺好的内核源码的patch。
11.2内核源码的编排
在源码目录树的最顶端(/usr/src/linux)可见到如下一些目录:
archarch子目录包含所有的特定体系结构的内核源码,它的子目录分别对应着一种Linux所支持的体系结构,比如i386和alpha。
includeinclude子目录包含大部份的编译内核源码所需文件。
init此目录下包含了内核的初始化代码,由此可以挺好地开始了解内核是怎样工作的。mm此目录下包含了所有显存管理代码,特定体系结构的显存管理代码在arch/*/mm目录下。
drivers此目录下包含了系统所有的设备驱动程序,其下子目录各针对不同的设备驱动程序类。
ipc此目录下包含了内核的内部进程通讯代码。
modules此目录只是拿来保存创建的模块。