Kexec
# Kexec

kexec, abreviado de la ejecución del kernel y análogo al la llamada al sistema de Unix/Linux exec, es un mecanismo del núcleo Linux que permite el arranque de un núcleo nuevo desde el que se ejecuta actualmente. sin tener que reiniciar el sistema. Esencialmente, kexec omite la etapa del gestor de arranque y la fase de inicialización del hardware realizada por el firmware del sistema (BIOS o UEFI), carga directamente el nuevo núcleo en la memoria principal y comienza a ejecutarlo de inmediato. Esto evita los largos tiempos asociados con un reinicio completo, y puede ayudar a los sistemas a cumplir con los requisitos de alta disponibilidad al minimizar el tiempo de inactividad.

Si bien es factible, la implementación de un mecanismo como kexec plantea dos desafíos principales:

* La memoria del núcleo actualmente en ejecución se sobrescribe con el nuevo núcleo, mientras que el anterior todavía se está ejecutando.
* El nuevo núcleo generalmente esperará que todos los dispositivos de hardware estén en un estado bien definido, en el que se encuentren después de un reinicio del sistema porque el firmware del sistema los restablece a un estado "sano". Omitir un reinicio real puede dejar a los dispositivos en un estado desconocido, y el nuevo núcleo tendrá que recuperarse de eso.

El soporte para permitir que solo los kernels firmados se inicien a través de kexec se fusionó con la versión 3.17 de la línea principal del núcleo Linux, que se lanzó el 5 de octubre de 2014. Esto no permite que un usuario root cargue código arbitrario a través de kexec y lo ejecute, complementando los mecanismos de seguridad arranque seguro UEFI y en el núcleo para garantizar que solo los módulos de núcleo Linux firmados puedan insertarse en el núcleo en ejecución.

