linux 内核入口地址,linux内核的加载地址和入口地址

本文介绍了Linux内核编译后的zImage如何通过mkimage工具添加头部信息,转换成uImage。详细讲解了mkimage命令的参数,如设置架构、操作系统、类型、压缩类型、加载地址和入口地址等,并通过实例展示了加载和执行过程。在实践中,发现加载地址和入口地址混淆会导致‘Bad Magic Number’错误,需正确设置这两个地址。

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

编译完内核之后,会产生zImage,而把它直接导入0x30008000,会出现Bad Magic Number.

查明是需要将内核加一个0x40大小的头,由mkimage工具来添加.mkimage在编译u-boot时在u-boot-1.1.6/tools下生成,可以为编译的内核添加头信息的.在bootm命令中会解析这个头,获得参数.zImage在编译内核时,在arch/arm/boot目录下生成。我们需要把zImage用mkimage工具处理一下。

mkimage参数的意义如下:

-A == set architecture to 'arch'

-O == set operating system to 'os'

-T == set image type to 'type'

-C == set compression type 'comp'

-a == set load address to 'addr' (hex)

-e == set entry point to 'ep' (hex)

-n == set image name to 'name'

-d == use image data from 'datafile'

-x == set XIP (execute in place)

首先可以把zImage拷贝到u-boot-1.1.6/tools目录下,在此目录下,执行如下命令:

./mkimage -n 'linux-2.6.26' -A arm -O linux -T kernel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值