Problema

Una actualización masiva de paquetes en una distribución basada en Debian (por ejemplo, Linux Mint) puede interrumpirse y dejar el gestor de paquetes en estado inconsistente. Cuando la interrupción ocurre durante la instalación de linux-headers o de módulos DKMS (como controladores Wi‑Fi o NVIDIA), dpkg marca varios paquetes como not fully installed. El resultado típico es:

  • El sistema no arranca porque el kernel recién instalado no se completa.
  • La red queda inoperativa, a menudo por la falta del módulo del controlador.
  • apt --fix-broken install devuelve errores de post‑instalación que hacen referencia a scripts en /etc/kernel/*/dkms.
  • Los paquetes dependientes (linux-generic-hwe, linux-headers-generic) quedan sin configurar, bloqueando cualquier nueva actualización.

El patrón es: actualización interrumpida + compilación DKMS fallida → paquetes rotos → sistema inarrancable.

Causa

  1. Compilación DKMS fallida
    DKMS recompila módulos cada vez que se instala un nuevo kernel. Si el código fuente del módulo (por ejemplo, 8812au o un driver propietario) no es compatible con la nueva versión del kernel, make devuelve error 2 y el script de post‑instalación aborta.

  2. Dependencias encadenadas
    Los metapaquetes linux-generic-hwe dependen de linux-headers y linux-image. Cuando uno de ellos falla, el resto queda en “no configurado”, lo que impide que apt avance.

  3. Falta de acceso a internet
    En muchos casos el error ocurre antes de que la red esté disponible (módulo Wi‑Fi no cargado, Ethernet sin driver). Sin repositorios, apt no puede descargar versiones corregidas.

  4. Interrupción abrupta
    Cierre inesperado del gestor de actualizaciones, pérdida de energía o reinicio forzado dejan la base de datos de dpkg a medio escribir.

Solución

El objetivo es volver a un estado donde dpkg pueda terminar la configuración y, opcionalmente, eliminar o actualizar el módulo DKMS problemático. El proceso se divide en tres fases:

1. Recuperar la base de dpkg

sudo dpkg --configure -a
sudo apt-get clean
sudo apt-get update
  • dpkg --configure -a fuerza la configuración de los paquetes pendientes.
  • apt-get clean elimina archivos .deb corruptos que puedan interferir.
  • apt-get update refresca la lista de paquetes; si la red sigue caída, se puede montar temporalmente un USB con los .deb necesarios.

2. Aislar el módulo DKMS que falla

Identificar el módulo que aborta (en el log suele aparecer 8812au o nvidia). Si el módulo no es esencial, eliminarlo:

sudo apt-get purge 8812au-dkms

Para módulos críticos (por ejemplo, NVIDIA) intentar reinstalar la versión compatible con el kernel actual:

sudo apt-get install --reinstall nvidia-dkms

3. Reinstalar los paquetes del kernel y sus encabezados

sudo apt-get install --reinstall linux-headers-$(uname -r) linux-image-$(uname -r)
sudo apt-get -f install
  • La reinstalación garantiza que los scripts de post‑instalación se ejecuten de nuevo, ahora sin el módulo problemático.
  • apt-get -f install vuelve a intentar la configuración de dependencias rotas.

4. (Opcional) Forzar una versión anterior del kernel

Si el kernel recién instalado sigue fallando, arrancar desde una versión anterior disponible en GRUB y, una vez dentro, remover el kernel defectuoso:

sudo apt-get purge linux-image-6.17.0-35-generic linux-headers-6.17.0-35-generic
sudo apt-get install linux-image-generic-hwe-24.04 linux-headers-generic-hwe-24.04

Esto deja el sistema con la última versión estable que ya había funcionado.

5. Restaurar conectividad

Una vez que el kernel y los encabezados están configurados, cargar los módulos de red:

sudo modprobe r8169   # ejemplo para Ethernet Realtek
sudo modprobe 8812au  # si el driver Wi‑Fi sigue siendo necesario y ya funciona

Reiniciar el servicio de red:

sudo systemctl restart NetworkManager

Cuándo aplicar esta solución

Señales claras

  • apt --fix-broken install muestra errores en scripts dkms o header_postinst.d.
  • dpkg indica “4 not fully installed or removed”.
  • El sistema no arranca o queda atascado en GRUB después de una actualización de kernel.
  • La red está inactiva pese a estar conectada físicamente.

Escenarios válidos

  • Actualizaciones de kernel en entornos de escritorio o servidores donde se usan controladores DKMS externos.
  • Sistemas que dependen de drivers propietarios que no se actualizan automáticamente con el kernel.
  • Instalaciones donde la red depende exclusivamente de un módulo DKMS (Wi‑Fi USB, tarjetas Wi‑Fi de Realtek, etc.).

Cuándo NO aplicar

  • Si el módulo que falla es crítico y no hay versión alternativa (por ejemplo, un controlador de almacenamiento que impide el arranque). En ese caso, usar un Live USB para respaldar datos y reinstalar el sistema es más seguro.
  • Cuando la base de dpkg está intacta y el único problema es una actualización de aplicación (no del kernel). Aquí basta con apt upgrade.

Código

# 1. Forzar la configuración pendiente
sudo dpkg --configure -a

# 2. Limpiar caché y actualizar índices
sudo apt-get clean
sudo apt-get update

# 3. Eliminar módulo DKMS problemático (ejemplo 8812au)
sudo apt-get purge 8812au-dkms

# 4. Reinstalar kernel y encabezados actuales
sudo apt-get install --reinstall linux-headers-$(uname -r) linux-image-$(uname -r)

# 5. Intentar reparar dependencias restantes
sudo apt-get -f install

# 6. (Opcional) Volver a una versión anterior del kernel
sudo apt-get purge linux-image-6.17.0-35-generic linux-headers-6.17.0-35-generic
sudo apt-get install linux-image-generic-hwe-24.04 linux-headers-generic-hwe-24.04

# 7. Cargar módulos de red y reiniciar NetworkManager
sudo modprobe r8169
sudo modprobe 8812au
sudo systemctl restart NetworkManager

Verificación

  1. Ejecutar dpkg -l | grep -E 'linux-image|linux-headers' y confirmar que los paquetes aparecen con estado ii (instalado correctamente).
  2. dkms status debe listar los módulos con “installed” y sin “error”.
  3. Reiniciar el equipo y comprobar que arranca con el kernel esperado (uname -r).
  4. Verificar conectividad: ping -c 3 8.8.8.8 y nmcli device status para asegurarse de que la interfaz Ethernet o Wi‑Fi está “connected”.

Notas adicionales

  • Backup rápido: antes de manipular paquetes críticos, montar una Live USB y copiar /etc/apt/sources.list y /var/lib/dpkg/status permite restaurar una base funcional.
  • Evitar actualizaciones parciales: siempre usar sudo apt full-upgrade en lugar de lanzar el gestor gráfico y cerrar la sesión a mitad de proceso.
  • DKMS y kernel LTS: cuando se usa un kernel de soporte a largo plazo (HWE), comprobar que los repositorios de DKMS ofrecen versiones compatibles; de lo contrario, fijar el kernel a la versión anterior que funciona.
  • Logs útiles: /var/lib/dkms/<module>/build/make.log contiene la causa exacta del fallo de compilación; buscar mensajes como “undefined reference” o “missing header” ayuda a decidir si actualizar o eliminar el módulo.