Cómo Solucioné el Maldito Error «vfkit exited unexpectedly» en Mi Mac M3
El Error Que Me Hizo Cuestionar Mis Decisiones de Vida
Picture this: Es viernes por la tarde, quiero configurar Podman rápido en mi flamante Mac M3, y de repente aparece este error que me arruina el fin de semana:
Error: vfkit exited unexpectedly with exit code 1
Seguido de este mensaje críptico:
Error Domain=VZErrorDomain Code=1 Description="Internal Virtualization error.
The virtual machine failed to start."
Y para colmo, cuando ejecuto podman info, veo esto:
OS: darwin/amd64 # ? ¿En serio? ¿En un Mac M3?
Si estás aquí, probablemente estés pasando por la misma pesadilla. Buenas noticias: ya encontré la solución y no es tan complicada como parece.
El Verdadero Problema (Spoiler: No Es Podman, Eres Tú… Bueno, Somos Nosotros)
Después de horas de frustración y de googlear hasta que me sangraron los ojos, descubrí la verdad incómoda: estaba usando la versión x86_64 de Podman en un Mac M3.
El problema es súper común y pasa porque:
- Homebrew doble personalidad: Muchos tenemos tanto la versión Intel (
/usr/local) como la ARM (/opt/homebrew) - PATH mal configurado: Terminamos usando la versión equivocada por accidente
- Rosetta 2 siendo «útil»: A veces ni nos damos cuenta que estamos en modo emulación
El resultado: vfkit (el hipervisor que maneja las VMs) intenta correr en modo de compatibilidad y el Apple Hypervisor Framework básicamente le dice «nope, esto no va a pasar».
Detective Mode: ¿Tengo Este Problema?
Antes de empezar a romper cosas, confirma que realmente tienes el problema de arquitectura:
# ¿Qué arquitectura está usando tu sistema?
uname -m && arch
# ¿Qué versión de Podman tienes?
which podman && file $(which podman)
# ¿Qué dice Podman sobre sí mismo?
podman info | head -5
Si ves x86_64 o i386 cuando deberías ver arm64, bingo. Ahí está tu problema.
También verifica si tienes los dos Homebrew:
# Intel Homebrew (el problemático)
ls -la /usr/local/bin/brew
# ARM Homebrew (el que queremos)
ls -la /opt/homebrew/bin/brew
La Solución Que Realmente Funciona
Paso 1: Mata al Podman Impostor
# Desinstala la versión x86_64
/usr/local/bin/brew uninstall podman
# Limpia cualquier VM zombie
podman machine stop --all 2>/dev/null || true
podman machine rm --all -f 2>/dev/null || true
Paso 2: Instala el Podman Correcto (ARM64 Nativo)
Aquí está la línea mágica que me salvó la vida:
# Esta línea es CRUCIAL - nota el arch -arm64 al principio
arch -arm64 /opt/homebrew/bin/brew install podman
Ese arch -arm64 es como decirle a tu Mac: «Oye, no seas inteligente, usa ARM64 y punto».
Paso 3: Arregla Tu PATH Para Siempre
Edita tu ~/.zshrc y asegúrate de que tenga esto al principio:
# Esto debe ir ANTES que cualquier otra cosa en tu PATH
export PATH="/opt/homebrew/bin:$PATH"
Paso 4: Verifica Que Todo Esté Bien
# Recarga tu configuración
source ~/.zshrc
# Verifica que ahora usa la versión correcta
which podman
file $(which podman) # Debe decir "arm64"
podman --version
Paso 5: Crea Tu VM ARM64
# Configuración que me funciona perfecto en M3
podman machine init --cpus 2 --memory 4096 --disk-size 50
# El momento de la verdad
podman machine start
Si ves este mensaje, ya ganaste:
Machine "podman-machine-default" started successfully
Paso 6: La Prueba Definitiva
# Verifica que todo esté corriendo
podman machine list
podman info | head -5 # Ahora debe decir "darwin/arm64"
# Prueba con un contenedor real
podman run --rm hello-world
Lo Que Cambió y Por Qué Funciona Ahora
La diferencia clave es que ahora:
- Antes:
OS: darwin/amd64(vfkit corriendo en emulación = dolor) - Después:
OS: darwin/arm64(vfkit nativo = felicidad)
El vfkit ahora puede hablar directamente con el Apple Hypervisor Framework sin traducciones raras de por medio.
Errores Comunes y Sus Soluciones
«Cannot install under Rosetta 2»
Tu terminal está corriendo en modo Intel. Solución:
arch -arm64 /opt/homebrew/bin/brew install podman
«VM already exists»
Podman se confundió con las VMs viejas:
podman machine rm podman-machine-default -f
podman machine init --cpus 2 --memory 4096 --disk-size 50
Sigue diciendo «darwin/amd64»
Tu PATH sigue apuntando al Podman viejo:
# Verifica cuál está usando
which podman
# Debe devolver: /opt/homebrew/bin/podman
# Si devuelve: /usr/local/bin/podman, tu PATH está mal
El Resultado: Podman Que Realmente Funciona
Una vez que termines, deberías tener:
$ podman info | head -5
OS: darwin/arm64 # ? ¡Por fin!
buildOrigin: brew
provider: applehv
version: 5.5.1
$ podman machine list
NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE
podman-machine-default* applehv 5 minutes ago Currently running 2 4GiB 50GiB
¿Por Qué No Simplemente Usar Docker Desktop?
Buena pregunta. Después de todo este drama, estas son las razones por las que vale la pena:
- Menos RAM: Podman usa significativamente menos memoria
- Sin daemon: No hay procesos corriendo en background cuando no los necesitas
- Rootless: Más seguro por defecto
- Compatible: Mismos comandos que Docker
Pero principalmente, porque después de solucionar esto te sientes como un ninja de la terminal.
Reflexiones Finales
Este error me enseñó algo importante: a veces los problemas más frustrantes tienen las soluciones más simples. El «vfkit exited unexpectedly» no era un bug raro de Podman o un problema de compatibilidad con M3. Era simplemente que estaba usando la herramienta equivocada para el hardware correcto.
Si llegaste hasta aquí y lograste que funcione, felicidades. Si no, no te rindas. La tecnología a veces es caprichosa, pero eventualmente cede.
Y la próxima vez que veas «darwin/amd64» en un Mac M3, ya sabes qué hacer. ?
¿Te funcionó esta solución? ¿Tuviste algún problema diferente? Cuéntame en los comentarios. Siempre me gusta saber que ayudé a alguien más a no tirar su laptop por la ventana.