Skip to content

Linux Virtualization

Mattscreative edited this page Dec 5, 2025 · 2 revisions

Linux Virtualization Guide

Complete beginner-friendly guide to virtualization on Linux, covering Arch Linux, CachyOS, and other distributions including QEMU/KVM, VirtualBox, Docker, container management, and GPU passthrough.


Table of Contents

  1. Understanding Virtualization
  2. QEMU/KVM Setup
  3. virt-manager Configuration
  4. VirtualBox Setup
  5. Docker Setup
  6. Container Management
  7. GPU Passthrough
  8. Performance Optimization
  9. Troubleshooting

Understanding Virtualization

What is Virtualization?

Virtualization allows running multiple operating systems on one computer.

What it does:

  • Creates VMs: Virtual machines (isolated environments)
  • Runs multiple OS: Different operating systems simultaneously
  • Isolates systems: VMs are separate from host
  • Resource sharing: Shares CPU, RAM, disk with host

Virtualization Types

Full virtualization:

  • QEMU/KVM: Hardware virtualization (Linux native)
  • VMware: Commercial virtualization
  • VirtualBox: Cross-platform virtualization

Container virtualization:

  • Docker: Application containers
  • Podman: Docker alternative
  • LXC: System containers

Benefits

Why use virtualization:

  • Testing: Test software safely
  • Isolation: Isolate applications
  • Multiple OS: Run different operating systems
  • Development: Development environments
  • Security: Isolated environments

QEMU/KVM Setup

Check Hardware Support

Check CPU virtualization support:

# Check CPU features
lscpu | grep -E "vmx|svm"

# Or
grep -E "vmx|svm" /proc/cpuinfo

What this does:

  • Checks CPU virtualization features
  • vmx: Intel VT-x
  • svm: AMD-V
  • Need one of these

Install QEMU/KVM

Install packages:

# Arch/CachyOS
sudo pacman -S qemu-full virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat

# Install libvirt
sudo pacman -S libvirt libvirt-glib

# Enable services
sudo systemctl enable --now libvirtd.service

Debian/Ubuntu:

sudo apt install qemu-kvm libvirt-daemon-system virt-manager

Fedora:

sudo dnf install @virtualization

Add User to Group

Add to libvirt group:

# Add user to group
sudo usermod -aG libvirt username

# Log out and back in

virt-manager

GUI for VMs:

# Install virt-manager
sudo pacman -S virt-manager

# Launch
virt-manager

VirtualBox Setup

Install VirtualBox

Install VirtualBox:

# Arch/CachyOS
sudo pacman -S virtualbox virtualbox-host-modules-arch

# Debian/Ubuntu
sudo apt install virtualbox

# Fedora
sudo dnf install VirtualBox

Enable VirtualBox

Load modules:

# Load modules
sudo modprobe vboxdrv

# Enable at boot
echo "vboxdrv" | sudo tee -a /etc/modules-load.d/virtualbox.conf

Docker Setup

Install Docker

Install Docker:

# Arch/CachyOS
sudo pacman -S docker

# Enable service
sudo systemctl enable docker
sudo systemctl start docker

# Add user to group
sudo usermod -aG docker username

Debian/Ubuntu:

sudo apt install docker.io

Fedora:

sudo dnf install docker

Docker Compose

Install Docker Compose:

# Arch/CachyOS
sudo pacman -S docker-compose

# Or use plugin
sudo pacman -S docker-compose-plugin

Container Management

Podman

Install Podman:

# Arch/CachyOS
sudo pacman -S podman

# Debian/Ubuntu
sudo apt install podman

# Fedora
sudo dnf install podman

Podman is a Docker alternative that doesn't require a daemon.


GPU Passthrough

Prerequisites

Requirements:

  • Two GPUs: One for host, one for VM
  • IOMMU enabled: In BIOS/UEFI
  • Kernel parameters: Enable IOMMU

Enable IOMMU

Edit GRUB:

# Edit GRUB
sudo vim /etc/default/grub

Add kernel parameters:

GRUB_CMDLINE_LINUX_DEFAULT="... intel_iommu=on"
# Or for AMD
GRUB_CMDLINE_LINUX_DEFAULT="... amd_iommu=on"

Regenerate:

sudo grub-mkconfig -o /boot/grub/grub.cfg

See Virt-manager Installation Guide for detailed GPU passthrough setup.


Performance Optimization

CPU Pinning

Pin CPU cores:

# In virt-manager
# CPU > Topology > Pinning

Memory Allocation

Allocate memory:

# In virt-manager
# Memory > Allocate memory

Troubleshooting

VM Not Starting

Check logs:

# Check libvirt logs
journalctl -u libvirtd

# Check VM logs
virsh dumpxml vm-name

Permission Issues

Check groups:

# Check groups
groups

# Should include: libvirt, kvm

Summary

This guide covered virtualization for Arch Linux, CachyOS, and other distributions, including QEMU/KVM, VirtualBox, Docker, and GPU passthrough.


Next Steps


This guide covers Arch Linux, CachyOS, and other Linux distributions. For distribution-specific details, refer to your distribution's documentation.

Clone this wiki locally