dtbとマシンを交換するとqemu-system-armがクラッシュするのはなぜですか?

dtbとマシンを交換するとqemu-system-armがクラッシュするのはなぜですか?

組み込みシステムをエミュレートするためにqemu-system-armを使用しようとしています。私はUbuntu 20.04を使用しており、QEMUエミュレータバージョン5.0.0(Debian 1:5.0-5ubuntu6〜ppa0)のバックポートをインストールしました。最初は「簡単な」ことを試してみて、Raspberry Piをエミュレートする必要があると思いました。約12の例を試した後、ついに機能する例を見つけました。ここ。カーネルとdtbを抽出するためのリンクの指示に従って、次のコマンドを使用してRaspberry Pi 2bをエミュレートすることができました。

qemu-system-arm -M raspi2 -kernel ./kernel7.img -dtb ./bcm2709-rpi-2-b.dtb -sd ./2020-02-13-raspbian-buster-lite.img -serial stdio -append "$(<cmdline.txt)"

素晴らしいです。ただし、別のバージョンのRaspberry Piを実行するために変更しようとすると、qemuがクラッシュします。

qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -kernel ./kernel7.img -dtb ./bcm2709-rpi-2-b.dtb -sd ./2020-02-13-raspbian-buster-lite.img -serial stdio -append "$(<cmdline.txt)"
qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -kernel ./kernel7.img -dtb ./bcm2708-rpi-b.dtb -sd ./2020-02-13-raspbian-buster-lite.img -serial stdio -append "$(<cmdline.txt)"

私はこれが-M versatilepb -cpu arm1176 -m 256Raspberry Pi 1アーキテクチャの近似だと思います。 Raspberry Pi 2とRaspberry Pi 1でdtbを試してみましたが、VMから起動できず、次のような苦情が表示されます。

pulseaudio: set_sink_input_volume() failed
pulseaudio: Reason: Invalid argument
pulseaudio: set_sink_input_mute() failed
pulseaudio: Reason: Invalid argument

私も次のことを試しました。

qemu-system-aarch64 -M raspi3 -kernel ./kernel7.img -dtb ./bcm2710-rpi-3-b.dtb -sd ./2020-02-13-raspbian-buster-lite.img -serial stdio -append "$(<cmdline.txt)"

Raspberry Pi 3をエミュレートする必要があると思いますが、出力はまったく印刷されずに中断されます。私も他の多くの組み合わせを試しましたが、ほとんどの出力は印刷されずに中断されました。

Qemuが端末に出力されず(空のQemuウィンドウとともに)中断される原因についての説明が必要です。これは、-Mでロードされたシステムとdtbファイルおよび/またはカーネルとの間の不一致が原因で発生しますか?正確に一致しないものは何ですか?使用されたメモリアドレスですか?利用可能な周辺機器?

それともこれはqemu-system-armの正常な動作ですか?限られたハードウェアセットでのみ動作し、他のすべてのエントリには、一致するVMを正確に構成するためにハードウェアアーキテクチャの詳細な知識が必要ですか?

それともqemuのインストールに問題がありますか?上記のように、約12の例があります(例:これそしてこれ)これは私には効果がありません。私はこれが別のバージョンのqemuの例であるか、何か微妙に間違ったことをしているからだと思いましたが、たぶんそうではありませんか?

ベストアンサー1

おすすめ記事