过程

init/main.c

start_kernel()
	rest_init()
		kernel_thread(kernel_init);	// init						PID = 1
		kernel_thread(kthreadd);	// kernel thread deamon		PID = 2
		pu_startup_entry(CPUHP_ONLINE);
			while (1)
				do_idle();			// idle						PID = 0

参考

内核启动之start_kernel()和rest_init()函数

【Linux】U-Boot启动文件start.S详解(超详细讲解,上篇)

uboot启动流程概述_uboot启动流程详细分析(二)