Hacía tiempo que no me encontraba en una situación en la que tuviera que incluir algún driver en el initrd y en la última semana me he encontrado con dos seguidas. El initrd es un sistema de ficheros temporal que utiliza el kernel de linux al arrancar, casi siempre para poder acceder a ficheros de la partición raiz antes de que esta pueda ser montada (via wikipedia).
El primer caso ha sido al pasar de un sistema linux instalado en una máquina virtual que he instalado sobre un servidor real. Para ello hice una instalación básica de la misma distribución linux y sobre ella volqué los ficheros comprimidos en tar de todo el sistema de ficheros contenido en la virtual. El problema es que el driver del raid, mptscsi.ko, para la controladora no estaba en el initrd y obteniamos un bonito kernel panic. El segundo caso fué al hacer la actualización de seguridad del paquete del kernel en otro servidor, fuí advertido por up2date de que había un módulo cargado en el actual kernel que no estaba disponible en el paquete del kernel actualizado. Para ello tuve que buscar el módulo del driver, en este caso megaide.ko, en la web del fabricante copiarlo en su ubicación correcta y reconstruir el initrd.
La solución es bastante sencilla y para por reconstruir el initrd, en el primer caso utilizando un cd de rescate y en el segundo ya teníamos la máquina arrancada con un kernel antiguo. El comando sería parecido al siguiente:
mkinitrd /boot/initrd-2.6.9-55.0.2.ELsmp.img 2.6.9-55.0.2.ELsmp –with=megaide.ko