Ocasionalmente, quando saio de um estado de suspensão ou hibernação, entro em pânico no kernel. Nesses casos, normalmente forço o desligamento mantendo pressionado o botão liga / desliga. Recentemente, comecei a usar o parâmetro kernel panic=n
, que reinicia automaticamente o sistema n
segundos após um kernel panic.
Existe alguma diferença entre esses métodos?
Aprendi que é possível carregar outro kernel em preparação para um possível kernel panic, permitindo salvar os logs de pânico. Este kernel secundário pode ser usado para executar um desligamento adequado (por exemplo, interromper
systemd
serviços, desmontar o sistema de arquivos, etc.) em vez de uma reinicialização forçada?
Não, já que o kernel original parou completamente de fazer as coisas do kernel naquele ponto; literalmente, as únicas coisas que ele faz é piscar o LED do teclado e fazer a contagem regressiva do cronômetro de reinicialização. Nada mais está funcionando.
Também não. O kernel secundário não terá nenhum dos "dados de trabalho" do driver do sistema de arquivos na memória, por exemplo, nem quaisquer referências aos processos existentes anteriormente - ele começa do zero como qualquer outro kernel - em parte porque não tem uma boa maneira de saber quais dessas estruturas de dados ainda são boas versus quais delas podem ter sido corrompidas por qualquer problema que levou ao panic() para começar, e em parte porque extrair essas coisas de um kernel diferente é provavelmente um processo muito complicado para valer a pena isto.
De qualquer forma, seu sistema de arquivos geralmente terá suas próprias maneiras de se recuperar de uma falha, assim como seu banco de dados SQL e outras coisas.
Quando ocorre um kernel panic, forçar o desligamento mantendo pressionado o botão liga/desliga ou deixar o sistema reiniciar automaticamente por meio do parâmetro panic=n leva a uma parada abrupta, o que pode causar risco de corrupção ou perda de dados. Embora seja possível carregar um kernel secundário para capturar logs, normalmente não permite um desligamento adequado (como interromper serviços ou desmontar sistemas de arquivos). A prática recomendada é minimizar os pânicos do kernel por meio de atualizações ou alterações de configuração e, se ocorrer um pânico, garantir que seja feito backup frequente de todos os dados importantes para evitar perdas devido a reinicializações forçadas.