ARM Linux启动流程-前传

1、zImage的组成

  zImage是由一个压缩后的内核piggy.o,连接上一段初始化及解压功能的代码(head.o misc.o)组成的。
这里写图片描述

2、Linux的入口

  内核从什么地方开始运行呢?当然要看lds文件啦。zImage的 生成经历了两次大的链接过程:
  一次是顶层根目录下vmlinux的生成,由arch/arm/boot/vmlinux.lds(这个lds文件是由 arch/arm/kernel/vmlinux.lds.S生成的)决定;
  另一次是arch/arm/boot/compressed/vmlinux 的生成,是由arch/arm/boot/compressed/vmlinux.lds(这个lds文件是由 arch/arm/boot/compressed/vmlinux.lds.in生成的)决定。
  所以,zImage的入口点应该由 arch/arm/boot/compressed/vmlinux.lds决定。截取/vmlinux.lds部分内容,如下所示。从中可以看出入口点为‘_start’

OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
        . = 0;
       _text = .;
       .text : {
       _start = .;
       *(.start)
       *(.text)
                            ……
}

  并且,arch/arm/boot/compressed/Makefile里有如下两句:

HEAD    = head.o
$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \
$(addprefix $(obj)/, $(OBJS)) FORCE

  所以,zImage的入口点便是arch/arm/boot/compressed/head.S里的start。其整个流程如下:
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值