Cómo compilar un kernel Linux.

Linux

Hace un tiempo la idea de actualizar el kernel Linux causaba miedo a través de los corazones de muchos usuarios. En aquel entonces, el proceso de actualización del kernel implicaba muchos pasos e incluso más tiempo. Ahora, la instalación de un kernel nuevo se puede manejar fácilmente con gestores de paquetes como pacman o apt. Con la adición de ciertos repositorios, incluso puede instalar fácilmente kernels experimentales o específicos (como kernels en tiempo real para la producción de audio) sin perder el tiempo.

Teniendo en cuenta lo fácil que es actualizar tu núcleo, ¿por qué te molestaría compilar uno tú mismo? Aquí hay algunas posibles razones:

  • Simplemente quiere saber cómo se hace.
  • Necesita habilitar o deshabilitar opciones específicas en un kernel que simplemente no están disponibles a través de las opciones estándar.
  • Desea habilitar el soporte de hardware que podría no encontrarse en el kernel estándar.
  • Está utilizando una distribución que requiere que compile el kernel.
  • Eres un estudiante y esta es una tarea.


Independientemente de por qué, saber cómo compilar un kernel de Linux es muy útil e incluso se puede ver como un derecho de paso. Cuando se compila por primera vez un nuevo kernel de Linux y logra arrancar desde dicho kernel, se siente cierta emoción al haberlo logrado.

Dicho esto, veamos el proceso de compilación de un kernel de Linux. Estaré demostrando en Debian Stretch. Después de ejecutar una actualización estándar de sudo apt, el kernel instalado es 4.9.0-6. Actualizaremos al kernel 4.17.

Una palabra de advertencia: recomendamos que practique este procedimiento en una máquina virtual. Al trabajar con una VM, siempre puede crear una instantánea y salir de cualquier problema con facilidad. NO actualice el núcleo de esta manera en una máquina de producción... no hasta que sepa lo que está haciendo.

Descargando el Kernel.

Lo primero que debe hacer es descargar el archivo fuente del kernel. Esto se puede hacer buscando la URL del kernel que desea descargar (desde kernel.org). Una vez que tenga la URL, descargue el archivo fuente con el siguiente comando (Lo demostraremos con kernel 4.17 RC2):
 

wget https://git.kernel.org/torvalds/t/linux-4.17-rc2.tar.gz


Mientras ese archivo se está descargando, hay algunos pasos que se deben tener en cuenta.

Requisitos de instalación

Para compilar el kernel, primero debemos instalar algunos requisitos. Esto se puede hacer con un solo comando:
 

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison


Tenga en cuenta: Necesitará al menos 12 GB de espacio libre en su unidad local para completar el proceso de compilación del kernel. Así que asegúrate de tener suficiente espacio.

Extrayendo el código fuente.

Desde el directorio que alberga nuestro kernel recién descargado, extraiga el código fuente del kernel con el comando:

tar xvzf linux-4.17-rc2.tar.gz

Ahora cambia al nuevo directorio creado con el comando cd linux-4.17-rc2.

Configurando el Kernel.

Antes de que compilemos realmente el kernel, primero debemos configurar qué módulos incluir. En realidad, es una forma realmente fácil de hacer esto. Con un solo comando, puede copiar el archivo de configuración del kernel actual y luego usar el verdadero comando menuconfig para hacer los cambios necesarios. Para hacer esto, ejecute el comando:

cp /boot/config-$(uname -r) .config

Ahora que tiene un archivo de configuración, ejecute el comando make menuconfig. Este comando abrirá una herramienta de configuración (Figura 1) que le permite revisar cada módulo disponible y habilitar o deshabilitar lo que necesita o no necesita.

Figura 1

Es muy posible que pueda deshabilitar una parte crítica del kernel, por lo tanto, realice un seguimiento minucioso de menuconfig. Si no está seguro acerca de una opción, déjelo cómo está. O, mejor aún, quédese con la configuración que acabamos de copiar del kernel en ejecución (ya que sabemos que funciona). Una vez que haya revisado toda la lista (es bastante larga), ¡ya está listo para compilar!

Compilando el Kernel.

Ahora es el momento de compilar realmente el kernel. El primer paso es compilar usando el comando make. Entonces ejecuta make y luego responde las preguntas necesarias (Figuras 2 y 3). Las preguntas se determinarán según el kernel desde el que se está actualizando y el núcleo al que se está actualizando. Confía en nosotros cuando decimos que hay un montón de preguntas por responder, así que date un montón de tiempo aquí.

Figura 2

 

Figura 3

 

Después de responder la enorme cantidad de preguntas y terminada la compilación, puede instalar los módulos que ha habilitado con el comando:

make modules_install

Una vez más, este comando tomará algo de tiempo, así que siéntese y mire la salida, o haga otra cosa (ya que no requerirá su interacción). Lo más probable es que quieras llevar a cabo otra tarea (a menos que realmente disfrutes viendo la salida del comando en una terminal).

Ahora instalamos el kernel con el comando:

sudo make install

Nuevamente, otro comando que tomará una cantidad significativa de tiempo. De hecho, el comando make install tomará más tiempo que el comando make modules_install. Vaya a almorzar, configure un enrutador, instale Linux en algunos servidores o tome una siesta.

Habilitando el Kernel para el inicio.

Una vez que se complete el comando make install, es hora de habilitar el núcleo para el arranque. Para hacer esto, ejecute el comando:

sudo update-initramfs -c -k 4.17-rc2

Por supuesto, sustituiría el número del kernel anterior por el núcleo que compiló. Cuando ese comando finalice, actualice grub con el comando:

sudo update-grub

Ahora debería poder reiniciar su sistema y seleccionar el kernel recién instalado.

Felicitaciones si llegaste hasta aquí.

¡Has compilado un kernel de Linux! Es un proceso que puede tomar algo de tiempo; pero, al final, tendrá un kernel personalizado para su distribución de Linux, así como una habilidad importante que muchos administradores de Linux tienden a pasar por alto.

Síguenos en FacebookTwitterunete a nuestra charla en Riotúnete a IRC o únete a Telegram y no olvides compartirnos en las redes sociales. También puede hacernos una donación o comprar nuestros servicios.

Acerca del autor

Especialista en Seguridad Informática bajo certificación OSCP, experto en técnicas de privacidad y seguridad en la red, desarrollador back-end, miembro de la FSF y Fundador de Security Hack Labs. Desarrollador de la distribución de hacking BlackArch Linux. Twitter: @edu4rdshl XMPP/Email: [email protected]