El nucli (kernel) de Linux: què és i què fa | Iespai

El nucli (kernel) de Linux: què és, què fa i com compilar-ne un



El nucli (kernel) és la peça central de qualsevol sistema operatiu: treballa amagat, però sense ell res no funcionaria. En aquest article t’explico què és, què fa, com saber quin tens i, si t’hi vols atrevir, com compilar-ne un de propi.

Una mica d’història

Els primers ordinadors executaven els programes directament sobre el maquinari, cosa que feia el desenvolupament complicat i limitat. A partir dels anys 60 van aparèixer els sistemes operatius i, amb ells, la idea d’un nucli: un programa privilegiat que controla el maquinari i el reparteix entre els altres programes. Unix (1969) en va ser un dels grans referents.

El nucli Linux el va començar Linus Torvalds el 1991 com un projecte personal, i avui és el nucli que fan servir servidors, telèfons Android, routers, el Raspberry Pi i la majoria de supercomputadors. Estrictament, «Linux» és només el nucli; la resta del sistema (shell, comandes, biblioteques) ve sobretot del projecte GNU i d’altres, per això de vegades se’n diu GNU/Linux.

Què és el nucli

El nucli fa d’intermediari entre el maquinari i les aplicacions. Gestiona els recursos de la màquina (CPU, memòria, discos, xarxa…) i ofereix als programes una manera segura i uniforme d’accedir-hi, les crides al sistema (system calls). Un programa no escriu directament al disc: demana al nucli que ho faci per ell.

Per protegir-se, el processador treballa en dos modes: el nucli s’executa en mode nucli (amb accés total al maquinari) i les aplicacions en mode usuari (amb accés limitat). Si una aplicació falla, el nucli la pot aturar sense que caigui tot el sistema.

Què fa el nucli

  1. Gestió de processos: crea, programa i atura els processos (programes en execució) i reparteix el temps de CPU entre ells perquè semblin funcionar alhora.
  2. Gestió de memòria: assigna i allibera la memòria física i virtual, fa servir l’intercanvi (swap) quan cal i impedeix que un procés llegeixi o trepitgi la memòria d’un altre.
  3. Gestió de dispositius: a través dels controladors (drivers), molts carregats com a mòduls, permet que les aplicacions facin servir discos, targetes de xarxa, USB… sense saber-ne els detalls.
  4. Sistemes de fitxers: organitza com es guarden les dades als discos (ext4, XFS, Btrfs, FAT…).
  5. Xarxa: implementa la pila TCP/IP, el tallafoc (netfilter) i l’encaminament.
  6. Comunicació entre processos: canonades, senyals, sòcols, memòria compartida…
  7. Seguretat: comprova permisos i usuaris, i aplica mecanismes com les capabilities, els namespaces i els cgroups (la base dels contenidors) o AppArmor i SELinux.

Linux és un nucli monolític modular: tot s’executa en mode nucli, però moltes parts (controladors, sistemes de fitxers) es poden carregar i descarregar en calent com a mòduls.

Com saber quina versió del nucli tens

La manera més directa és uname -r:

$ uname -r
6.18.39+rpt-rpi-v8

El fitxer /proc/version dona una mica més de detall, com el compilador amb què s’ha construït:

$ cat /proc/version
Linux version 6.18.39+rpt-rpi-v8 (serge@raspberrypi.com) (aarch64-linux-gnu-gcc-14 (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT Debian 1:6.18.39-1+rpt1 (2026-07-29)

Compte: lsb_release -a no mostra la versió del nucli, sinó la de la distribució. Són dues coses diferents:

$ lsb_release -a
Distributor ID: Debian
Description: Debian GNU/Linux 13 (trixie)
Release: 13
Codename: trixie

Cap d’aquestes comandes necessita sudo. Per a la distribució també pots mirar /etc/os-release o hostnamectl, que mostra totes dues coses.

Compilar un nucli propi

Compilar el nucli permet activar o desactivar funcions, provar una versió més nova o aplicar pedaços. Ara bé, la gran majoria d’usuaris no ho necessiten: el nucli de la teva distribució ja ve ben configurat, rep actualitzacions de seguretat i inclou gairebé tots els controladors com a mòduls. Si només vols un nucli més recent, abans mira si la distribució l’ofereix (per exemple, els backports de Debian).

Si igualment vols fer-ho, aquests són els passos generals en un sistema Debian o Ubuntu:

1. Prepara-ho

Fes una còpia de seguretat i no desinstal·lis el nucli de la distribució: si el nou no arrenca, el podràs triar al menú de GRUB. Instal·la les eines de compilació:

sudo apt install build-essential bc bison flex libssl-dev libelf-dev libncurses-dev dwarves

2. Descarrega el codi font

Les versions estables es publiquen a kernel.org. Amb Git pots baixar només la darrera revisió d’una branca (canvia la versió per la que vulguis):

git clone --depth 1 --branch v6.18 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux

3. Configura’l

En lloc de partir de zero, aprofita la configuració del nucli que fas servir ara i accepta els valors per defecte per a les opcions noves:

cp /boot/config-$(uname -r) .config
make olddefconfig
make menuconfig     # opcional: per activar o desactivar funcions

A make menuconfig pots ajustar, per exemple, el model de preempció (Preemption Model), que afecta la latència del sistema, o la planificació de CPU per grups. Per veure com està configurat el teu nucli actual:

$ grep -E '^CONFIG_PREEMPT=|^CONFIG_FAIR_GROUP_SCHED|^CONFIG_HZ=' /boot/config-$(uname -r)
CONFIG_PREEMPT=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_HZ=250

4. Compila i instal·la

La compilació pot trigar des de minuts fins a hores, segons la màquina:

make -j$(nproc)
sudo make modules_install
sudo make install

A Debian i Ubuntu, make install també genera l’initramfs i actualitza GRUB automàticament. Si no és el cas, fes-ho a mà amb sudo update-initramfs -c -k <versió> i sudo update-grub.

Una alternativa més neta en sistemes Debian és generar paquets .deb amb make -j$(nproc) bindeb-pkg i instal·lar-los amb dpkg -i: així el nucli queda registrat com qualsevol altre paquet i el pots desinstal·lar fàcilment.

5. Reinicia i prova

Reinicia, tria el nucli nou a GRUB si no és el predeterminat i comprova amb uname -r que és el que s’executa. Revisa dmesg i journalctl -b -p err per si hi ha errors.

Al Raspberry Pi el procés és diferent (no hi ha GRUB i el nucli s’instal·la a /boot/firmware); la documentació oficial de Raspberry Pi explica com fer-ho.

Conclusió

El nucli és el cor del sistema: reparteix els recursos, controla el maquinari i manté els programes separats i segurs. Saber quin tens i com funciona t’ajudarà a entendre molts problemes (un controlador que no carrega, un kernel panic…). I compilar-ne un de propi és una manera excel·lent d’aprendre, sempre amb un nucli de reserva a mà.

Posts relacionats

Esta web usa cookies.