1、前言
首先linux内核源码在官网更新迭代:https://www.kernel.org/;一般情况下,soc厂商会将内核源码进行初次裁剪适配自己的产品;实际开发中我们会使用soc厂商提供的内核代码进一步裁剪来适配自己的产品。
以三星的S3C2410为例,三星会从官网获取内核源码进行裁剪,裁剪后的内核源码适配于S3C2410,国内许多学习用的开发板使用的S3C2410,开发板厂家会使用三星提供的内核再根据自己产品的实际需要对内核进一步裁剪来适配自己的开发板。
当然,你也可以直接从官网下载源码自己玩转直指产品,只要你足够牛~
2、目录结构
不管从何种途径获取到的内核源码,其大致结构如下:
文件/文件夹 名称 |
描述 |
arch | 架构相关,子目录下包含arm、x86等 |
block | 块设备相关 |
crypto | 加密算法相关 |
Documentation | 文档相关 |
drivers | 驱动相关,子目录下包含char(字符设备驱动),block(块设备驱动)等 |
firmware | 固件相关 |
fs | 支持的文件系统相关 |
include | 各种架构cpu通用头文件 |
init | 初始化内核代码 |
ipc | 进程间通信相关代码 |
kernel | 内核相关代码 |
lib | 一些内核编程使用的库函数代码 |
mm | 内存管理相关代码 |
net | 网络相关代码 |
scripts | 配置编译内核相关脚本 |
security | 安全相关 |
sound | 音频相关 |
tools | 常用工具 |
usr | linux启动使用 |
virt | 内核虚拟相关 |
Kbuild | 内核编译文件 |
Makefile | 顶层Makefile文件 |