Linux内核源码目录简介

目录介绍

  • arch:体系结构相关的代码,对于每个架构的CPU,arch目录下有一个对应的子目录,比如 arch/arm/、arch/i386/等。
  • block:块设备的通用函数。
  • crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。
  • drivers:所有的设备驱动程序,里面每一个子目录对应一类驱动程序,比如drivers/block/为块设备驱动程序,drivers/char/为字符设备驱动程序,drivers/mtd/为NORFlash、NANDFlash等存储设备的驱动程序。
  • fs:Linux支持的文件系统的代码,每个子目录对应一种文件系统,比如fs/jffs2/、fs/ext2/、fs/ext3/。
  • include:内核头文件,有基本头文件(存放在include/linux/目录下)、各种驱动或功能部件的头文件(比如include/media/、include/mtd/、include/net/)、各种体系相关的头文件(比如include/asm-arm/、include/asm-i386/)。当配置内核后,include/asm/是某个include/asm-xxx/(比如include/asm-arm/)的链接。
  • init:内核的初始化代码(不是系统的引导代码),其中的main.c文件中的start_kernel函数是内核引导后运行的第一个函数。
  • ipc:进程间通信的代码。
  • kernel:内核管理的核心代码,与处理器相关的代码位于arch/*/kemel/目录下。
  • lib:内核用到的一些库函数代码,比如crc32.c、string.c,与处理器相关的库函数代码位于arch/*/lib/目录下。
  • mm:内存管理代码,与处理器相关的内存管理代码位于arch/*/mm/目录下。
  • net:网络支持代码,每个子目录对应于网络的一个方面。
  • security:安全、密钥相关的代码。
  • sound:音频设备的驱动程序。
  • user:用来制作一个压缩的cpio归档文件:initrd 的镜像,它可以作为内核启动后挂接(mount)的第一个文件系统(一般用不到)。
  • Documentation:内核文档。
  • scripts:用于配置、编译内核的脚本文件。
  • tools:用与构建和调试内核的工具代码。
  • modules:目录存放了已建好的、可动态加载的模块。
  • Copying:目录下是GPL版权申明。
  • ReadMe:文件提供内核的各种编译方法;生成文件的查看方法,如nmvmlinux丨sort丨less。
  • Reporting-bugs:目录里是有关报告Bug的一些内容。
  • Rules.make:目录里是各种Makefilemake所使用的一些共同规则。
  • Config:隐藏文件。Make oldconfig和make defconfig会把生成的默认的configuration放到文件.config中。执行Make之后会根据Makefile上下层级依赖关系编译整个系统,.config作为编译各个模块的依据。
  • samples:一些示例代码。
  • virt:提供虚拟机技术(KVM等)的支持。
  • firmware: 保存用于驱动第三方设备的固件。
  • COPYING: 版权声明。
  • MAINTAINERS:维护者名单。
  • CREDITS:Linux主要的贡献者名单。
  • REPORTING-BUGS: Bug上报的指南。
  • README:帮助、说明文档。

  根目录和大部分子目录下都有Makefile和Kconfig两个文件,内核的配置和编译就依赖于这两个文件。

Linux kernel Makefile 的规则:Linux内核Makefile体系可以分为五部分:

  • Makefile:位于内核源代码根目录的Makefile.称为TOPMakefile。
  • .config:内核配置文件。
  • arch/arch_name/Makefile:各个体系结构独立代码中的Makefile 成为Arch Makefile。
  • kbuild Makefile:整个源代码目录中约有500个这样的Makefile。
  • scripts/Makfile.*:适用于各种Kbuild Makefile的一般规则。

参考

posted @   平安顺遂233  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示