lima-vm/lima · error
failed to convert extra disk %#q to raw: %w
Error message
failed to convert extra disk %#q to raw: %w
What it means
krunkit/libkrun requires raw disk images, so Cmdline converts each additional disk's data disk to raw format using diskUtil.Convert. If the conversion fails (unsupported image format, truncated/corrupt file, insufficient disk space for the raw copy), the error is wrapped as `failed to convert extra disk %#q to raw: %w`.
Source
Thrown at pkg/driver/krunkit/krunkit_darwin_arm64.go:77
// Add additional disks
if len(inst.Config.AdditionalDisks) > 0 {
ctx := context.Background()
diskUtil := proxyimgutil.NewDiskUtil(ctx)
for _, d := range inst.Config.AdditionalDisks {
disk, derr := store.InspectDisk(d.Name, d.FSType)
if derr != nil {
return nil, fmt.Errorf("failed to load disk %#q: %w", d.Name, derr)
}
if disk.Instance != "" {
return nil, fmt.Errorf("failed to run attach disk %#q, in use by instance %#q", disk.Name, disk.Instance)
}
if lerr := disk.Lock(inst.Dir); lerr != nil {
return nil, fmt.Errorf("failed to lock disk %#q: %w", d.Name, lerr)
}
extraDiskPath := filepath.Join(disk.Dir, filenames.DataDisk)
logrus.Infof("Mounting disk %#q on %#q", disk.Name, disk.MountPoint)
if cerr := diskUtil.Convert(ctx, raw.Type, extraDiskPath, extraDiskPath, nil, true); cerr != nil {
return nil, fmt.Errorf("failed to convert extra disk %#q to raw: %w", extraDiskPath, cerr)
}
args = append(args, "--device", fmt.Sprintf("virtio-blk,path=%s,format=raw", extraDiskPath))
}
}
// Network commands
networkArgs, err := buildNetworkArgs(inst)
if err != nil {
return nil, fmt.Errorf("failed to build network arguments: %w", err)
}
// File sharing commands
if *inst.Config.MountType == limatype.VIRTIOFS {
for _, mount := range inst.Config.Mounts {
if _, err := os.Stat(mount.Location); errors.Is(err, os.ErrNotExist) {
if err := os.MkdirAll(mount.Location, 0o750); err != nil {
return nil, err
}View on GitHub (pinned to dd909d0973)
Solutions
- Read the wrapped `%w` error to identify the root cause (format vs I/O).
- Free space on the host volume holding ~/.lima/disks and retry `limactl start`.
- Recreate the disk: `limactl disk delete <name>` then `limactl disk create <name> --size <size>`, and re-copy data.
- Verify the data file under ~/.lima/disks/<name>/ with an image tool; if corrupt, restore from backup.
Example fix
# before: start fails converting disk "data" $ df -h ~/.lima/disks # check space $ limactl disk delete data && limactl disk create data --size 50G # after $ limactl start myinstance
Defensive patterns
Strategy: validation
Validate before calling
// Shell: verify image and free space before start
df -h "$HOME/.lima/disks" | awk 'NR==2 {exit ($5+0 > 90 ? 1 : 0)}' || { echo "low disk space"; exit 1; }
file "$HOME/.lima/disks/<name>/datalt" # confirm a readable image Try / catch
if err := inst.Start(ctx); err != nil {
if strings.Contains(err.Error(), "failed to convert extra disk") {
// recreate disk and reattach
exec.Command("limactl", "disk", "delete", diskName).Run()
exec.Command("limactl", "disk", "create", diskName, "--size", "50G").Run()
return inst.Start(ctx)
}
return err
} Prevention
- Keep free space headroom on the volume holding ~/.lima/disks
- Never interrupt a running start/conversion mid-way
- Recreate disks whose image files appear zero-length or corrupt
- Keep Lima up to date for converter fixes
When it happens
Trigger: Starting an instance with additionalDisks whose backing data file is in a non-raw format that cannot be converted (e.g. corrupt qcow2), or conversion failing due to no space in ~/.lima/disks/<name> since raw conversion writes in place with `true` (in-place flag) — any underlying Convert error surfaces here.
Common situations: Disk created by a different tool/version leaving an incompatible image; disk file partially deleted or zero-length; host disk full during conversion; interrupting a previous conversion left the image in a broken state.
Related errors
- failed to load disk %#q: %w
- failed to run attach disk %#q, in use by instance %#q
- failed to lock disk %#q: %w
- unimplemented by the krunkit driver
- failed to build network arguments: %w
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/56c4e958f5b009f3.
Report an issue: GitHub.