解決する

解決する

私はArch Linuxを実行していますが、QEMU / KVMの使用に問題がありますvirt-manager。この問題はgnome-boxes

解決する

このエラーはドライバに関連しています。opencl-amdgpu-pro-orcaこの回答エラーが発生した背景について詳しく説明します。問題を解決した方法は次のとおりです。

  1. 実行するsudo systemctl edit libvirtdとナノが開きます。
  • override.confこのコマンドは、サービスディレクトリに保存される一時ファイルを作成しますlibvirtd
  1. ファイルに次のように入力します(私の場合は空です)。
[Service]
Environment="LD_LIBRARY_PATH=/usr/lib"
  1. 再起動します。libvirtdsudo systemctl restart libvirtd
  2. 開いている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ページを順番に読みました。

キーボード仮想マシン

  1. 私のプロセッサする仮想化がサポートされアクティブになります。

私のBIOS(VT-xとVT-d)で仮想化サポートが有効になっています。

  1. これが問題かもしれません。- カーネルモジュール。実行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

  1. 他のパッケージと同様に、QEMUをインストールしました。

ライブラリ仮想マシン

  1. 他のパッケージと同様に、libvirtとvirt-managerをインストールしました。
  2. ebtablesソフトウェアがすべてインストールされ、dnsmasq最新の状態であることを確認しました。
  3. 以下を生成して/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;
    }
});
  1. 私は;を通して自分自身をグループに追加しましたkvm。 (そしてlibvirtオンラインのどこかで見たと思いますか?)useraddこれは以下を実行して確認できますgroups <username>

wheel kvm libvirt <username>

  1. libvirtdその後、サービスを有効にして起動し、再起動しvirtlogdました。

  2. virshその後、以下を除いて動作するかどうかをテストしましたvirt-managervirsh以下を出力します。

Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh #

さらなる研究

前述のように、これは一般的な問題であるように見えますが、多くのStack Exchangeの回答の指示に従って、通常同じ結果が発生します。

私は以下をテストしました。

他の多くの記事や回答も同様のアドバイスを提供します。

ソフトウェア仕様

  • コア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では関連パッケージをvirglrendererMay need to beupedと呼びます。

これはKVM is not available、libvirt(および拡張virt-manager)がKVMが動作するために必要なホストアーキテクチャと一致する動作するqemuバージョンを見つけられなかったために発生します。

答え3

まあ、私は排他的なドライバを完全に削除して問題を「解決」しました。 GPUパススルーをVMに送信する予定なので、これは必要ないと思います。

変な状況ですね…

関連情報