我们进入第二十三章–内核 defconfig 配置解析。前面第二十二章把内核源码树的结构拆了一遍,知道了arch/arm/configs/下放着rk3506_defconfig。那么这个文件里到底写了什么?为什么里面有些项是=y、有些是=m、还有些写着# CONFIG_xxx is not set?我们改内核配置时到底在改什么?这一章就来回答这些问题。全章大概二十五到三十分钟,建议开讲前先在终端里vim kernel-6.1/arch/arm/configs/rk3506_defconfig把这个文件打开,对照着配置项看,会更有感觉。这一章是后面第二十四节"内核编译流程与镜像生成"的前置–不理解 defconfig 里每一项的含义,编译出来的内核出了问题就不知道该回头查哪一行配置。
文章目录
- 一、概述
- 二、形象比喻:买车选配单
- 三、rk3506_defconfig 逐段解读
- 3.1 基础系统配置
- 3.2 架构与平台
- 3.3 CPU 调频与电源管理
- 3.4 浮点与加密
- 3.5 存储与文件系统
- 3.6 网络与外设
- 3.7 Rockchip 平台专属
- 3.8 调试选项
- 四、配置分类统计
- 五、修改 defconfig 的方法
- 📝 本章小结
- 🏠 课后练习
一、概述
搞清楚 defconfig 到底是个什么东西,为什么要逐行读懂它。
defconfig是内核配置的"预制菜谱"–它定义了 RK3506 平台需要哪些内核功能、驱动、文件系统。本章逐段解析rk3506_defconfig(359行),帮助你理解每一项配置的含义和它对系统的影响。
换句话说,Rockchip 工程师已经帮你把 RK3506 需要哪些功能、驱动、文件系统都配好了,359 行,你直接make rk3506_defconfig就能用。但移植时你肯定要改它–加个驱动、关个功能、调个参数。要改就得先看懂,这一章就是带你逐行读懂每一项的含义和影响。
学完本章你将能回答:
- RK3506 的 defconfig 中
CONFIG_PREEMPT=y和CONFIG_THUMB2_KERNEL=y分别起什么作用? - 为什么 WiFi/蓝牙驱动配置为
=m(模块),而 eMMC 驱动配置为=y(内置)? - 如何通过 menuconfig 修改内核配置并保存为 defconfig?
- defconfig 中
# CONFIG_xxx is not set的含义是什么?
这四个问题对应后面第三、五节。尤其第二个问题–“为什么有的=m有的=y</