行业资讯
您现在所在的位置:首页>企业动态>行业资讯

Linux内核源码目录结构

编辑:学到牛牛IT培训    发布日期: 2023-09-15 08:44:57  


Linux内核源码采用树形结构。功能相关的文件放到不同的子目录下面,使程序更具有可读行。如下图所示,可以看到源码目录。

1.png

下面我们来介绍每一个目录的作用。

1.arch目录是平台目录。处理器原厂提供一套Linux内核的源码,那么在这个目录下都有一套针对具体处理器CPU的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别控制系统引导,内存管理,系统调用,动态调频,主频率设置部分等。在arch目录中有关键的平台文件。任何一款支持Linux的处理器,都有一部分内核代码是针对特定的处理器来提供的,具体的实现就是通过平台文件。以exynos4412为例,平台文件在arch/arm/mach-exynos/mach-tiny4412.c。

a.在arch/arm/boot目录,默认编译生成的内核镜像是在这个目录下。

b.在arch/arm/kernel目录中,有针对具体CPU处理器的代码,有相关内核特性实现方式,如信号处理等。这一部分当然是芯片厂商做好了,4412的这部分就是三星已经做好的部分。

c.在arch/arm/lib目录中,有一些和硬件相关库函数,后面学习驱动的时候会使用到。

d.在arch/arm/tools目录中,包含了生成镜像的工具。

e.在arch/arm/mm目录中,主要包含和体系相关的内存管理的具体实现。

2.block:块设备通用函数

3.crypto:内核中本身所用的加密API,实现了常见的加密和散列算法的C语言实现代码,譬如crc32、md5、sha1等

4.Document:提供文档帮助。关于内核的一些说明信息,在这个目录下会有帮助手册。

5.drivers:内核中所有设备的驱动程序,其中的每一个子目录对应一种设备驱动。此目录是内核中最庞大的目录,涵盖各种硬件的驱动程序,包含但不仅限于:显卡、网卡、PCI总线、USB总线及其他外网设备和总线的驱动。

6.firmware:固件代码,固化到IC里面运行的代码。

7.fs:Linux支持的文件系统代码,及各种类型的文件的操作代码。每个子目录都代表Linux支持的一种文件系统类型。文件系统是存储设备和访问存储设备的进程之间的桥梁。存储设备可以是物理设备,比如硬盘、CD-ROM,也可以是虚拟文件系统,比如proc

8.include:内核编译通用的头文件,包含与平台无关的目录include/linux和与平台相关的目录arch/arm/include

9.init:内核初始化的核心代码。包括main.c

10.ipc:内核中进程间的通信代码。包含共享内存、信号量、消息队列等各种IPC通信代码。

11.kernel:内核的核心代码,此目录下实现了大多数Linux系统的内核函数。主要包含:进程调度(sched.c),以及进程的创建和撤销(fork.c和exit.c),与处理器架构相关的内核代码在arch/$ARCH/kernel

12.lib:内核共用的函数库,与处理器架构相关的库在/arch/$ARCH/lib。比如常见的字符串函数,打印输出函数等。

13.mm:内存管理代码,此目录包含与平台体系无关的内存管理,譬如页式存储管理内存的分配和释放等。与具体处理器架构相关的内存管理代码位于/arch/$ARCH/mm目录下

14.net:网络通信相关代码,包含各种常见网络协议栈:TCP/IP,IPX,BlueTooth等。

15.samples:示例代码

16.scripts:用于内核配置的脚本文件,用于实现内核配置的图形界面。当运行make menuconfig或者make xconfig之类的命令配置内核时,用户就是和位于这个目录下的脚本进行交互的。

17.security:安全性相关的代码

18.tools:Linux中的常用工具

19.sound:音频处理相关代码

20.usr:内核启动相关的代码

21.virt:内核虚拟机相关的代码

22.COPYING:许可和授权信息。Linux内核在GPLv2许可证下授权。该许可证授予任何人有权免费去使用、修改、分发和共享源代码和编译代码。然而,没有人可以出售源代码。

23.CREDITS :贡献者列表

24.Kbuild:这是一个设置一些内核设定的脚本。打个比方,这个脚本设定一个ARCH变量,这是开发者想要生成的内核支持的处理器类型。

25.Kconfig:这个脚本会在开发人员配置内核的时候用到

26.MAINTAINERS:这是一个目前维护者列表,他们的电子邮件地址,主页,和他们负责开发和维护的内核的特定部分或文件。当一个开发者在内核中发现一个问题,并希望能够报告给能够处理这个问题的维护者时,这是是很有用的。

27.Makefile:这个脚本是编译内核的主要文件。这个文件将编译参数和编译所需的文件和必要的信息传给编译器。

28.README:这个文档提供给开发者想要知道的如何编译内核的信息。

29.REPORTING-BUGS :这个文档提供如何报告问题的信息。


免费试学
课程好不好,不如实地听一听

封闭学习

2

1

联系我们

电话:028-61775817

邮箱:1572396657@qq.com

地址:成都市金牛区西城国际A座8楼

  • 新闻频道_关注IT技术应用资讯-学到牛牛
    新闻频道_关注IT技术应用资讯-学到牛牛

    扫一扫,免费咨询

  • 新闻频道_关注IT技术应用资讯-学到牛牛
    新闻频道_关注IT技术应用资讯-学到牛牛

    微信公众号

  • 新闻频道_关注IT技术应用资讯-学到牛牛
新闻频道_关注IT技术应用资讯-学到牛牛

学一流技术,找高薪工作

新闻频道_关注IT技术应用资讯-学到牛牛

7-24小时服务热线:

028-61775817

版权声明 网站地图

蜀ICP备2021001672号

课程问题轻松问