2026-03-16 19:15:01 +00:00
|
|
|
# Hypervisors
|
|
|
|
|
|
2026-03-22 01:55:36 +00:00
|
|
|
Module: `dappco.re/go/core/container`
|
2026-03-16 19:15:01 +00:00
|
|
|
|
|
|
|
|
## Interface
|
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
type Hypervisor interface {
|
|
|
|
|
Name() string
|
|
|
|
|
Available() bool
|
|
|
|
|
BuildCommand(ctx, image string, opts *HypervisorOptions) (*exec.Cmd, error)
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## QEMU
|
|
|
|
|
|
|
|
|
|
`NewQemuHypervisor()` — Default binary: `qemu-system-x86_64`.
|
|
|
|
|
|
|
|
|
|
Features:
|
|
|
|
|
- KVM acceleration on Linux (`/dev/kvm`)
|
|
|
|
|
- HVF acceleration on macOS (`-accel hvf`)
|
|
|
|
|
- Nographic mode with serial console on stdio
|
|
|
|
|
- User networking with port forwarding (`hostfwd`)
|
|
|
|
|
- Virtio-9p filesystem shares for volumes
|
|
|
|
|
- Supports all image formats (ISO as `-cdrom`, others as `-drive`)
|
|
|
|
|
|
|
|
|
|
## Hyperkit
|
|
|
|
|
|
|
|
|
|
`NewHyperkitHypervisor()` — macOS-only, default binary: `hyperkit`.
|
|
|
|
|
|
|
|
|
|
Features:
|
|
|
|
|
- ACPI support
|
|
|
|
|
- Virtio-blk for disk images
|
|
|
|
|
- Slirp networking with port forwarding
|
|
|
|
|
- Serial console on stdio
|
|
|
|
|
- PCI slot-based device assignment
|
|
|
|
|
|
|
|
|
|
## Detection
|
|
|
|
|
|
|
|
|
|
`DetectHypervisor()` priority:
|
|
|
|
|
1. Hyperkit (macOS only, if installed)
|
|
|
|
|
2. QEMU (all platforms)
|
|
|
|
|
3. Error if neither available
|
|
|
|
|
|
|
|
|
|
`GetHypervisor(name)` returns a specific hypervisor by name ("qemu" or "hyperkit").
|