К основному содержанию
скилл CX Codex

qemu-kvm — скилл для Claude Code: QEMU, KVM и virtio

Ведёт агента по запуску виртуальных машин на QEMU с ускорением KVM: флаги, virtio-устройства, проброс VFIO и загрузка своих ядер.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill qemu-kvm -a claude-code
Открыть на GitHub

Что делает qemu-kvm

Скилл подсказывает агенту, как собрать команду qemu-system-x86_64 с -enable-kvm, -cpu host, нужным объёмом памяти и сетевым бэкендом. Отдельно разобраны virtio-устройства: диск virtio-blk-pci, сеть virtio-net-pci, динамическая память через virtio-balloon-pci и virtio-scsi. Для паравиртуальных устройств автор советует отказаться от эмулируемых — на них VM заметно медленнее.

Есть разделы про проброс устройств через VFIO, протокол QMP и управление через libvirt. Проброс требует включённого IOMMU: без intel_iommu=on или amd_iommu=on в командной строке ядра устройство не отвяжется от хостового драйвера. Для QMP скилл показывает сокет unix:/tmp/qmp.sock и команды вроде query-status и savevm, для libvirt — virsh define, virsh start, снимки и virt-install.

Отдельный блок — разработка ядра. Загрузка через -kernel, -initrd и -append обходится без установки системы на диск, а отладка идёт через GDB-стаб: -s -S открывает порт 1234 и ждёт подключения отладчика. В таблице проблем собраны типичные сбои: предупреждение об отключённом KVM, ошибка группы VFIO, паника ядра из-за неверного root= или отсутствующего драйвера в initrd.

Какие задачи решает

  • запустить Linux-виртуалку с аппаратным ускорением KVM
  • подобрать флаги qemu-system-x86_64 под нужную конфигурацию
  • пробросить GPU или сетевую карту в гостя через VFIO
  • управлять виртуалками из libvirt и virsh
  • загрузить собственное ядро без установки системы на диск

Примеры запросов агенту

  • собери команду qemu-system-x86_64 с KVM для Ubuntu на 4 ГБ памяти
  • настрой virtio-net и tap-интерфейс для виртуалки
  • запусти QEMU с -kernel bzImage и -append, чтобы протестировать моё ядро

Как установить qemu-kvm

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill qemu-kvm -a claude-code

2Вручную: положить файлы

~/.claude/skills/qemu-kvm/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/qemu-kvm/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о qemu-kvm

Как установить qemu-kvm в Claude?

Выполните npx skills add mohitmishra786/low-level-dev-skills --skill qemu-kvm -a claude-code. Скилл появится в ~/.claude/skills/qemu-kvm/SKILL.md.

Что делает скилл qemu-kvm?

Проводит агента по системной эмуляции QEMU и ускорению KVM: флаги, virtio-устройства, проброс VFIO, QMP-монитор, libvirt и загрузка ядра через -kernel -initrd -append.

Что нужно для проброса устройства через VFIO?

Включённый IOMMU — в командной строке ядра должно стоять intel_iommu=on или amd_iommu=on. Дальше устройство привязывают к vfio-pci и передают в QEMU через -device vfio-pci,host=01:00.0.

Исходный текст

SKILL.md · MIT
---
name: qemu-kvm
description: QEMU/KVM skill for virtualization and kernel development. Use when running qemu-system-x86_64 with KVM, configuring virtio devices, VFIO passthrough, QMP monitor, libvirt, or booting custom kernels. Activates on queries about QEMU, KVM, virtio, VFIO, virsh, virt-install, or -kernel -append.
---

# QEMU / KVM

## Purpose

Guide agents through QEMU system emulation and KVM acceleration: key `qemu-system-x86_64` flags, virtio devices, VFIO device passthrough, QMP monitor protocol, libvirt/virsh management, and QEMU for kernel development with `-kernel -initrd -append`.

## When to Use

- Running Linux VMs with hardware acceleration
- Testing custom kernels without bare metal
- Passing through GPU or NIC to a VM with VFIO
- Managing VMs with libvirt and virsh
- Creating VM snapshots for reproducible testing
- Developing kernel or bootloader with direct kernel boot

## Workflow

### 1. Basic KVM VM

