Pequeño ejemplo para compilar un kernel

Compilar un kernel si bien no es estrictamente necesario en todos los casos, creo que es bueno tener una pequeña guía al respecto para principiantes.
La principal ventaja de compilar un kernel propio es mejorar el rendimiento de nuestro sistema, ya que podemos eliminar drivers y opciones que nuestro hardware y caso de uso no necesite, por ejemplo no todos necesitan soporte para CDs.

Lo primero que debemos hacer es buscar una tarball, para eso está kernel.org.


Yo en mi caso iré por el 5.15 ya que mi hardware no depende de opciones nuevas y prefiero la estabilidad a lo bleeding edge pero cada uno es libre de elegir la versión que quiera, con la responsabilidad claro.

Descargamos la tarball, la extraemos en el directorio donde vamos a trabajar, a mí me gusta hacerlo en /tmp pero puede ser donde quieran.
Extraído no tendrá ningún .config, que es el archivo que dicta lo que se va a compilar y como, para ellos hay varias opciones; podemos copiar el config de nuestro actual kernel en /boot o podermos usar las opciones que el propio kernel da, dígase make config que dará una serie de preguntas cli que debemos responder, make menuconfig que usa ncurses para dar una opción más amigable, y luego tenemos lo más sencillo hacer un make localmodconfig, que hará una configuración basada en los módulos en uso.
Si bien make localmodconfig es suficiente para tener una base en la que trabajar es insuficiente para uso real, muchos módulos no estarán en el .config y luego de la compilación podremos tener un ladrillo de computador, la solución a esto es usar localmodconfig y luego editar manualmente, esto lo facilita make menuconfig.

Cada sección está con su respectivo nombre y categoría, desde aquí solo es ir configurando a nuestro gusto según las necesidades y características que queramos.
Luego de esto no tomé capturas pero el proceso siguiente es así.
Dentro del directorio con el código:

make -jX (donde X es la cantidad de núcleos que usaremos para compilar)
make modules
make headers
make modules_install
make headers_install INSTALL_HDR_PATH=/usr/src/kernel-headers-(Nuestra versión del kernel)\
cp arch/x86_64/boot/bzImage /boot/vmlinuz-(Nuestra versión del kernel)

Luego de esto será necesario crear el initramfs, y esto es algo que no es tan estándar en las distros, alguans usan dracut, otros mkinitcpio, yo uso dracut así que eso usaré.

dracut --force --kver "(Aquí va el nombre del directorio en /usr/lib/modules/)" initramfs-(Nuestra versión del kernel).img\\
grub-mkconfig -o /boot/grub/grub.cfg

Con esto ya estaría listo y grub lo tomará como opción booteable. (Para lilo y syslinux es muy diferente y las entradas se manejan manualmente con su debida sintaxis en /boot/syslinux/syslinux.cfg y /etc/lilo.conf respectivamente).
Esto solo es una guía muy general, seguramente haya cosas que no tomé en cuenta o expliqué mal.

6 Me gusta

Los usuarios principiantes no deben pensar que compilar un kernel sea un actividad para principiantes. Si eres nuevo en GNU con Linux mi recomendación es no intervenir al respecto.

1 me gusta

Woah, estaba por instalar Artix con Busybox y justo apareció esto, muchas gracias, ahora puedo intentar hacer que Supertux vaya a 5 FPS mas. xD

PD: terminé decantandome por Void Linux porque Musl no está en Artix

El propósito de mi post no es hacer creer a los principiantes que compilar un kernel es obligatorio, sino dar un pequeño esquema sobre los pasos para aquellos que se animen a intentarlo. Obviamente si alguien principiante empieza a tocar todo sin saber puede terminar con un ladrillo en lugar de una computadora.

Artix con Busybox no creo que sea buena idea… Artix está pensada para trabajar con los coreutils de GNU, incluyendo sus scripts. no hay certeza de que el sistema sea estable si algún script del sistema depende de alguna flag exclusiva de GNU, pero podría servir de aprendizaje.

1 me gusta

Este tutorial de cómo compilar linux de “Locos por Linux” esta muy bueno. Yo lo compile con el video, me llevo 40 minutos y después no sabía que hacer con el kernel compilado, pero ahí lo tenía…
Compilar kernel optimizado:

Compilar kernel:

1 me gusta

Claro la guia es para principantes en lo que a compilar el kernel se refiere, no a un principiante en el sistema GNU, o cualquier otro tipo, que la verdad estoy de acuerdo en que el sistema es más GNU que Linux, ya que la mayoría de paquetes fundamentales son GNU y linux esta ahi pero bueno volviendo al punto el proposito es precisamente para quienes se animen que a ver podria haberlo dicho pero siendo sinceros la verdad es que generalmente ya se sobrentiende que un usuario principiante no va a compilar un kernel

1 me gusta

Algo interesante seria ver como seria en Arch o si puedo crear algun paquete

Nunca he usado Arch a mucha profundidad pero tengo entendido que con un PKGBUILD es posible compilar y empaquetar, pero la verdad no tengo mucha idea de como es el proceso.

Lo digo como ejemplo ya que tenerlo como paquete lo simplifica todo si hago uno el resultado no me gusta y quiero borrarlo

Entiendo a lo que te refieres con:

Pero por algún motivo esta entrada está dentro de la categoría dedicada a usuarios Principiantes, por eso lo mencionaba.

La categoría “principiantes” no sólo sirve para el que recién empieza en el software libre o Linux, también se aplica para las personas que están comenzando a utilizar una herramienta o software en específico o que necesitan saber cómo realizar X tarea.
Ahora bien y en este caso en particular, considero que el publicador original del tema no está consultando, si no que esta brindando la información, por lo que el tema será movido de principiantes a Cursos.