Agent skill
virtualization
GPU passthrough and virtualization for Bazzite. KVM/VFIO setup, Looking Glass (kvmfr), USB hotplug for VMs, and libvirt configuration. Use when users need GPU passthrough or advanced virtualization features.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/product/virtualization
SKILL.md
Virtualization - Bazzite GPU Passthrough & KVM
Overview
Advanced virtualization features for Bazzite including KVM, VFIO GPU passthrough, Looking Glass (kvmfr), and USB hotplug for VMs.
Quick Reference
| Command | Description |
|---|---|
ujust setup-virtualization |
Main virtualization setup |
ujust setup-virtualization virt-on |
Enable KVM/libvirt |
ujust setup-virtualization virt-off |
Disable KVM/libvirt |
ujust setup-virtualization vfio-on |
Enable VFIO passthrough |
ujust setup-virtualization vfio-off |
Disable VFIO passthrough |
ujust setup-virtualization kvmfr |
Setup Looking Glass |
ujust setup-virtualization usbhp-on |
Enable USB hotplug |
ujust setup-virtualization usbhp-off |
Disable USB hotplug |
KVM/Libvirt
Enable Virtualization
# Enable KVM and libvirt
ujust setup-virtualization virt-on
Enables:
- libvirtd service
- User permissions for VMs
- Default network
- QEMU/KVM backend
Disable Virtualization
# Disable KVM and libvirt
ujust setup-virtualization virt-off
VFIO GPU Passthrough
Enable VFIO
# Enable VFIO for GPU passthrough
ujust setup-virtualization vfio-on
What VFIO does:
- Isolates GPU from host
- Passes GPU directly to VM
- Near-native GPU performance in VM
Requirements:
- Two GPUs (or iGPU + dGPU)
- IOMMU support (VT-d or AMD-Vi)
- Supported GPU
Disable VFIO
# Disable VFIO passthrough
ujust setup-virtualization vfio-off
Returns GPU to host control.
Looking Glass (kvmfr)
Setup kvmfr
# Setup Looking Glass shared memory
ujust setup-virtualization kvmfr
Looking Glass:
- Zero-copy GPU framebuffer sharing
- Near-zero latency display
- No GPU encoding needed
- Mouse/keyboard passthrough
Requirements:
- Windows VM with GPU passthrough
- Looking Glass host app
- IVSHMEM device in VM
Using Looking Glass
- Host: Run
looking-glass-client - VM: Run Looking Glass host service
- Connect via shared memory
USB Hotplug
Enable USB Hotplug
# Enable USB device hotplug for VMs
ujust setup-virtualization usbhp-on
Allows:
- Hot-add USB devices to running VMs
- Dynamic USB device assignment
- No VM restart needed
Disable USB Hotplug
ujust setup-virtualization usbhp-off
Common Workflows
Basic VM Setup
# Enable virtualization
ujust setup-virtualization virt-on
# Use virt-manager for GUI
virt-manager
Gaming VM with GPU Passthrough
# 1. Enable VFIO
ujust setup-virtualization vfio-on
# 2. Reboot (GPU now isolated)
systemctl reboot
# 3. Create VM with GPU
# In virt-manager: Add PCI device (GPU)
# 4. Optional: Setup Looking Glass
ujust setup-virtualization kvmfr
Dynamic USB Access
# Enable USB hotplug
ujust setup-virtualization usbhp-on
# In running VM:
# - Right-click VM in virt-manager
# - Add Hardware > USB Host Device
# - Select device
IOMMU Groups
Check IOMMU
# Verify IOMMU enabled
dmesg | grep -i iommu
# List IOMMU groups
for d in /sys/kernel/iommu_groups/*/devices/*; do
n=${d#*/iommu_groups/*}; n=${n%%/*}
printf 'IOMMU Group %s ' "$n"
lspci -nns "${d##*/}"
done
GPU IOMMU Group
# Find GPU group
lspci -nn | grep -i nvidia
# or
lspci -nn | grep -i amd
Ideal: GPU alone in IOMMU group. If not, may need ACS override patch.
VM Management
Virsh Commands
# List VMs
virsh list --all
# Start VM
virsh start <vm-name>
# Shutdown VM
virsh shutdown <vm-name>
# Force off
virsh destroy <vm-name>
GUI Management
# virt-manager (GUI)
virt-manager
# GNOME Boxes (simpler)
gnome-boxes
Troubleshooting
VFIO Not Binding GPU
Check IOMMU:
dmesg | grep -i iommu
# Should show "IOMMU enabled"
Enable in BIOS:
- Intel: VT-d
- AMD: AMD-Vi / IOMMU
Check binding:
lspci -nnk | grep -A3 "VGA\|Audio"
# Kernel driver should be vfio-pci
Looking Glass Black Screen
Check IVSHMEM:
# In VM, verify IVSHMEM device exists
# Check Looking Glass host logs
Verify shared memory:
ls -la /dev/shm/looking-glass
USB Device Not Passing Through
Check permissions:
# User in libvirt group?
groups $USER
Check device:
lsusb
# Identify device ID
VM Won't Start After VFIO
GPU still attached to host:
# Verify VFIO binding
lspci -nnk | grep -A3 "VGA"
# Should show: Kernel driver in use: vfio-pci
Reboot may be needed after vfio-on.
Cross-References
- bazzite-ai:vm - QCOW2 VM management
- bazzite:gpu - GPU driver configuration
- bazzite-ai:configure - libvirtd service
When to Use This Skill
Use when the user asks about:
- "GPU passthrough", "VFIO", "pass GPU to VM"
- "Looking Glass", "kvmfr", "VM display"
- "KVM", "libvirt", "virtualization"
- "USB hotplug", "pass USB to VM"
- "gaming VM", "Windows VM", "VM performance"
- "IOMMU", "VT-d", "AMD-Vi"
Didn't find tool you were looking for?