I wanted to start using Vagrant, to create a virtual machine that would allow me to test different ArchLinux install scripts, window manager settings, etc… without messing up my machine.
That would make me start by loading the
archlinux/archlinux
box with the libvirt
integration, which needed me to install
libvirt
. I wanted to use KVM as an hypervisor for that, so I needed to
install QEMU for it, since KVM is a special operating mode of
QEMU.
To enable networking for the hypervisor, I needed to also install ebtables
and
dnsmasq
. In an other blog post, I will look into why we need those packages.
Let’s just accept that we need them for now.
I also wanted to be able to easily connect to a graphical interface, to see a
desktop. The easiest for that is to install virt-manager
Installing all of this is, on Arch linux, as easy as
pacman -S libvirt qemu virt-manager ebtables dnsmasq
You’ll then have to start (and enable) the libvirt
daemon
systemctl start libvirtd
systemctl enable libvirtd
Use virt-manager as a user ๐
Out of the box, virt-manager only allows users from the libvirt group to manage virtual machines. I added myself to the group
sudo usermod -aG libvirt <user>
Then re-logged, and launched virt-manager
.
Use KVM/QEMU in virt-manager ๐
By default, virt-manager is configured with only an LXC connection.
To get it to use QEMU/KVM
, go to Files > Add a connection
. Choose the
QEMU/KVM
hypervisor, then click connect. That will create the connection
to the hypervisor
Create first virtual machine ๐
Once this is all done, we can test that everything is working by creating a new
machine. I downloaded the ArchLinux ISO (see here on how I did it from the CLI),
then Add a new virtual machine
.
Choose Local install media
, then when asked to choose the ISO, click on
Browse
. Click on Browse Local
, and choose the ISO you just downloaded.
The installer will ask to fix permissions for you. This will change the ISO
file ownership to nobody:kvm
so that libvirt can access the file.
You can then click on continue, then finish at the end, and your machine will now launch !
What’s next ๐
This was done so that I can deploy a new machine using Vagrant and get an interface through the virt-manager. That’s what I will explore in a next post.
I learned a few tricks while writing this post, about image capture and
processing. I’ll explore a bit of
scrot
, that I
used to get the screenshots, and of
imagemagick
, that allowed me to stitch
the images together.