kexec

De Wikipedia, la enciclopedia libre

kexec, abreviado de la ejecución del kernel y análogo a 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.[1][2]

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.[3]​ 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.[4][5][6]

Véase también[editar]

  • kdump (Linux)  – El mecanismo de volcado de memoria del núcleo Linux, que utiliza internamente kexec
  • Reubicación del núcleo  – Característica de Linux en la que se puede compilar un núcleo para que pueda iniciarse en una variedad de direcciones de memoria diferentes
  • kGraft  – Tecnología de parcheo en vivo del núcleo Linux desarrollada por SUSE
  • kpatch  – Tecnología de parcheo en vivo del núcleo Linux desarrollada por Red Hat
  • Ksplice  – Tecnología de parches en vivo del núcleo Linux desarrollada por Ksplice, Inc. y más tarde comprada por Oracle

Referencias[editar]

  1. Hariprasad Nellitheertha (2004-05-04 de mdy). «Reboot Linux faster using kexec». IBM. Archivado desde el original el 21 de enero de 2013. Consultado el 2013-12-05 de mdy. 
  2. David Pendell (2008-08-16 de mdy). «Reboot like a racecar with kexec». linux.com. Archivado desde el original el 14 de febrero de 2009. Consultado el 2013-12-05 de mdy. 
  3. «Linux kernel 3.17, Section 1.10. Signed kexec kernels». kernelnewbies.org. 2014-10-05 de mdy. Consultado el 2014-11-03 de mdy. 
  4. Jake Edge (2014-06-25 de mdy). «Reworking kexec for signatures». LWN.net. Consultado el 2014-08-09 de mdy. 
  5. Matthew Garrett (2013-12-03 de mdy). «Subverting security with kexec». dreamwidth.org. Consultado el 2013-12-05 de mdy. 
  6. Kees Cook (2013-12-10 de mdy). «Live patching the kernel». outflux.net. Consultado el 2013-12-12 de mdy.