Articulo de referencia

pánico del kernel

Se ha detectado un error grave del kernel en Arch Linux dentro de Oracle VM VirtualBox. El kernel de Linux 6.10 y versiones posteriores muestran una pantalla de error similar a ...

Error grave del kernel en Arch Linux
Se ha detectado un error grave del kernel en Arch Linux dentro de Oracle VM VirtualBox. El kernel de Linux 6.10 y versiones posteriores muestran una pantalla de error similar a la de una pantalla azul de la muerte (BSOD) con una imagen ASCII de Tux y, opcionalmente, un código QR que enlaza con un informe de error. El color varía según la distribución.
Error grave del kernel en Ubuntu 13.04 "Raring Ringtail" (kernel de Linux 3.8), ejecutándose en Oracle VM VirtualBox.
Un fallo del kernel de OpenSolaris.
Un pánico del kernel de OpenSolaris

Un pánico del núcleo (a veces abreviado como KP [ 1 ] ) es una medida de seguridad que toma el núcleo de un sistema operativo al detectar un error interno fatal en el que no puede recuperarse de forma segura o continuar ejecutando el sistema implicaría un mayor riesgo de pérdida importante de datos. El término es principalmente específico de los sistemas Unix y similares a Unix . El equivalente en los sistemas operativos Microsoft Windows es un error de detención , a menudo llamado "pantalla azul de la muerte (BSOD)".

Las rutinas del kernel que manejan los pánicos, conocidas como panic()en el código fuente de AT&T y BSD Unix, generalmente están diseñadas para mostrar un mensaje de error en la consola , volcar una imagen de la memoria del kernel en el disco para la depuración posterior al fallo y luego esperar a que el sistema se reinicie manualmente o iniciar un reinicio automático . [ 2 ] La información proporcionada es de naturaleza altamente técnica y tiene como objetivo ayudar a un administrador de sistemas o desarrollador de software a diagnosticar el problema. Los pánicos del kernel también pueden ser causados ​​por errores que se originan fuera del espacio del kernel . Por ejemplo, muchos sistemas operativos Unix entran en pánico si el proceso init , que se ejecuta en el espacio de usuario , termina. [ 3 ] [ 4 ]

Historia

El núcleo de Unix mantiene la consistencia interna y la corrección en tiempo de ejecución mediante aserciones como mecanismo de detección de fallos . La premisa básica es que el hardware y el software deben funcionar correctamente y que un fallo en una aserción provoca un pánico , es decir, una detención voluntaria de toda la actividad del sistema. [ 5 ] El pánico del núcleo se introdujo en una versión temprana de Unix y demostró una diferencia importante entre las filosofías de diseño de Unix y su predecesor Multics . El desarrollador de Multics, Tom van Vleck, recuerda una conversación sobre este cambio con el desarrollador de Unix, Dennis Ritchie :

Le comenté a Dennis que fácilmente la mitad del código que escribía en Multics era código de recuperación de errores. Él dijo: "Dejamos todo eso fuera. Si hay un error, tenemos esta rutina llamada pánico, y cuando se llama, la máquina se bloquea y gritas por el pasillo: '¡Oye, reiníciala! ' ". [ 6 ]

Un archivo de registro de pánico del kernel de Wii U

La función original panic()permaneció prácticamente sin cambios desde la Quinta Edición de UNIX hasta la versión de 32 V basada en VAX , y solo mostraba un mensaje de error sin ninguna otra información, para luego dejar el sistema en un bucle infinito de inactividad. A medida que se mejoró el código fuente de Unix , la panic()función también se optimizó para mostrar diversos tipos de información de depuración en la consola.

Causas

Un pánico puede ocurrir como resultado de una falla de hardware o un error de software en el sistema operativo. En muchos casos, el sistema operativo es capaz de continuar operando después de que ha ocurrido un error. Si el sistema está en un estado inestable, en lugar de arriesgarse a brechas de seguridad y corrupción de datos, el sistema operativo se detiene para evitar daños mayores, lo que ayuda a facilitar el diagnóstico del error y puede reiniciarse automáticamente. [ 7 ] Después de recompilar una imagen binaria del kernel desde el código fuente , un pánico del kernel durante el arranque del kernel resultante es un problema común si el kernel no fue configurado, compilado o instalado correctamente. [ 8 ] El hardware adicional o la RAM defectuosa también podrían ser fuentes de errores fatales del kernel durante el arranque, debido a la incompatibilidad con el SO o un controlador de dispositivo faltante . [ 9 ] Un kernel también puede entrar en panic()si no puede localizar un sistema de archivos raíz . [ 10 ] Durante las etapas finales de la inicialización del espacio de usuario del kernel , un pánico generalmente se desencadena si falla la generación de init . También podría desencadenarse un pánico si el proceso init finaliza, ya que el sistema quedaría inutilizable. [ 11 ]

