How to fix Podman's startup failure on M1 with Nix

Thu, June 20, 2024 - 2 min read

After updating my Nix packages today, I noticed that podman must have been updated as well. It showed since my default machine was no longer present and I could not start the database container that I needed.

I’m using a MacBook Pro with ARM processor, more specifically the M1 model. It needed some special treatment in the past already, but I found a way for my environment. Okay, so recreating the Podman machine is as simple as:

podman machine init --now --cpus=4 --disk-size 150 --memory 8192 -v $HOME:$HOME

That did download the new machine image and also tried to start the VM automatically:

Looking up Podman Machine image at quay.io/podman/machine-os:5.1 to create VM
Getting image source signatures
Copying blob e56a099bcd6f done
Copying config 44136fa355 done
Writing manifest to image destination
e56a099bcd6f8893d25fc6925a9a88b83ebee4820f76edf4c5e7c717099dc7fe
Extracting compressed file: podman-machine-default-arm64.raw: done
Machine init complete
Starting machine "podman-machine-default"
ERRO[0049] process 28540 has not ended
Error: exec: "vfkit": executable file not found in $PATH

What is vfkit and why doesn’t it exist? I was thinking it is something specific to me using Nix on my Mac, so I tried to add the vfkit package to my Nix installation. However, at the time of writing, this package does not exist.

Googling around I found the following GitHub Issue which gave the final hint on how to solve this problem.

To install vfkit, just head over to their GitHub Project and download the latest version. After the download finished, I moved it in place:

sudo mv ~/Downloads/vfkit /usr/local/bin/
chmod +x /usr/local/bin/vfkit
xattr -dr com.apple.quarantine /usr/local/bin/vfkit

Tada :party:, podman machine is working again.