stringtranslate.com

Panico kernel

Un mensaje de pánico del kernel de un sistema Linux
Un pánico en el kernel de OpenSolaris.
Un pánico en el kernel de OpenSolaris .
Pánico del kernel en Ubuntu 13.04 "Raring Ringtail" (kernel Linux 3.8) en Oracle VM VirtualBox

Un pánico del kernel (a veces abreviado como KP [1] ) es una medida de seguridad que toma el kernel de un sistema operativo al detectar un error fatal interno en el que no puede recuperarse de manera segura o continuar ejecutando el sistema tendría un mayor riesgo. de pérdida importante de datos. El término es en gran medida específico de Unix y sistemas 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".

Las rutinas del kernelpanic() que manejan los pánicos, conocidas como código fuente Unix derivado de AT&T y BSD , generalmente están diseñadas para enviar un mensaje de error a la consola , volcar una imagen de la memoria del kernel al disco para una depuración post-mortem y luego esperar el sistema se reiniciará 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 finaliza el proceso de inicio , que se ejecuta en el espacio del usuario . [3] [4]

Historia

El kernel de Unix mantiene la coherencia interna y la corrección del tiempo de ejecución con aserciones como mecanismo de detección de fallas . La suposición básica es que el hardware y el software deben funcionar correctamente y que un fallo en una afirmación provoca pánico , es decir, una parada voluntaria de toda la actividad del sistema. [5] El pánico del kernel 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 discusión sobre este cambio con el desarrollador de Unix, Dennis Ritchie :

Le comenté a Dennis que fácilmente la mitad del código que estaba escribiendo en Multics era código de recuperación de errores. Dijo: "Omitimos todo eso. Si hay un error, tenemos esta rutina llamada pánico, y cuando se llama, la máquina falla y gritas en el pasillo: 'Oye, reiníciala ' " . ]

panic()La función original se mantuvo esencialmente sin cambios desde la Quinta Edición de UNIX al UNIX 32V basado en VAX y solo generaba un mensaje de error sin otra información, luego dejaba el sistema en un bucle inactivo sin fin.

Código fuente de panic()la función en V6 UNIX : [7]

/* * En caso de que la consola esté apagada, * pánicostr contiene el argumento para la última * llamada al pánico. */ char * pánicostr ; /* * Se invoca pánico ante errores fatales * irresolubles. * Se sincroniza, imprime "panic: mesg" y * luego realiza un bucle. */ pánico ( s ) char * s ; { cadena de pánico = s ; actualizar (); printf ( "pánico: %s \n " , s ); para (;;) inactivo (); }         

A medida que se mejoró el código basepanic() de Unix, también se mejoró la función para volcar varias formas de información de depuración a la consola.

Causas

Puede producirse un pánico 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 seguir funcionando después de que se ha producido un error. Sin embargo, el sistema se encuentra en un estado inestable y, en lugar de correr el riesgo de sufrir violaciones de seguridad y corrupción de datos, el sistema operativo se detiene para evitar daños mayores y facilitar el diagnóstico del error y, en los casos habituales, reiniciar. [8]

Después de recompilar una imagen binaria del kernel a partir del código fuente , un pánico en el kernel al arrancar el kernel resultante es un problema común si el kernel no se configuró, compiló o instaló correctamente. [9] El hardware adicional o la RAM que funciona mal también podrían ser fuentes de errores fatales del kernel durante el inicio, debido a la incompatibilidad con el sistema operativo o a la falta de un controlador de dispositivo . [10] Un kernel también puede entrar panic()si no puede localizar un sistema de archivos raíz . [11] Durante las etapas finales de la inicialización del espacio de usuario del kernel , normalmente se desencadena un pánico si falla la generación de init . También se podría desencadenar un pánico si el proceso de inicio finaliza, ya que el sistema quedaría inutilizable. [12]

La siguiente es una implementación de la inicialización final del kernel de Linux en kernel_init(): [13]

