Inhoud
Introductie
We gaan KVM installeren, configureren en gebruiken op de Debian GNU/Linux 13 “Trixie. De bedoeling is alles KVM gerelateerd in /data/kvm te zetten en daarbij per VM een filesystem te hebben en tevens een filesystem te hebben om de ISO's te bewaren.
Bronnen
Voor mijn installatie zoals hieronder beschreven heb ik gebruik gemaakt van - beter goed gejat dan slecht verzonnen nietwaar? - de volgende bronnen:
Sommige dingen (zoals bijvoorbeeld het verhaal over supported guest OS'en) heb ik zelf toegevoegd…
Prerequisites
Het is wel van belang dat je CPU virtualisatie snapt. Dit kun je als volgt controleren:
michelle@lummel:~$ egrep --color '(vmx|svm)' /proc/cpuinfo
Je ziet voor iedere CPU(core) in je systeem als het goed is terugkomen of deze VMX (Intel) of SVM (AMD) ondersteund.
De bijpassende kernel-modules zijn dan als het goed is ook geladen:
michelle@lummel:~$ lsmod | grep kvm kvm_intel 413696 0 kvm 1396736 1 kvm_intel irqbypass 12288 1 kvm
If not, dan heb je 2 kansen:
- Je hardware snapt het echt niet
- E.e.a. staat uitgeschakeld in de UEFI/BIOS.
Dat laatste valt te verhelpen door je machine te rebooten en de instellingen van de UEFI/BIOS na te lopen. Het eerste is niet anders op te lossen dan door nieuwe hardware te kopen. Of - zoals ik - je werkgever te verzoeken om wat recentere laptop…
Ondersteunde Guest-VMs
Dit is een instinker waar niet iedereen direct bij stilstaat. Maar de grote OS-boeren vinden het tegenwoordig leuk om alleen recente CPU's te ondersteunen. Microsoft Windows 11 wil graag een X86-64-V2-AES CPU hebben en bij RedHat (IBM dus) willen ze zelfs een X86-64-V3 hebben voor RHEL10. Je kunt kijken wat jouw systeem ondersteund:
michelle@lummel:~$ /usr/lib64/ld-linux-x86-64.so.2 --help | tail -4 Subdirectories of glibc-hwcaps directories, in priority order: x86-64-v4 x86-64-v3 (supported, searched) x86-64-v2 (supported, searched)
In tegenstelling tot mijn ProxMox servertje kan dit ding dus wel RHEL10 draaien.
Voorbereidingen op het OS
Storage
Een filesystem voor de ISO's:
michelle@lummel:~$ sudo mkdir -p /data/kvm/iso michelle@lummel:~$ sudo lvcreate -L 2G -n lviso vgdata michelle@lummel:~$ sudo mkfs.ext4 -m 0 /dev/vgdata/lviso
En mijn eerste VM gaat lummelbout heten, dus daar ook wat storage voor:
michelle@lummel:~$ sudo mkdir -p /data/kvm/vm/lummelbout michelle@lummel:~$ sudo lvcreate -L 60G -n lvvmlummelbout vgdata michelle@lummel:~$ sudo mkfs.ext4 -m 0 /dev/vgdata/lvvmlummelbout
En dat mikken we in de fstab file:
michelle@lummel:~$ grep /data/kvm /etc/fstab /dev/mapper/vgdata-lviso /data/kvm/iso ext4 noatime,nodiratime 0 2 /dev/mapper/vgdata-lvvmlummelbout /data/kvm/vm/lummelbout ext4 noatime,nodiratime 0 2
En dat te mounten en dan de rechten op de mappen goed te zetten:
michelle@lummel:~$ sudo mount -a michelle@lummel:~$ sudo chgrp -R cdrom /data/kvm/iso michelle@lummel:~$ sudo chgrp -R kvm /data/kvm/vm michelle@lummel:~$ sudo chmod -R g+w /data/kvm/*
Account (groepen)
Omdat ik met mijn persoonlijke account dingen wil kunnen doen maak ik mezelf nog even lid van deze groepen:
michelle@lummel:~$ sudo usermod -a -G cdrom michelle michelle@lummel:~$ sudo usermod -a -G kvm michelle
RHEL ISO bestanden
Om wat te kunnen installeren heb je minimaal een ISO bestand nodig van een of ander OS. Ik wil met RHEL10 gaan spelen maar mogelijk ook een RHEL9 VM draaien als ik dat voor mijn werk nodig heb. Die heb ik dus gedownload en in de daarvoor aangemaakte map gezet:
michelle@lummel:~$ du -hs /data/kvm/iso/*.iso 817M /data/kvm/iso/rhel-10.0-x86_64-boot.iso 1,2G /data/kvm/iso/rhel-9.6-x86_64-boot.iso
Installatie
KVM (QEMU) installeren
Installeer de benodigde packages:
michelle@lummel:~$ sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils libvirt-daemon virt-install virt-viewer Let op, 'qemu-system-x86' wordt geselecteerd in plaats van 'qemu-kvm' Installeren: bridge-utils libvirt-clients libvirt-daemon libvirt-daemon-system qemu-system-x86 virt-install virt-viewer Installeren van vereisten: gir1.2-libosinfo-1.0 libglusterfs0 libosinfo-1.0-0 libusbredirhost1t64 libvirt-daemon-driver-storage libvte-2.91-common qemu-system-modules-spice ibverbs-providers libgtk-vnc-2.0-0 libosinfo-l10n libusbredirparser1t64 libvirt-daemon-driver-storage-disk mdevctl qemu-utils iptables libgvnc-1.0-0 libphodav-3.0-0 libvdeplug2t64 libvirt-daemon-driver-storage-iscsi netcat-openbsd seabios ipxe-qemu libibverbs1 libphodav-3.0-common libvirglrenderer1 libvirt-daemon-driver-storage-logical open-iscsi spice-client-glib-usb-acl-helper libblkio1 libip4tc2 libpmem1 libvirt-common libvirt-daemon-driver-storage-mpath osinfo-db swtpm libburn4t64 libip6tc2 librados2 libvirt-daemon-common libvirt-daemon-driver-storage-scsi ovmf swtpm-libs libcacard0 libiscsi7 librbd1 libvirt-daemon-config-network libvirt-daemon-lock passt swtpm-tools libcapstone5 libisns0t64 librdmacm1t64 libvirt-daemon-config-nwfilter libvirt-daemon-log python3-libvirt systemd-container libdaxctl1 libisoburn1t64 libslirp0 libvirt-daemon-driver-interface libvirt-daemon-plugin-lockd python3-libxml2 xorriso libexecs1 libisofs6t64 libspice-client-glib-2.0-8 libvirt-daemon-driver-network libvirt-glib-1.0-0 qemu-block-extra libfdt1 libjte2 libspice-client-gtk-3.0-5 libvirt-daemon-driver-nodedev libvirt-glib-1.0-data qemu-system-common libgfapi0 libndctl6 libspice-server1 libvirt-daemon-driver-nwfilter libvirt-l10n qemu-system-data libgfrpc0 libnss-mymachines libtpms0 libvirt-daemon-driver-qemu libvirt0 qemu-system-gui libgfxdr0 libopeniscsiusr liburing2 libvirt-daemon-driver-secret libvte-2.91-0 qemu-system-modules-opengl Voorgestelde pakketten: firewalld libvirt-login-shell libvirt-daemon-driver-storage-gluster libvirt-daemon-driver-storage-rbd libvirt-daemon-driver-vbox auditd numad vde2 python3-argcomplete jigit libvirt-clients-qemu libvirt-daemon-driver-lxc libvirt-daemon-driver-storage-iscsi-direct libvirt-daemon-driver-storage-zfs libvirt-daemon-driver-xen systemtap samba trousers xorriso-tcltk cdck Samenvatting: Opwaarderen: 0, Installeren: 100, Verwijderen: 0, Niet opwaarderen: 1 Downloadgrootte: 59,9 MB Benodigde ruimte: 251 MB / 8.375 MB beschikbaar Doorgaan? [J/n]
En zie dat de spulleboel in de basis draait:
michelle@lummel:~$ sudo systemctl status libvirtd [sudo] wachtwoord voor michelle: ○ libvirtd.service - libvirt legacy monolithic daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: enabled) Active: inactive (dead) since Thu 2025-07-17 19:32:18 CEST; 11min ago Duration: 2min 31ms Invocation: 5d9a747888ab4050934e7ef6fd204f57 TriggeredBy: ● libvirtd-ro.socket ● libvirtd.socket ● libvirtd-admin.socket Docs: man:libvirtd(8) https://libvirt.org/ Process: 16355 ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS (code=exited, status=0/SUCCESS) Main PID: 16355 (code=exited, status=0/SUCCESS) Mem peak: 9M CPU: 300ms jul 17 19:30:18 lummel systemd[1]: Starting libvirtd.service - libvirt legacy monolithic daemon... jul 17 19:30:18 lummel systemd[1]: Started libvirtd.service - libvirt legacy monolithic daemon. jul 17 19:32:18 lummel systemd[1]: libvirtd.service: Deactivated successfully.
GUI installatie
Mocht je een GUI erbij willen hebben installeer dan ook virt-manager:
michelle@lummel:~$ sudo apt install virt-manager Installeren: virt-manager Installeren van vereisten: gir1.2-gtk-vnc-2.0 gir1.2-gtksource-4 gir1.2-libvirt-glib-1.0 gir1.2-spiceclientglib-2.0 gir1.2-spiceclientgtk-3.0 gir1.2-vte-2.91 libgtksourceview-4-0 libgtksourceview-4-common python3-gi-cairo Voorgestelde pakketten: python3-guestfs Samenvatting: Opwaarderen: 0, Installeren: 10, Verwijderen: 0, Niet opwaarderen: 0 Downloadgrootte: 1.239 kB Benodigde ruimte: 7.903 kB / 7.759 MB beschikbaar Doorgaan? [J/n]