A continuación se muestra una implementación de la inicialización final del kernel de Linux en kernel_init(): [ 12 ]

static int __ref kernel_init ( void * unused ) {.../*  * Intentamos cada uno de estos hasta que uno tenga éxito.  *  * Se puede usar el shell Bourne en lugar de init si estamos  * tratando de recuperar una máquina realmente dañada.  */ if ( execute_command ) { if ( ! run_init_process ( execute_command )) return 0 ; pr_err ( "Error al ejecutar %s. Intentando valores predeterminados... \n " , execute_command ); } if ( ! run_init_process ( "/sbin/init" ) || ! run_init_process ( "/etc/init" ) || ! run_init_process ( "/bin/init" ) || ! run_init_process ( "/bin/sh" )) return 0 ;pánico ( "No se encontró init. Intente pasar la opción init= al kernel. " "Consulte la documentación de Linux/init.txt para obtener orientación." ); }

Especificaciones del sistema operativo

Linux

Mensaje de pánico del kernel de un sistema Linux antiguo.

El kernel de Linux implementó una panic()función rudimentaria desde el principio, siendo la implementación original de la versión 0.01 simplemente: [ 13 ]

volatile void panic ( const char * s ) { printk ( "Error crítico del kernel: %s \n\r " , s ); for (;;); }

Sin embargo, desde entonces, la rutina de pánico se ha vuelto cada vez más sofisticada a medida que el núcleo del sistema ha evolucionado.

A partir de Linux 6.10, se integró una nueva función llamada drm_panic , que permite a los controladores DRM mostrar una pantalla de pánico similar a la de una pantalla azul de la muerte (BSOD) para informar al usuario de que se ha producido un error grave. Esto permite que aparezca una pantalla de pánico incluso cuando un servidor de visualización estaba en funcionamiento en el momento en que se produjo el error. [ 14 ]

A partir de Linux 6.12, drm_panic se amplió para que el rastreo de la pila se pueda codificar como un código QR . [ 15 ]

Actualmente, las tres alternativas son usuario (la predeterminada), kmesg (el estilo antiguo) y código QR . [ 16 ]

Los errores de kernel aparecen en Linux como en otros sistemas tipo Unix ; sin embargo, errores graves pero no fatales pueden generar otro tipo de condición de error, conocida como error de kernel . [ 17 ] En este caso, el kernel normalmente continúa ejecutándose después de terminar el proceso que causó el error . Como un error de kernel puede provocar que algunos subsistemas o recursos no estén disponibles, posteriormente puede conducir a un error de kernel completo.

En Linux, un pánico del kernel hace que los LED del teclado parpadeen como indicación visual de una condición crítica. [ 18 ]

macOS

Cuando se produce un pánico del kernel en Mac OS X 10.2 a 10.7, el ordenador muestra un mensaje multilingüe que informa al usuario de que necesita reiniciar el sistema. [ 19 ] Antes de la versión 10.2, se mostraba un mensaje de pánico más tradicional al estilo Unix; en la versión 10.8 y posteriores, el ordenador se reinicia automáticamente y el mensaje solo se muestra como una advertencia que se puede omitir. El formato del mensaje varía de una versión a otra: [ 20 ]

  • 10.0 10.1: El sistema muestra texto en la pantalla, proporcionando detalles sobre el error, y deja de responder.
  • 10.2: Se despliega una cortina negra transparente y luego se muestra un mensaje sobre un fondo blanco que informa al usuario que debe reiniciar el equipo. El mensaje se muestra en inglés , francés , alemán y japonés .
  • 10.3 10.5: Similar a la versión 10.2, pero el fondo del mensaje de error es gris oscuro.
  • 10.6 10.7: El texto ha sido revisado y ahora incluye una traducción al español .
  • Versión 10.8 y posteriores: El equipo deja de responder antes de reiniciarse inmediatamente. Tras el reinicio, muestra un mensaje durante unos segundos informando al usuario de que un problema provocó el reinicio, antes de continuar el arranque. El mensaje ahora incluye una traducción al chino .

En macOS 10.8, si se producían cinco nuevos errores de kernel en un plazo de tres minutos desde el primero, el Mac mostraba un signo de prohibición durante treinta segundos y luego se apagaba; esto se conoce como un "error de kernel recurrente". [ 21 ]

