A couple of weeks ago, I’ve wrote an article about how I’m (kinda) in love with gnome boxes. Well, I’m still working with gnome boxes every day. And that simpleness I’m kinda in love to comes with a cost: to do some things are the exact opposite to simple.
Here’s a small list of things that annoyed me and how I’ve solved it.
Even when the virtualization performance is “good”¹, it will be better¹ if you install those drivers and agent. Not only your VM would run smoother¹, they would enable features like automatic resolution switching, copy&paste between host and guest,…
¹ Disclaimer: I’ve didn’t run any benchmark on any of my VMs, so I can’t tell how “good” this performance is. I’m just gonna say that it feels fast enough.
Chances are that, if you followed the new VM wizard with the templates provided, you already have drivers and the agent running. But if you’ve installed an not-that-popular linux distribution, boxes will let you know that you need to install things:
This screenshot was taken to a VM running Devuan, a systemd-free Debian fork I’ve wrote about before. As with any Debian derivative, we install packages with apt-get:
apt-get install spice-vdagent xserver-xorg-video-qxl
Other linux distributions need both packages, the name would probably be the same or at least similar, and you need to use that distro package system (i.e. yum install) to install it.
You can always download the sources and compile by yourself of course. Download the sources from here https://www.spice-space.org/download.html under the Guest section.
On the same site you can download the guest tools, that include the qxl drivers. Under the windows binaries section just download spice-guest-tools installer and that would be all:
By default every VM is created with NAT networking. This means that your VMs will connect to the internet but not backwards (for example, you can’t even ping a vm).
If you want or need networking to the virtual machines you need to enable bridged network and this part is tricky. Also is the most annoying thing I’ve found in boxes. With VirtualBox you can do the same with 2 or 3 mouse clicks. But I’ll be still working with gnome boxes.
First enable libvirtd, on distros with systemd run:
# systemctl enable libvirtd.service; systemctl start libvirtd.service
Next enable default interfaces:
virsh net-autostart --network default virsh net-start default ip a show virbr0
Now create the file (if don’t exists) /etc/qemu/bridge.conf with the following content:
Now we need to set correct permissions on the executable qemu-bridge-helper. I’m using gentoo linux in my host, this binary executable lives on /usr/libexec/qemu-bridge-helper , on other distributions lives on /usr/lib/qemu-bridge-helper. Check permissions and owner with:
# ls -lh /usr/libexec/qemu-bridge-helper -rwx--x--x 1 root root 234K dic 19 19:38 /usr/libexec/qemu-bridge-helper
That file could belong to other groups like kvm or qemu. Make sure your user is part of that group. In this point a lot of tutorials says that you need add setsuid. I’ve also added setgid:
# chmod ug+s /usr/libexec/qemu-bridge-helper # ls -lh /usr/libexec/qemu-bridge-helper -rws--s--x 1 root root 234K dic 19 19:38 /usr/libexec/qemu-bridge-helper
It could happen, at least happened to me, that after some actualization those permissions revert to the default value and I couldn’t launch any VM anymore. It didn’t happened anymore once I’ve added my user to the root group (I don’t know which one is more dangerous, suid or my regular user member of root group). You’ll notice there is something wrong with permissions if you get an error like this:
error starting domain: internal error: /usr/libexec/qemu/qemu-bridge-helper --use-vnet --br=virbr0 --fd=28: failed to communicate with bridge helper: Transport endpoint is not connected stderr=failed to create tun device: Operation not permitted
The last step to get networking is to edit the xml file (right click on the vm → properties → system → edit xml) and change this section:
<interface type='user'> <mac address='52:54:00:0b:8f:07'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
<interface type="bridge"> <mac address="52:54:00:b8:0a:93"/> <source bridge="virbr0"/> <target dev="tap1"/> <model type="virtio"/> <alias name="net0"/> <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/> </interface>
For some reason the next VMs you make will be in bridge mode.
Virtual images location
Gnome boxes stores virtual images on the following location: ~/.local/share/gnome-boxes/images/ . ~ means home directory of your user.
This path isn’t supposed to change, but if you are running low on disk space or just want your VMs to live in other path you can always:
- mount another disk or filesystem on that path
- create the directory on another disk with enough space and then make that path a symbolic link
Also, if you want to backup your VM just copy the image from there to another place.