```bash
# Check KVM support
egrep -c '(vmx|svm)' /proc/cpuinfo
ls -l /dev/kvm

# Minimal Ubuntu VM
qemu-system-x86_64 \
  -enable-kvm \
  -cpu host \
  -m 4096 \
  -smp 4 \
  -drive file=ubuntu.img,format=qcow2 \
  -netdev user,id=net0 \
  -device virtio-net-pci,netdev=net0 \
  -display none \
  -serial mon:stdio
```

| Flag | Purpose |
|------|---------|
| `-enable-kvm` | Use KVM acceleration |
| `-cpu host` | Pass through host CPU features |
| `-m` | RAM in MB |
| `-smp` | vCPU count |
| `-drive` | Disk image |
| `-netdev` / `-device` | Network backend |

### 2. virtio devices

```bash
# virtio-blk (paravirtual disk — faster)
-device virtio-blk-pci,drive=hd0 \
-drive if=none,id=hd0,file=disk.qcow2,format=qcow2

# virtio-net
-netdev tap,id=net0,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=net0

# virtio-balloon (dynamic memory)
-device virtio-balloon-pci

# virtio-scsi
-device virtio-scsi-pci,id=scsi0 \
-device scsi-hd,drive=hd0,bus=scsi0.0
```

Always prefer virtio over emulated devices for performance.

### 3. VFIO device passthrough

```bash
# Bind device to vfio-pci
echo 10de 1c03 | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id
sudo virsh nodedev-detach pci_0000_01_00_0

# QEMU with passthrough
qemu-system-x86_64 \
  -enable-kvm -m 8192 -smp 8 \
  -device vfio-pci,host=01:00.0 \
  ...
```

Requires IOMMU enabled (`intel_iommu=on` or `amd_iommu=on` in kernel cmdline).

### 4. QMP monitor

```bash
# Start with QMP socket
qemu-system-x86_64 ... \
  -qmp unix:/tmp/qmp.sock,server,nowait

# Send QMP commands
socat - UNIX-CONNECT:/tmp/qmp.sock
{"execute":"qmp_capabilities"}
{"execute":"query-status"}
{"execute":"system_powerdown"}
{"execute":"savevm", "arguments":{"name":"checkpoint1"}}
```

### 5. libvirt and virsh

```bash
# Define VM from XML
virsh define myvm.xml

# Start/stop
virsh start myvm
virsh shutdown myvm
virsh destroy myvm   # force power off

# Console
virsh console myvm

# Snapshot
virsh snapshot-create-as myvm snap1 "before upgrade"

# List
virsh list --all
```

```bash
# Create VM interactively
virt-install \
  --name ubuntu-vm \
  --ram 4096 \
  --vcpus 4 \
  --disk path=/var/lib/libvirt/images/ubuntu.qcow2,size=20 \
  --os-variant ubuntu22.04 \
  --network bridge=virbr0 \
  --graphics none \
  --console pty,target_type=serial \
  --location http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/ \
  --extra-args 'console=ttyS0,115200n8'
```

### 6. Kernel development boot

```bash
# Direct kernel boot (no disk install needed)
qemu-system-x86_64 \
  -enable-kvm \
  -m 512 \
  -kernel arch/x86/boot/bzImage \
  -initrd /path/to/initramfs.cpio.gz \
  -append "console=ttyS0 root=/dev/sda rw nokaslr" \
  -serial stdio \
  -display none \
  -no-reboot
```

```bash
# With custom rootfs on virtio disk
-drive file=rootfs.ext4,format=raw,if=virtio \
-append "console=ttyS0 root=/dev/vda rw"
```

### 7. Debugging kernel in QEMU

```bash
# GDB stub for kernel
qemu-system-x86_64 \
  -kernel bzImage -append "console=ttyS0 nokaslr" \
  -s -S \   # -s = gdb port 1234, -S = wait for gdb
  -serial stdio -display none

# Host GDB
gdb vmlinux
(gdb) target remote :1234
(gdb) break start_kernel
(gdb) continue
```

### 8. qcow2 disk management

```bash
qemu-img create -f qcow2 disk.qcow2 20G
qemu-img snapshot -c clean disk.qcow2
qemu-img convert -O raw disk.qcow2 disk.raw
qemu-img info disk.qcow2
```

