首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Linux内核Bin转换为ELF格式

问如何将Linux内核Bin转换为ELF格式
EN

Stack Overflow用户
提问于 2013-03-08 17:54:56
回答 1查看 13.4K关注 0票数 5

我们有一个没有ELF头部的Linux内核二进制文件,我们的引导加载程序将根据来自ELF头部的计算来加载内核映像(早期的QNX内核映像具有ELF头部),但是由于我们的Linux内核映像没有ELF头部,所以我们的引导加载程序拒绝将此内核映像加载到内存。

由于某些原因,我们没有更改引导加载程序代码的选项,因此我们唯一的选择是使用特定的入口点将ELF头插入到Linux BIN文件中。

实现这一目标的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-09 10:29:46

objcopy命令能够使用适当的ELF头包装二进制文件。例如,以下命令会将二进制文件input.in转换为i386目标文件output.o

代码语言:javascript
复制
objcopy -I binary -O elf32-i386 --binary-architecture i386 input.bin output.o

在output.o中将定义三个符号:_binary_input_bin_start、_binary_input_bin_end和_binary_input_bin_size。此外,输入文件的数据将位于.data节中。

然后,您需要使用带有链接器脚本的ld来设置适当的加载/虚拟/物理地址和入口点。以下是一个最小的脚本:

代码语言:javascript
复制
ENTRY(_start);

SECTIONS
{
    _start = 0x12000;
    . = 0x10000;
    .data : {
        *(.data)
    }
}

但可能需要进行大量修改,具体取决于引导加载程序的工作方式、物理内存布局、内核位置、架构等。调整后,可以按如下方式生成最终的ELF文件:

代码语言:javascript
复制
ld -m elf_i386 output.o -T binary.ld -o output.elf
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15291168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档