web-dev-qa-db-ja.com

libvirtエミュレーターの変更:許可が拒否されました

私のOSにパッケージされているQemuのバージョンであるDebianは、SpiceによるOpenGLアクセラレーションをサポートしていないようであるため、 this チュートリアルを使用してコンパイルしたQemuのバイナリを使用しようとしています。コンパイルが成功した後、<emulator>タグを/ usr/local/binにある新しいQemu実行可能ファイルへのパスに設定しようとしましたが、次のエラーが発生します。

error: internal error: Failed to probe QEMU binary with QMP: libvirt: error : cannot execute binary /usr/local/bin/qemu-2.12.1/x86_64-softmmu/qemu-system-x86_64: Permission denied

私のvirsh編集設定ファイルの「エミュレータ」部分は次のとおりです。

<emulator>/usr/bin/kvm</emulator>

ファイルのアクセス許可と所有権を変更して実験し、実行を許可するようにしました(chmod a+x)しかし、どれも機能していないようです。

QemuのOpenGLアクセラレーション機能を使用する他の方法がある場合は、私に知らせてください。

私は現在、Intel Core i5-8400で、統合GPUを使用して、「testing」リポジトリのvirt-manager、libvirt-daemon、およびqemu-kvmとともにDebianStretchを使用しています。 Qemuをコンパイルしたので、OpenGL3Dアクセラレーション機能を「libvirglrenderer」で使用できます。

1
wispi

Debianバスターで同じ問題を解決しました。 Apparmorは、コンパイルされたqemuバイナリへのアクセスを拒否していました。次のコマンドを使用して、システムでapparmorが有効になっているかどうかを確認できます。

Sudo aa-status

出力に次の行が含まれている場合、apparmorは確実に有効になっており、コンパイルされたバイナリにアクセスできるように構成する必要があります。

...
22 profiles are in enforce mode.
...
   /usr/sbin/libvirtd
...
3 processes are in enforce mode.
   /usr/sbin/libvirtd (1098)
...

Qemuバイナリを実行するためのlibvirtのapparmor権限を追加します。たとえば、configの最後の/etc/apparmor.d/usr.sbin.libvirtdシンボルの直前の'}'に次の行を配置することでそれを行うことができます。構成の終わりは次のようになります。

# ... skipped lines
  /usr/bin/kvm rmix,
  /usr/local/bin/qemu-2.12.1/x86_64-softmmu/qemu-system-x86_64 rmix,
}

おそらく、/etc/apparmor.d/abstractions/libvirt-qemuでqemuに同じapparmor権限を追加する必要もあります。

  /usr/bin/kvm rmix,
  /usr/local/bin/qemu-2.12.1/x86_64-softmmu/qemu-system-x86_64 rmix,

Sudo systemctl reload apparmorを使用してApparmorルールセットをリロードできます。記述されているApparmorルールの構文。たとえば、 ここ

1
alexcloud2