## Common Problems

| Symptom | Cause | Fix |
|---------|-------|-----|
| KVM disabled warning | BIOS VT-x off or nested issue | Enable VT-x/AMD-V; check `/dev/kvm` |
| VM very slow | KVM not active | Add `-enable-kvm`; install kvm modules |
| VFIO group error | Device not in IOMMU group | Use `find /sys/kernel/iommu_groups/` |
| No network in VM | Wrong netdev backend | user networking vs tap/bridge |
| Kernel panic on boot | Wrong root= or missing driver | Add virtio drivers to initrd |
| QMP connection refused | Socket not ready | Wait for QEMU start; check path |

## Related Skills

- `skills/virtualization/hypervisor-internals` — VT-x/SVM theory under KVM
- `skills/kernel/kernel-testing` — boot test kernels in QEMU
- `skills/kernel/os-dev-scratch` — minimal OS development in QEMU
- `skills/kernel/kernel-debugging` — kgdb with QEMU `-s -S`
- `skills/async-io/dpdk` — DPDK with QEMU virtio
- `skills/platform/riscv-privileged` — `qemu-system-riscv64`

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Похожие скиллы

Всё по теме «DevOps и инфраструктура» →
proxmox-admin github.com/bastos Скилл для работы с Proxmox VE из терминала: создаёт ВМ через qm, контейнеры через pct, настраивает хранилища и кластеры. CX Codex +1 828установок zeroboot-vm-sandbox reason-machines Скилл запускает код агента в отдельной KVM-виртуалке через Zeroboot: форк шаблона занимает меньше миллисекунды. CX Codex +1 1 300установок tanstack-virtual tanstack-skills Скилл подсказывает агенту, как подключить TanStack Virtual и рисовать только видимые строки в больших списках, таблицах и сетках. CX Codex +1 2 500установок sandbox Vercel Inc. Запускает изолированные MicroVM на Linux через Vercel Sandbox SDK для безопасного выполнения чужого кода и тестов. CX Codex +1 604установок kernel-exploitation yaklang Справочник по анализу уязвимостей ядра Linux для ИИ-агента. Помогает настроить окружение в QEMU и разобрать механизмы защиты ядра вроде KASLR и SMEP. CX Codex +1 3 600установок ProxmoxMCP-Plus RekklesNA Даёт агенту доступ к Proxmox VE: виртуалки, LXC, снапшоты, бэкапы, ISO и кластер. Пригодится, когда рутина с гипервизором идёт через чат. CX Codex +1 ★ 615звёзд репо

Из того же набора62

cuda Помогает агенту писать и оптимизировать CUDA-ядра: иерархия потоков, разделяемая память, потоки, флаги nvcc и Thrust. CX Codex +1 320установок kernel-debugging-advanced Скилл для трассировки ядра Linux: ftrace, trace-cmd, perf, kprobes, kgdb и разбор vmcore. Пригодится, когда драйвер тормозит без явной ошибки. CX Codex +1 317установок cuda-profiling Ведёт агента по профилированию CUDA-приложений: таймлайн в Nsight Systems, метрики ядер в Nsight Compute, разбор roofline и узких мест. CX Codex +1 316установок datasheet-and-refmanual-reading Учит агента читать даташиты и reference manual микроконтроллеров: где искать карту регистров, биты, дерево тактирования и errata. CX Codex +1 314установок cpu-pipelines-and-hazards Объясняет стадии конвейера CPU, конфликты данных и управления, проброс и простои. Пригодится, когда непонятно, почему горячий цикл тормозит. CX Codex +1 311установок bus-drivers-i2c-spi Помогает писать клиентские драйверы Linux для датчиков и PMIC на шинах I2C и SPI: регистрация, regmap, привязка к device tree. CX Codex +1 304установок kernel-debugging Ведёт агента по отладке ядра Linux: kgdb, kdb, ftrace, kprobes, dyndbg и разбор kdump через crash. Пригодится, когда паника ядра или драйвер молчит. CX Codex +1 302установок cuda-debugging Ведёт агента по отладке CUDA: cuda-gdb, Compute Sanitizer, дампы GPU и разбор ошибок 700/702. Пригодится, когда ядро падает или даёт неверный результат. CX Codex +1 301установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой