Skip to content

Arch Linux Virtualization

Mattscreative edited this page Dec 5, 2025 · 2 revisions

Arch Linux Virtualization Guide

Complete beginner-friendly guide to virtualization on Arch Linux, including QEMU/KVM, VirtualBox, Docker, and container management.


Table of Contents

  1. Understanding Virtualization
  2. QEMU/KVM Setup
  3. VirtualBox Setup
  4. Docker Setup
  5. Container Management
  6. GPU Passthrough
  7. Troubleshooting

Understanding Virtualization

What is Virtualization?

Virtualization runs multiple operating systems on one machine.

Types:

  • Full virtualization: Complete OS (QEMU/KVM, VirtualBox)
  • Containers: Lightweight (Docker, Podman)
  • Paravirtualization: Optimized (Xen)

Virtualization Options

Available solutions:

  • QEMU/KVM: Native Linux virtualization
  • VirtualBox: Cross-platform
  • Docker: Container platform
  • Podman: Docker alternative

QEMU/KVM Setup

Install QEMU/KVM

Install packages:

# Install QEMU/KVM
sudo pacman -S qemu virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat

# Install libvirt
sudo pacman -S libvirt libvirt-glib

# Enable services
sudo systemctl enable libvirtd
sudo systemctl start libvirtd

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

Create VM

Using virt-manager:

  1. Open virt-manager
  2. File > New Virtual Machine
  3. Select installation source
  4. Configure resources
  5. Create and install

Using CLI:

# Create VM
virt-install \
  --name myvm \
  --ram 2048 \
  --disk path=/var/lib/libvirt/images/myvm.qcow2,size=20 \
  --vcpus 2 \
  --os-type linux \
  --os-variant archlinux \
  --network bridge=virbr0 \
  --graphics vnc \
  --cdrom /path/to/iso

VirtualBox Setup

Install VirtualBox

Install VirtualBox:

# Install VirtualBox
sudo pacman -S virtualbox virtualbox-host-modules-arch

# For guest additions
sudo pacman -S virtualbox-guest-iso

Load Kernel Modules

Load modules:

# Load modules
sudo modprobe vboxdrv

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

VirtualBox Extension Pack

Install extension pack:

# Download from VirtualBox website
# Install via GUI: File > Preferences > Extensions

Create VM

Using VirtualBox:

  1. Open VirtualBox
  2. New > Create Virtual Machine
  3. Configure settings
  4. Start and install

Docker Setup

Install Docker

Install Docker:

# Install Docker
sudo pacman -S docker docker-compose

# Enable service
sudo systemctl enable docker
sudo systemctl start docker

Add User to Group

Add to docker group:

# Add user to group
sudo usermod -aG docker username

# Log out and back in

Docker Commands

Basic commands:

# Pull image
docker pull ubuntu

# Run container
docker run -it ubuntu

# List containers
docker ps -a

# List images
docker images

# Remove container
docker rm container-name

# Remove image
docker rmi image-name

Docker Compose

Use docker-compose:

# Create docker-compose.yml
vim docker-compose.yml

Example:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"

Run:

docker-compose up -d

Container Management

Podman (Docker Alternative)

Install Podman:

# Install Podman
sudo pacman -S podman podman-compose

# Run container
podman run -it ubuntu

LXC/LXD

Install LXC:

# Install LXC
sudo pacman -S lxc lxcfs

# Create container
sudo lxc-create -n mycontainer -t download

GPU Passthrough

Prerequisites

Requirements:

  • CPU with VT-d/AMD-V
  • Two GPUs (or integrated + dedicated)
  • IOMMU enabled

Enable IOMMU

Edit GRUB:

sudo vim /etc/default/grub

Add to GRUB_CMDLINE_LINUX_DEFAULT:

intel_iommu=on    # For Intel
amd_iommu=on      # For AMD

Regenerate GRUB:

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

Configure Passthrough

Find GPU:

# List PCI devices
lspci -nn | grep VGA

Configure VM:

# Edit VM XML
virsh edit myvm

Add GPU:

<hostdev mode='subsystem' type='pci' managed='yes'>
  <source>
    <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
  </source>
</hostdev>

Troubleshooting

QEMU/KVM Issues

Check libvirt:

# Check service
systemctl status libvirtd

# Check logs
journalctl -u libvirtd

VirtualBox Kernel Modules

Rebuild modules:

# Rebuild modules
sudo vboxreload

# Or reinstall
sudo pacman -S virtualbox-host-modules-arch

Docker Permissions

Fix permissions:

# Add to docker group
sudo usermod -aG docker username

# Restart Docker
sudo systemctl restart docker

Summary

This guide covered:

  1. Virtualization basics - Types and options
  2. QEMU/KVM - Native Linux virtualization
  3. VirtualBox - Cross-platform
  4. Docker - Containers
  5. Container management - Podman, LXC
  6. GPU passthrough - Advanced feature
  7. Troubleshooting - Common issues

Key Takeaways:

  • QEMU/KVM is native Linux solution
  • VirtualBox is cross-platform
  • Docker for containers
  • GPU passthrough requires IOMMU
  • Use virt-manager for GUI

Next Steps


This guide is based on the ArchWiki. For the most up-to-date information, always refer to the official ArchWiki.

Clone this wiki locally