RISC-V/ARM64 交叉编译 Linux 生成生成的是 EFI 文件而不是 ELF?能不能生成 ELF?

321 天前
 yuanix

这是 RISC-V 交叉编译生成的 Linux 内核,file 命令查看发现是 EFI 格式

file arch/riscv/boot/Image
arch/riscv/boot/Image: MS-DOS executable PE32+ executable (EFI application) RISC-V 64-bit (stripped to external PDB), for MS Windows

这是 AMD64 机器上的内核,可以看到是 ELF 格式

file /boot/vmlinuz-5.10.0-23-amd64
/boot/vmlinuz-5.10.0-23-amd64: Linux kernel x86 boot executable bzImage, version 5.10.0-23-amd64 (debian-kernel@lists.debian.org) #1 SMP Debian 5.10.179-1 (2023-05-12), RO-rootFS, swap_dev 0x6, Normal VGA

RISC-V 交叉编译的内核输出文件能否控制格式,生成 ELF ? 查了一下,了解了 EFI STUB ,不过还是好奇能不能生成 ELF 格式的 RISC-V Linux 内核? 以及 QEMU RSIC-V 的-kernel参数是否支持加载 ELF 格式的内核文件?

希望大佬指点一下,查了半天没找到什么资料

700 次点击
所在节点    问与答
2 条回复
ysc3839
321 天前
CONFIG_EFI_STUB?
yuanix
321 天前
@ysc3839 在 make defconfig 的基础上,把 CONFIG_EFI=y 改成 CONFIG_EFI=n ,可以使生成的 Image 变成 flat binary 格式,设置 CONFIG_EFI_STUB=n 似乎是无效的,仍然生成 EFI 格式的 Image

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/951506

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX