Mantendo modulos externos na atualização do Kernel do RHEL 4 (ES/AS)


Contexto

Servidor contém por exemplo o módulo de uma controladora RAID (a320raid no exemplo prático). Este módulo não tem suporte no Kernel padrão do Red Hat Enterprise Linux (RHEL), desta forma ele não está incluso no initrd gerado pós instalação.

Essa documentação mostra uma forma simples de incluir este modulo no initrd.

Pré-requesistos

1. Instalar Kernel novo;
2. Instalar pacote devel do Kernel novo;
3. Fazer backup do initrd atual existente no /boot/.

Procedimento

1. Copiar o modulo do kernel atual (rodando) para o novo kernel (instalado);
2. Gerar novo initrd com o módulo;
3. Certificar que o modulo está no novo initrd.

Na prática:

Pré-requesistos

1. Instalar Kernel novo:

[root@kfaserver kairo]# rpm -ivh kernel-smp-2.6.9-55.0.2.EL.i686.rpm –test
Preparing… ########################################### [100%]
[root@kfaserver kairo]# rpm -ivh kernel-smp-2.6.9-55.0.2.EL.i686.rpm
Preparing… ########################################### [100%]
1:kernel-smp ########################################### [100%]
WARNING: No module a320raid found for kernel 2.6.9-55.0.2.ELsmp, continuing anyway
[root@kfaserver kairo]#

Veja que no WARNING acima o Sistema Operacional já informa que um modulo não foi encontrado.
Justamente este que estaremos incluindo.

2. Instalar pacote devel do Kernel novo:

Este pacote contem os sources necessários.
[root@kfaserver kairo]# rpm -ivh kernel-smp-devel-2.6.9-55.0.2.EL.i686.rpm –test
Preparing… ########################################### [100%]
[root@kfaserver kairo]# rpm -ivh kernel-smp-devel-2.6.9-55.0.2.EL.i686.rpm
Preparing… ########################################### [100%]
1:kernel-smp-devel ########################################### [100%]
[root@kfaserver kairo]#

Fazer backup do initrd atual existente no /boot/: Este backup nos garante um fallback.

[root@kfaserver kairo]# cp initrd-2.6.9-55.0.2.ELsmp.img initrd-2.6.9-55.0.2.ELsmp.img_bkp

Procedimento

1. Copiar o modulo do kernel atual (rodando) para o novo kernel (instalado):

Verificando a versão original, nesse caso 2.6.9-11.ELsmp

[root@kfaserver kairo]# uname -a
Linux kfaserver.kairo.eti.br 2.6.9-11.ELsmp #1 SMP Fri May 20 18:26:27 EDT 2005 i686 i686 i386 GNU/Linux

Acessando o diretório do novo Kernel instalado

[root@kfaserver kairo]# cd /lib/modules/2.6.9-55.0.2.ELsmp/

Localizando na versão original a localização default do módulo

[root@kfaserver 2.6.9-55.0.2.ELsmp]# find /lib/modules/2.6.9-11.ELsmp -name a320raid*
/lib/modules/2.6.9-11.ELsmp/updates/a320raid.ko

Criando os diretórios existentes e o módulo. O importante é deixar o mesmo path.

[root@kfaserver 2.6.9-55.0.2.ELsmp]# mkdir updates
[root@kfaserver 2.6.9-55.0.2.ELsmp]# cd updates
[root@kfaserver updates]# cp /lib/modules/2.6.9-11.ELsmp/updates/a320raid.ko

2. Gerar novo initrd com o módulo:

[root@kfaserver kairo]# mkinitrd -fv –with=a320raid /boot/initrd-2.6.9-55.0.2.ELsmp.img 2.6.9-55.0.2.ELsmp
[root@kfaserver kairo]# mkinitrd -v -f –with=a320raid /boot/initrd-2.6.9-55.0.2.ELsmp.img 2.6.9-55.0.2.ELsmp
Creating initramfs
Looking for deps of module scsi_mod
Looking for deps of module sd_mod scsi_mod
Looking for deps of module scsi_mod
Looking for deps of module unknown
Looking for deps of module a320raid
Looking for deps of module aic79xx scsi_mod
Looking for deps of module scsi_mod
Looking for deps of module ide-disk
Looking for deps of module ext3 jbd
Looking for deps of module jbd
Looking for deps of module a320raid
Using modules: ./kernel/drivers/scsi/scsi_mod.ko ./kernel/drivers/scsi/sd_mod.ko ./a320raid.ko ./kernel/drivers/scsi/aic7xxx/aic79xx.ko ./kernel/fs/jbd/jbd.ko ./kernel/fs/ext3/ext3.ko
/sbin/nash -> /tmp/initrd.EV1881/bin/nash
/sbin/insmod.static -> /tmp/initrd.EV1881/bin/insmod
/sbin/udev.static -> /tmp/initrd.EV1881/sbin/udev
/etc/udev/udev.conf -> /tmp/initrd.EV1881/etc/udev/udev.conf
copy from /lib/modules/2.6.9-55.0.2.ELsmp/./kernel/drivers/scsi/scsi_mod.ko(elf32-i386) to /tmp/initrd.EV1881/lib/scsi_mod.ko(elf32-i386)
copy from /lib/modules/2.6.9-55.0.2.ELsmp/./kernel/drivers/scsi/sd_mod.ko(elf32-i386) to /tmp/initrd.EV1881/lib/sd_mod.ko(elf32-i386)
copy from /lib/modules/2.6.9-55.0.2.ELsmp/./a320raid.ko(elf32-i386) to /tmp/initrd.EV1881/lib/a320raid.ko(elf32-i386)
copy from /lib/modules/2.6.9-55.0.2.ELsmp/./kernel/drivers/scsi/aic7xxx/aic79xx.ko(elf32-i386) to /tmp/initrd.EV1881/lib/aic79xx.ko(elf32-i386)
copy from /lib/modules/2.6.9-55.0.2.ELsmp/./kernel/fs/jbd/jbd.ko(elf32-i386) to /tmp/initrd.EV1881/lib/jbd.ko(elf32-i386)
copy from /lib/modules/2.6.9-55.0.2.ELsmp/./kernel/fs/ext3/ext3.ko(elf32-i386) to /tmp/initrd.EV1881/lib/ext3.ko(elf32-i386)
Loading module scsi_mod
Loading module sd_mod
Loading module a320raid
Loading module aic79xx
Loading module jbd
Loading module ext3

3. Certificar que o modulo está no novo initrd:

Descompactar o novo initrd e verificar o conteúdo garantindo que o modulo esta interno

[root@kfaserver kairo]# cd /tmp
[root@kfaserver tmp]# mkdir initrd
[root@kfaserver tmp]# cd initrd
[root@kfaserver initrd]# mkdir src
[root@kfaserver initrd]# cp /boot/initrd-2.6.9-55.0.2.ELsmp.img .
[root@kfaserver initrd]# cd src
[root@kfaserver src]# gzip -dc ../initrd-2.6.9-55.0.2.ELsmp.img | cpio -idv
.
etc
etc/udev
etc/udev/udev.conf
init
dev
dev/console
dev/tty2
dev/tty4
dev/null
dev/ram
dev/systty
dev/tty1
dev/tty3
lib
lib/a320raid.ko
lib/jbd.ko
lib/scsi_mod.ko
lib/sd_mod.ko
lib/ext3.ko
lib/aic79xx.ko
sys
proc
bin
bin/nash
bin/modprobe
bin/udevstart
bin/udev
bin/hotplug
bin/insmod
loopfs
sysroot
sbin
3078 blocks

Anúncios



    Deixe um comentário

    Preencha os seus dados abaixo ou clique em um ícone para log in:

    Logotipo do WordPress.com

    Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

    Imagem do Twitter

    Você está comentando utilizando sua conta Twitter. Sair / Alterar )

    Foto do Facebook

    Você está comentando utilizando sua conta Facebook. Sair / Alterar )

    Foto do Google+

    Você está comentando utilizando sua conta Google+. Sair / Alterar )

    Conectando a %s



%d blogueiros gostam disto: