Sanallaştırma Desteğinin Kontrol Edilmesi
Öncelikle kurulum yapılacak makinede sanallaştırma desteğinin olduğundan emin olunmalıdır. Bunun için CPU çıktısında vmx (Intel VT-x) veya svm (AMD SVM) flag’lerinden birinin olup olmadığı kontrol edilebilir.
Kontrol için lscpu
komutunun çıktısını inceleyebiliriz. Komutun çıktısında Flags alanında makinedeki işlemcinin özelliklerine göre vmx veya svm flag’lerinden biri olmalıdır.

Kontrol için başka bir yöntem olarak /proc/cpuinfo
içerisinde vmx veya svm içeren satırları saydırabiliriz.
grep -E -c '(vmx|svm)' /proc/cpuinfo
Komutun çıktsında ekrana basılan sayı 1 veya daha fazlaysa makinedeki işlemci sanallaştırmayı destekliyor demektir. Eğer değilse sanallaştırma özelliği BIOS’dan açılmamış olabilir. Kontrol edip sanallaştırmayı açtıktan sonra işlemlere devam edilebilir.
Paket Kurulumları ve Ayarlamalar
Paket yöneticisini kullanarak gerekli paketleri yüklüyoruz.
sudo zypper install patterns-openSUSE-kvm_server patterns-server-kvm_tools
Yükleme tamamlandıktan sonra libvirtd
servisini makine açıldığında başlaması için enable ederek başlatıyoruz.
sudo systemctl enable --now libvirtd
Servisi başlattıktan sonra hem servisin başladığını hem de KVM‘in kernel modüllerinin yüklendiğini kontrol ediyoruz.
systemctl status libvirtd && lsmod | grep kvm

Servisin çalışmasında bir problem görünmüyorsa kendi kullanıcımızı libvirt grubuna ekliyoruz.
usermod -a -G libvirt <username>
Bu işlemden sonra ağ ayarı ve ilk makinenin kurulumuna geçebiliriz. Bu noktada makinede çalışan QEMU/KVM ile iletişim kurabileceğimiz iki farklı bağlantı adresi oluyor. Her kullanıcının kendisine ait olan qemu:///session
ve root kullanıcısına ait olan qemu:///system
. Hem daha fazlaya yetkiye sahip olmamız hem de sanal makine ayarlarının bütün kullanıcılar için geçerli olması için root kullanıcısına ait olan qemu:///system
adresini kullanıyoruz. İki bağlantı arasındaki fark için libvirt’in dökümantasyonuna bakabilirsiniz.
Terminalden virt komutlarını kullandığımızda varsayılan olarak qemu:///session
bağlantısını kullanıyoruz. Bunu değiştirmek için kullanıcımızın .bashrc
dosyasında varsayılan bağlantı değişkenini istediğimiz gibi tanımlıyoruz.
export LIBVIRT_DEFAULT_URI="qemu:///system"
Bu tanım sonrasında terminalden çalıştıracağımız komutlar varsayılan olarak bağlantıyı qemu:///system
adresine gerçekleştirecek. Kurulum sonrasında default
isminde bir sanal ağ hazır olarak geliyor. Bunun üzerinde istediğimiz düzenlemeleri yapıyoruz.
virsh net-edit default

İstediğimiz düzenlemeleri yaptıktan sonra bu ağı otomatik başlatmaya ekliyoruz.
virsh net-autostart default

Sanal Makine Kurulumu ve Klonlama
Yeni sanal makine kurmak için virt-install
komutunu kullanıyoruz.
virt-install -n "<sunucu_adı>" -r <ram_miktarı> --vcpus=<cpu_miktarı> --os-variant=<dağıtım> --accelerate -v -w network:<ağ_adı> --disk path=<diskin_oluşturulacağı_dizin>,size=<disk_boyutu>,format=raw,bus=virtio,cache=writeback --cdrom <iso_konumu>

Grafik arayüz ile sanal makinenin kurulumunu istediğimiz şekilde gerçekleştiriyoruz. Kurulum sonrasında makinenin konsoluna virsh console
ile bağlanabilmek için öncelikle sanal makineye virt-viewer
veya ssh
ile bağlanarak serial-getty@ttyS0
servisini başlatmamız gerekiyor.
systemctl enable --now serial-getty@ttyS0.service
Bu işlem sonrasında virsh console <makine_adi>
ile sanal makinenin konsoluna direkt olarak bağlanabiliriz.
Klonlamak istediğimiz şablon sanal makinenin kurulum işlemleri tamamlandıktan sonra makineyi kapatıyoruz. Klonlama işleminden önce sanal sunucunun diskinde kalan boş alanları tekrar kendi makinemize almak için sparsify
komutunu kullanıyoruz.
sudo virt-sparsify --in-place <disk_yolu>

Bu işlem sonrasında sanal makineyi klonluyoruz. Üzerinde istediğimiz değişiklikleri yaparak başlatıyoruz.
virt-clone --original "<klonlanacak_makine>" --name "<klon_makine>" --file <klon_makine_disk_yolu>/<klon_makine>.qcow2 --mac RANDOM
virsh edit <klon_makine>