Linux 内核源码解读入门指南

0 下载量 108 浏览量 更新于2024-09-06 收藏 43KB DOC 举报
Linux 内核源码解读入门方法 Linux 内核源码解读入门方法是 Linux 爱好者们非常感兴趣的一个主题,然而很多人却不知道如何下手。这篇文章旨在介绍一种解读 Linux 内核源码的入门方法,而不是解说 Linux 复杂的内核机制。 Linux 内核源程序的文件组织是非常重要的,通常都安装在 /usr/src/linux 下。其中有一个非常简单的编号约定:任何偶数的核心(例如 2.0.30)都是一个稳定地发行的核心,而任何奇数的核心(例如 2.1.42)都是一个开发中的核心。本文基于稳定的 2.2.5 源代码,第二部分的实现平台为 Redhat Linux 6.0。 核心源程序的文件按树形结构进行组织,在源程序树的最上层你会看到这样一些目录: 1. Arch 目录:arch 子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种支持的体系结构,例如 i386 就是关于 intel cpu 及与之相兼容体系结构的子目录。PC 机一般都基于此目录。 2. Include 目录:include 子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在 include/linux 子目录下,与 intel cpu 相关的头文件在 include/asm-i386 子目录下,而 include/scsi 目录则是有关 scsi 设备的头文件目录。 3. Init 目录:这个目录包含核心的初始化代码(注:不是系统的引导代码),包含两个文件 main.c 和 Version.c,这是研究核心如何工作的一个非常好的起点。 4. Mm 目录:这个目录包括所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等;而和体系结构相关的内存管理代码则位于 arch/*/mm/,例如 arch/i386/mm/Fault.c。 5. Kernel 目录:主要的核心代码,此目录下的文件实现了大多数 Linux 系统的内核函数,其中最重要的文件当属 sched.c;同样,和体系结构相关的代码在 arch/*/kernel 中。 6. Drivers 目录:放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录:如,/block 下为块设备驱动程序,比如 ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看 drivers/block/genhd.c 中的 device_setup()。它不仅初始化硬盘,也初始化网络,因为安装 nfs 文件系统的时候需要。 了解 Linux 内核源码的组织结构是非常重要的,它可以帮助我们更好地理解 Linux 内核的工作机理。 Linux 内核源码的解读是一个非常复杂的过程,但通过了解核心源程序的文件组织结构,我们可以更好地研究 Linux 内核的工作机理。