一 :基础知识
Linux内核源代码可以从网上下载,一般主机平台的Linux (如红旗Linux)源代码在根目录下的/usr/src/linux目录下。内核源代码的文件按树形结构进行组织的,在源代码树最上层的主要可以看到如下的一些目录:
(1)、arch:arch子目录包括所有与体系结构相关的内核代码。arch的每一个子目录都代表一个Linux所支持的体系结构。
(2)、include:include子目录包括编译内核所需要的头文件。与ARM相关的头文件在include/asm-arm子目录下。
(3)、init:这个目录包含内核的初始化代码,但不是系统的引导代码,其中所包含main.c和Version.c文件是研究Linux内核的起点。
(4)、mm:该目录包含所有独立于CPU体系结构的内存管理代码,如页式存储管理内存的分配和释放等。与ARM体系结构相关的代码在arch/arm/mm中。
(5)、Kernel:这里包括主要的内核代码,此目录下的文件实现大多数Linux的内核函数,其中最重要的文件是sched.c。与Xscale体系结构相关的代码在arch/arm-pxa/kernel目录中。
(6)、Drives:此目录存放系统所有的设备驱动程序,每种驱动程序各占一个子目录。
(a)、/block:块设备驱动程序。块设备包括IDE和scsi设备。
(b)、/char:字符设备驱动程序。如串口、鼠标等。
(c)、/cdrom:包含Linux所有的CD-ROM代码。
(d)、/pci:PCI卡驱动程序代码,包含PCI子系统映射和初始化代码等。
(e)、/scsi:包含所有的SCSI代码以及Linux所支持的所有的SCSI设备驱动程序代码。
(f)、/net:网络设备驱动程序。
(g)、/sound:声卡设备驱动程序。
(7)、lib目录放置内核的库代码;
(8)、net目录包含内核与网络的相关的代码;
(9)、ipc目录包含内核进程通信的代码;
(10)、fs目录是所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,如JFFS2;
(11)、scripts目录包含用于配置内核的脚本文件等。每个目录下一般都有depend文件和一个makefile文件,他们是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件之间的相互依托关系很有帮助。
Linux内核的配置系统由四个部分组成
(1)、Makefile:分布在Linux