arm64 linux起始地址,ARM64 Linux的启动分析

本文详细分析了ARM64 Linux的启动过程,从vmlinux的ELF入口地址0xfffffe0000080000开始,探讨了如何找到第一条执行指令,讲解了vmlinux的链接原理以及TEXT_OFFSET的定义,最后讨论了从UEFI到内核入口的地址跳转机制。

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

ARM64 Linux的启动分析

1.     找到Linux启动流程

Linux启动,会启动内核编译后的文件vmlinux

vmlinux是一个ELF文件,按照./arch/arm64/kernel/vmlinux.lds设定的规则进行链接的

./arch/arm64/kernel/vmlinux.lds 是 ./arch/arm64/kernel/vmlinux.lds.S编译之后生成的

通过readelf可以看到vmlinux的入口地址为:0xfffffe0000080000

8fb4e523e1142b73283efff0d524358b.png

这个地址是怎么来的,对应内核代码中的哪个代码呢?最简单的方法是反汇编

对vmlinux反汇编的命令为:objdump -dxh vmlinux > vmlinux.s

在查找地址0xfffffe0000080000:grep fffffe0000080000 vmlinux.s

可以看到linux的第一条指令为:x13, x18, #0x16,对应的符号是:.head.text efi_head _text

8f11560966a2c660b0052768d80cad8c.png

查看ARM64的head.S可以看到如下代码

/*

* Kernel startup entry point.

* -----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值