在 QEMU 中启动未压缩的 vmlinux 内核而不是 bzImage

在 QEMU 中启动未压缩的 vmlinux 内核而不是 bzImage

这个问题之前已经问过,但没有回答。

我正在尝试启动未压缩的 RTEMS ELF 文件

> qemu-system-x86_64 -kernel ./rtems-elf.exe

结果是

qemu-system-x86_64: Error loading uncompressed kernel without PVH ELF Note

我已经为 rtems RTOS 构建了许多内核,但为了进行完整性检查,我尝试从 rtems 启动一个示例,因此理想情况下代码应该没有问题。我还尝试启动未压缩的 Linux 内核(实时和常规),但出现了同样的错误。

一些有用的信息:

> file rtems-elf.exe
hello.exe: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped
> qemu-system-x86_64 --version
QEMU emulator version 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

主机 - Arch linux x86_64

其他一些尝试:

这个例子是一个带有 PREEMPT_RT Linux 补丁的实时 Linux 内核,我有 bzImage,但我只是测试了 qemu 启动非压缩内核的能力

> file vmlinux
vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=fd95cdeb00595f6742b0a41eda4f0c33172588fe, not stripped

> qemu-system-x86_64 -kernel ./vmlinux -append "--console=/dev/com1" -serial stdio -vga cirrus
qemu-system-x86_64: Error loading uncompressed kernel without PVH ELF Note

谢谢,如果我遗漏了什么请告诉我

同一主题的另一个帖子可以在这里找到 https://stackoverflow.com/questions/55688241/qemu-error-loading-uncompressed-kernel-without-pvh-elfnote 但这是一个断开的链接

和这里 QEMU:加载未压缩的内核时出错 但这个问题还没有得到回答,我想我应该再次提起它

答案1

QEMU >= 4.0 能够使用 PVH 标头启动 x86_64 ELF 映像。 Linux >= 4.21 提供了一个配置标志CONFIG_PVH=y必须在 Linux 配置文件中启用)以在 vmlinux ELF 映像中启用该标题。

量子计算单元需要在 x86/HVM 直接启动 ABI 中定义的 PVH 入口点启动 x86_64 ELF 映像。x86/HVM 直接启动 ABI 最初是为 Xen 客户机开发的,但随着 QEMU 和 Linux 的最新变化,QEMU 能够使用相同的入口点来启动 KVM 客户机。

相关内容