【华为云技术分享】Linux内核源码结构(1)
在上一期中,我们介绍了Linux内核发展的历史,也介绍了与其相关的UNIX和GNU的相关知识。从这一期开始,我们将介绍Linux内核的源码结构。我们将先根据Linux源码的目录结构进行分析,到本文章发布前,Linux 4.19的最新版本为Linux 4.19.94,我们将依据openEuler开源社区源码并参考Linux 4.19.94版内核源码进行分析。
一、Linux内核源码的目录结构分析
下图列出了截至文章发表前openEuler开源社区kernel目录下的目录结构[5]:
其中各个文件夹中源代码的功能如下表所示[1] [3]:
目录/文件名 | 源码功能简介 |
/Documentation | 说明文档,对每个目录的具体作用进行说明。 |
/arch | 不同CPU架构下的核心代码。其中的每一个子目录都代表Linux支持的CPU架构。 |
/block | 块设备通用函数。 |
/certs | 与证书相关。 |
/crypto | 常见的加密算法的C语言实现代码,譬如crc32、md5、sha1等。 |
/drivers | 内核中所有设备的驱动程序,其中的每一个子目录对应一种设备驱动。 |
/include | 内核编译通用的头文件。 |
/init | 内核初始化的核心代码。 |
/ipc | 内核中进程间的通信代码。 |
/kernel | 内核的核心代码,此目录下实现了大多数Linux系统的内核函数。与处理器架构相关的内核代码在/kernel/$ARCH/kernel。 |
/lib | 内核共用的函数库,与处理器架构相关的库在/kernel/$ARCH/lib。 |
/mm | 内存管理代码,譬如页式存储管理内存的分配和释放等。与具体处理器架构相关的内存管理代码位于/arch/$ARCH/mm目录下。 |
/net | 网络通信相关代码。 |
/samples | 示例代码。 |
/scripts | 用于内核配置的脚本文件,用于实现内核配置的图形界面。 |
/security | 安全性相关的代码。 |
/sound | 与音频有关的代码,包括与音频有关的驱动程序[2]。 |
/tools | Linux中的常用工具。 |
/usr | 该目录中的代码为内核尚未完全启动时执行用户空间代码提供了支持。 |
/virt | 此文件夹包含了虚拟化代码,它允许用户一次运行多个操作系统。 |
COPYING | 许可和授权信息。 |
CREDITS | 贡献者列表。 |
Kbuild | 内核设定脚本,可以对内核中的变量进行设定。 |
Kconfig | 配置哪些文件编译,那些文件不用编译[4]。 |
Makefile | 该文件将编译参数、编译所需的文件和必要的信息传给编译器。 |
二、结语
本期我们根据openEuler的目录,并参考Linux目录结构简要介绍了openEuler kernel中各个子目录的功能,下一期我们将结合Linux 内核的Kernel Map介绍Linux内核的基本功能和抽象层级。
参考文献
[1]https://www.cnblogs.com/CaesarTao/p/10600462.html
[2]http://blog.chinaunix.net/uid-30374564-id-5571674.html
[3]https://blog.csdn.net/wangyachao0803/article/details/81380882
[4]https://blog.csdn.net/jianwen_hi/article/details/53398141
[5]https://gitee.com/openeuler/kernel
相关文章
- 【华为云技术分享】Linux内核发展史 (2)
- linux centos yum源配置为nexus镜像源
- Linux cal日历指令
- 一个JSON字符串和文件处理的命令行神器jq,windows和linux都可用
- 【华为云技术分享】Linux内核补丁源码分析(1)
- 【华为云技术分享】Linux内核编程环境 (1)
- Linux系统编程手册 错误 undefined reference to `usageErr‘ errExit errExit getLong cmdLineErr collect2: erro
- 【Linux 内核 内存管理】物理分配页 ⑨ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | retry 标号代码分析 )
- 【Linux 内核】进程优先级与调度策略 ③ ( 设置、获取线程优先级的核心函数 | 修改线程调度策略函数 )
- 【Linux 内核】进程管理 ( Linux 中进程的 CPU 资源调度 | 进程生命周期 | 创建状态 | 就绪状态 | 执行状态 | 阻塞状态 | 终止状态 | 进程生命周期之间的转换 )
- 漏洞预警:Linux内核9年高龄的“脏牛”0day漏洞
- linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,日本再战!)
- 8.第三章 Linux文件管理和IO重定向 -- 文件系统目录结构(一)
- Linux内核Thermal框架详解七、Thermal Core(6)
- Linux内核Thermal框架详解六、Thermal Core(5)
- 嵌入式Linux开发,去掉内核kernel开机画面logo屏幕上的打印信息
- kali linux 升级内核 gcc 7.2升级 7.3
- 如何测试Linux内核?
- linux远程桌面管理工具xrdp
- Linux【JavaEE】—— 搭建 JavaEE 开发环境(附软件安装教程、下载地址)
- 【Linux驱动开发100问】什么是Linux内核?
- 操作系统权限提升(十八)之Linux提权-内核提权