danielrosehill's picture
commit
279efce

Check Virtualization Setup

You are helping the user check if the system is properly set up to run virtualized workloads and remediate any issues.

Your tasks:

  1. Check if CPU supports virtualization:

    Intel (VT-x):

    grep -E "vmx" /proc/cpuinfo
    

    AMD (AMD-V):

    grep -E "svm" /proc/cpuinfo
    

    If no output, virtualization is not supported or not enabled in BIOS.

  2. Check if virtualization is enabled in BIOS:

    sudo apt install cpu-checker
    sudo kvm-ok
    

    If it says KVM can be used, virtualization is enabled. If not, user needs to enable it in BIOS/UEFI.

  3. Check current virtualization software:

    KVM/QEMU:

    which qemu-system-x86_64
    lsmod | grep kvm
    

    VirtualBox:

    which virtualbox
    VBoxManage --version
    

    VMware:

    which vmware
    systemctl status vmware
    

    Docker (containerization):

    docker --version
    systemctl status docker
    
  4. Check KVM kernel modules:

    lsmod | grep kvm
    

    Should show:

    • kvm_intel (for Intel)
    • kvm_amd (for AMD)
    • kvm (base module)

    If not loaded, try:

    sudo modprobe kvm
    sudo modprobe kvm_intel  # or kvm_amd
    
  5. Install KVM and related tools (if not installed):

    sudo apt update
    sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
    
  6. Check libvirt status:

    sudo systemctl status libvirtd
    

    If not running:

    sudo systemctl enable libvirtd
    sudo systemctl start libvirtd
    
  7. Add user to required groups:

    sudo usermod -aG libvirt $USER
    sudo usermod -aG kvm $USER
    

    User needs to log out and back in for group changes to take effect.

  8. Verify user permissions:

    groups
    

    Should include: libvirt and kvm

  9. Check libvirt connectivity:

    virsh list --all
    

    If permission denied, user is not in libvirt group or not logged back in.

  10. Check virtualization networking:

    Default network:

    virsh net-list --all
    

    If default network is not active:

    virsh net-start default
    virsh net-autostart default
    

    Bridge networking:

    ip link show
    brctl show  # if bridge-utils installed
    
  11. Check nested virtualization (if needed):

    For Intel:

    cat /sys/module/kvm_intel/parameters/nested
    

    For AMD:

    cat /sys/module/kvm_amd/parameters/nested
    

    If shows N or 0, nested virtualization is disabled.

    To enable:

    echo "options kvm_intel nested=1" | sudo tee /etc/modprobe.d/kvm-intel.conf
    # or for AMD:
    echo "options kvm_amd nested=1" | sudo tee /etc/modprobe.d/kvm-amd.conf
    

    Then reload:

    sudo modprobe -r kvm_intel
    sudo modprobe kvm_intel
    
  12. Check IOMMU for PCIe passthrough (if needed):

    dmesg | grep -i iommu
    

    If IOMMU is needed, add to kernel parameters in /etc/default/grub:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"
    # or for AMD:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on"
    

    Then update grub:

    sudo update-grub
    sudo reboot
    
  13. Check available storage pools:

    virsh pool-list --all
    

    Create default pool if needed:

    virsh pool-define-as default dir --target /var/lib/libvirt/images
    virsh pool-start default
    virsh pool-autostart default
    
  14. Check system resources for virtualization:

    free -h
    df -h /var/lib/libvirt/images
    cat /proc/cpuinfo | grep "processor" | wc -l
    

    Recommendations:

    • At least 4GB RAM for light VMs
    • At least 20GB free disk space
    • Multiple CPU cores recommended
  15. Test VM creation (small test):

    virt-install --name test-vm \
      --ram 512 \
      --disk size=1 \
      --cdrom /path/to/iso \
      --graphics vnc \
      --check all=off \
      --dry-run
    
  16. Check for conflicting virtualization: VirtualBox and KVM can sometimes conflict. Check if both are installed:

    dpkg -l | grep -E "virtualbox|qemu-kvm"
    

    VirtualBox kernel modules can conflict with KVM:

    lsmod | grep vbox
    
  17. Check virtualization acceleration:

    ls -l /dev/kvm
    

    Should be:

    crw-rw---- 1 root kvm /dev/kvm
    
  18. Install virt-manager (GUI) if desired:

    sudo apt install virt-manager
    

    Test launch:

    virt-manager
    
  19. Check for Secure Boot issues: Secure Boot can prevent some virtualization modules from loading:

    mokutil --sb-state
    

    If Secure Boot is enabled and causing issues, user may need to:

    • Sign modules
    • Disable Secure Boot in BIOS
    • Use signed versions
  20. Performance tuning:

    Enable hugepages for better performance:

    sudo sysctl vm.nr_hugepages=1024
    echo "vm.nr_hugepages=1024" | sudo tee -a /etc/sysctl.conf
    

    Check CPU governor:

    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    

    For virtualization, performance governor is recommended:

    sudo apt install cpufrequtils
    sudo cpufreq-set -g performance
    
  21. Report findings: Summarize:

    • CPU virtualization support status
    • BIOS/UEFI virtualization enabled status
    • KVM modules loaded status
    • libvirt status
    • User group membership
    • Network configuration
    • Nested virtualization status
    • Storage pools status
    • Available resources
    • Any conflicts or issues
    • Recommendations
  22. Provide recommendations:

    • Enable VT-x/AMD-V in BIOS if not enabled
    • Install KVM/QEMU if not present
    • Add user to libvirt and kvm groups
    • Set up default network
    • Enable nested virtualization if needed
    • Configure IOMMU for PCIe passthrough if needed
    • Install virt-manager for GUI management
    • Allocate sufficient resources
    • Resolve any conflicts (VirtualBox vs KVM)
    • Performance tuning suggestions
  23. Basic virtualization commands to share:

    • virsh list --all - List all VMs
    • virsh start <vm> - Start a VM
    • virsh shutdown <vm> - Shutdown a VM
    • virsh destroy <vm> - Force stop a VM
    • virsh console <vm> - Connect to VM console
    • virsh net-list - List networks
    • virsh pool-list - List storage pools
    • virt-manager - Launch GUI
    • virt-install - Create new VM from command line

Important notes:

  • Virtualization must be enabled in BIOS/UEFI
  • User must be in kvm and libvirt groups
  • Log out and back in after adding to groups
  • VirtualBox and KVM can conflict
  • Nested virtualization is disabled by default
  • IOMMU required for PCIe passthrough
  • Secure Boot may prevent module loading
  • Sufficient RAM and disk space needed
  • Performance governor recommended for VMs
  • Check if system is itself a VM before enabling nested virtualization