VM types
Lima supports two ways of running guest machines:
The vmType can be specified only on creating the instance. The vmType of existing instances cannot be changed.
See the following flowchart to choose the best vmType for you:
flowchart host{"Host OS"} -- "Linux" --> qemu["QEMU"] host -- "macOS" --> intel_on_arm{"Need to run <br> Intel binaries <br> on ARM?"} intel_on_arm -- "Yes" --> just_elf{"Just need to <br> run Intel userspace (fast), <br> or entire Intel VM (slow)?"} just_elf -- "Userspace (fast)" --> vz just_elf -- "VM (slow)" --> qemu intel_on_arm -- "No" --> vz["VZ"]
QEMU
“qemu” option makes use of QEMU to run guest operating system. This option is used by default if “vmType” is not set.
VZ
Warning “vz” mode is experimental
⚡ Requirement | Lima >= 0.14, macOS >= 13.0 |
---|
“vz” option makes use of native virtualization support provided by macOS Virtualization.Framework.
An example configuration:
limactl start --vm-type=vz --mount-type=virtiofs
# Example to run ubuntu using vmType: vz instead of qemu (Default)
vmType: "vz"
images:
- location: "https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-amd64.img"
arch: "x86_64"
- location: "https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-arm64.img"
arch: "aarch64"
mounts:
- location: "~"
mountType: "virtiofs"
Caveats
- “vz” option is only supported on macOS 13 or above
- Virtualization.framework doesn’t support running “intel guest on arm” and vice versa
Known Issues
- “vz” doesn’t support
legacyBIOS: true
option, so guest machine like centos-stream, archlinux, oraclelinux will not work - When running lima using “vz”,
${LIMA_HOME}/<INSTANCE>/serial.log
will not contain kernel boot logs - On Intel Mac with macOS prior to 13.5, Linux kernel v6.2 (used by Ubuntu 23.04, Fedora 38, etc.) is known to be unbootable on vz. kernel v6.3 and later should boot, as long as it is booted via GRUB. https://github.com/lima-vm/lima/issues/1577#issuecomment-1565625668 The issue is fixed in macOS 13.5.
Last modified October 1, 2023: wsl2: temporarily remove docs (d0aec40)