← Tornar als articles
Notícies· 5 min de lectura

La guerra dels init: SysV, Upstart, systemd i OpenRC

Sala de servidors il-luminada que evoca l'arrencada dels sistemes Linux i la pugna pel PID 1
Foto: panumas nikhomkhai · Pexels

Poques discussions han partit tant la comunitat Linux com la del sistema d’init. Darrere d’un tecnicisme d’aparença menor —quin programa s’engega primer en encendre l’ordinador— hi havia un xoc de filosofies sobre com s’ha de construir un sistema operatiu. Aquesta és la història d’aquella guerra.

Què és exactament un sistema init?

Quan el nucli de Linux acaba de carregar-se, llança un únic procés i li assigna l’identificador PID 1. Aquest procés, el sistema init, és el pare de tots els altres: munta els sistemes de fitxers, aixeca els serveis de xarxa, engega els dimonis i manté el sistema en marxa fins que l’apagueu. Si mor, el nucli entra en pànic. Per això triar l’init no és cap detall trivial: defineix com arrenca, com es gestiona i com es comporta tota la màquina.

SysV init: la vella escola

Durant dècades l’estàndard va ser l’init de System V, heretat de l’UNIX comercial dels anys vuitanta. El seu model era senzill i predictible: una sèrie d’scripts de shell executats en seqüència, organitzats en runlevels (nivells d’execució). Distribucions com Slackware el van mantenir com a bandera de simplicitat.

La virtut de SysV era la transparència: qui sabés llegir un script de shell podia entendre i modificar l’arrencada. El seu defecte era la lentitud. En executar els scripts l’un rere l’altre, sense paral·lelitzar, les arrencades s’eternitzaven a mesura que creixia el nombre de serveis. En l’era dels SSD i dels portàtils que havien d’encendre’s en segons, aquell model va començar a quedar curt.

Upstart: l’intent de Canonical

El 2006 Canonical va presentar Upstart, escrit per Scott James Remnant. Va arribar amb Ubuntu 6.10 “Edgy Eft” per substituir sysvinit, i feia les coses d’una altra manera: en lloc de seguir un ordre rígid, Upstart reaccionava a esdeveniments (un disc muntat, la xarxa disponible, maquinari detectat) per engegar o aturar serveis sobre la marxa. La idea escurçava els temps d’arrencada i gestionava molt millor el maquinari connectat en calent.

Upstart va tenir recorregut: va ser l’init per defecte de Red Hat Enterprise Linux 6 i de Chrome OS. Però arrossegava un llast polític. L’acord de cessió de drets (CLA) de Canonical obligava els col·laboradors a cedir la potestat de relicenciar el codi, una cosa que bona part de la comunitat Debian veia amb recel. Aquest fregament acabaria pesant.

systemd: el guanyador que va dividir les aigües

Lennart Poettering, coautor de systemd, el 2012
Lennart Poettering, que juntament amb Kay Sievers va presentar systemd el 2010 amb el manifest "Rethinking PID 1". · Imagen: Harald Hoyer / CC BY-SA 3.0 · Wikimedia Commons

El 2010, Lennart Poettering i Kay Sievers, llavors a Red Hat, van publicar un manifest titulat “Rethinking PID 1” i van presentar systemd. La seva proposta no es quedava a mitges: no un simple init, sinó una suite completa que engegava serveis en paral·lel mitjançant activació per sòcols i que també gestionava el registre de logs, els dispositius, la xarxa, les sessions i molt més, tot sota un mateix paraigua.

L’adopció va ser ràpida. El maig de 2011, Fedora es va convertir en la primera gran distribució a activar systemd per defecte, en lloc d’Upstart. openSUSE i d’altres van seguir el camí. El cop definitiu va arribar amb Debian: després d’un debat encès entre l’octubre de 2013 i el febrer de 2014, el seu Comitè Tècnic va decidir per un marge molt estret adoptar systemd com a init per defecte de Debian 8 “Jessie”. A partir d’aquí, Ubuntu va abandonar el seu propi Upstart i va migrar a systemd a la versió 15.04.

La votació de Debian va ser tan renyida que va deixar cicatrius. El 2014 fins i tot es va llançar una campanya pública de boicot, i el mateix Linus Torvalds va expressar reserves sobre l’actitud d’alguns desenvolupadors de systemd envers els usuaris i els informes d’errors.

La filosofia UNIX a la banqueta

Diagrama dels components de systemd i la seva integracio sota un mateix paraigua
L'arquitectura de systemd: una suite integral que absorbeix funcions abans repartides en programes independents, el centre del debat filosofic. · Imagen: ScotXW, based on https://wiki.tizen.org/wiki/File:Systemd_arch.PNG / CC BY-SA 3.0 · Wikimedia Commons

El nucli del conflicte no era tècnic, sinó filosòfic. La tradició UNIX predica “fes una sola cosa i fes-la bé”: eines petites, especialitzades i combinables. systemd, en absorbir funcions que abans vivien en programes independents, semblava anar contra aquell principi. Els seus defensors responien que la integració aportava coherència, velocitat i capacitats que el vell model no donava; els seus crítics hi veien un monòlit que concentrava massa poder en un sol projecte.

Les alternatives que resisteixen

systemd va guanyar la guerra de les grans distribucions, però no la va donar per tancada. Sobreviuen diverses alternatives amb comunitats fidels:

  • OpenRC, init basat en dependències i que manté la compatibilitat amb sysvinit, és el predeterminat de Gentoo.
  • runit, una suite lleugera de supervisió de processos inspirada en daemontools, és el cor de Void Linux.
  • s6 i el més recent dinit ofereixen enfocaments minimalistes per a qui vol control fi sense la petjada de systemd.

I després hi ha Devuan: una bifurcació de Debian nascuda precisament per oferir la robustesa del projecte mare sense systemd, amb sysvinit, OpenRC i runit a triar. Que existeixi demostra que, en el programari lliure, cap decisió no és del tot definitiva: sempre hi haurà qui agafi el codi per construir una altra cosa.

La guerra dels init ja no acapara titulars, però el seu llegat continua present cada cop que la vostra màquina arriba al PID 1. La diversitat d’opcions, lluny de ser un problema, és la millor garantia que Linux continuarà sent vostre per configurar-lo a la vostra manera.