O Kernel Panic despeja nenhum arquivo de log


8

Eu estava jogando um jogo no Steam e, de repente, tive um pânico no kernel. Desliguei o computador manualmente e iniciei novamente o Linux Mint 17.1 (Cinnamon) de 64 bits e fui verificar meus arquivos de log /var/log/, mas não consegui encontrar nenhuma referência ou qualquer tipo de mensagem relacionada ao pânico do kernel que aconteceu.

É estranho por que ele nunca despejou o núcleo nem fez anotações nos arquivos de log. Como posso garantir que um núcleo seja sempre despejado no caso de um pânico no kernel acontecer novamente? Não faz nenhum sentido porque nada foi registrado quando ocorreu um pânico no kernel. Olhando ao redor no Google, as pessoas sugerem para ler /var/log/dmesg, /var/log/syslog, /var/log/kern.log, /var/log/Xorg.logetc ... mas nada. Nem mesmo em .Xsession-errorsarquivo.

Aqui estão algumas fotografias da tela:
Kernel Panic (imagem2) Kernel Panic (imagem1)

Eu sempre poderia tirar uma foto da tela quando e se isso acontecer novamente, mas eu só quero ter certeza de que posso despejar o núcleo e criar um arquivo de log em pânico no kernel.


1
você conferiu /var/crash?
Archemar 03/04

@Archemar Não existe esse arquivo ou diretório.

É altamente improvável que você encontre informações sobre uma falha no kernel .Xsession-errors.
G-Man diz 'Reinstate Monica'

Respostas:


6

Para ter certeza de que sua máquina gera um arquivo "principal" quando ocorre uma falha no kernel, você deve confirmar as configurações "sysctl" da sua máquina.

Na IMO, a seguir devem ser as configurações (mínimas) em /etc/sysctl.conf:

kernel.core_pattern = /var/crash/core.%t.%p
kernel.panic=10
kernel.unknown_nmi_panic=1

Execute sysctl -pdepois de fazer alterações no /etc/sysctl.confarquivo. Você provavelmente também deve, mkdir /var/crashse ainda não existir.

Você pode testar o acima, gerando um despejo manual usando a SysRqtecla (a combinação de teclas para despejar o núcleo é Alt+ SysRq+ C).


Isso parece ser o começo de alguma coisa. Eu tive que escrevê-las como nova entrada no sysctl, pois não estava lá no arquivo. Eu fiz o Alt+SysRq+Ccom as teclas, mas não fez nada, apenas exibiu a tela. Também estou usando o laptop para que as teclas possam ser diferentes. Eu tentei, fn+SysRq+Cmas fez o mesmo de antes.

Por favor, compartilhe a saída de "cat / proc / sys / kernel / sysrq". Pode ser possível que o sysrq esteja desativado em sua máquina. Consulte: kernel.org/doc/Documentation/sysrq.txt para mais detalhes
shubham

a saída que me dá 176

Editar o arquivo /etc/sysctl.conf para incluir a linha -> kernel.sysrq = 1
shubham

1
@ user94959 Funciona para você?
shubham

2

Quando o kernel entra em pânico, significa que algo deu errado no kernel. A gravação de arquivos de log e dumps principais requer o uso dos drivers do dispositivo de armazenamento em bloco (seu disco) e do sistema de arquivos (o espaço deve ser alocado e o tamanho do arquivo de log deve ser atualizado). Dado que os serviços fornecidos pelo kernel são necessários para gravar arquivos, e o kernel sabe que está em um estado quebrado, ele não pode gravar os arquivos ou registrar nada, porque não está mais em um estado seguro, qualquer operação pode piorar as coisas e danificar / destruir seu sistema de arquivos. Portanto, você não pode fazer o kernel gravar no log nem despejar um dump principal quando entrar em pânico.

Agora, o que você pode fazer, se quiser, é configurar o sistema com um kernel de tratamento de falhas, que é um segundo kernel carregado na memória para o qual o controle pode ser transferido se o kernel principal travar. Como esse kernel possui drivers e outros, ele poderá salvar um despejo de memória para você. Porém, essa não é uma configuração muito comum e usada principalmente para sistemas de ponta que exigem alta disponibilidade e onde uma falha é um problema muito sério que deve ser investigado.

Veja, por exemplo, a opção crashkernel no Kernel Crash Dump no ubuntu.com. (Observe que esta página diz que o mecanismo de despejo de memória do kernel está ativado por padrão, a partir do Ubuntu 16.04.)

Eu acredito que o sistema realmente salva o dump em uma parte reservada da memória e depois reinicia, e o kernel salva a memória reservada em disco na próxima inicialização (uma vez que o kernel recém-inicializado está em um estado são e pode fazer isso).


A página no ubuntu.com descreve o mecanismo de maneira um pouco diferente: ele diz que o kernel se reinicia em uma área reservada da memória, portanto a memória que estava usando antes da interrupção (ou seja, a memória que você deseja despejar) permanecerá intacto. E acredito que não é tão exótico quanto você soa (como agora está ativado por padrão).
G-Man diz 'Reinstate Monica'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.