Linux, Instalando um novo Kernel através de Livecd

Introdução

Existem certas situações que precisamos atualizar o kernel do sistema devido à problemas no boot. No meu caso, após restaurar um sistema de uma máquina antiga para um servidor mais novo, através de uma imagem dd, tive problemas para bootar o sistema no novo servidor devido ao kernel do sistema antigo não identificar o novo hardware.

Para solucionar essa questão, tive que instalar um novo kernel do Linux no servidor novo. Para ajudar utilizei um Livecd do Ubuntu. Segue abaixo o procedimento que usei para instalar o novo kernel.

Procedimento

  • Bootar o Livecd do Ubuntu.
  • Instalação de um novo kernel no livecd.
  • $ sudo apt-get update
    $ sudo apt-get install linux-image

    Somente com o boot do livecd não temos todos os arquivos do kernel disponíveis em /boot. Para isso instalamos um novo kernel dentro do livecd. Após a instalação acima, o importante é verificar que o arquivo vmlinuz-<versao kernel> existe no diretório /boot e os módulos do kernel dentro de /lib/modules/<versao kernel>.

    Pode ser que ocorra um erro nesse processo de instalação do kernel no livecd. Ignore o erro e continue o processo, pois o que interessa são os arquivos vmlinuz e os módulos do kernel. (Mesmo com o erro eles são instalados corretamente).

  • Montando a partição de boot.
  • $ sudo mkdir /mnt/boot
    $ sudo mount /dev/sda1 /mnt/boot

    No caso acima o /dev/sda1 é a partição onde estão os arquivos de kernel do seu servidor e do gerenciador de boot do grub. É nesse diretório que vamos instalar o novo kernel.
    Lembre-se que o acesso às partições variam de acordo como esta instalado o seu Linux.

  • Montando a partição raiz.
  • $ sudo mkdir /mnt/raiz
    $ sudo mount /dev/sda2 /mnt/raiz

    No caso acima o /dev/sda2 é a partição root do seu sistema. Precisamos montar essa partição para copiar os módulos do novo kernel.
    Lembre-se que o acesso às partições variam de acordo como esta instalado o seu Linux.

  • Copiando os arquivos
  • $ sudo cp /boot/vmlinuz-<versao kernel> /mnt/boot/
    $ sudo cp /boot/System.map-<versao kernel> /mnt/boot/
    $ sudo cp -a /lib/modules/<novo versao kernel> /mnt/raiz/lib/modules/

    Copiando a imagem do kernel, o System.map e os módulos, respectivamente, para os diretórios do seu servidor Linux.

  • Criando o initrd
  • Temos que criar um novo initrd para o novo kernel. Vamos aproveitar o initrd do kernel atual do seu sistema Linux para criar o novo. O initrd vai ajudar o novo kernel montar corretmente a partição root do seu Linux.
    Perceba que removemos os módulos do kernel atual que esta no initrd antes de copiar os módulos do kernel novo.

    $ sudo mkdir ~/initrd
    $ cd ~/initrd
    $ sudo gzip -dc /mnt/boot/initrd.img-<versao kernel atual> | cpio -id
    $ sudo rm -rf lib/modules/<versao kernel atual>
    $ sudo cp -a /lib/modules/<novo versao kernel> lib/modules/
    $ find . | cpio --quiet --dereference -o -H newc | gzip -9 > /mnt/boot/initrd-<novo versao kernel>

  • Criando nova entrada no menu do grub
  • Para concluir nosso processo, vamos criar uma nova entrada no menu.lst do grub para que seja possível bootar o novo kernel. Edite o arquivo /mnt/boot/grub/menu.lst e inclua uma nova opção no menu:

    title Novo Kernel
    root (hd0,0)
    kernel /vmlinuz-<novo versao kernel> root=/dev/sda2 ro quiet
    initrd /initrd.img-<novo versao kernel>

  • Bootando o novo kernel
  • Pronto, você já esta pronto para testar o novo kernel e bootar corretamente o seu sistema Linux. Desmonte as partições e reinicie o sistema, dessa vez, boote sem o livecd. No menu do grub escolha a nova opção e boa sorte!

    $ sudo umount /mnt/boot/
    $ sudo umount /mnt/raiz/
    $ sudo shutdown -r now

  • Referências
  • http://askubuntu.com/questions/94156/installing-with-a-different-kernel
    http://www.indiangnu.org/2009/how-to-create-editextract-initrd-in-ubuntudebian-and-redhatfedora-linux/

Please follow and like us:

Comments

  1. By Junior Salvador

  2. By noctuae

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: