Compilar un Kernel: Com fer-ho sobre una Distro base Debian?

Compilar un Kernel: Com fer-ho sobre una Distro base Debian?

Compilar un Kernel: Com fer-ho sobre una Distro base Debian?

En la nostra entrada anterior, anomenada "El Kernel de Linux: El bàsic sobre el nucli" n'abordem algunes bases teòriques essencials sobre els Kernels dels Sistemes Operatius, en general; i el nucli Linux, en específic.

I com expressem en aquesta, en aquesta, estarem completant dites bases teòriques essencials amb altres conceptes i informacions importants, a més de mostrar el procediment actual per aconseguir «compilar un Kernel» de Linux des de zero, sobre una Distribució Debian GNU/Linux 11 (Bullseye) o basada en ella.

El Kernel de Linux: El bàsic sobre el nucli

El Kernel de Linux: El bàsic sobre el nucli

I abans d'iniciar la lectura d'aquest post sobre «compilar un Kernel» des de Linux en general, deixarem uns enllaços a anteriors publicacions relacionades per a la posterior lectura:

El Kernel de Linux: Tot sobre el nucli del Sistema Operatiu lliure
Article relacionat:
El Kernel de Linux: El bàsic sobre el nucli
vulnerabilitat
Article relacionat:
Des de començament del mes ja es van donar a conèixer diverses vulnerabilitats trobades al nucli de Linux

Compilar un Kernel: Tutorial de compilació

Compilar un Kernel: Tutorial de compilació

Què vol dir compilar un programa?

