LC_ALL=C lscpu | grep Virtualization
Erwartete Ausgabe: Virtualization: VT-x
für Intel oder Virtualization: AMD-V
für AMD
lsmod | grep kvm
Erwartete Ausgabe: Bei Intel solltest du kvm_intel
und kvm
sehen. Bei AMD solltest du kvm_amd
und kvm
sehen
zgrep CONFIG_KVM /proc/config.gz
Meine Ausgabe:
CONFIG_KVM_GUEST=y # Grundlegende KVM-Unterstützung für Gast-Systeme CONFIG_KVM_COMMON=y # Gemeinsame KVM-Funktionen CONFIG_KVM_MMIO=y # Memory-Mapped I/O Unterstützung CONFIG_KVM_ASYNC_PF=y # Asynchrone Page Faults - verbessert die Performance CONFIG_KVM_VFIO=y # VFIO Unterstützung für PCI-Passthrough CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y # Schutz für Dirty-Log Lesezugriffe CONFIG_KVM_GENERIC_PRE_FAULT_MEMORY=y # Vorab-Speicherreservierung für bessere Performance CONFIG_KVM_COMPAT=y # Kompatibilitätsmodus für 32/64-bit CONFIG_KVM_XFER_TO_GUEST_WORK=y # Unterstützung für Arbeitstransfer zum Gast CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y # Generische Hardware-Aktivierung CONFIG_KVM_GENERIC_MMU_NOTIFIER=y # MMU (Memory Management Unit) Benachrichtigungen CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES=y # Verwaltung von Speicherattributen CONFIG_KVM_PRIVATE_MEM=y # Privater Speicher für VMs CONFIG_KVM_GENERIC_PRIVATE_MEM=y # Privater Speicher für VMs CONFIG_KVM=m # Haupt-KVM-Modul (als Modul kompiliert) CONFIG_KVM_INTEL=m # CPU-spezifische Module CONFIG_KVM_AMD=m # CPU-spezifische Module CONFIG_KVM_AMD_SEV=y # AMD SEV (Secure Encrypted Virtualization) CONFIG_KVM_SMM=y # System Management Mode Unterstützung CONFIG_KVM_HYPERV=y # Hyper-V Kompatibilität CONFIG_KVM_XEN=y # Xen Kompatibilität CONFIG_KVM_EXTERNAL_WRITE_TRACKING=y # Externes Write-Tracking CONFIG_KVM_MAX_NR_VCPUS=1024 # Maximale Anzahl virtueller CPUs pro VM
sudo pacman -S qemu-full virt-manager virt-viewer dnsmasq bridge-utils openbsd-netcat ebtables dmidecode
Packetname | Kurzbeschreibung | Quelle | größe |
---|---|---|---|
qemu-full | Komplettes QEMU/KVM Virtualisierungspaket | pacman | 900M |
virt-manager | Grafische Benutzeroberfläche zur VM-Verwaltung | pacman | 100M |
virt-viewer | Programm zum Anzeigen der VM-Bildschirme | pacman | 2M |
dnsmasq | DHCP- und DNS-Server für das VM-Netzwerk | pacman | 2M |
vde2 | Virtual Distributed Ethernet - für virtuelle Netzwerke | sarbs | |
bridge-utils | Tools für Netzwerk-Bridging | pacman | 0,1M |
openbsd-netcat | Netzwerk-Utility für VM-Verbindungen | pacman | 0,1M |
libvirt | API und Daemon zur VM-Verwaltung | sarbs | 50M |
iptables | Firewall-Tools für Netzwerkregeln der VMs | sarbs | |
dmidecode | Tool zum Auslesen von DMI/SMBIOS-Hardwareinformationen | pacman | 0,2M |
Wenn alles korrekt eingerichtet ist, sollte die Datei /dev/kvm existieren und die richtigen Berechtigungen haben. Du kannst dies prüfen mit:
ls -l /dev/kvm
crw-rw-rw- 1 root kvm 10, 232 12. Nov 13:00 /dev/kvm
Aktiviert den Service für den automatischen Start beim Booten
sudo systemctl enable libvirtd.service
Startet den Service sofort
sudo systemctl start libvirtd.service
sudo systemctl status libvirtd.service
● libvirtd.service - libvirt legacy monolithic daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: disabled) Active: active (running) since Tue 2024-11-12 13:17:02 -03; 26s ago Invocation: 550bd630a56448cab6f4b3f5a49ac4ff TriggeredBy: ● libvirtd.socket ● libvirtd-admin.socket ● libvirtd-ro.socket Docs: man:libvirtd(8) https://libvirt.org/ Main PID: 2233921 (libvirtd) Tasks: 21 (limit: 32768) Memory: 9.4M (peak: 9.8M) CPU: 373ms CGroup: /system.slice/libvirtd.service └─2233921 /usr/bin/libvirtd --timeout 120
Folgende Gruppen müssen eingerichtet werden, damit VMs ohne root-Rechte verwaltet werden können.
Basis-Gruppen für die VM-Verwaltung:
sudo usermod -aG libvirt $(whoami) # Grundlegende libvirt-Verwaltung sudo usermod -aG kvm $(whoami) # KVM-Virtualisierung
Zusätzliche Gruppen für erweiterte Funktionen:
sudo usermod -aG input $(whoami) # Für USB-Geräte und Input-Durchreichung sudo usermod -aG disk $(whoami) # Für Festplatten-Durchreichung (mit Vorsicht!)
newgrp libvirt newgrp kvm newgrp input
Aktuelle Gruppenmitgliedschaften anzeigen:
groups $(whoami)
Sicherheitshinweise für gruppe disk
disk
wird nicht empfohlen, außer sie wird explizit benötigt
gpasswd -d user gruppe
entfernt werden
Falls keine Berechtigung für VM-Verwaltung:
Neustart
Die Netzwerkkonfiguration ist essentiell für die Kommunikation der virtuellen Maschinen.
Das "default" Netzwerk bietet:
Netzwerk starten:
sudo virsh net-start default
Autostart aktivieren:
sudo virsh net-autostart default
Status prüfen:
sudo virsh net-list --all
Erwartete Ausgabe:
Name Status Automatischer Start Bleibend ---------------------------------------------------- default Aktiv ja ja
Bridge-Interface prüfen:
ip addr show virbr0
Ausgabe:
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:fc:3f:63 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever
Detaillierte Netzwerkkonfiguration:
sudo virsh net-dumpxml default
Ausgabe:
<network> <name>default</name> <uuid>ab9b0a05-3458-439a-9d71-d264d838cb78</uuid> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:fc:3f:63'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network>
Falls das Netzwerk nicht startet:
systemctl status libvirtd
groups | grep libvirt
journalctl -u libvirtd