Linux内核目录树分析
一、前言
最近系统与安全课上,老师反复提起到Linux驱动程序和Linux内核,这两个词语反复被老师提及,都可以成为系统与网络安全的这门课的代名词了,那么既然提到内核,那么我们就来分析分析这Linux内核有何东西,和各个内核文件的含义。首先来看看Linux内核这个庞大的工程有多少代码。
看到以上信息,不禁佩服起Linux内核维护人员,真牛,这里也给推荐大家一本我们老师推荐的书《寒江独钓》。我们就不具体看内核代码,下面我们分析分析内核的一些文件含义。
二、Linux内核源代码目录树结构
Linux内核源码是一个开源的,支持多个架构的平台,它的可移植性非常高。正是因为支持的架构比较多,所以内核源码被我们的特定的架构上时,就必须进行内核的配置和编译,在此基础上还可以进行裁剪。
这是我下载的内核文件目录,也可以看通过tree来看树形文件目录。
arch:主要就是存放内核支持的平台,常见的x86、arm、minps、powerpc等等。
certs:与认证和签名相关代码;
Documentation:关于内核各部分的通用解释和注释。其实打开看发现虽然有注释,发现还是看不懂。
include:包含内核中大部分的头文件,要修改处理器结构只需编辑核心的Makefile并重新运行Linux核心配置程序。
firmware:包含了让计算机读取和理解从设备发来的信号的代码
ipc:主要是包含进程间通信的一些文件。
lib:包含库文件代码。
Makefile:内核编译的重要重要文件,组织起内核编译的各个文件。
net:网络相关驱动。
samples:真如其名,一些内核编程的范例。
security:关于selinux的一些文件。
tools:包含了和内核交互的工具。
block:块设备驱动,其框架是Linux设备最重要的框架之一,涉及内核的vfs设备驱动模型等模块,内核中异常复杂的一个框架。
crypto:内核本身所用的加密API,实现了常用的加密和散列算法
drivers:存放与设备驱动相关。(内核开发主要之一)
fs:虚拟文件系统(VFS)的代码和各个不同文件系统的代码。
init:内核的初始代码,包括main.c,创建早期用户空间的代码及其他的初始代码。
mm:内存管理代码。
scripts:当运行make menuconfig编译内核的时候会用到。
kernel:内核的最核心部分,包括进程调度、定时器,与硬件相代码。
sound:音频驱动相关。
usr:存放cpio相关。cpio 是用来建立,还原备份档的工具程序。