您的位置:首页 > 运维架构 > Linux

linux 内核源代码目录结构概述

2012-12-13 15:19 369 查看
进入linux源代码目录,会看到若干子目录和文件。现代操作系统一般由进程管理内存管理文件系统驱动程序网络协议栈组成。

arch : 包含了所有和体系结构相关的核心代码。它下面的每个子目录代表一种linux支持的体系结构。

如arm目录就是与ARM体系结构兼容的CPU的子目录;

/arch/i386则是intel CPU及其兼容体系结构的子目录.

drivers: 包含了系统中所有的设备驱动程序,linux中的设备被划分为几类,每一类都有对应的目录。

fs :存放了linux支持的文件系统的代码。不同的文件系统有不同的子目录对应。

include:包含了编译内核所需要的大部分头文件。

init:包含了内核初始化代码(系统引导代码在arch中).

ipc:包含了核心进程间的通信代码。

kernel: 进程管理的核心代码。与处理器相关的代码放在了arch/*/kernel中。

lib:核心的库代码目录。与处理器体系结构相关的文件放在了arch/*/lib中

mm:内存管理代码目录。与硬件体系结构相关的文件放在了arch/*/mm中。

net:内核的网络部分代码,每一个子目录对应一种网络协议。

scripts:包含了内核的配置脚本文件。

Documentation:内核文档目录,是理解linux源代码的直接辅助来源。

根目录和大部分子目录下都有Makefile和Kconfig两个文件,内核的配置和编译就依赖于这两个文件。

Linux kernel Makefile 的规则:

Linux内核Makefile体系可以分为五部分:

Makefile: 位于内核源代码根目录的Makefile. 称为TOP Makefile

.config: 内核配置文件。

arch/arch_name/Makefile: 各个体系结构独立代码中的Makefile 成为Arch Makefile

kbuild Makefile: 整个源代码目录中约有500个这样的Makefile

scripts/Makfile.*:适用于各种Kbuild Makefile的一般规则。

Top Makefile读取由内核配置程序生成的.config文件,它负责生成两个重要的产品:驻留内核(vmlinux)和内核模块(module)。Top Makfile递归的进入各级子目录来编译所需的源代码,进入哪些目录则由内核配置过程决定。TOP Makefile中必须显示地包含一个Arch Makefile而且只能够包含一个,以提供所有与体系结构相关的信息。

每一个子目录中都有一个kbuild Makefile,它负责执行具体的编译任务。kbuild Makefile从.config文件中提取构造所需编译的文件列表的信息,这些信息告诉kbuild Makefile目录中哪些文件需要编译,进一步哪些文件需要编译进内核中,哪些需要编译成动态链接的内核模块。

scripts目录中的Makefile包含了一些通用的定义和规则,这些定义和规则传递到具体构造内核的kbuild Makefile中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: