首页 > 代码库 > linux内核启动引导过程
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. 内核启动完成,接下来就是用户的事情了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。