Che cos'è un "panico del kernel"?


19

Che cosa significa quando il tuo computer ha un "panico nel kernel" ?

Equivale al BsoD di Windows ?

Inoltre, quali metodi, suggerimenti, trucchi sono disponibili per l'utente quando si verifica un panico nel kernel ?


3
Un panico del kernel è migliore di un BSOD perché il suo nome implica ciò che l'utente dovrebbe fare quando succede.
anfetamachina,

Un blu di Windows fornisce anche alcune informazioni, anche se non è molto utile per la maggior parte del tempo.
ott--

Risposte:


16

Il panico del kernel è lo stesso di BSOD ed è IIRC non salvabile. Comunque un fallimento minore è OOPS che denota qualche errore nel kernel.

  1. Puoi usare kexec che passa al nuovo kernel in preda al panico (puoi minacciarlo come riavvio veloce) - possibilmente ottenere un dump significativo del sistema per eseguire il debug del problema
  2. È possibile utilizzare un panicparametro che riavvia il kernel dopo n secondi. In questo caso è possibile indicare a GRUB di passare al kernel di fallback
  3. Utilizzare i tasti Magic SysRQ per stampare tracce dello stack ecc.

6
Un BSOD più corretto è un KP con una schermata di messaggio di errore davvero pessima.
xenoterracide,

Il SysRq magico più notevole è stato quello emergency syncdi svuotare i buffer (quando è ancora possibile).
ott--

6

Un panico del kernel Linux è una chiamata di subroutine che il kernel esegue quando la logica del kernel determina l'esistenza di una condizione che rende impossibile o irresponsabile l'esecuzione continua della logica normale.

Il kernel può chiamare il panico quando:

  1. Rileva un errore software nel codice del kernel o nello stack
  2. Quando esiste una condizione di runtime come memoria insufficiente senza processi killable
  3. Un'eccezione della CPU durante l'esecuzione in modalità privilegiata provoca una condizione oops

Ci sono circa 950 condizioni distinte in cui viene chiamato un panico nei kernel 3.X. La subroutine di panico prima stampa il dump dello stack del kernel e i registri della CPU sulla console. Quindi, se è stato configurato un kernel kexec crash, avvia il kernel kexec. Altrimenti la routine di panico sballa tutti gli spinlock ed esegue un riavvio di emergenza.

Un oops è una subroutine chiamata da un gestore di eccezioni CPU per un'eccezione CPU che si verifica durante l'esecuzione in modalità privilegiata (ovvero kernel). L'eccezione può verificarsi a causa di un errore nel codice del kernel o a causa di un errore hardware o come risultato di una condizione esterna che causa un'eccezione specifica. Il gestore per l'eccezione stampa un registro del kernel con i registri della CPU e l'elenco dei moduli. A differenza delle chiamate di panico, la logica del kernel non chiama mai un oops al di fuori del contesto dei gestori di eccezioni della CPU.

Se il kernel è configurato per kexec, un oops comporterà l'avvio del kernel kexec. Altrimenti, se l'eccezione si verifica durante l'esecuzione di un gestore di interrupt, l'oops si traduce in una chiamata di panico del kernel. Altrimenti, se il kernel è configurato con "panic on oops", allora oops genererà una chiamata di panico. Altrimenti il ​​kernel esce dal gestore delle eccezioni e riprende l'esecuzione. Quando il kernel esce dal gestore delle eccezioni e riprende l'esecuzione, l'integrità del kernel è sospetta.

I gestori di eccezioni CPU sono specifici dell'architettura. Di solito sono implementati in arch / * / kernel / traps.c e impostati nel codice di entrata del kernel specifico dell'architettura che imposta la tabella di interrupt. Vedi per esempio arch/powerpc/kernel/traps.ce arch/powerpc/kernel/head_fsl_booke.S.

Entrambe le condizioni di panico del kernel e oops possono essere configurate per richiamare una kmsg_dumproutine che è possibile utilizzare per salvare le informazioni di debug degli arresti anomali nella RAM o nella memoria flash a meno che gli oops si siano verificati nel contesto di interruzione, nel qual caso la routine "kmsg_dump" può essere utilizzata solo per salva su RAM, non su MTD. Quando si salva su RAM, è responsabilità dell'utente a) assicurarsi che l'area RAM utilizzata non venga sovrascritta durante l'avvio di kexec o l'avvio di riavvio di emergenza eb) per raccogliere l'area di memoria dal kernel di Kexec o dalla logica del caricatore di avvio.


5

È il comportamento inaspettato del flusso di programma (in questo caso il kernel è un programma). In caso di panico il programma smette di funzionare. È uguale al BsoD di Windows. KP significa qualcosa di sbagliato nel kernel o nei moduli. Se è un kernel stabile, guarda i driver. Se nulla di speciale e tutti i driver sono comuni potrebbe essere un problema hardware.


o kernel fa picnic ..
Uray

Anche in un kernel stabile, rimangono sempre alcuni bug.
ott--
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.