PočetnaSoftverKorisniSystemd - Kontroverzni projekt u svijetu Linuxa

Systemd – Kontroverzni projekt u svijetu Linuxa


Init je uvijek bio zadužen za pokretanje Linux OS-a, no sada je došao Systemd. Iako je već nekoliko godina na tržištu, tek je sada podignuo prašinu i postao dio većine Linux distribucija, a problem nije u tome što će zamijeniti Init nego što će kontrolirati veći dio Linux OS-a, što se krši sa Unix filozofijom.

Ako ste napredniji Linux korisnik i pratite svijet Linuxa, onda znate da se u Linux svijetu trenutačno odvija nešto vrlo kontroverzno i prilično novo pod nazivom Systemd. Iako je projekt star preko 5 godina (inicijalno napravljen još krajem ožujka 2010. godine), prilično puno prašine je podignuo u zadnje vrijeme, točnije unazad par mjeseci. Systemd je deamon koji bi trebao upravljati određenim dijelom Linux operativnog sustava, čime ćemo se detaljnije pozabaviti u tekstu, a trebao bi zamijeniti postojeći Linux SysV init sistem koji koristi veći broj ditribucija.

Tvroci Systemd-a kažu da je netko čak Bitcoinovima platio plaćenog ubojicu koji ih je pokušao ubiti jer je njihov projekt iznimno uspješan i jer ih Linux zajednica nije dobro prihvatila. Ne znamo da li je to istina ili nije, no prilično su uvjereni da se upravo to dogodilo. Vjerojatno je jedan dio Linux zajednica burno reagirao jer su mnoge popularne Linux distribucije, poput Fedore, OpenSUSE-a, Ubuntua i Debiana, prihvatile Systemd kao nešto što će biti sastavni dio svih novih Linux distribucija, a dotičnima se to ne sviđa. Teško je povjerovati da se zajednica tako podijelila oko jedne naizgled prilično banalne stvari. Vama kao krajnjem korisniku nije bitno što se događa u pozadini dok se Linux boota, no onima koji razvijaju Linux distribucije je to izuzetno bitno i često znaju pasti teške riječi oko takvih stvari. Pa pogledajmo što Systemd je i što nam on novog donosi.

SysV init

Krenimo redom, odnosno od (SysV) inita. U Unix-baziranim operativnim sustavima u koje spadaju i Linux distribucije, init (kratica za „initialization“) je prvi proces koji se pokreće prilikom pokretanja operativnog sustava. Init je zapravo daemon proces koji nastavlja raditi dok god ne ugasite računalo. Znači to je proces koji se prvi pokreće i zadnji gasi, te od njega sve kreće. On je praktički nadređeni proces svim ostalim procesima koji se pale i gase tokom rada operativnog sustava. Init daemon pokreće jezgra operativnog sustava i on je strogo ukodiran u samu jezgru i sam operativni sustav. Ako ga jezgra ne može naći, odnosno ne može naći datoteku koju mora pokrenuti, javlja error i vrlo vjerojatno uopće nećete moći pokrenuti OS.

Ako imate Linux instaliran na svoje računalo, pogledajte procese i pogledajte init proces. On ima redni broj 1 što znači da je korijenski (prvi) proces koji je upaljen i takav ostaje, kao što smo rekli, do gašenja računala. Tokom ovih godina napravljeno je nekoliko alternativa koje su pokušale imitirati init i njegove mogućnosti, ali i imitacije, kao što su launchd, Service Management Facility, initng, OpenRC, SystemStarter, Epoch systemd, upstart, Mudur i mnogi drugi. Systemd je u ožujku ove godine prihvaćen od mnogih većih Linux distribucija.

Jedna od najvećih limitacija inita je ta što on pokreće taskove serijski, odnosno idu jedan po jedan. Kada jedan task završi, to je okidač da se pokrene slijedeći task. Samim time bootanje može biti prilično dugo, pogotovo u I/O fazi pred samo podizanje operativnog sustava. Zato je jedan dio Linux korisnika bio nezadovoljan i krenuo u drugom smjeru, odnosno krenuo razvijati zamjenu za init. Ako želite vidjeti kako init izgleda, pogledajte na lokaciji /etc/init.d.

Systemd

Bez obzira da li vi u računalu imate SSD ili ne, određene dijelove init-a je gotovo nemoguće ubrzati jer ne ovise o disku nego o nekim drugim komponentama. Recimo, čitanje i pokretanje drivera koji se nalaze na disku će SSD brže odraditi nego „običan“ tvrdi disk, no aktiviranje mrežne kartice i pokretanje mreže i nekih drugih servisa, će uvijek isto trajati. Zato je systemd ovdje, iako ne možemo reći da je riječ o „čistoj“ zamijeni jednog daemona s drugim jer nije tako. Stvari nisu baš tako jednostavne, posebice kada se govori o ovako low-level komponentama operativnog sustava.

