
私はQemu VMを作成しました。ホストとゲストの両方がUbuntu 20.04です。次に、コマンドを使用してQemu VMを起動します。
qemu-system-x86_64 ubuntu-desktop.qcow2 -m 2G -smp 2 -device virtio-vga-gl -display gtk,gl=on -nic user,hostfwd=tcp::5555-:22
ゲストUbuntuのデスクトップを開いてターミナルに入力できる場合
glxinfo -B
出力には、OpenGL レンダラーが「virgl」であることが示されています。しかし、-X
オプションとタイプを使用してゲスト Ubuntu に ssh するとglxinfo -B
、出力には OpenGL レンダラーがソフトウェア OpenGL レンダラーである「llvmpipe (LLVM 13.0.0、128 ビット)」であることが示されます。
では、なぜ ssh は virgl OpenGL レンダラーを llvmpipe ソフトウェア レンダラーに戻すのでしょうか? Qemu ウィンドウに表示されるように、ssh セッションで元の「virgl」OpenGL レンダラーを維持する方法はありますか?
答え1
出力には、OpenGL レンダラーが「virgl」であることが示されています。しかし、-X オプションを使用してゲスト Ubuntu に ssh し、glxinfo -B と入力すると、出力には OpenGL レンダラーがソフトウェア OpenGL レンダラーである「llvmpipe (LLVM 13.0.0、128 ビット)」であることが示されます。
では、なぜ ssh は virgl OpenGL レンダラーを llvmpipe ソフトウェア レンダラーに戻すのでしょうか? Qemu ウィンドウに表示されるように、ssh セッションで元の「virgl」OpenGL レンダラーを維持する方法はありますか?
この-X
オプションはglxinfoがホストのXサーバのものであり、ゲストのものではありません。GLXは「GL over X11」なので、glxinfoはホストのXorgから利用可能な機能を表示します。ただし、通信しているという事実によって制限されます。ネットワーク経由で、したがって、直接 SHM または DRI アクセスはありません。(たとえば、最新の X11 プログラムは、MIT-SHM を介して X サーバーとビットマップを直接交換できることに大きく依存しています。)
ゲストのXサーバーを使用する場合は、使用しない-X
でください-Y
代わりに、ゲスト内ですでに実行されている X サーバーを指すように を定義しますDISPLAY
(場合によっては も定義します)。XAUTHORITY
(ほとんどの場合、ディスプレイは :0 ですが、Xauth パスは変更される可能性があるため、ゲスト内の「ローカル」端末から DISPLAY 値と XAUTHORITY 値を確認する必要があります。最近のバージョンでは、この情報も見つかる場合があります。systemctl --user show-environment
これは信頼できるソースです。)
しかし、SSH 経由でホスト上の X ウィンドウを表示しながらゲストの仮想 GPU を使用したい場合は、GLX を使用できず、EGL ベースのソフトウェアが必要になる可能性があります ( eglinfo
virgl GPU にアクセスできるかどうかを確認してください)。
あるいは、ゲスト上でアプリケーションを実行し、VNC (x0vncserver) または Qemu の SPICE リモート プロトコル (VNC/RDP と同様にネットワーク経由で使用可能) を介して制御します。