web-dev-qa-db-ja.com

bzImageの代わりにQEMUで非圧縮のvmlinuxカーネルを起動する

この質問は以前に尋ねられましたが、答えられていません。

圧縮されていないRTEMSELFファイルを起動しようとしています

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

結果は

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

私はrtemsRTOS用に多くのカーネルを構築しましたが、サニティチェックのために、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

ホスト-ArchLinux 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:非圧縮カーネルのロードエラー しかし、これは答えられておらず、私はそれを再び立ち上げると思いました

2
Theo Lincke

QEMU> = 4.0は、PVHヘッダーを使用してx86_64ELFイメージを起動できます。 Linux> = 4.21は構成フラグを提供しますCONFIG_PVH=y vmlinux ELFイメージでそのヘッダーを有効にするには、Linux構成ファイルで有効にする必要があります。

QEMU x86/HVMダイレクトブートABIで定義されたPVHエントリポイントが必要 x86_64ELFイメージをブートします。 x86/HVMダイレクトブートABIは当初Xenゲスト用に開発されましたが、QEMUとLinuxの両方で最新の変更が加えられたため、QEMUは同じエントリポイントを使用してゲストを起動できますKVM)。

2