Si estás leyendo esto, probablemente ya sepas lo que es Genkernel y lo que es SystemRescueCD. Si no lo sabes y lees esto por aburrimiento, te lo explico pero si no eres usuario de Gentoo alguna cosa puede sonarte a chino.
En el mundo de Gentoo, tenemos dos opciones para compilar un kernel de Linux. La primera es la manual. Aunque parezca mentira es realmente sencillo y para la mayoría de situaciones es hasta cómodo y rápido, una vez tienes tu fichero de configuración creado y funcionando (lo cual lleva un poco de practica), siempre que quieras actualizar solo tienes que usarlo. Ahora bien, existe otra opción y esa es Genkernel. Se trata de un conjunto de scripts que nos permiten automatizar la tarea, evitándonos realizar la mayor parte del proceso manualmente. Generalmente se usa para crear un kernel similar al de un LiveCD que reconozca gran parte del hardware que tenemos sin mayor problema. En mi caso, me era necesario para inicializar cierta configuración del hardware antes del arranque del sistema. Esta tarea depende de initramfs, el sucesor de initrd, un pequeño sistema embebido en el kernel que es lanzado en las primeras instancias del sistema y que generalmente sirve para inicializar configuraciones un poco peculiares (y no tan peculiares: es necesario para crear las bootsplash por ejemplo) como RAIDS o sistemas cifrados.
Este proceso se puede hacer a mano pero con genkernel es extremadamente sencillo, y dado que se puede configurar el kernel como si lo hiciéramos manualmente, el resultado es excelente.
Por otro lado tenemos SystemRescueCD, un LiveCD basado en Gentoo con montones de herramientas. Desde que lo conozco, siempre llevo un LiveUSB encima con el. No solo es útil para realizar instalaciones de Gentoo.
A lo que íbamos. Estaba yo realizando una preciosa instalación de Gentoo en un nuevo disco duro y me dispuse a usar Genkernel para evitar problemas creando el initramfs, pero cual es mi sorpresa cuando al decirle a Genkernel que compile este falla en el script gen_initramfs_list.sh con el siguiente mensaje entre otros muchos errores:
/usr/src/linux-2.6.32/scripts/gen_initramfs_list.sh: Cannot open ‘/var/tmp/genkernel/initramfs-2.6.32.14-std155-i386.cpio.gz’
make[1]: *** [usr/initramfs_data.cpio.lzma] Error 1
El error tiene toda la lógica del mundo:
Para la utilización de Genkernel había usado el fichero de configuración del LiveCD y este contiene una opción llamada: CONFIG_INITRAMFS_SOURCE=”" y entre las comillas un path a un cpio.gz (el mismo que sale en el error). Genkernel busca ese initramfs pero al estar dentro del entorno chroot de la instalación este fichero no existe.
La manera de solucionar este problema es localizar el fichero de configuración que genkernel está usando y que generalmente estará en:
/usr/share/genkernel/arch/x86_64/kernel-config-2.6
NOTA: Cambia x86_64 por tu arquitectura
Y editar la opción CONFIG_INITRAMFS_SOURCE=”" dejándola precisamente así, con la cadena vacía entre las comillas. Ale, a compilar
Disfruta de tu nuevo kernel y recuerda quitarle unos cuantos módulos que fijo que no necesitas tantos