linux内核启动流程

本文详细分析了Linux3.14版本的内核启动流程,从内核映像加载到内存、自解压,再到处理器检查、MMU启用,直至start_kernel函数的执行,涵盖了内核引导和初始化阶段的关键步骤,包括设备信息存储、页地址初始化、控制台初始化等。最终,kernel_init函数创建第一个用户空间应用程序,标志着内核初始化结束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信可以设置雪花昵称了,真漂亮!!!

本文以Linux3.14版本源码为例分析其启动流程。各版本启动代码略有不同,但核心流程与思想万变不离其宗。

内核映像被加载到内存并获得控制权之后,内核启动流程开始。通常,内核映像以压缩形式存储,并不是一个可以执行的内核。因此,内核阶段的首要工作是自解压内核映像。

内核编译生成vmliunx后,通常会对其进行压缩,得到zImage(小内核,小于512KB)或bzImage(大内核,大于512KB)。在它们的头部嵌有解压缩程序。

通过linux/arch/arm/boot/compressed目录下的Makefile寻找到vmlinux文件的链接脚本(vmlinux.lds),从中查找系统启动入口函数。

$(obj)/vmlinux: $(obj)/vmlinux.lds ( o b j ) / (obj)/ (obj)/(HEAD) ( o b j ) / p i g g y . (obj)/piggy. (obj)/piggy.(suffix_y).o
$(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3)
( b s w a p s d i 2 ) F O R C E @ (bswapsdi2) FORCE @ (bswap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值