Linux系统移植:内核源码目录分析
Posted 嵌入式up笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统移植:内核源码目录分析相关的知识,希望对你有一定的参考价值。
文章目录
Linux系统移植:内核源码目录分析
一、目录文件简述
先看一下一级目录:
首先看一下 linux 自带的文件夹
目录 | 功能 |
---|---|
arch | 存放架构文件相关目录,该目录下,每种架构都有对应子目录,架构子目录用于控制系统引导、系统调用、动态调频、主频设置等,架构子目录的 configs 存放配置文件,而 boot/dts 目录里面是对应开发平台的设备树文件 |
block | 块设备相关目录,像 SD 卡、EMMC、NAND、硬盘等存储设备属于块设备,block 目录中存放着管理块设备的相关文件 |
crypto | 加密相关目录,存放着加密算法文件,比如常见的 crc、crc32、md4、md5、hash 等加密算法就在里面 |
Documentation | 文档手册相关目录,想了解 Linux 某个功能模块或驱动架构的功能,就可以在 Documentation 目录中查找有没有对应的文档 |
drivers | 驱动相关目录,根据驱动类型的不同,分门别类进行整理,比如 drivers/i2c 就是 I2C 相关驱动目录,重点目录 |
firmeare | 固件相关目录 |
fs | 文件系统相关目录,存放文件系统,比如 fs/ext2、fs/ext4、fs/f2fs 等,分别是 ext2、ext4 和 f2fs 等文件系统 |
include | 头文件相关目录 |
init | 初始化相关目录,存放 Linux 内核启动的时候初始化代码 |
ipc | 进程间通信相关目录,存放进程间通信的具体实现代码 |
kernel | 内核相关目录 |
lib | 库相关目录,都是一些公用的库 |
mm | 内存管理相关目录 |
net | 网络相关目录 |
samples | 例程相关目录 |
scripts | 脚本相关目录,编译的时候会用到很多脚本文件,这些脚本文件就保存在此目录中 |
security | 安全相关目录 |
sound | 音频处理相关目录 |
tools | 工具相关目录 |
usr | 与 initramfs 相关的目录,用于生成 initramfs |
virt | 提供虚拟机技术支持 (KVM) |
然后看一下相关文件:
源码自带文件:
目录 | 功能 |
---|---|
.gitignore | git 工具相关文件 |
.mailmap | 邮件列表 |
COPYING | 版权声明 |
CREDITS | Linux 贡献者 |
Kbuild | Makefile 会读取此文件 |
Kconfig | 图形化配置界面的配置文件 |
MAINTAINERS | 维护者名单 |
Makefile | Linux 顶层 Makefile |
README | Linux 描述文件 |
REPORTING-BUGS | BUG 上报指南 |
编译生成文件:
目录 | 功能 |
---|---|
.config | Linux 最终使用的配置文件,编译 Linux 的时候会读取此文件中的配置信息。最终根据配置信息来选择编译 Linux 哪些模块,哪些功能 |
.missing-syscalls.d | 不清楚 |
.tmp_xx | 不清楚 |
.version | 和版本有关 |
.vmlinux.cmd | cmd 文件,用于连接生成 vmlinux |
Module.xx modules.xx | 一系列文件,和模块有关 |
System.map | 符号表 |
vmlinux | 编译出来的、未压缩的 ELF 格式 Linux 文件 |
vmlinux.o | 编译生成中间文件 |
外部文件:
目录 | 功能 |
---|---|
linux_build.sh | 编译脚本 |
二、VSCode 创建源码工程
VSCode 创建源码工程很简单,解压缩工程后,进入工程建立工作区
然后编译 settings.json 配置脚本,屏蔽掉无关文件,方便分析代码:
主要就是 search.exclude,搜索排除,和 files.exclude 文件排除,排除不用的目录和文件,如下:
代码编写后保存刷新一下目录,就会发现排除文件夹在目录不会显示了,比如架构目录只剩下 arm 文件夹了
以上是关于Linux系统移植:内核源码目录分析的主要内容,如果未能解决你的问题,请参考以下文章
RK3399系统移植 | 移植 linux 原生5.4.32内核