当前位置: 首页 > 工具软件 > TOMOYO Linux > 使用案例 >

linux内核目录结构的解析

哈朗
2023-12-01

现代操作系统一般由进程管理、内存管理、文件系统、驱动和网络等组成,Linux内核源码的各个目录大致与此相对应
其目录组成如下:

  • arch
    包括了所有和体系结构相关的核心代码。里面的每一个目录都代表一种Linux支持的内核架构,例如arm就是arm架构相关的代码,arm目录向下包括很多处理器平台,也包括了启动代码boot、架构相关配置文件configs、内核相关文件kernel、内存管理mm和库lib等。

  • block
    提供块设备操作的一些基本接口。

  • certs
    认证相关。

  • crypto
    常用加密和散列算法(如AES,SHA等),还有一些压缩和CRC校验算法。

  • Documentation
    目录下基本都是txt文档,对每个目录和模块的详细说明。

  • drivers 目录都是系统的设备驱动程序。
    accessibility --------- 可访问设备,目前里面包括盲人设备
    acpi -------------------- 高级配置和电源管理接口
    amba ------------------ ARM研发的AMBA片上总线相关
    android --------------- Android平台支持的设备
    ata --------------------- 硬盘接口技术Advanced Technology Attachment相关驱动
    atm -------------------- 异步传输模式设备驱动
    auxdisplay ----------- 辅助显示设备驱动
    base
    bcma ------------------ Broadcom基于amba总线驱动上开发的
    block ------------------ 块设备驱动
    bluetooth ------------ 蓝牙设备驱动
    bus ------------------
    cdrom ---------------- CDROM设备驱动
    char ------------------ 字符设备驱动
    clk --------------------- 时钟驱动框架,与平台相关
    clocksource --------- 时钟源设备驱动
    connector ----------- 内核空间和用户空间通信的新机制连接器
    cpufreq -------------- cpu动态变频
    cpuidle --------------
    crypto ---------------- 加解密设备驱动
    dax ------------------- 直接访问,后面的X只是为了看起来酷,对于新兴的NVDIMM设备,可直接访问此设备上的文件系统
    dca ------------------- 直接缓存访问??
    devfreq -------------- 设备相关的频率调节
    dio -------------------- dio设备驱动
    dma ------------------ dma设备驱动
    dma-buf ------------- 提供DMA缓存的设备驱动
    edac ------------------ 错误检测和纠正设备驱动
    eisa -------------------
    extcon ---------------- 外部连接器
    firewire --------------- IEEE1394 firewire设备驱动
    firmware -------------
    fmc -------------------- FMC连接器总线驱动
    fpga ------------------- FPGA框架驱动
    gpio ------------------- GPIO驱动,与处理器相关
    gpu -------------------- 包括DRM图形渲染架构,访问图形界面的DMA引擎,IMX的IPU图像处理单元等
    hid ---------------------- 人机交互设备驱动
    hsi ---------------------- 高速同步串口接口
    hv ----------------------- 微软的虚拟化技术驱动
    hwmon ----------------- 硬件监控芯片驱动,监控类传感器的芯片驱动
    hwspinlock ------------ 硬件自旋锁框架接口
    hwtracing -------------- 硬件跟踪调试驱动
    i2c ----------------------- i2c子系统总线驱动
    ide ----------------------- 管理ATA/IDE和ATAPI单元,主要还是硬盘驱动IDE和CD-ROM驱动ATAPI
    idle ---------------------- Intel处理器的idle处理驱动
    iio ----------------------- 工业I/O子系统,包括各种使用不同物理接口(i2c, spi, etc)传感器的驱动
    infiniband ------------- 支持多并发链接的”转换线缆”技术的硬件设备驱动
    input ------------------- input设备子系统,包括各种输入设备的驱动,键盘、混合设备、鼠标、触摸屏、游戏接口、游戏操作杆、触控rmi4、触摸面板、串口IO输入设备
    firmware -------------- 硬件厂商提供的内核固件,由内核驱动调用。

  • fs
    存放Linux系统支持的文件系统代码。每个子目录对应一个文件系统,例如ext4文件系统对应就是ext4子目录。

  • include
    目录包括编译核心所需要的大部分头文件,例如与平台相关的头文件在/include/linux子目录下,与模块相关的,例如与acpi相关的存放在/include/acpi。

  • init
    目录包含核心初始化代码(不是系统的引导代码),这里是研究核心如何工作的好起点。

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

  • kernel
    内核管理的核心代码。实现了大多数Linux系统的内核函数,其中最重要的为sched子目录下的代码。与处理器相关的代码都放在/arch/*/kernel目录下。

  • lib
    包括核心的库代码。与处理器相关的库代码都放在/arch/*/lib目录下。

  • mm
    包含独立于cpu体系结构的内存管理代码,如页式存储管理内存的分配和释放等。与具体硬件体系结构相关的内存管理代码存放在/arch/*/mm目录下。

  • net
    包含网络部分代码,实现了各种常见的网络协议,每个子目录对应于网络的一个方面。

  • samples
    针对各个模块的实例代码。

  • scripts
    用于配置核心的脚本文件。

  • security
    支持安全操作系统相关代码。包括SELinux、Apparmor、Smack和TOMOYO Linux安全模块。

  • sound
    ALSA,OSS音频设备的驱动核心代码和常用设备驱动。

  • tools
    内核使用的相关工具代码。

  • usr
    实现了用于打包和压缩的cpio等。

  • virt
    内核虚拟化相关的代码。

  • COPYING CREDITS Kbuild Kconfig MAINTAINERS Makefile README

 类似资料: