linux内核启动引导过程

	linux内核(uImage格式镜像,uImage = zImage_压缩的内核镜像 + 0x40字节大小的uboot格式信息头)的启动过程大体可以分为三个阶段:
	第一:内核的自解压过程(汇编+C语言实现)
	主要由、arch/arm/boot/compressed对zImage完成解压,并调用call_kernel跳转到下阶段代码。
	第二:板级引导阶段(汇编实现)
 
  
	主要进行cpu和体系结构的检查、cpu本身的初始化以及页表的建立等
	第三:通用内核启动阶段(C语言实现:重点分析)
	1. 进入init/main.c文件,从start_kernel()函数开始进行一系列的内核初始化工作,最后调用rest_init()函数
	2. 在rest_init()函数中创建第一个内核线程kernel_init
	3. 在kernel_init()线程中初始化各种驱动等,最后调用init_post()函数
	4. 在init_post()函数中释放初始化内存段,标志着内核启动完成,并建立起标准输入/标准输出/标准错误输出,然后努力寻找一个用户进程init,将该进程作为系统的第一个用户进程,进程号为1.
	5. 内核启动完成,接下来就是用户的事情了。


	

你可能感兴趣的:(linux底层开发)