kexec (kernel execute) es un mecanismo del kernel de Linux que permite iniciar un nuevo kernel directamente desde el kernel en ejecución, sin la necesidad de un reinicio completo del sistema. A diferencia de un arranque tradicional que implica el firmware (BIOS/UEFI) y el gestor de arranque, kexec carga el nuevo kernel en una parte reservada de la memoria y luego transfiere el control a él. Esto resulta en un proceso de reinicio significativamente más rápido, ya que omite las etapas de inicialización de hardware y firmware, que pueden ser lentas en sistemas complejos o con mucho hardware.

En el mundo real, kexec se utiliza principalmente para dos propósitos clave. Primero, para reinicios rápidos en entornos de servidores donde el tiempo de inactividad es crítico; por ejemplo, para aplicar parches de seguridad o actualizaciones del kernel sin incurrir en el tiempo de arranque completo. Segundo, es fundamental para la implementación de kdump, el mecanismo de volcado de memoria de Linux. Cuando ocurre un "kernel panic", kdump utiliza kexec para arrancar un kernel secundario (conocido como "capture kernel") que se encarga de guardar el contenido de la memoria del kernel fallido para su posterior análisis, lo que es crucial para la depuración de fallos graves del sistema.

Para un arquitecto de sistemas, kexec es una herramienta estratégica para la resiliencia y la eficiencia operativa. Permite minimizar el tiempo de inactividad durante las actualizaciones del kernel en infraestructuras críticas, como bases de datos o clústeres de computación de alto rendimiento, donde cada segundo cuenta. La capacidad de kdump, que se basa en kexec, es indispensable para la observabilidad y el diagnóstico post-mortem de fallos de kernel, lo que impacta directamente en la fiabilidad del sistema. Sin embargo, su configuración requiere una gestión cuidadosa de la memoria para reservar el espacio necesario para el kernel de captura, lo que puede reducir ligeramente la memoria disponible para las aplicaciones. La decisión de implementarlo y configurarlo adecuadamente es un trade-off entre la velocidad de reinicio/recuperación y una ligera reducción de recursos, pero que a menudo se justifica por los beneficios en la disponibilidad y la capacidad de depuración.