Systemd je skup daemona, libraryja i sistemskih alata dizajniranih za centralno upravljanje i konfiguriranje Linux operativnim sustavom. Kao što vidite iz navedenog, ne radi se isključivo o jednom daemonu ili servisu kao što je init, nego o više njih, ali cilj je isti – učitati sve potrebne komponente za rad OS-a i upravljanje istim. Dizajneri systemd-a kažu da je to osnovni blok operativnog sustava na kojem bi isti trebao razvijati, odnosno raditi. Systemd slijedi standardnu konvenciju nazivanja servisa, pa slovo „d“ u nazivu označava daemon, ukoliko vas je zanimalo zašto se ne zove samo „system“. Systemd, za razliku od nekih drugih daemona, nije dizajniran za sve Unix-bazirane operativne sustave nego isključivo za Linux API. Objavljen je i dijeli se pod standardnom GNU Lesser General Public licencom (LGPL).

Rekli smo da se radi o prilično kontroverznom projektu, a njegova kontroverza je u tome što kritičari govore da systemd ne slijedi Unix filozofiju i da će se korištenjem systemd-a narušiti cijeli koncept Linuxa i da Linux više nikada neće biti isti. S druge strane je dio korisnika koji kaže da Unix filozofiju treba generalno slijediti, no u nekim segmentima se moraju napraviti izuzeci, a ovo je jedan takav slučaj. Ako se pitate o kakvoj filozofiji je riječ, reći ćemo vam. Glavna misao vodilja u Unix/Linux svijetu je „Čini jednu stvar i čini ju dobro“.

Init je radio relativno dobro svoj posao – pokretao sve procese kako bi se OS uspješno bootao – ali je postao spor. Odnosno pojedinci misle da se bootanje OS-a može izvesti brže. Systemd je skup tijesno povezanih kompleksnih libraryja koji nadilaze samo pokretanje OS-a kao što je to slučaj kod inita. Systemd bi trebao biti odgovoran za upravljanje strujom, dodatnim uređajima koje ćete spajati na računalo, enkripcijom diska, syslogom, mrežnom konfiguracijom, loginom, registrom, Linux konzolom, socket API-jem, GTP particijama i još mnogim drugim stvarima. Kada radite nešto tako veliko, teško je izbjeći kompleksnost, a u ovom slučaju se to i ne skriva. Systemd je ogroman i kompleksan i pitanje je da li jedna komponenta treba upravljati tako velikim dijelom OS-a. To jest, ne radi se o velikom dijelu OS-a, radi se o praktički cijelom OS-u jer bi Systemd imao „prste“ u svim dijelovima i svim komunikacijama koje se odvijaju unutar sustava. Mnogi kažu da se tako i gubi modularnost Linuxa koja je oduvijek bila jedna od stvari kojima se Linux ponosio.

Ponavljamo, filozofija koja stoji iza Unixa i Linuxa je potpuno suprotna od ovoga i moramo reći da ju razumijemo i donekle podržavamo. Veliki broj Linux programera je bio specijaliziran za jedan manji dio OS-a i oni su ga doveli praktički do savršenstva. Druga skupina programera je bila zadužena za neki drugi dio… i kada se to sve spoji, dobili ste Linux koji je bio to što jest – odličan modularni OS. Pitanje je da li će to isto biti ako se init zamijeni sa systemd-om.

Linux zajednica

Linux zajednica je duboko podijeljena, a odličan komentar na koji smo našli, a tiče se ove teme glasi: „Čim je Red Hat Linux prihvatio Systemd, možemo uskoro očekivati kraj svijeta“. Očito se radi o pretjerivanju jednog od korisnika, no dobro je rekao. Prilično je čudno to što su neke jako stabilne i komercijalne varijante Linuxa prigrlile Systemd. Nama se čini da ovdje zapravo i nema pobjednika, a najveći gubitnik će biti upravo Linux. Dobra ideja koja stoji iza Systemd-a bi se mogla pretvoriti u „rat“ distribucija koje imaju systemd i one koje ga nemaju. Svi se slažemo da postoji puno mjesta da se otklone nedostaci inita, ali isto tako systemd nije idealno rješenje. Da li je cilj isključivo skraćivanje boot vremena? Ako je onda je systemd ispunio svrhu.

