danielrosehill's picture
commit
279efce
|
Raw
History Blame Contribute Delete
7.36 kB

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