Trocando kernel remotamente no Debian

Publicado por Daniel Roque em 13/09/2013

[ Hits: 3.236 ]

 


Trocando kernel remotamente no Debian



Dica rápida para os colegas que sofrem para solucionar problemas complexos remotamente.

Recentemente, tive que trocar remotamente o kernel de um servidor GNU/Linux, só que todos que já trocaram alguma vez o kernel, sabem que nem sempre as coisas ocorrem como previsto, pode ocorrer um kernel panic ou coisas do tipo.

Vamos à estratégia para contornar a situação. Supomos então:
  • Que você saiba instalar o kernel;
  • Possua acesso via SSH ao servidor e você saiba como acessar;
  • Bootloader: LILO;
  • Kernel atual: 2.6.XX;
  • Kernel novo: 2.6.ZZ;
  • Boot padrão: 2.6.XX;
  • Queremos trocar do kernel 2.6.XX para o kernel 2.6.ZZ.

Passos a seguir:

1. Instalaremos o kernel 2.6.ZZ e configuraremos o LILO para ter a opção do kernel 2.6.ZZ.

Quando eu digitar lilo, deve aparecer algo parecido com as 2 linhas abaixo com o "*" (asterisco)) no 2.6.XX, que já é a opção de boot atual, ou seja, somente adicionamos a opção 2.6.ZZ:

# lilo

2.6.XX + *
2.6.ZZ +

2. Vamos configurar agora, para o nosso próximo boot e somente o próximo boot ocorrer pelo kernel 2.6.ZZ:

# lilo -R 2.6.ZZ

3. Legal, e se a máquina travar? Bom, para isso vamos configurar para o servidor rebootar caso ocorra kernel panic.

Edite o arquivo "/etc/sysctl.conf":

# mcedit /etc/sysctl.conf

E adicione ao final, a opção:

kernel.panic=5

O que faz com que a máquina reinicie 5 segundos após um kernel panic.

4. Legal, se acontecer um kernel panic, tudo bem. Mas, e se a placa de rede não subir?

Para contornar, faremos o seguinte:

Vamos criar um arquivo vazio chamado "/rebootnow":

# touch /rebootnow

Agora, dentro do "/etc/rc.local", vamos adicionar uma verificação que vai ocorrer 5 minutos após o servidor ter reiniciado e, caso este arquivo exista, o servidor vai rebootar.

Dentro de "/etc/rc.local", adicione:

(sleep 300; [ -e /rebootnow ] && reboot ) &

Troque os 300, se achar que 5 minutos é muito ou pouco. Em geral, eu utilizo mesmo é 3 minutos, no caso 180.

5. Legal, precavido de quase tudo. Agora digite reboot e fique pingando o servidor para ver se ele volta.

Assim que voltar, se conseguir pegá-lo com o novo kernel, remova o arquivo "/rebootnow" para evitar que ele reboote, caso ocorra kernel panic ou não consiga pegá-lo novamente.

Na pior das hipóteses, em 7 minutos ele deve voltar do mesmo jeito que estava antes.

* Importante: caso consiga pegá-lo, altere o LILO para ele bootar pelo novo kernel 2.6.ZZ.


Boa sorte!

Outras dicas deste autor

Emulação de Impressora Jetdirect

Samsung R480 - controle da luz de fundo

Placa wireless USB Multilaser Atheros Communications, Inc. AR9271 802.11n no Linux

Exemplos prático para VirtualBox em modo console

Expandindo partição ext3 em discos lógicos e qcow2 em ambiente de virtualização

Leitura recomendada

Ativando e desativando CPUs sob demanda

Exploit dá acesso root em máquina local - kernels 2.6.17 e 2.6.24.1

Adicionando módulo LTSP4.2 à árvore do kernel

Instalando kernel 2.6.x no Slackware 10.2

Melhorando o desempenho do Ubuntu com o Ubuntu Tweak (desinstalando os kerneis que não estão em uso)

  

Comentários
[1] Comentário enviado por removido em 13/09/2013 - 01:04h

Que pinguim mais ousado!

Rapaz, parabéns!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts