Zbogom SysVinit, živio systemd!

Malo po malo, sve su važnije distribucije Linuxa napustile tradicionalni initd i zamijenile ga system daemonom. To se dogodilo uz veliku galamu, svađe i prepucavanja, ostavivši mnogo uvrijeđenih i povrijeđenih linuksaša koji se osjećaju ostavljenima po strani. Neki od njih prelaze na BSD Unix, kao oazu tradicionalnog Unixa, zato jer ne mogu smisliti systemd. Ostali ga, uz manje ili više gunđanja, prihvaćaju i nastoje se prilagoditi. Sve u svemu, čini se da je "građanski rat" unutar Linux zajednice gotov, pobijedio je systemd.

Seriju o system daemonu započet ćemo brzim pregledom povijesti njegova razvoja, kontroverzama koje je izazvao i nabrajanjem argumenata za i protiv. Nastojat ćemo ostaviti po strani emocije i ne dati se uvući u "flame war".

U tehnici sve počinje i završava s ljudima, pa je red da najprije upoznamo čovjeka koji je najistaknutija ličnost ove male revolucije. Lennart Poettering je zanimljiv momak. Rođen u Guatemali, odrastao u Rio de Janeiru i Hamburgu, radi za Red Hat. Svijet slobodnog softvera zadužio je sudjelujući u razvoju PulseAudia, mrežnog sound servera, te Avahija, softvera koji omogućuje automatsko otkrivanje i publiciranje mrežnih servisa, da bi se korisnička računala s lakoćom prijavila u mrežu i koristila sve njezine servise. Oba su softvera objavljena pod LGPL licencom. Lennart je uočio da su u Appleov i Microsoftov desktop OS po ljubaznosti prema korisniku nadmoćni Linuxu, koji usprkos dominaciji na serverskom tržištu zaostaje kao desktop platforma. Nakon PulseAudia i Avahija posvetio se razvoju zamjene za tradicionalni Unixov initd, proces koji se pokreće prvi i podiže sve ostale servise.

I Linus Torvalds i Lennart Poettering jake su ličnosti, uvjereni u ispravnost svojih uvjerenja, tako da je na neki način njihov sukob "visio u zraku" od prvog dana. Torvalds vodi razvoj kernela autoritativno i odlučno, često se ne obuzdavajući i ne birajući riječi kad kritizira "manje dobre" suradnike. Lennart ga optužuje da oko sebe stvara okruženje netolerancije i isključivosti. Momak zna što govori, jer neprestano dobija prijeteće poruke, napravljen je web site http://boycottsystemd.org/, a ekipa mrzitelja čak skuplja Bitcoine kako bi naručili Lennartovo ubojstvo. Stvari su otišle predaleko, pa je Torvalds osjetio potrebu da objasni kako on načelno nije protiv system daemona. Ne slaže se s nekim odlukama oko dizajna, pogotovo ne voli binarne logove, a ne sviđaju mu se ni neki od programera koji proizvode previše bugova. Ali to su detalji, a ne velike zamjerke. S druge strane, Lennart je prilično povrijeđen, pa izjavljuje kako je Intenet pun poremećenih ljudi, a Opensource zajednica "šupaka" koji ga napadaju i traže da prestane programirati. Takve izjave baš i ne doprinose pomirenju suprotstavljenih strana i posve su nepotrebne, pogotovo što je bitka već završena.

Zašto bi uopće tražili zamjenu za initd, koji je u središtu System V verzije Unixa? Prigovaraju mu prije svega sekvencijalno podizanje i spuštanje servisa. Uz današnje moćne višejezgrene procesore šteta je ne koristiti paralelizam i uzbrati boot i shutdown.

Nadalje, initd pokreće/spušta servise pomoću shell skritpi, nema jedinstvenog načina upravljanja servisima, a različite distribucije Linuxa smještaju datoteke na raziličita mjesta, pa se i init skripte razlikuju. Tradicionalno, tvorci Unixa kao i programskog jezika C smatraju da sam moraš znati što radiš: oni ti daju uže, ako se objesiš, sam si kriv. Na primjer, ako su neki servisi vezani i moraju se podizati/spuštati određenim redoslijedom, ručnim zaustavljanjem pogrešnim redoslijedom sistemac može uzrokovati probleme.

Servisi koji drže portove ispod 1024 izvršavaju pod root ovlastima. Radi smanjenja rizika, mnogi od njih pokreću nove instance s drugačijim vlasnikom procesa, ili se "chrootaju". To može izazvati zbrku oko PID-ova pri gašenju, a initd ne brine o tome što rade servisi nakon što su pokrenuti. Dakle razloga za modernizaciju ima sasvim dovoljno.

Lennart Poetterling i Kay Sievers, začetnici system daemona, krenuli su prevladati init na nekoliko načina. Prije svega, željeli su napraviti okvir (framework) u kojem se mogu definirati međuovisnosti, osigurati paralalizam pri podizanju/spuštanju OS-a, te zaobići shell skripte koje troše previše resursa. Time će nestati besmislene razlike između distribucija Linuxa. Sam systemd treba obavljati tri osnovne funkcije:

  • Upravljanje sustavom i servisima u isto vrijeme
  • Biti softverska platforma, osnova za razvoj ostalog softvera
  • Služiti kao sučelje koje povezuje aplikacije i kernel, "ljepilo" koje aplikacijama pruža pristup jezgri.

Gnome je, kažu, već toliko integriran sa system daemonom da bez njega više nije zamisliv, što je po mnogim tradicionalistima pogrešan pristup. Narušena je filozofija Unixa, sjećate se: svaki alat treba radit samo jednu stvar i biti savršeno optimiziran. Čini se da ljuskasta struktura izgrađena oko jezgre postaje slijepljena, slojevi kao da više nisu odvojivi i samostalni. Init je pokretao servise, a systemd radi više od toga: pomoću njegovih alata može se mijenjati konfiguracija OS-a. Sve u svemu, systemd je zamišljen kao ambiciozan poduhvat, s potencijalom da dovede do značajnih promjena u Linux zajednici.

O tome više u narednom poglavlju.