Bàsicament, aquest procés tècnic (també anomenat empaquetament) consisteix a aconseguir la conversió del codi font d'un programa o porció d'un programari, des del seu origen (llenguatge de programació utilitzat per escriure's) fins a un producte llegible (llenguatge de programació d´alt nivell interpretable) per un ordinador.

És a dir, aconseguir la seva transformació des del codi font fins a tornar-ho un programa executable i funcional, mitjançant l'ús d'un processador (programari compilador) per a la conversió del llenguatge de programació utilitzat cap a un codi de tipus binari i assemblador.

I quan es tracta de desenvolupar i compilar qualsevol classe de paquet, aplicació i programa, bàsic i nadiu, com els Kernels sobre Debian GNU / Linux, els següents paquets són idonis i necessaris per obtenir una bona base de suport de desenvolupament, I aquests són:

apt install autoconf automake autotools-dev build-essential dh-make debhelper debmake devscripts dpkg fakeroot file gfortran git gnupg fp-compiler lintian patch pbuilder perl python quilt xutils-dev
Optimitza el teu GNU/Linux: Paquets Debian per desenvolupar apps
Article relacionat:
Optimitza el teu GNU/Linux: Paquets Debian per desenvolupar apps

Avantatges i desavantatges de compilar des de zero un Kernel de Linux

Quan compilem i configurem personalitzadament, des de zero, un Kernel específic per a un determinat ordinador, podem obtenir els avantatges següents:

  • Aconseguir un millor rendiment i un menor consum de CPU.
  • Obtenir una millor optimització i un menor consum de Memòria RAM.
  • Millorar la capacitat dadaptació i de compatibilitat del sistema operatiu.
  • Augmentar leficiència i la productivitat del sistema operatiu.

Mentre que, per contra, poguéssim generar els Desavantatges següents:

  • Falles d'operativitat i disponibilitat dels recursos i serveis desitjats sobre l'ordinador emprat, per males configuracions i problemes ocasionats durant la compilació.
  • Un treball constant, llarg i tediós al principi per generar-lo, i després a posterior, per mantenir actualitzat de forma manual. El qual pot anar, des de minuts a hores, depenent del maquinari emprat.
  • Llargues hores d'estudi i proves, ja que, cal un alt nivell de coneixement tant sobre les opcions de configuració disponibles al Kernel com de l'ordinador (hardware final), on s'executarà.

Categories de Kernels disponibles

Categories de Kernels disponibles

Per a compilar un Kernel, el primer que hem de saber és què Kernel escollir. Per això, hem d'anar al lloc web oficial dels Kerneles, i triar-ne un entre les categories existents. Les quals són les següents:

  • Línia principal de desenvolupament (Mainline): Aquesta categoria inclou aquells Kerneles en etapa de desenvolupament, per la qual cosa, contenen noves característiques i funcions que cal provar abans que es puguin posar en una versió estable. Aquests són mantinguts i alliberats directament per Linus Torvalds, i solen publicar-se cada 2 o 3 mesos de mitjana.
  • Estable (Stable): Aquesta categoria inclou aquells Kerneles que, després de passar les proves del llarg procés de desenvolupament, es converteixen en estables, per la qual cosa, només estan subjectes a correccions a través d'un mantenidor oficial designat. A més, només tenen poques versions de correcció d'errors fins que el Mainline següent estigui disponible.
  • Llarg termini (Longterm): Aquesta categoria inclou aquells Kerneles que, després de passar les proves del llarg procés de desenvolupament, es converteixen en estables, però compten amb un suport de correccions derrors i manteniment per un temps summament llarg (anys). Raó per la qual se li apliquen correccions d'errors importants, que poden arribar a ser molt freqüents.

Com puc compilar un Kernel en una Distro GNU/Linux Debian Bullseye?

Com puc compilar un Kernel en una Distro GNU/Linux Debian Bullseye?

Havent triat una versió específica de Kernel, a la web oficial, i ja coneixent (copiant) la seva ruta de descàrrega a través del botó Tarball de la mateixa, només queda realitzar el següent procediment, el qual mostrarem prenent com a exemple, el Kernel de Linux estable versió 6.0.8:

etapa 1

cd /usr/src
wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.0.8.tar.xz
sudo unxz linux-6.0.8.tar.xz
sudo tar xvf linux-6.0.8.tar
sudo ln -s linux-6.0.8 linux
cd /usr/src/linux
sudo make clean && make mrproper
sudo cp /boot/config-`uname -r`* .config
make menuconfig

En executar aquest darrer comandament, s'inicia el «Menú de configuració del Kernel», on es podrà configurar (personalitzar) els paràmetres preferència o necessitat. A més, aquí és fonamental no oblidar que, cal marcar o desmarcar l'opció de 64-bit kernel, depenent del que es vulgui o requereixi. I també, després d'haver realitzat tots els canvis fets, cal pressionar el Botó Salvar (Save) i després el Botó Sortir (Exit).

Menú de configuració del Kernel

etapa 2

Arribat a aquest punt queden 2 camins possibles a prendre:

Només instal·lació del Kernel
sudo make
sudo make modules_install
sudo make install
sudo update-grub; sudo update-grub2; sudo update-initramfs -u
sudo apt clean; sudo apt autoclean; sudo apt autoremove; sudo apt remove; sudo apt purge

Instal·lació del Kernel i generació de fitxers .deb

Instal·lació del Kernel i generació de fitxers .deb

Per executar aquest pas, és rellevant comptar amb la instal·lació del paquet anomenat Kernel-package. Per això, el procediment és el següent i inicia de la manera següent:

sudo wget -c http://ftp.us.debian.org/debian/pool/main/k/kernel-package/kernel-package_13.018+nmu1~bpo9+1_all.deb
sudo apt install ./kernel-package_13.018+nmu1~bpo9+1_all.deb
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
cd /usr/src
sudo dpkg -i *.deb

En cas que, durant el procés de compilació, s'obtingui un error relacionat amb els certificats del Kernel, queda com a opció poder executar la següent ordre d'ordre per solucionar-ho automatitzadament:

sed -i '/CONFIG_SYSTEM_TRUSTED_KEYS/s/^/#/g' .config

Sí, tot s'ha acabat bé, només queda reiniciar el nostre ordinador i provar com aixeca el nostre sistema operatiu amb el nou Kernel. Tal com es mostra ell abans i després, a les següents pantallazos:

Abans de la instal·lació del Kernel

Abans de la instal·lació

Després de la instal·lació del Kernel

Després de la instal·lació

Article relacionat:
Fast Kernel Headers, un conjunt de pegats que acceleren la compilació del Kernel en un 50-80%
Article relacionat:
Kerla: un nou nucli escrit a Rust i compatible amb l'ABI de Linux

Resum: Banner post 2021

Resum

En resum, esperem que aquest tutorial sigui de molta utilitat, tant per usuaris avançats com Desenvolupadors de Distros o Respins. Els quals solen requerir «compilar un Kernel» especifico sobre un Sistema Operatiu GNU/Linux actualment instal·lat o un que s'estigui generant des de zero, per aconseguir incorporar, un millor rendiment i optimització sobre un maquinari específic. Majorment, amb l'objectiu d'aconseguir, un menor consum de CPU i Memòria RAM.

Encara que, si algun en coneix alguna una altra útil forma de realitzar aquest procediment o en coneix alguna suggeriment, recomanació o correcció a allò aquí aportat, benvingut és a fer-ho a través dels comentaris. I sí, simplement t'ha agradat aquesta publicació, no deixis de comentar-la i compartir-la amb altres. A més, recorda visitar la nostra «pàgina d'inici» per explorar més notícies, a més d'unir-te al nostre canal oficial de Telegram de Des de Linux, O aquest grup per a més informació sobre el tema actual.


Add as preferred source