私はArch Linuxを実行していますが、QEMU / KVMの使用に問題がありますvirt-manager
。この問題はgnome-boxes
。
解決する
このエラーはドライバに関連しています。opencl-amdgpu-pro-orca。この回答エラーが発生した背景について詳しく説明します。問題を解決した方法は次のとおりです。
- 実行する
sudo systemctl edit libvirtd
とナノが開きます。
override.conf
このコマンドは、サービスディレクトリに保存される一時ファイルを作成しますlibvirtd
。
- ファイルに次のように入力します(私の場合は空です)。
[Service]
Environment="LD_LIBRARY_PATH=/usr/lib"
- 再起動します。
libvirtd
sudo systemctl restart libvirtd
- 開いている
virt-manager
。このエラーは発生しないでください。
- 私がしたことは注目に値するいいえこれらの変更の後、再起動が必要です。
残りの質問については、後で詳しく説明します。
質問
virt-managerを開いた後、QEMU / KVMへの接続が正常に確立されたように見え、新しい仮想マシンを作成するオプションがあります。これを試みると、次のエラーが発生します。
警告:KVMは利用できません。これは、KVMパッケージがインストールされていないか、KVMカーネルモジュールがロードされていないことを意味できます。仮想マシンのパフォーマンスが低下している可能性があります。
丸太
journalctl -f
エラーを再現すると、次のものが返されます。
Oct 14 22:23:00 okcomputer libvirtd[35615]: internal error: Failed to start QEMU binary /usr/bin/qemu-system-x86_64 for probing: /usr/bin/qemu-system-x86_64: symbol lookup error: /usr/lib/libvirglrenderer.so.1: undefined symbol: gbm_bo_unmap
Oct 14 22:23:00 okcomputer libvirtd[35615]: Failed to probe capabilities for /usr/bin/qemu-system-x86_64: internal error: Failed to start QEMU binary /usr/bin/qemu-system-x86_64 for probing: /usr/bin/qemu-system-x86_64: symbol lookup error: /usr/lib/libvirglrenderer.so.1: undefined symbol: gbm_bo_unmap
研究と解決の試み
アーチスウィキ
これは一般的な質問のようで、私は広範な研究を行いました。最初は、Arch Wikiに従ってKVM、QEMU、libvirtページを順番に読みました。
キーボード仮想マシン
- 私のプロセッサする仮想化がサポートされアクティブになります。
私のBIOS(VT-xとVT-d)で仮想化サポートが有効になっています。
- これが問題かもしれません。- カーネルモジュール。実行
zgrep CONFIG_KVM /proc/config.gz
出力は次のとおりです。
CONFIG_KVM_GUEST=y
# CONFIG_KVM_DEBUG_FS is not set
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_KVM_VFIO=y
CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
CONFIG_KVM_COMPAT=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_AMD_SEV=y
CONFIG_KVM_MMU_AUDIT=y
lsmod | grep kvm
これを出力して下さい:
kvm_intel 311296 0
kvm 778240 1 kvm_intel
irqbypass 16384 1 kvm
0に設定されているようですが、kvm_intel
次の行の末尾に記載されています。確かに、私はカーネルモジュールがどのように機能するかを特によく知りませんが、モジュールのロードを試してみることにしましたが、sudo modprobe kvm_intel
何も返しません。これは私が知っている限り良い兆候です。走ることもsudo modprobe kvm
確かに同じです。
QEMU
- 他のパッケージと同様に、QEMUをインストールしました。
ライブラリ仮想マシン
- 他のパッケージと同様に、libvirtとvirt-managerをインストールしました。
ebtables
ソフトウェアがすべてインストールされ、dnsmasq
最新の状態であることを確認しました。- 以下を生成して
/etc/polkit-1/rules.d/50-libvirt.rules
ファイルに追加します。
/* Allow users in kvm group to manage the libvirt
daemon without authentication */
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage" &&
subject.isInGroup("kvm")) {
return polkit.Result.YES;
}
});
- 私は;を通して自分自身をグループに追加しました
kvm
。 (そしてlibvirt
オンラインのどこかで見たと思いますか?)useradd
これは以下を実行して確認できますgroups <username>
。
wheel kvm libvirt <username>
libvirtd
その後、サービスを有効にして起動し、再起動しvirtlogd
ました。virsh
その後、以下を除いて動作するかどうかをテストしましたvirt-manager
。virsh
以下を出力します。
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh #
さらなる研究
前述のように、これは一般的な問題であるように見えますが、多くのStack Exchangeの回答の指示に従って、通常同じ結果が発生します。
私は以下をテストしました。
KVMは利用できません。これは、KVMパッケージがインストールされていないか、KVMカーネルモジュールがロードされていないことを意味できます。
kvm_intel
Wikiによると、カーネルモジュールをロードしました。同じアドバイスが提供されます。この答え。
-
- BIOSで仮想化が有効になっていることを確認しました。
- サービスを有効にして開始しました
libvirtd
。
他の多くの記事や回答も同様のアドバイスを提供します。
ソフトウェア仕様
- コア5.3.5-arch1-1-ARCH(最新の基本 Arch カーネル)
- ライブラリ仮想マシン5.6.0-1
- 仮想管理者2.2.1-1
- QEMU4.1.0-2
- ポルキット0.116-3
ビデオ関連パッケージが関連しているかどうかはわかりませんが、過去には排他的なドライバに問題があることが証明されました。
- メサ192.2.1-1
- xf86-ビデオ-amdgpu19.0.1-1
- opencl-amdgpu-pro-orca19.30_855429-1
ハードウェア仕様
- CPUインテルi7 4790k
- マザーボードASUSマクシムスVIIヒーロー
必要な追加仕様は要求に応じて提供されます。
答え1
あなたの質問は次のとおりですopencl-amdgpu-pro-orca
。デフォルトの最新のAURバージョンでも、欠落している独自の
シンボルを提供します。libgbm.so.1
まず、検索パスに入力されます。
したがって、これらのドライバを無効にしたり、この機能を含む修正/更新バージョンをインポートまたはコンパイルしたり、libvirtd servcieのlib検索パスのみを無効にしたりできます(サービス起動プロセスにLD_LIBRARY_PATH = / usr / lib環境変数を追加する)。 )。
次の問題を分析する方法:
ldd /usr/lib/libvirglrenderer.so.1
ldd /usr/lib/libvirglrenderer.so.1|awk '$3!=""{print $3}'|while read file; do objdump -TC -j.text $file|grep gbm_bo_unmap && echo $file; done
LD_LIBRARY_PATH=/usr/lib ldd /usr/lib/libvirglrenderer.so.1|awk '$3!=""{print $3}'|while read file; do objdump -TC -j.text $file|grep gbm_bo_unmap && echo $file; done
答え2
Journalctl 出力には次のものが表示されます。
Oct 14 22:23:00 okcomputer libvirtd[35615]: Failed to probe capabilities for /usr/bin/qemu-system-x86_64: internal error: Failed to start QEMU binary /usr/bin/qemu-system-x86_64 for probing: /usr/bin/qemu-system-x86_64: symbol lookup error: /usr/lib/libvirglrenderer.so.1: undefined symbol: gbm_bo_unmap
実行してみると、/usr/bin/qemu-system-x86_64 -help
同じエラーが表示されることがあります。undefined symbol
これらのエラーは、インストールされているqemuのバージョンがビルドされた参照ライブラリのバージョンと一致しない場合に発生します。
Archの詳細はわかりませんが、Fedoraでは関連パッケージをvirglrenderer
May need to beupedと呼びます。
これはKVM is not available
、libvirt(および拡張virt-manager)がKVMが動作するために必要なホストアーキテクチャと一致する動作するqemuバージョンを見つけられなかったために発生します。
答え3
まあ、私は排他的なドライバを完全に削除して問題を「解決」しました。 GPUパススルーをVMに送信する予定なので、これは必要ないと思います。
変な状況ですね…