3.1、内核源代码目录介绍
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 文件,他们是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文
件之间的相互依托关系很有帮助。
3.2、内核的配置的基本结构
Linux 内核的配置系统由四个部分组成
(1)、 Makefile:分布在 Linux 内核源码中的 Makefile,定义 Linux 内核的编译规则;顶
层 Makefile 是整个内核配置、编译的总体控制文件;
(2)、配置文件 (config.in):给用户提供配置选择的功能;config:内核配置文件,包括
由用户选择的配置选项,用来存放内核配置后的结果;
(3)、配置工具:包括对配置脚本中使用的配置命令进行解释的配置命令解释器和配置
用户界面(基于字符界面:make config;基于 Ncurses 图形界面:make menuconfig;基
于 xWindows 图形界面:make xconfig)
(4)、 Rules.make:规则文件,被所有的 Makefile 使用。