kernel启动镜像不是vmlinux,而是它!

本文介绍ARM64架构下Linux内核启动镜像的构建流程,包括vmlinux生成、Image创建及压缩等步骤,并详细解析Makefile配置。

上一节我们介绍了vmlinux的编译过程。vmlinux是一个ELF文件,上百M,无法直接flash到板子上。不同架构最终生成的启动镜像略有区别,一般地:

  • 通过编译生成vmlinuxSystem.map
  • 通过objcopy移除vmlinux中不必要段,输出binary格式Image
  • 再对Image进行压缩,输出不同格式的压缩文件,比如gzip对应的Image.gz
  • 最后通过工具加上BootLoader可以识别的header用于启动引导。

我们重点关注arm64架构的编译情况。

根目录的Makefile include了不同架构的Makefile文件:

https://elixir.bootlin.com/linux/v5.4.200/source/Makefile#L583

include arch/$(SRCARCH)/Makefile

arm64下的Makefile中:

# Default target when executing plain make
boot		:= arch/arm64/boot
KBUILD_IMAGE	:= $(boot)/Image.gz

all:	Image.gz


Image: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@

Image.%: Image
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@

zinstall install:
	$(Q)$(MAKE) $(build)=$(boot) $@

由此可以发现,arm64的启动镜像为压缩后的Image.gz.</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子象限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值