gpt4 book ai didi

linux - 将 Linux 内核编译为非 ELF

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:52 24 4
gpt4 key购买 nike

最近一些发行版开始将 vmlinuz 文件与 initrd 一起打包在一个“ELF-Boot”中,想象一下这可能有一些优势。好吧,我需要使用 vmlinuz 文件的旧格式编译一个新内核。有谁知道我怎样才能做到这一点?我使用的是 Oracle Enterprise Linux,如果我运行“make bzImage”,结果是一个我无法使用的 ELF 文件。

或者,是否有解压 ELF-Boot 镜像并提取常规 vmlinuz 文件的方法?

澄清一下,当我执行“文件/boot/vmlinuz”时,我现在得到的是:

vmlinuz:ELF 64 位 LSB 共享对象,AMD x86-64,版本 1,已剥离

然而,我想要获得的是:

vmlinuz:Linux/x86 内核,设置版本 0x20a,bzImage,版本 2.6.37,版本 2.6.37-40,RO-rootFS,root_dev 0x301,swap_dev 0x4,普通 VGA

感谢您的帮助!

最佳答案

1.修改Makefile,在objcopy cmd中加入-O binary,例如:

在 linux-3.7.4/arch/x86/boot/compressed/Makefile 中:

OBJCOPYFLAGS_vmlinux.bin := -R .comment -S **-O binary**

$(obj)/vmlinux.bin: vmlinux FORCE

$(call if_changed,objcopy)

2.注释parse_elf,例如:

在 linux-3.7.4/arch/x86/boot/compressed/misc.c 中

asmlinkage void decompress_kernel(...)

{

...

decompress(input_data, input_len, ...);

/* parse_elf(output); */

...

}

关于linux - 将 Linux 内核编译为非 ELF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5122150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com