Hello.
I've tried to compile a custom libvirt+libvirt-python+virt-manager stack following these tutorials :
on my jetson nano (arm64 + ubuntu 18.04)
In details,these are the steps that I did :
1) Install Git and clone both upstream libvirt and qemu repos.
git clone https://github.com/qemu/qemu.git
git clone https://github.com/libvirt/libvirt.git
2) Configure and build the qemu code and then install the qemu code. The make install command creates the binary files in the /usr/local directory.
cd qemu
mkdir -p build
cd build
../configure --prefix=/usr/local --target-list=aarch64-softmmu,arm-softmmu --enable-guest-agent --enable-vnc --enable-vnc-jpeg --enable-vnc-png --enable-kvm --enable-spice --enable-sdl --enable-gtk --enable-virglrenderer --enable-opengl
make -j
sudo make install
3) Configure and build libvirt and then install the libvirt code. Libvirt_build contains the log and configuration files for the daemons and the qemu driver.
cd ~/Desktop/zi/Work/I9/libvirt
mkdir -p libvirt_build
cd libvirt
$ meson build --prefix=~/Desktop/zi/Work/I9/libvirt/libvirt_build
$ ninja -C build
$ sudo ninja -C build install
4) Run the following commands from the $HOME/libvirt/build directory to start the libvirt daemon (libvirtd).
~/Desktop/zi/Work/I9/libvirt/build# sudo ./run src/virtlockd & sudo ./run src/virtlogd & sudo ./run src/libvirtd
5) Here is the output of the virt process running in my system.
root@zi-desktop:~/Desktop/zi/Work/I9/libvirt# ps axf | grep virt
30925 pts/0 S 0:00 | \_ sudo ./run src/virtlockd
30929 pts/0 S 0:00 | | \_ src/virtlockd
30926 pts/0 S 0:00 | \_ sudo ./run src/virtlogd
30930 pts/0 S 0:00 | | \_ src/virtlogd
31201 pts/0 S 0:00 | \_ sudo ./run src/virtlockd
31205 pts/0 S 0:00 | | \_ src/virtlockd
31202 pts/0 S 0:00 | \_ sudo ./run src/virtlogd
31207 pts/0 S 0:00 | | \_ src/virtlogd
31204 pts/0 S+ 0:00 | \_ sudo ./run src/libvirtd
31206 pts/0 Sl+ 0:01 | \_ src/libvirtd
4732 pts/1 S+ 0:00 \_ grep --color=auto virt
31413 ? S 0:00 /usr/sbin/dnsmasq --conf-file=/root/Desktop/zi/Work/I9/libvirt/libvirt_build/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/home/zi/Desktop/Work/I9/libvirt/build/src/libvirt_leaseshelper
31426 ? S 0:00 \_ /usr/sbin/dnsmasq --conf-file=/root/Desktop/zi/Work/I9/libvirt/libvirt_build/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/home/zi/Desktop/Work/I9/libvirt/build/src/libvirt_leaseshelper
In this process, everything being run from ‘/usr/sbin’ is from the system based libvirt OS installation. The virt process that has been run as sudo is from custom libvirt. This indicates that you can have system-based libvirtd daemon and custom libvirtd daemon both running at the same time.
6) Install libvirt-python next because we need to use virt-manager and that requires libvirt python bindings
~/Desktop/zi/Work/I9/libvirt-python-7.3.0# export PKG_CONFIG_PATH=/home/zi/Desktop/Work/I9/libvirt/libvirt_build/lib/aarch64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH
~/Desktop/zi/Work/I9/libvirt-python-7.3.0# python setup.py build
# python setup.py install --root /home/zi/Desktop/Work/I9/libvirt/libvirt_build
ok
7) Then I've installed a custom virt-manager into the same location :
# cp -r virt-manager-3.2.0 /home/zi/Desktop/Work/I9/libvirt/src
# cd virt-manager-3.2.0
# python setup.py install --root /home/zi/Desktop/Work/I9/libvirt/libvirt_build
Finally I've put all in my $PATH:
CUSTOM_ROOT=/home/zi/Desktop/Work/I9/libvirt/libvirt_build
export PATH=$CUSTOM_ROOT/bin:$PATH
export PATH=$CUSTOM_ROOT/usr/bin:$PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/zi/Desktop/Work:/root/Desktop/turbovnc/jtx1_remote_access/tmp/turbovnc-build/bin/:/root/Desktop/turbovnc/jtx1_remote_access/tmp/virtualgl-build/bin:/home/zi/Desktop/Work/I9/libvirt/libvirt_build/bin:/home/zi/Desktop/Work/I9/libvirt/libvirt_build/usr/bin
# /home/zi/Desktop/Work/I9/libvirt/libvirt_build/usr/bin# ./virt-manager
Unfortunately,the virt-manager does not work.
/home/zi/Desktop/Work/I9/libvirt/libvirt_build/usr/bin# ./virt-manager
Traceback (most recent call last):
File "./virt-manager", line 6, in <module>
from virtManager import virt manager
ModuleNotFoundError: No module named 'virtManager'
/home/zi/Desktop/Work/I9/libvirt/libvirt_build/usr/bin# virt-manager
Traceback (most recent call last):
File "/home/zi/Desktop/Work/I9/libvirt/libvirt_build/usr/bin/virt-manager", line 6, in <module>
from virtManager import virt manager
ModuleNotFoundError: No module named 'virtManager'
What can I do now ?
--
Mario.