«vfkit exited unexpectedly» en Mi Mac M3

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:

  1. Homebrew doble personalidad: Muchos tenemos tanto la versión Intel (/usr/local) como la ARM (/opt/homebrew)
  2. PATH mal configurado: Terminamos usando la versión equivocada por accidente
  3. 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:

  1. Menos RAM: Podman usa significativamente menos memoria
  2. Sin daemon: No hay procesos corriendo en background cuando no los necesitas
  3. Rootless: Más seguro por defecto
  4. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *