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

  1. Run `limactl edit <instance>` and set vmType to a supported built-in value (qemu, vz, wsl2, etc.)
  2. Install/register the external driver binary that provides the missing VM type and restart limactl
  3. Upgrade Lima to a version that knows the vmType in the config
  4. 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

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


AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01). Data as JSON: /api/errors/2d5b1d9fcc1a5c7c. Report an issue: GitHub.