lima-vm/lima · error
unknown or unsupported VM type: %s
Error message
unknown or unsupported VM type: %s
What it means
CreateConfiguredDriver looks up the instance's configured VM type in the driver registry and fails when no external or internal driver is registered under that name. This means the lima.yaml vmType is either misspelled, from a newer Lima version, or provided by an external driver binary that is not installed/discoverable.
Source
Thrown at pkg/driverutil/instance.go:25
"context"
"fmt"
"github.com/sirupsen/logrus"
"github.com/lima-vm/lima/v2/pkg/driver"
"github.com/lima-vm/lima/v2/pkg/driver/external/server"
"github.com/lima-vm/lima/v2/pkg/limatype"
"github.com/lima-vm/lima/v2/pkg/registry"
)
// CreateConfiguredDriver creates a driver.ConfiguredDriver for the given instance.
// For external drivers, it reuses an existing server if one is already running,
// or starts a new one if needed.
func CreateConfiguredDriver(ctx context.Context, inst *limatype.Instance, sshLocalPort int) (*driver.ConfiguredDriver, error) {
limaDriver := inst.Config.VMType
extDriver, intDriver, exists := registry.Get(*limaDriver)
if !exists {
return nil, fmt.Errorf("unknown or unsupported VM type: %s", *limaDriver)
}
var driverInfo driver.Info
if extDriver != nil {
extDriver.Logger.Debugf("Connecting to external driver %#q for %#q", extDriver.Name, inst.Name)
if err := server.Start(ctx, extDriver, inst.Name); err != nil {
extDriver.Logger.Errorf("Failed to start external driver %#q: %v", extDriver.Name, err)
return nil, err
}
driverInfo = extDriver.Client.Info(ctx)
if !driverInfo.Features.StaticSSHPort {
inst.SSHLocalPort = sshLocalPort
}
return extDriver.Client.Configure(ctx, inst)
}
driverInfo = intDriver.Info(ctx)
logrus.Debugf("Using internal driver %q", driverInfo.Name)View on GitHub (pinned to dd909d0973)
Solutions
- Run `limactl edit <instance>` and set vmType to a supported built-in value (qemu, vz, wsl2, etc.)
- Install/register the external driver binary that provides the missing VM type and restart limactl
- Upgrade Lima to a version that knows the vmType in the config
- Inspect the instance's lima.yaml under ~/.lima/<instance>/lima.yaml and correct the vmType field manually
Example fix
// before: lima.yaml vmType: "kvm2" // unknown // after vmType: "qemu"
Defensive patterns
Strategy: validation
Validate before calling
vmType := "qemu"
if !slices.Contains(limatype.VMTypes, vmType) {
if _, _, ok := registry.Get(vmType); !ok {
return fmt.Errorf("vmType %q unsupported before start", vmType)
}
} Type guard
func isKnownVMType(t string) bool {
if slices.Contains(limatype.VMTypes, t) {
return true
}
_, _, ok := registry.Get(t)
return ok
} Try / catch
if _, err := driverutil.CreateConfiguredDriver(ctx, inst, sshPort); err != nil {
if strings.HasPrefix(err.Error(), "unknown or unsupported VM type") {
// fall back to default driver or prompt to fix config
}
return err
} Prevention
- Only set vmType to documented values; prefer omitting it and letting Lima default
- Keep templates and limactl from the same release
- Install external drivers before creating instances that reference them
When it happens
Trigger: Calling CreateConfiguredDriver (directly or via limactl start/restart/edit/factory-reset/clone/rename) for an instance whose inst.Config.VMType is not in limatype.VMTypes and not found by registry.Get — e.g. vmType set to an unknown string or an external driver plugin missing from PATH/registry.
Common situations: Typo in vmType (e.g. "qemu" vs "qemu35"); config written by a newer Lima with a driver this build does not know; external driver plugin not installed or not registered at startup; hand-edited lima.yaml.
Related errors
- vmType %#q is not a registered driver
- unknown or unsupported VM type: %s
- unsupported shell %#q for Windows guest, must be one of %v
- no volume with role %#x found
- no template available
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/2d5b1d9fcc1a5c7c.
Report an issue: GitHub.