KVM (Kernel-based Virtual Machine)
KVM adalah solusi virtualisasi berbasis kernel Linux yang memungkinkan menjalankan virtual machine (VM) dengan performa mendekati native. KVM bekerja dengan mengubah Linux menjadi hypervisor tipe-1.
Persyaratan
Pastikan prosesor mendukung virtualisasi hardware:
# Intel
grep -c vmx /proc/cpuinfo
# AMD
grep -c svm /proc/cpuinfo
Jika output bernilai lebih dari 0, prosesor mendukung virtualisasi. Pastikan fitur ini juga sudah diaktifkan di BIOS/UEFI.
Cek apakah modul KVM sudah dimuat:
lsmod | grep kvm
Instalasi
Paket Utama
sudo xbps-install -S qemu
QEMU adalah emulator dan virtualizer yang bekerja bersama KVM untuk menjalankan VM dengan akselerasi hardware.
Paket Tambahan (Opsional)
| Paket | Fungsi |
|---|---|
libvirt | API dan daemon untuk mengelola VM |
virt-manager | GUI untuk mengelola VM via libvirt |
virt-viewer | Tampilan konsol VM (VNC/SPICE) |
edk2-ovmf | Firmware UEFI untuk VM |
spice-vdagent | Integrasi clipboard dan resolusi layar untuk SPICE |
sudo xbps-install -S libvirt virt-manager virt-viewer edk2-ovmf
Konfigurasi
Tambahkan Pengguna ke Grup yang Diperlukan
sudo usermod -aG kvm <nama_user>
sudo usermod -aG libvirt <nama_user> # Jika menggunakan libvirt
Login ulang agar perubahan grup diterapkan.
Aktifkan Layanan libvirt
ln -s /etc/sv/libvirtd /var/service/
ln -s /etc/sv/virtlogd /var/service/
Konfigurasi Jaringan (NAT)
libvirt secara default membuat jaringan NAT (virbr0) untuk VM. Aktifkan dan set agar otomatis start:
sudo virsh net-start default
sudo virsh net-autostart default
Konfigurasi Jaringan (Bridge)
Untuk VM yang bisa diakses di jaringan lokal seperti host, buat bridge interface. Tambahkan ke /etc/rc.local:
ip link add name br0 type bridge
ip link set eth0 master br0
ip link set eth0 up
ip link set br0 up
Membuat dan Menjalankan VM
Via QEMU Langsung (CLI)
Buat disk image untuk VM:
qemu-img create -f qcow2 vm-disk.qcow2 20G
Jalankan VM dengan akselerasi KVM:
qemu-system-x86_64 \
-enable-kvm \
-m 2G \
-smp 2 \
-drive file=vm-disk.qcow2,format=qcow2 \
-cdrom /path/ke/installer.iso \
-boot d \
-net nic \
-net user
Penjelasan opsi umum:
| Opsi | Keterangan |
|---|---|
-enable-kvm | Aktifkan akselerasi KVM |
-m 2G | Alokasi RAM untuk VM |
-smp 2 | Jumlah CPU virtual |
-drive | Disk image VM |
-cdrom | File ISO installer |
-boot d | Boot dari CD-ROM |
Via virt-manager (GUI)
Jalankan virt-manager dan ikuti wizard untuk membuat VM baru. virt-manager menyediakan antarmuka grafis untuk seluruh siklus hidup VM.
Via virsh (CLI libvirt)
# Lihat daftar VM
virsh list --all
# Jalankan VM
virsh start <nama_vm>
# Hentikan VM
virsh shutdown <nama_vm>
# Matikan paksa
virsh destroy <nama_vm>
# Hapus VM
virsh undefine <nama_vm> --remove-all-storage
VM dengan UEFI
Untuk VM yang membutuhkan firmware UEFI (contoh: Windows 11, distro modern):
Salin file VARS terlebih dahulu agar bisa ditulis per-VM:
cp /usr/share/edk2-ovmf/x64/OVMF_VARS.fd ./OVMF_VARS.fd
Jalankan VM:
qemu-system-x86_64 \
-enable-kvm \
-m 4G \
-smp 4 \
-drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=OVMF_VARS.fd \
-drive file=vm-disk.qcow2,format=qcow2
Berbagi File antara Host dan VM
Metode 9P (VirtFS)
Tambahkan opsi berikut ke perintah QEMU:
-fsdev local,security_model=passthrough,id=fsdev0,path=/path/di/host \
-device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=hostshare
Mount di dalam VM:
mount -t 9p -o trans=virtio hostshare /mnt/shared
Troubleshooting
KVM Permission Denied
ls -l /dev/kvm
# Output: crw-rw---- 1 root kvm ...
# Pastikan user sudah di grup kvm
groups <nama_user>
VM Lambat / Tidak Ada Akselerasi
Verifikasi KVM aktif di dalam VM:
cat /proc/cpuinfo | grep hypervisor
Pastikan perintah QEMU menggunakan -enable-kvm dan CPU virtual dengan model yang tepat:
-cpu host # Gunakan CPU host secara langsung (performa terbaik)
libvirtd Gagal Start
Periksa log:
cat /var/log/libvirt/libvirtd.log
Pastikan modul kernel sudah dimuat:
sudo modprobe kvm
sudo modprobe kvm_intel # Intel
# atau
sudo modprobe kvm_amd # AMD