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
Comments !