static int __ref kernel_init ( void * no utilizado ) {     ... /*  * Probamos cada uno de estos hasta que uno tenga éxito.  *  * El shell Bourne se puede utilizar en lugar de init si estamos  * intentando recuperar una máquina realmente averiada.  */ if ( ejecutar_comando ) { if ( ! run_init_process ( ejecutar_comando )) devolver 0 ; pr_err ( "Error al ejecutar %s. Intentando los valores predeterminados... \n " , ejecutar_command ); } if ( ! run_init_process ( "/sbin/init" ) || ! run_init_process ( "/etc/init" ) || ! run_init_process ( "/bin/init" ) || ! run_init_process ( "/bin/sh" )) devolver 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." ); } 

Detalles del sistema operativo

linux

Pánico del kernel visto en una consola iKVM

Los pánicos del kernel aparecen en Linux como en otros sistemas similares a Unix , pero también pueden generar otro tipo de condición de error, conocida como kernel oops . [14] En este caso, el kernel normalmente continúa ejecutándose después de finalizar el proceso infractor . Como un Ups podría hacer que algunos subsistemas o recursos dejen de estar disponibles, más tarde pueden provocar un pánico total en el kernel.

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

Mac OS

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

A veces, cuando hay cinco o más pánicos del kernel dentro de los tres minutos posteriores al primero, la Mac mostrará una señal de prohibición durante 30 segundos y luego se apagará; esto se conoce como "pánico recurrente del kernel". [18]

En todas las versiones superiores a 10.2, el texto se superpone a un símbolo de espera y no aparece en pantalla completa. La información de depuración se guarda en NVRAM y se escribe en un archivo de registro al reiniciar. En 10.7 hay una función para reiniciar automáticamente después de un pánico en el kernel. En algunos casos, en 10.2 y posteriores, puede aparecer un texto blanco que detalla el error además del símbolo de espera.

Ver también

Referencias

  1. ^ "KP - Kernel Panic (Linux) | AcronymFinder". www.acronymfinder.com . Archivado desde el original el 26 de octubre de 2015 . Consultado el 6 de enero de 2016 .
  2. ^ "FreeBSD 11.0 - página de manual de pánico (sección 9 de freebsd) - Comandos de Unix y Linux". www.unix.com . Archivado desde el original el 1 de abril de 2024 . Consultado el 26 de octubre de 2010 .
  3. ^ "fallo de arranque-init murió - Foros de Unix Linux - HP-UX". www.unix.com . Archivado desde el original el 1 de abril de 2024 . Consultado el 12 de junio de 2013 .
  4. ^ Randolph J. Herber (1 de septiembre de 1999). "Re: PÁNICO: el inicio murió". Grupo de noticias : comp.sys.sgi.admin. Archivado desde el original el 22 de enero de 2011 . Consultado el 9 de diciembre de 2017 .
  5. ^ Daniel P. Siewiorek; Robert S. Swarz (1998). Sistemas informáticos confiables: 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 desde el original el 5 de agosto de 2012 . Consultado el 25 de mayo de 2005 .
  7. ^ "Código fuente /usr/sys/ken/prf.c". Archivado desde el original el 24 de febrero de 2021.desde V6 UNIX
  8. ^ Steven M. Hancock (22 de noviembre de 2002). Solución de problemas de Tru64 UNIX: diagnóstico y corrección de problemas del sistemaColección HP Technologies SeriesITPro. Prensa Digital. págs. 119-126. ISBN 978-1-55558-274-6. Consultado el 3 de mayo de 2011 .
  9. ^ 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 .
  10. ^ David Pogue (17 de diciembre de 2009). Cambiar a Mac: El manual que falta, edición Snow Leopard. O'Reilly Media, Inc. pág. 589.ISBN 978-0-596-80425-1. Consultado el 4 de mayo de 2011 .
  11. ^ Greg Kroah-Hartman (2007). El kernel de Linux en pocas palabras. O'Reilly Media, Inc. pág. 59.ISBN 978-0-596-10079-7. Consultado el 3 de mayo de 2011 .
  12. ^ 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-2. Archivado desde el original el 1 de abril de 2024 . Consultado el 3 de mayo de 2011 .
  13. ^ "linux/init/main.c". Referencia cruzada LXR . Archivado desde el original el 6 de octubre de 2022.
  14. ^ "Controladores de dispositivos Linux, capítulo 4" (PDF) . Archivado (PDF) desde el original el 14 de noviembre de 2014 . Consultado el 21 de julio de 2016 .
  15. ^ 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 . pag. 62.ISBN 9780132797399. Archivado desde el original el 1 de abril de 2024 . Consultado el 5 de febrero de 2016 .
  16. ^ "OS X: Acerca de los pánicos del kernel - Soporte técnico de Apple". soporte.apple.com . Archivado desde el original el 21 de mayo de 2013.
  17. ^ "Una nueva pantalla de la muerte para Mac OS X". OSXBook.com . Archivado desde el original el 1 de mayo de 2012 . Consultado el 30 de abril de 2011 .
  18. ^ "OS X: Acerca de los pánicos del kernel - Soporte técnico de Apple". soporte.apple.com . Archivado desde el original el 24 de mayo de 2018.