stringtranslate.com

Pánico del kernel

Pánico del kernel en Ubuntu 4.10 , este debido a un error de VFS.

Un mensaje de pánico del núcleo de un sistema Linux
Un pánico del kernel de OpenSolaris.
Un pánico del 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 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 fatal interno en el que no puede recuperarse de manera segura o continuar ejecutando el sistema tendría un mayor riesgo de pérdida de datos importante. El término es en gran medida específico de los sistemas Unix y similares . 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 núcleo que manejan los pánicos, conocidas como panic()en el código fuente de 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 núcleo al disco para la depuración post-mortem 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 núcleo también pueden ser causados ​​por errores que se originan fuera del espacio del núcleo . Por ejemplo, muchos sistemas operativos Unix entran en pánico si el proceso init , que se ejecuta en el espacio del usuario , finaliza. [3] [4]

Historia

El núcleo de Unix mantiene la consistencia interna y la corrección en 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 un fallo en una aserción da como resultado 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 discusión de 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. Él dijo: "Omitimos todo eso. Si hay un error, tenemos esta rutina llamada pánico, y cuando se llama, la máquina se bloquea y gritas desde el pasillo: 'Oye, reiníciala '" . [6]

La panic()función original no sufrió modificaciones sustanciales desde la quinta edición de UNIX hasta el UNIX 32V basado en VAX y solo generaba un mensaje de error sin ninguna otra información, lo que hacía que el sistema cayera en un bucle inactivo sin fin.

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

/* * En caso de que la consola esté apagada, * panicstr contiene el argumento de la última * llamada a panic. */ char * panicstr ; /* * Se llama a Panic en caso de errores fatales irresolubles. * Se sincroniza, imprime "panic: mesg" y * luego realiza un bucle. */ panic ( s ) char * s ; { panicstr = s ; update (); printf ( "panic: %s \n " , s ); for (;;) idle (); }         

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

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 funcionando después de que se haya producido un error. Si el sistema está en un estado inestable, en lugar de correr el riesgo de sufrir violaciones de seguridad y corrupción de datos, el sistema operativo se detiene para evitar más daños, lo que ayuda a facilitar el diagnóstico del error y puede reiniciarse automáticamente. [8]

Después de volver a compilar una imagen binaria del núcleo a partir del código fuente , un pánico del núcleo mientras se inicia el núcleo resultante es un problema común si el núcleo no se configuró, compiló o instaló correctamente. [9] El hardware adicional o el mal funcionamiento de la RAM también podrían ser fuentes de errores fatales del núcleo durante el inicio, debido a la incompatibilidad con el sistema operativo o la falta de un controlador de dispositivo . [10] Un núcleo también puede entrar en pánico 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 núcleo , normalmente se activa un pánico si falla el engendro de init . También se puede activar un pánico si el proceso init termina, 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]

int estático __ref kernel_init ( void * no utilizado ) {     ... /*  * Probamos 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 rota.  */ 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 ;                     panic ( "No se encontró init. Intente pasar la opción init= al kernel. " "Consulte Linux Documentation/init.txt para obtener orientación." ); } 

Especificaciones del sistema operativo

Linux

Pánico del kernel como se ve en una consola iKVM

Los pánicos del kernel aparecen en Linux como en otros sistemas similares a Unix ; sin embargo, errores graves pero no fatales pueden generar otro tipo de condición de error, conocida como un error del kernel . [14] En este caso, el kernel normalmente continúa ejecutándose después de matar el proceso ofensivo . Como un error puede hacer que algunos subsistemas o recursos no estén disponibles, más tarde puede conducir a un pánico del kernel completo.

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

macOS

Cuando se produce un pánico del núcleo en Mac OS X 10.2 a 10.7, el equipo muestra un mensaje multilingüe que informa al usuario de que debe 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 la versión 10.8 y posteriores, el equipo se reinicia automáticamente y el mensaje solo se muestra como una advertencia que se puede omitir después. El formato del mensaje varía de una versión a otra: [17]

Si ocurren cinco nuevos pánicos del kernel dentro de los tres minutos siguientes al primero, el Mac mostrará un signo de prohibición durante treinta segundos y luego se apagará; esto se conoce como "pánico del kernel recurrente". [18]

En todas las versiones posteriores a la 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 la NVRAM y se escribe en un archivo de registro al reiniciar. En la versión 10.7 hay una función para reiniciar automáticamente después de un pánico del núcleo. En algunos casos, en la versión 10.2 y posteriores, puede aparecer un texto blanco que detalla el error además del símbolo de espera.

Véase 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 panic (freebsd sección 9) - 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. ^ "error 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: PANIC: init died". 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 fiables: diseño y evaluación. AK Peters, Ltd. pág. 622. ISBN 978-1-56881-092-8. Recuperado 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 UNIX V6
  8. ^ Steven M. Hancock (22 de noviembre de 2002). Tru64 UNIX troubleshooting: diagnosticing and correcting system problems (Solución de problemas de Tru64 en UNIX: diagnóstico y corrección de problemas del sistema) Colección ITPro de HP Technologies Series. Digital Press. pp. 119–126. ISBN 978-1-55558-274-6. Recuperado el 3 de mayo de 2011 .
  9. ^ Michael Jang (2006). Los inconvenientes de Linux para los expertos. O'Reilly Media, Inc., págs. 267-274. ISBN 978-0-596-00801-7. Recuperado el 29 de abril de 2011 .
  10. ^ David Pogue (17 de diciembre de 2009). Pasarse a Mac: el manual perdido, edición Snow Leopard. O'Reilly Media, Inc., pág. 589. ISBN 978-0-596-80425-1. Recuperado el 4 de mayo de 2011 .
  11. ^ Greg Kroah-Hartman (2007). El núcleo de Linux en pocas palabras. O'Reilly Media, Inc., pág. 59. ISBN 978-0-596-10079-7. Recuperado 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 de LXR . Archivado desde el original el 6 de octubre de 2022.
  14. ^ "Controladores de dispositivos Linux, Capítulo 4" (PDF) . Archivado (PDF) del 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 . p. 62. ISBN 9780132797399Archivado desde el original el 1 de abril de 2024 . Consultado el 5 de febrero de 2016 .
  16. ^ "OS X: Acerca de los problemas de kernel - Soporte técnico de Apple". support.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 . Apple. Archivado desde el original el 24 de mayo de 2018.