Compilando el #kernel desde código fuente

«Anakin… Si queremos entender el gran misterio… debemos estudiar todos sus aspectos»
Palpatine, Star Wars III – The revenge of the Sith, 1:00:54 seg

Compilar un nuevo kernel es una buena manera de ganar habilidades a la vez que actualizas/agregas nuevos controladores y optimizas el «corazón» del software de tu sistema operativo preferido[si usas algun sistema operativo de Micro$oft, esto no es una opción, ya que no tendrás de donde hostia sacar el kernel] ¬.¬

Compilar un kernel no es una tarea trivial, por lo que sino lées o sigues pistas acerca puede que te pierdas. Para compilar un kernel desde código fuente lo primero es bajarlo de internet, lo cual no es muy difícil. Sólo debes buscar en Google desde donde descargar el kernel de GNU/Linux. Además, debes conocer muy bien tu hardware, para saber cual driver debes seleccionar a la hora de compilar.

Nota: Debes tener al menos 25 GB libres en la partición donde vas a compilar el kernel, pues en el proceso de compilación se generan muchos archivos los cuales ocupan bastante espacio.

Llégate por https://www.kernel.org/ y en la sección de descargas seleciona el último kernel estable[nunca uses alpha, betas o RCs], acostúmbrate a usar sólo kernels/softwares estables, te ahorrará mil dolores de cabeza, aparte de eso, mi maestro[@nat] cuando empecé en este mundo de GNU/Linux, una de sus primeras aclaraciones fue que usara solo software estable, cosa que yo recomiendo encomiablemente a todo el que me pregunta.

Nota: Tuve que, para escribir este post descargar el kernel desde el teléfono, pues andaba sin laptop en ese momento.

Descargando el código fuente:

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.3.tar.xz

También necesitamos instalar algunos paquetes:

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

Descomprime el tarball usando el comando:

tar xvf linux-5.5.3.tar.xz
cd linux-5.5.3

*** Parchear el kernel ***

En mi caso usaré el parche CK[Con Kolivas], que optimiza bastante el uso de CPU/Memoria, así como el uso de las caché.

Nota: Se nota el cambio de rendimiento entre el kernel que viene stock o de fábrica con la distro y este que nos vamos a personalizar y compilar.

cat ../patch-5.5-ck1 | patch -p1

o:

patch -p1 < ../patch-x.y.z

En caso de error para revertir el cambio en caso de error:

patch -R -p1 < ../patch-x.y.z

Ahora bien… Porque no nos complicamos la vida y usamos la configuración que viene por default en nuestro kernel cuando instalamos por primera vez nuestro sistema operativo? Sólo nos quedaría añadir a esto los controladores nuevos que necesitemos. Como vez, con esta opción no debes enredarte a ver que necesitas, sólo cargas la configuración que esta funcionando y añades lo que necesites… Fácil, verdad…

cp /boot/config-`uname -r` ./.config
make prepare

Prepara nuestro sistema para compilar el kernel.

make menuconfig

Make menuconfig, levanta un menú de configuración con las opciones preseleccionadas[.config anterior] y sólo queda añadir los controladores que necesitemos en el nuevo kernel. Después de seleccionar todo, le damos al botón guardar[Save], y salimos[Exit], lo cual nos actualza el archivo .config sobre el que se generará nuestro nuevo kernel.

Para compilar sólo queda ejecutar:

make -j`nproc` deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=$(make kernelversion)-1

Si nos da el error:

make[1]: *** No rule to make target 'debian/certs/debian-uefi-certs.pem', needed by 'certs/x509_certificate_list'. Stop.
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1077: certs] Error 2
make: *** Waiting for unfinished jobs....

Comentar CONFIG_SYSTEM_TRUSTED_KEYS en el archivo .config y volver a iniciar el proceso de compilación

Compilar el kenel es un proceso que demora tiempo, todo en dependencia de la PC que uses para este motivo. En mi caso yo uso una laptop un poco viejita[HP Pavilion Notebook 17] con microprocesador Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz y 12GB de RAM y demora cerca de 2 horas[1 hora 52-54 minutos aproximadamente] generar los .deb del nuevo kernel.

Después de compilar debemos hacerlo siguiente:

ls

Sólo nos queda instalarlo:

dpkg -i *.deb

En mi caso yo bajé el 5.5.3. Y me funciona de maravilla.

Y con esto empieza a instalarlo en su sistema. Configura todo lo necesario[dual booting si lo necesita y la configuración de GRUB la actualiza] Después sólo queda
reiniciar la PC.

reboot

o

shutdown -r now

Ahora debes verificar que todo está funcionando normal:

$ uname -a
$ uname -r
$ uname -mrs
$ dmesg | more
$ dmesg | egrep -i --color 'error|critical|failed'

Con estos comandos chequeas que todo va normal.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4 / 5. Recuento de votos: 2

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

1 comentario


  1. Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
    Firefox 96.0 Firefox 96.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0

    saludos, estoy compilando con la version: linux-5.16.2
    solo una duda, de lo que colocas, desde donde se realizan o lanzan los comandos por consola, me explico, por ejemplo:

    tu-usuario@ubuntu:~/build/kernel$
    o
    tu-usuario@ubuntu:/usr/src/linux-5.16.2$
    tambien he leido, que se puede hacer asi:
    make O=/home/tu-usuario/build/kernel/ «comando» # indicando el directorio de trabajo
    ejemplo:
    tu-usuario@ubuntu:/usr/src/linux-5.16.2$ make O=/home/tu-usuario/build/kernel/ -j4
    Nota: he tenido algunos inconvenientes, con el certificado, he realizado diferentes pruebas, aun nada efectivo, pero seguire dandole, hasta lograrlo

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*