私はARM Chromebookモデル「xe303c12」でDebian bookwormを実行しており、KVMを有効にするためにカーネルを再コンパイルしたので、システムの音は次のようになります。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
$ uname -a
Linux chromarietto 5.4.244-stb-cbe
#8 SMP PREEMPT Sat Aug 19 22:19:32 UTC 2023 armv7l GNU/Linux
$ uname -r
5.4.244-stb-cbe
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
$ qemu-system-arm --version
QEMU emulator version 5.1.0 (v5.1.0-dirty)
Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers
$ python3 --version
Python 3.11.2
qemu、kvm、およびlibvirtを一緒に接続して、Arm 32ビット用のFreeBSD 13.2を仮想化できるという究極の目標で、ソースからlibvirt 9.7.0、qemu 5.1、virt-managerをインストールしました。ソースからすべてを再コンパイルした理由を尋ねると、私の答えは複雑になります。簡単に言えば、不明な理由で次のエラーが報告されます。
"Warning : Failed to set up UEFI /
The Libvirt version does not support UEFI /
Install options are limited"
だから私は最も複雑なパスを選択しました。すべてを最初からコンパイルすることです。
以下に、私がフォローしてきたプロセス全体を投稿して、何が間違っているのかをよく理解することができました。
$ apt build-dep libvirt
$ git clone https://github.com/libvirt/libvirt.git
Cloning into 'libvirt'...
$ cd libvirt
$ meson setup build
$ ninja -C build
$ ninja -C build install
$ which virsh
/usr/local/bin/virsh
$ which libvirtd
/usr/local/sbin/libvirtd
$ apt install libgtk-3-dev libpulse-dev libgbm-dev libspice-protocol-dev \
libspice-server-dev libusb-1.0-0-dev libepoxy-dev libfdt-dev
$ git clone -b v5.1.0 http://git.qemu.org/qemu.git
$ cd qemu-v5.1.0
$ git submodule add -f https://git.kernel.org/pub/scm/utils/dtc/dtc.git dtc
$ ./configure --disable-werror --target-list=arm-softmmu \
--enable-opengl --enable-gtk --enable-kvm --enable-guest-agent \
--enable-spice --audio-drv-list="oss pa" --enable-libusb \
--enable-trace-backend=simple --enable-debug
$ make
$ make install
$ git clone https://github.com/virt-manager/virt-manager.git
$ apt install gobject-introspection libosinfo-1.0-0 libosinfo-1.0-dev \
gir1.2-libosinfo-1.0 libvirt-glib-1.0-dev
$ cd virt-manager
$ ./setup.py configure --prefix=/usr/local
$ sudo ./setup.py install
$ sudo usermod -a -G libvirt root
$ sudo usermod -a -G libvirtd root
$ sudo usermod -a -G libvirt-qemu libvirt-qemu
$ sudo usermod -a -G libvirt marietto
$ sudo adduser libvirt-qemu
$ sudo groupadd --system libvirt
$ sudo groupadd --system libvirt-qemu
$ sudo newgrp libvirt-qemu
$ newgrp libvirt
$ /usr/local/sbin# libvirtd &
[1] 2875
$ /usr/local/sbin# virtqemud &
info : libvirt version: 9.7.0 info :
hostname: chromarietto error : virPidFileAcquirePathFull:409
Failed to acquire pid file : /var/local/run/libvirt/qemu/driver.pid
Resource temporarily unavailable error : virStateInitialize:672 :
Initialization of QEMU state driver failed
Failed to acquire pid file : /var/local/run/libvirt/qemu/driver.pid
Resource temporarily unavailable error : daemonRunStateInit:617 :
Driver state initialization failed
$ /usr/local/sbin# ps ax | grep libvirt
2875 pts/0 Sl 0:00 libvirtd
$ /usr/local/sbin# ps ax | grep virtqemu
nothing
If I do the opposite way :
$ /usr/local/sbin# virtqemud &
$ /usr/local/sbin# ps ax | grep virtqemu
3041 pts/0 Sl 0:00 virtqemud
$ /usr/local/sbin# libvirtd &
info : libvirt version: 9.7.0 info :
hostname: chromarietto
error : virPidFileAcquirePathFull:409
Failed to acquire pid file : /var/local/run/libvirt/qemu/driver.pid
Resource temporarily unavailable
virStateInitialize:672 : Initialization of QEMU state driver failed
Failed to acquire pid file : /var/local/run/libvirt/qemu/driver.pid
Resource temporarily unavailable daemon
RunStateInit:617 : Driver state initialization failed
$ /usr/local/sbin# ps ax | grep virtqemu
3041 pts/0 Sl 0:00 virtqemud
$ /usr/local/sbin# ps ax | grep libvirt
nothing
簡単に言えば、libvirtを起動してvirtqemuを起動すると、最初は自動的に閉じませんが、2番目は閉じます。 virtqemudを起動してlibvirtを起動すると、最初のものは自動的に閉じられませんが、2番目のものは自動的に終了します。したがって、これら2つのプロセスは互いに互換性がありませんが、同時に実行する必要があります。それ以外の場合、virt-manager はまったく機能せず、仮想マシンを実行できません。