Yocto:グラフィカルモードでqemuを実行できません

Yocto:グラフィカルモードでqemuを実行できません

bitbake core-image-sato.

GUIなしで実行できます。

runqemu nographic< - 操作

しかし、グラフィックでは実行できません。

runqemu qemux86-64< - エラーのため失敗しました:

runqemu - ERROR - Failed to run qemu: Could not initialize SDL(x11 not available) - exiting

しかし、グラフィックモードが必要です!

私はUbuntu 18.04 + WSLを使用してWindows 10を構築しています。

答え1

問題の根本的な原因は、Linux環境で実行されているX GUI SERVER(X11 / Xorg)が不足しているためです。

これがあなたが直面する最初の問題です。通常、これを機能させるには、Linuxシステムでxserverを起動するだけです。これは通常、デプロイをデフォルトで設定されたグラフィカルモードに切り替えることによって実行される簡単な操作です。

しかし、あなたの場合には深刻な混乱があります。 WindowsでLinuxワークロードを実行しているとのことです。

それでは2番目の質問があります。詳しく知り、助けを得るには、まず実行しているWSLのバージョンを知っておく必要があります。

  • WSL 1を実行している場合、Xorg xserverを実行してWSL環境に公開することは、初心者でも熟練したLinux管理者にとっても非常に困難です(WindowsとLinuxをよく知る必要があります)。 WSL1 これは達成されましたが、Linux環境ではWSLが不足していました.)
  • WSL2を実行している場合、状況はより複雑です。 WSL1ではLinux環境がWindowsカーネル自体で提供されていますが(悪く)、WSL2では非常に特別なマルチVMマルチコア構成「ボックス」で「Linux」を実行しています。 ": WSL2 Linuxインスタンスは、実際には非常に特別なHyper-Vノード、真のVMです。

残念ながら、私のクライアントのどれもWSL2を必要としないので、まだWSL2を扱う時間がありませんでしたが、正しく理解していれば、WSL2のLinux "エミュレーション"はWSL1よりも正確ですが、あなたがするかどうかはわかりません。同じです。 WSL1環境に公開するのと同じように、XサーバーをWSL2環境に簡単に公開できます。

最後に、3番目の問題であるQEMUの問題があります。

QEMUは、「デスクトップコンピュータ」から「スマートフォン/ラズベリーパイ」レベルのシングルボードコンピュータまで、何十ものプロセッサ、コンピュータ、仮想マシンをエミュレートできる汎用エミュレーションエンジンです。

今、私たちはあなたが何を模倣したいのかを知る必要があります。あなたの質問によると、x86-64をエミュレートするようです。 x86-64ホストでこれを行うと、エミュレーションはしばしば非常に遅くなります。

QEMUは、ソフトウェアエミュレーションとハードウェアサポートアクセラレーションエミュレーションの2つのエミュレーションモードを提供することに注意してください。

ソフトウェアエミュレーションはどこでも機能しますが、すでに述べたように、x86-64の場合、x86-64(デフォルト)のソフトウェアエミュレーションは実際のワークロードに対して非常に遅いです。

ほぼリアルタイム/実際のハードウェアエミュレーション速度を達成するために、Linuxの世界ではQEMUシステムエミュレーションをKVM(Kernel Virtual Machine)と組み合わせることがよくあります。 KVMはHyper-Vと同等のカーネル側と考えることができます。 Linux 。この設定では、QEMUはLinuxカーネルとKVMの助けを借りてプロセッサのハードウェアサポート仮想化機能を使用します。つまり、WindowsのHyper-V = LinuxのQEMU + KVM(グラフィックスの場合はxserver)です。

しかし、前述のように、WSL2を使用している場合は、すでにHyper-V仮想化を使用しているので、QEMUが実行されるという事実に驚きました。その場合は、ネストされたKVM仮想化を使用するか、純粋な仮想化を使用しています。ソフトウェアシミュレーションモードで実行します。特殊なタイプのネストされた仮想化を使用すると、パフォーマンスに重大な影響を与え(2倍/3倍)、実際にソフトウェアモードで実行するとシミュレーションが非常に遅くなります。驚くべきことにはい、可能です。何もしません。

そのため、実行しているWSLのバージョンとQEMU設定でKVMが有効になっているかどうかに関する不足している情報を追加してください。

最後に、これらのレベルの入れ子と複雑さのためにWindowsを完全に捨てることをお勧めします。

  • ハードウェアサポート仮想化を介してサポートされている物理コンピュータを入手してください。
  • ここにLinuxをインストールし、xserver、KVM、QEMUを実行してネットワークに接続します。
  • デフォルトのWindowsコンピュータを使用して、ネットワークを介してこのLinux仮想ホストをリモートで制御します。

私を信じなさい。 QEMUホストをWindows仮想化Linuxに接続するよりも、この設定を使用すると、はるかに効果的で効率的になります。

答え2

私も同じ問題があります。これがあなたの場合であるかどうかはわかりませんが、qemurootとして実行している場合は、まず次のことを行う必要があります。

xhost +

userコマンドを使用して、ルートにX11にアクセスする権限を付与します。

関連情報