Najveći problem su uređaji koji imaju malo hardverske snage i koji se moraju bootati gotovo trenutačno i zato je cijela ova priča i krenula. Postojalo je nekoliko pokušaja u prošlosti da se zamjeni init no prošli su gotovo nezamijećeno, a systemd je prvi koji je bio prihvaćen od povećeg dijela zajednice. Začuđujuće, nije ga prihvatila Gentoo zajednica koja je još uvijek vjerna initu. Gentoo je vrlo specifična distribucija namijenjena najvećim Linux geekovima koji su spremni potrošiti dane da bi uopće instalirali i podesili OS, a kamoli ga koristili. Prosječnim, pa čak i naprednijim Linux korisnicima, Gentoo nije prvi izbor niti bi trebao biti. Ako vas zanimaju minimalističke i iznimno konfigurabilne distribucije, pogledajte si Gentoo i Arch Linux. No, vratimo se na systemd. Jedan od Linux korisnika je napisao na svom blogu nekoliko scenarija u kojima će se systemd srušiti i urušiti će se cijeli sustav.

Taj isti autor tvrdi da je to tek vrh sante leda i da zapravo postoji jako puno rupa u ovom pristupu. Plus, sada ćete distribucije koje koriste systemd nakon svakog ažuriranja morati resetirati što je još jedna loša stvar u nizu. Linux računala, pogotovo serveri, su imali na sebi Linux jer ste ga mogli ažurirati bez da ponovno pokrećete sustav, a sad i to pada u vodu. Postoje još mnoge kritike, a neke od njih su mogućnost da se binarne datoteke koje systemd koristi koruptiraju, da je systemd nekompatibilan sa drugim Unix-baziranim operativnim sustavima, da je orijentiran isključivo na desktop računala itd.

Ostali noviteti

Što konkretno donosi nova verzija systemd-a?

– Novi library za C programere

– nspawn – minimalistički alat za upravljanje virtualnim „kontejnerima“ u kojima možete testirati određene stvari bez da utječete na cijeli sustav

– machined – virtualni machine registration manager

– minimalističku podršku za firewall koja je sada service-oriented

– consoled – podrška za ekrane sa velikim brojem DPI-ja

– ping gateway – automatsko rješavanje gatewaya i pinganje istih kako biste lakše našli greške koje bi se mogle pojaviti

– networkd – mreža je osnovni (sastavni) dio OS-a i ljudi koji stoje iza systemd-a misle da to mora biti dio systemd-a (kao što smo rekli, previše osnovnih funkcija će biti podređeno systemd-u)

– mogućnost „povezivanja“ virtualnih kontejnera (nspawn) i mreže (networkd) kako bi svaki kontejner imao zasebnu adresu (kompatibilnu sa IPv4 i IPv6) i mogao izaći na Internet

– resolved – daemon koji će pružati podršku za svaki mrežni interface zsaebno (DNS cache), ali moramo napomenuti da je nedavno objavljeno kako je resolved ranjiv na „DNS cache poisoning attack“

– timesyncd – trivijalni ntp klijent koji se integrira sa networkd-om i sinkronizira vam vrijeme

– GTP auto-discovery

– secure boot – trenutačno još u izradi ali će navodno raditi mnoge validacije tokom bootanja sustava i time osigurati sigurno podizanje OS-a

Zaključak

Na kraju bismo trebali zaključiti da li je systemd dobar ili loš, no teško je reći jedno ili drugo. Originalna ideja koja se krije iza istoga je dobra i Linux svakako treba moderniji način podizanja OS-a koji može brže i inteligentnije odraditi određene stvari. Ali systemd je prerastao u monolitnu komponentu koja bi htjela upravljati praktički cijelim operativnim sustavom, a živjela bi na Linux jezgri.

Cijeli Linux projekt pokreću ljudi i ako ti isti ljudi žele dalje razvijati systemd i ako oni misle da je to dobar smjer u kojem Linux treba ići, onda ćemo i mi to prihvatiti. Zanimljivo je da i Linus Torvalds nema ništa protiv systemd-a. Smetaju mu određene sitnice i određeni programeri koji na tome rade, no generalna ideja mu nije loša. Stoga, ako je njemu dobra, vjerujemo da će biti i većem dijelu Linux zajednice. Uostalom, uvijek će postojati distribucije koje neće imati systemd u sebi pa se uvijek možete prebaciti na jednu od njih. Spomenuli smo Gentoo koji je izuzetno zanimljiv (i zahtjevan za korištenje), ali tu su još i mnoge druge user-friendly distribucije kao što je Elementary OS, Debian, Mint, Mageia …


RELATED ARTICLES

Komentiraj

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular