Skip to content

Troubleshooting

Error: Lima VM 'mvm' is not available. Run 'mvmctl setup' or 'mvmctl bootstrap' first.

Fix: Run mvmctl bootstrap (macOS) or mvmctl setup (Linux with Lima installed).

The Lima VM exists but is stopped.

Fix:

Terminal window
limactl start mvm
# or
mvmctl dev # auto-starts Lima
Terminal window
limactl stop mvm --force
limactl start mvm

If that fails:

Terminal window
mvmctl destroy
mvmctl bootstrap

The Firecracker process may have crashed. Check the logs:

Terminal window
mvmctl logs <name>
mvmctl logs <name> --hypervisor # Firecracker logs

Cause: Insufficient permissions or TAP device name collision.

Fix:

Terminal window
# Check for orphaned TAP devices (inside Lima VM)
limactl shell mvm bash -c "ip link show | grep tap"

Snapshot may be corrupted after a Firecracker version change.

Fix: Delete the snapshot and cold boot:

Terminal window
mvmctl snapshot delete <name>
mvmctl run --template <template> --name <name>
Terminal window
# Test the flake locally first
mvmctl shell
nix build .#default
# Check for errors in the flake
nix flake check

If builds are slow despite no code changes, check that flake.lock hasn’t changed. Any change to flake.lock invalidates the cache.

Terminal window
# Inside the Lima VM, check NAT rules
limactl shell mvm bash -c "sudo iptables -t nat -L"
# Check the TAP device exists
limactl shell mvm bash -c "ip link show tap0"

Can’t access project files inside microVM

Section titled “Can’t access project files inside microVM”

The Firecracker microVM has an isolated filesystem. Use mvmctl shell to access the Lima VM where your home directory is mounted, or pass volumes with --volume.

Adjust resources:

Terminal window
mvmctl destroy
mvmctl dev --lima-cpus 8 --lima-mem 16

Rebuild without destroying the Lima VM:

Terminal window
mvmctl setup --recreate
Terminal window
RUST_LOG=debug mvmctl <command>
RUST_LOG=mvm=trace mvmctl <command>