Arm linux启动流程

Linux启动代码分为以下三部分:
汇编编写的体系结构相关的部分
C语言编译的体系结构相关的部分
C语言编译的体系结构无关的部分

内核镜像的生成:
内核镜像生成

内核启动流程-1.汇编部分:
内核启动入口代码:
内核编译连接后生成的ELF映像文件是vmlinux,从内核源代码顶层目录的makefile中可以找到vmlinux的生成规则:

这里写图片描述

其中vmlinux-lds是链接器脚本,对于arm而言,路径是arch/arm/kernel/vmlinux.lds文件:
*SECTIONS
{

ifdef CONFIG_XIP_KERNEL

. = XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR);

else

. = PAGE_OFFSET + TEXT_OFFSET;

endif

.text.head : {
    _stext = .;
    _sinittext = .;
    *(.text.head)
}*

入口号是stext
因此,非压缩 arm linux 内核的入口点是arch\arm\kernel\head.S中的stext

内核启动流程-C语言部分
这个阶段由以下函数开始
asmlinkage void __init start_kernel(void)到第一个用户进程init结束,调用了一系列函数对内核组件初始化,其中start_kernel,rest_init,kernel_init,init_post等4函数主线组成整个初始化过程
内核启动过程C语言部分初始化的主线

内核启动流程-Busybox的init进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值