init 文档索引
Linux 6.1(RK3588)内核 init/ 目录源码分析与启动流程说明。
总览文档
| 文档 | 说明 |
|---|---|
| init内核启动机制与原理详解.md | 总览:启动阶段、与 arch/mm/drivers 边界、RK3588 关联 |
| 源码目录与模块索引.md | init/ 文件清单、Makefile/Kconfig 对照 |
| rk3588-kernel-6.1-init目录作用与内核启动流程分析.md | 补充:早期整理的启动流程速览 |
功能组专题(原理 + 实现)
每篇文档结构:原理 → 实现方式 → 数据结构/接口 → RK3588 → 调试 → 附录。
| 编号 | 文档 | 源码重点 |
|---|---|---|
| 01 | start_kernel早期初始化机制与实现详解.md | start_kernel()、命令行、早期子系统 |
| 02 | rest_init与kernel_init机制与实现详解.md | rest_init、kernel_init、exec init |
| 03 | initcall驱动初始化机制与实现详解.md | do_initcalls、七级 initcall、异步 |
| 04 | 根文件系统挂载机制与实现详解.md | do_mounts.c、prepare_namespace、root= |
| 05 | initramfs与早期用户态机制与实现详解.md | initramfs.c、initrd、ramdisk_execute_command |
| 06 | init_task版本与校准机制与实现详解.md | init_task.c、version*.c、calibrate.c |
| 07 | RK3588启动优化与平台关联详解.md | 长 cmdline、Thunder Boot、HW 解压 |
源码路径
1 | rk3588/kernel-6.1/init/ |
关联路径(不在 init/ 内但属启动链):
1 | rk3588/kernel-6.1/arch/arm64/ # setup_arch、head.S |
阅读顺序建议
核心机制速查
| 机制 | 主要文件 | 关键入口 |
|---|---|---|
| 内核 C 入口总控 | main.c |
start_kernel() |
| 调度与 PID1 线程 | main.c |
rest_init()、kernel_init() |
| 驱动/子系统注册初始化 | main.c |
do_initcalls()、do_one_initcall() |
| 挂真实根 | do_mounts.c |
prepare_namespace()、mount_root() |
| 内置 cpio | initramfs.c |
populate_rootfs、unpack_to_rootfs |
| 0 号任务模板 | init_task.c |
init_task、init_stack |
| BogoMIPS | calibrate.c |
calibrate_delay() |
| RK 延迟 memblock | main.c + mm/memblock.c |
defer_free_memblock |
与 RK3588 / SeagullYpcEncode 场景
- 启动耗时:
prepare_namespace中wait_for_device_probe()→ 04 - 快启 memblock:
CONFIG_ROCKCHIP_THUNDER_BOOT_DEFER_FREE_MEMBLOCK→ 07、linuxDoc/mm/01 - initramfs 硬件解压:
CONFIG_ROCKCHIP_HW_DECOMPRESS→ 05 - 模块签名密钥:
integrity_load_keys()(kernel_init_freeable末尾)→ linuxDoc/certs
正在加载留言…