-
-
Notifications
You must be signed in to change notification settings - Fork 2
Arch Linux Virtualization
Complete beginner-friendly guide to virtualization on Arch Linux, including QEMU/KVM, VirtualBox, Docker, and container management.
- Understanding Virtualization
- QEMU/KVM Setup
- VirtualBox Setup
- Docker Setup
- Container Management
- GPU Passthrough
- Troubleshooting
Virtualization runs multiple operating systems on one machine.
Types:
- Full virtualization: Complete OS (QEMU/KVM, VirtualBox)
- Containers: Lightweight (Docker, Podman)
- Paravirtualization: Optimized (Xen)
Available solutions:
- QEMU/KVM: Native Linux virtualization
- VirtualBox: Cross-platform
- Docker: Container platform
- Podman: Docker alternative
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 libvirtdAdd to libvirt group:
# Add user to group
sudo usermod -aG libvirt username
# Log out and back inGUI for VMs:
# Install virt-manager
sudo pacman -S virt-manager
# Launch
virt-managerUsing virt-manager:
- Open virt-manager
- File > New Virtual Machine
- Select installation source
- Configure resources
- 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/isoInstall VirtualBox:
# Install VirtualBox
sudo pacman -S virtualbox virtualbox-host-modules-arch
# For guest additions
sudo pacman -S virtualbox-guest-isoLoad modules:
# Load modules
sudo modprobe vboxdrv
# Enable at boot
echo "vboxdrv" | sudo tee -a /etc/modules-load.d/virtualbox.confInstall extension pack:
# Download from VirtualBox website
# Install via GUI: File > Preferences > ExtensionsUsing VirtualBox:
- Open VirtualBox
- New > Create Virtual Machine
- Configure settings
- Start and install
Install Docker:
# Install Docker
sudo pacman -S docker docker-compose
# Enable service
sudo systemctl enable docker
sudo systemctl start dockerAdd to docker group:
# Add user to group
sudo usermod -aG docker username
# Log out and back inBasic 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-nameUse docker-compose:
# Create docker-compose.yml
vim docker-compose.ymlExample:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"Run:
docker-compose up -dInstall Podman:
# Install Podman
sudo pacman -S podman podman-compose
# Run container
podman run -it ubuntuInstall LXC:
# Install LXC
sudo pacman -S lxc lxcfs
# Create container
sudo lxc-create -n mycontainer -t downloadRequirements:
- CPU with VT-d/AMD-V
- Two GPUs (or integrated + dedicated)
- IOMMU enabled
Edit GRUB:
sudo vim /etc/default/grubAdd to GRUB_CMDLINE_LINUX_DEFAULT:
intel_iommu=on # For Intel
amd_iommu=on # For AMD
Regenerate GRUB:
sudo grub-mkconfig -o /boot/grub/grub.cfgFind GPU:
# List PCI devices
lspci -nn | grep VGAConfigure VM:
# Edit VM XML
virsh edit myvmAdd GPU:
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
</hostdev>Check libvirt:
# Check service
systemctl status libvirtd
# Check logs
journalctl -u libvirtdRebuild modules:
# Rebuild modules
sudo vboxreload
# Or reinstall
sudo pacman -S virtualbox-host-modules-archFix permissions:
# Add to docker group
sudo usermod -aG docker username
# Restart Docker
sudo systemctl restart dockerThis guide covered:
- Virtualization basics - Types and options
- QEMU/KVM - Native Linux virtualization
- VirtualBox - Cross-platform
- Docker - Containers
- Container management - Podman, LXC
- GPU passthrough - Advanced feature
- 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
- Arch Linux System Configuration - System setup
- Arch Linux Graphics Drivers - GPU setup
- ArchWiki QEMU: https://wiki.archlinux.org/title/QEMU
- ArchWiki Docker: https://wiki.archlinux.org/title/Docker
This guide is based on the ArchWiki. For the most up-to-date information, always refer to the official ArchWiki.