Manual de genkernel (construcción automática del kernel)

Fuente: https://rootsudo.wordpress.com/2014/10/05/manual-de-genkernel-en-gentoo-construccion-automatica-del-kernel/

Genkernel es un conjunto de scripts para hacer una compilación e instalación automática del núcleo y del initramfs en Gentoo. Aunque resulta mucho más versátil e interesante la construcción manual del kernel, tal vez para una primera instalación de Gentoo y para los nuevos usuarios resulte de ayuda conocer genkernel. He aquí toda la información básica para el uso de genkernel.
instalar:

sudo emerge -a genkernel


el archivo de configuración de genkernel está en:

/etc/genkernel.conf
principales opciones del genkernel.conf:

MENUCONFIG=”yes” (por defecto lanza la interfaz de configuración para seleccionar las opciones de compilación del kernel y sus módulos)

SAVE_CONFIG=”yes” (salvar la configuración en un archivo .config en /etc/kernels)

MOUNTBOOT=”yes” (montar la partición /boot si no está montada)

SYMLINK=”yes” (crear el enlace simbólico en /boot para el kernel)
Hay muchas opciones en el archivo de configuración de genkernel, pero la configuración por defecto suele funcionar bien además de estar muy bien documentado el propio archivo).


La primera vez que lanzamos genkernel aún no hay un archivo de configuración para la compilación del núcleo definido por nosotros (.config), por lo que genkernel necesita una plantilla de la que partir.

configuración del núcleo que carga por defecto genkernel la primera vez está aquí (depende de la arquitectura en cada caso):

/usr/share/genkernel/arch/x86_64/kernel-config

como al lanzar genkernel saldrá el panel de configuración menuconfig, podremos personalizar nuestra compilación según nuestras necesidades y preferencias y guardarla para posterior edición.
*****

Tras la primera construcción del núcleo con genkernel tendremos ya un archivo de configuración nuestro, este será el que cargue a partir de entonces.

configuración que carga por defecto (a partir de la 2ª vez) está en:

/etc/kernels/kernel-config_nombre-del-kernel


las fuentes del kernel están en:

/usr/src/nombre_del_kernel/


uso de genkernel:

su

genkernel all (construye todo; el kernel, la imagen ramdisk con los módulos)

esta es la opción más sencilla, e incluso si queremos que genkernel haga todo y ni siquiera nos muestre el menuconfig, compilando el nuevo kernel con sus opciones por defecto podemos hacer:

genkernel --no-menuconfig all (hará todo automáticamente sin preguntar nada; salvo actualizar GRUB)

genkernel bzImage (construye sólo la imagen del núcleo)

genkernel kernel (construye la imagen del núcleo y los módulos)

genkernel initramfs (construye sólo el ramdisk en formato initramfs)

genkernel ramdisk (construye sólo el ramdisk en formato initrd)


Hay que tener en cuenta que si tenemos varias fuentes de núcleos en /usr/src/ genkernel compilará sólo a la que apunte el enlace simbólico /usr/src/linux , por lo que es importante saber a cual apunta este. Podemos cambiarlo de manera manual o usando eselect así:

eselect kernel list (vemos a cual apunta el enlace, el que tiene el arterisco)

Available kernel symlink targets:
[1] linux-3.14.14-gentoo *
[2] linux-3.16-ck
lo podemos cambiar así:

sudo eselect kernel set 2

vailable kernel symlink targets:
[1] linux-3.14.14-gentoo
[2] linux-3.16-ck *


Finalmente recordar que genkernel no actualiza GRUB, por lo que si instalamos un nuevo núcleo hay que recargar GRUB2 mediante el famoso:

sudo grub-mkconfig -o /boot/grub/grub.cfg

con lo cual ya podemos rebootear y arrancar con nuestro nuevo kernel compilado y configurado por nosotros.

sudo reboot