O que é um “kernel panic”?

19

O que significa quando seu computador tem um "kernel panic" ?

Equivale às janelas BSOD ?

Além disso, quais métodos, dicas, truques estão disponíveis para o usuário quando ocorre um kernel panic ?

    
por Stefan 06.09.2010 / 14:00

3 respostas

16

Kernel panic é o mesmo que BSOD e não é recuperável IIRC. No entanto, uma falha menor é OOPS, o que denota algum erro no kernel.

  1. Você pode usar o kexec que muda para o novo kernel em pânico (você pode ameaçá-lo como reinicialização rápida) - possivelmente obtendo despejo significativo do sistema para depurar o problema
  2. Você pode usar o parâmetro panic , que reinicializa o kernel após n segundos. Você pode instruir o GRUB a mudar para o kernel de fallback em tal caso
  3. Use chaves do Magic SysRQ para imprimir rastreamentos de pilha, etc.
por 06.09.2010 / 16:19
6

Um kernel panic do Linux é uma chamada de subrotina que o kernel executa quando a lógica do kernel determina que existe uma condição que torna a execução continuada da lógica normal impossível ou irresponsável.

O kernel pode chamar um pânico quando:

  1. Detecta um erro de software no código do kernel ou na pilha
  2. Quando há uma condição de tempo de execução, como falta de memória, sem processos elimináveis
  3. Uma exceção de CPU durante a execução no modo privilegiado resulta em uma condição oops

Existem cerca de 950 condições distintas em que um pânico é chamado nos kernels 3.X. A sub-rotina de pânico primeiro imprime o despejo de pilha do kernel e os registradores da CPU no console. Então, se um crash kexec kernel foi configurado, ele inicializa o kernel kexec. Caso contrário, a rotina de pânico quebra todos os spinlocks e realiza uma reinicialização de emergência.

Um oops é uma sub-rotina chamada de um manipulador de exceção de CPU para uma exceção de CPU que ocorre durante a execução no modo privilegiado (ou seja, no kernel). A exceção pode ocorrer como resultado de um erro no código do kernel ou devido a uma falha de hardware ou como resultado de uma condição externa que causa uma exceção específica. O manipulador para a exceção imprime um log do kernel com registros de CPU e lista de módulos. Ao contrário das chamadas de pânico, a própria lógica do kernel nunca chama um oops fora do contexto dos manipuladores de exceção da CPU.

Se o kernel estiver configurado para kexec, então oops resultará no kernel kexec sendo inicializado. Caso contrário, se a exceção ocorrer durante a execução de um manipulador de interrupção, o oops resultará em uma chamada de pânico do kernel. Caso contrário, se o kernel estiver configurado com “panic on oops”, o oops resultará em uma chamada de pânico. Caso contrário, o kernel sai do manipulador de exceções e retoma a execução. Quando o kernel sai do manipulador de exceção e continua a execução, a integridade do kernel é suspeita.

Os manipuladores de exceções da CPU são específicos da arquitetura. Eles geralmente são implementados em arch / * / kernel / traps.c, e são configurados no código de entrada do kernel específico da arquitetura que configura a tabela de interrupções. Veja por exemplo arch/powerpc/kernel/traps.c e arch/powerpc/kernel/head_fsl_booke.S .

As condições de kernel panic e oops podem ser configuradas para chamar uma rotina kmsg_dump que você pode usar para salvar informações de depuração de falha na memória RAM, ou a memória flash, a menos que o oops ocorra em contexto de interrupção, caso em que o “kmsg_dump” rotina só pode ser usada para salvar em RAM, não em MTD. Ao salvar na RAM, é sua responsabilidade a) garantir que a área de RAM usada não seja sobrescrita durante a inicialização do kexec ou do reinício de emergência, e b) coletar a área de memória do kernel kexec ou da lógica do carregador de inicialização.

    
por 10.05.2013 / 14:34
5

É o comportamento inesperado do fluxo do programa (o kernel é um programa neste caso). Em caso de pânico, o programa pára de funcionar. É igual ao Windows BsoD. KP significa algo errado com o kernel ou módulos. Se é estável kernel - olhe para os drivers. Se nada de especial e todos os drivers forem comuns, pode ser um problema de hardware.

    
por 06.09.2010 / 14:31