init/ 源码目录与模块索引

init/ 源码目录与模块索引

源码路径rk3588/kernel-6.1/init/
内核版本:Linux 6.1(RK3588 / ARM64)
文档目录linuxDoc/init/


一、目录文件清单

文件 链接对象 职责摘要
main.c main.o start_kernelrest_initkernel_init、initcall、bootconfig、执行 init
init_task.c init_task.o 静态 init_task / init_stack、信号与 cred 模板
do_mounts.c mounts.o 之一 root=prepare_namespacemount_root
do_mounts_rd.c 可选 块 ramdisk 加载
do_mounts_initrd.c 可选 initrd 镜像处理
do_mounts.h 挂载相关内部声明
initramfs.c initramfs.o 内置 cpio 解包到 rootfs(需 CONFIG_BLK_DEV_INITRD
noinitramfs.c noinitramfs.o 无 initrd 时的最小 rootfs 占位
calibrate.c 可选 calibrate_delay() / lpj=
version.c version.o UTS_VERSION 编译期字符串
version-timestamp.c 构建生成 最终构建时间戳写入 UTS_VERSION
build-version 脚本输入 可由 KBUILD_BUILD_VERSION 覆盖版本串
Makefile 对象选择、UTS_VERSION 生成规则
Kconfig 大量全局构建/工具链选项 + 部分 initramfs 相关项

文件数量:约 15 个(含 KconfigMakefile)。


二、Makefile 对象映射

1
2
3
4
5
6
7
8
obj-y := main.o version.o mounts.o init_task.o
# CONFIG_BLK_DEV_INITRD=n → noinitramfs.o
# CONFIG_BLK_DEV_INITRD=y → initramfs.o
# CONFIG_GENERIC_CALIBRATE_DELAY → calibrate.o

mounts-y := do_mounts.o
mounts-$(CONFIG_BLK_DEV_RAM) += do_mounts_rd.o
mounts-$(CONFIG_BLK_DEV_INITRD) += do_mounts_initrd.o

mounts.omounts-y 中多个 .o 链接而成。


三、main.c 内主要符号(按启动顺序)

符号 阶段
start_kernel 单线程早期,至 arch_call_rest_init()
rest_init 创建 kernel_init 线程、kthreadd,boot CPU idle
kernel_init 等待 kthreadd → freeable → exec init
kernel_init_freeable SMP、initcall、initramfs、挂根、integrity
do_pre_smp_initcalls __initcall_start .. __initcall0_start(early)
do_basic_setup driver_init + do_initcalls
do_initcalls / do_initcall_level pure .. late 七级
do_one_initcall 单个 initcall 执行与检查
run_init_process kernel_execve 用户态 init
parse_early_param / unknown_bootoption 启动参数

四、Kconfig 说明

init/Kconfig 体积很大,多数条目属于:

  • 编译器版本探测(GCC/Clang/LD)
  • CONFIG_RUSTBUILDTIME_TABLE_SORT 等全局构建选项

启动行为 更相关的配置通常分散在:

配置 典型位置
INITRAMFS_SOURCE init/Kconfig 后部
DEFAULT_INIT init/Kconfig
BLK_DEV_INITRD drivers/block/Kconfig
ROCKCHIP_THUNDER_BOOT* Rockchip 平台 Kconfig
ARCH_ROCKCHIP arch/arm64/Kconfig

阅读 RK3588 defconfig 时需结合 archdrivers,不能只看 init/Kconfig


五、平台相关代码位置(init 内)

宏/符号 文件 说明
CONFIG_ARCH_ROCKCHIP main.c 分段打印 saved_command_line
CONFIG_ROCKCHIP_THUNDER_BOOT_DEFER_FREE_MEMBLOCK main.c kthread_run(defer_free_memblock)
CONFIG_ROCKCHIP_THUNDER_BOOT + CONFIG_ROCKCHIP_HW_DECOMPRESS initramfs.c wait_initrd_hw_decom_done()

实现体 defer_free_memblockmm/memblock.c


六、专题文档对照

源码主题 文档
start_kernel 01
rest_init / kernel_init 02
initcall 03
do_mounts* 04
initramfs / initrd 05
init_task / version / calibrate 06
Rockchip 启动优化 07

文章互动

阅读 --

留言

0 条留言

正在加载留言…