V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yuanix
V2EX  ›  问与答

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

  •  
  •   yuanix · 307 天前 · 694 次点击
    这是一个创建于 307 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是 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 ([email protected]) #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 格式的内核文件?

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

    第 1 条附言  ·  307 天前

    更新一点现在我知道的东西:

    qemu-system-riscv64 的 -kernel 参数至少可以接受

    • flat binary: U-Boot编译目标文件 u-boot.bin
    • ELF: U-Boot编译目标文件 u-boot
    • EFI: Linux kernel编译目标文件 Image
    2 条回复    2023-06-25 22:50:52 +08:00
    ysc3839
        1
    ysc3839  
       307 天前 via Android
    CONFIG_EFI_STUB?
    yuanix
        2
    yuanix  
    OP
       307 天前
    @ysc3839 在 make defconfig 的基础上,把 CONFIG_EFI=y 改成 CONFIG_EFI=n ,可以使生成的 Image 变成 flat binary 格式,设置 CONFIG_EFI_STUB=n 似乎是无效的,仍然生成 EFI 格式的 Image
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5643 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:38 · PVG 14:38 · LAX 23:38 · JFK 02:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.