En todas las versiones superiores a la 10.2, el texto se superpone a un símbolo de espera y no ocupa toda la pantalla. La información de depuración se guarda en la NVRAM y se registra en un archivo de registro al reiniciar. En la versión 10.7, se incluye una función para reiniciar automáticamente tras un fallo del kernel. En algunos casos, en la versión 10.2 y posteriores, puede aparecer un texto blanco con detalles del error, además del símbolo de espera.

Véase también

Referencias

  1. "KP - Kernel Panic (Linux) | AcronymFinder" . www.acronymfinder.com . Archivado del original el 26 de octubre de 2015. Consultado el 6 de enero de 2016 .
  2. "FreeBSD 11.0 - página man para panic (freebsd sección 9) - Comandos de Unix y Linux" . www.unix.com . Archivado del original el 1 de abril de 2024. Recuperado el 26 de octubre de 2010 .
  3. "boot failure-init died - Unix Linux Forums - HP-UX" . www.unix.com . Archivado del original el 1 de abril de 2024 . Recuperado el 12 de junio de 2013 .
  4. Randolph J. Herber (1 de septiembre de 1999). "Re: PANIC: init murió" . Grupo de noticias : comp.sys.sgi.admin . Archivado del original el 22 de enero de 2011. Recuperado el 9 de diciembre de 2017 . 
  5. Daniel P. Siewiorek; Robert S. Swarz (1998). Sistemas informáticos fiables: diseño y evaluación . AK Peters, Ltd. pág. 622. ISBN  978-1-56881-092-8. Consultado el 6 de mayo de 2011 .
  6. "Unix y Multics" . www.multicians.org . Archivado del original el 5 de agosto de 2012. Consultado el 25 de mayo de 2005 .
  7. Steven M. Hancock (22 de noviembre de 2002). Tru64 UNIX troubleshooting: diagnosing and correcting system problems . Digital Press. págs. 119–126 . ISBN  978-1-55558-274-6. Consultado el 3 de mayo de 2011 .
  8. Michael Jang (2006). Molestias de Linux para geeks . O'Reilly Media, Inc. págs. 267–274 . ISBN  978-0-596-00801-7. Consultado el 29 de abril de 2011 .
  9. David Pogue (17 de diciembre de 2009). Cambiar a Mac: El manual que faltaba, edición Snow Leopard . O'Reilly Media, Inc. pág. 589. ISBN  978-0-596-80425-1. Consultado el 4 de mayo de 2011 .
  10. Greg Kroah-Hartman (2007). Linux kernel in a nutshell . O'Reilly Media, Inc. p. 59. ISBN  978-0-596-10079-7. Consultado el 3 de mayo de 2011 .
  11. Wolfgang Mauerer (26 de septiembre de 2008). Arquitectura profesional del kernel de Linux . John Wiley e hijos. págs. 1238-1239 . ISBN  978-0-470-34343-2Archivado del original el 1 de abril de 2024. Consultado el 3 de mayo de 2011 .
  12. "linux/init/main.c" . Referencia cruzada de LXR . Archivado del original el 6 de octubre de 2022.
  13. "panic.c" . Versión del kernel de Linux 0.01 .
  14. "Changes/EnableDrmPanic" . Wiki del proyecto Fedora .
  15. Thomas Zimmermann (29 de agosto de 2024). " [ PULL ] drm-misc-next" . dri-devel (Lista de correo).
  16. Jocelyn Falempe (2025). "DRM Panic: The BSOD is coming to Linux" (PDF) .
  17. " Controladores de dispositivos Linux , Capítulo 4" (PDF) . Archivado (PDF) del original el 14 de noviembre de 2014. Recuperado el 21 de julio de 2016 .
  18. James Kirkland; David Carmichael; Christopher L. Tinker; Gregory L. Tinker (mayo de 2006). Solución de problemas de Linux para administradores de sistemas y usuarios avanzados . Prentice Hall . pág. 62. ISBN  9780132797399Archivado del original el 1 de abril de 2024. Consultado el 5 de febrero de 2016 .
  19. "OS X: Acerca de los errores del kernel - Soporte técnico de Apple" . support.apple.com . Archivado del original el 21 de mayo de 2013.
  20. "Una nueva pantalla de la muerte para Mac OS X" . OSXBook.com . Archivado del original el 1 de mayo de 2012. Consultado el 30 de abril de 2011 .
  21. "OS X: Acerca de los errores del kernel" . Soporte técnico de Apple . Apple. Archivado del original el 24 de mayo de 2018.