kexec ( kernelexec ), análogo a la llamada al kernel de Unix/Linux exec , es un mecanismo del kernel de Linux que permite arrancar un nuevo kernel desde el que se está ejecutando actualmente.
Detalles
Básicamente, kexec omite la etapa del cargador de arranque y la fase de inicialización del hardware que realiza el firmware del sistema ( BIOS o UEFI ), y carga directamente el nuevo kernel en la memoria principal y comienza a ejecutarlo inmediatamente. 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 . [1] [2]
Si bien es factible, implementar un mecanismo como kexec plantea dos desafíos importantes:
- La memoria del kernel actualmente en ejecución es sobrescrita por el nuevo kernel, mientras el antiguo aún se está ejecutando.
- El nuevo núcleo generalmente espera que todos los dispositivos de hardware se encuentren en un estado bien definido, en el que se encuentran después de un reinicio del sistema porque el firmware del sistema los restablece a un estado "normal". Si se omite un reinicio real, los dispositivos pueden quedar en un estado desconocido y el nuevo núcleo tendrá que recuperarse de eso.
El soporte para permitir que solo los núcleos 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. [3] Esto no permite que un usuario root cargue código arbitrario a través de kexec y lo ejecute, complementando el arranque seguro UEFI y los mecanismos de seguridad en el núcleo para garantizar que solo los módulos del núcleo Linux firmados se puedan insertar en el núcleo en ejecución. [4] [5] [6]
LinuxBoot utiliza Kexec para arrancar el kernel principal desde el kernel de Linux ubicado en el firmware.
Véase también
- kdump (Linux) : mecanismo de volcado de memoria del kernel de Linux, que utiliza internamente kexec
- kGraft : tecnología de aplicación de parches en vivo del kernel de Linux desarrollada por SUSE
- kpatch : tecnología de aplicación de parches en vivo del kernel de Linux desarrollada por Red Hat
- Ksplice : tecnología de parcheo en vivo del kernel de Linux desarrollada por Ksplice, Inc. y luego adquirida por Oracle
Referencias
- ^ Hariprasad Nellitheertha (4 de mayo de 2004). «Reinicie Linux más rápido usando kexec». IBM . Archivado desde el original el 21 de enero de 2013. Consultado el 5 de diciembre de 2013 .
- ^ David Pendell (16 de agosto de 2008). "Reinicia como un coche de carreras con kexec". linux.com . Archivado desde el original el 14 de febrero de 2009. Consultado el 5 de diciembre de 2013 .
- ^ "Núcleo Linux 3.17, Sección 1.10. Núcleos kexec firmados". kernelnewbies.org . 5 de octubre de 2014 . Consultado el 3 de noviembre de 2014 .
- ^ Jake Edge (25 de junio de 2014). "Reworking kexec for signatures" (Reelaboración de kexec para firmas). LWN.net . Consultado el 9 de agosto de 2014 .
- ^ Matthew Garrett (3 de diciembre de 2013). "Subvirtiendo la seguridad con kexec". dreamwidth.org . Consultado el 5 de diciembre de 2013 .
- ^ Kees Cook (10 de diciembre de 2013). "Live patching the kernel" (Aplicación de parches en vivo al kernel). outflux.net . Consultado el 12 de diciembre de 2013 .