Priča iza 'init' i 'systemd': Zašto je 'init' trebalo zamijeniti s 'systemd' u Linuxu
Pretplaćen sam na nekoliko popisa za slanje e-pošte povezanih s raznim Linux distribucijama i aplikacijama samo kako bih bio u tijeku s onim što se gdje događa. Koji su novi bugovi? Što su izdane zakrpe? Što se očekuje u sljedećem izdanju? i puno drugih stvari. Ovih je dana lista za slanje e-pošte jako popunjena s "Odaberite svoju stranu na Linux Divide", uglavnom na listi za slanje e-pošte Debiana, zajedno s nekoliko drugih.
O čemu se zapravo radi u "Odaberi svoju stranu u Linuxu Divide"?
Demon init bit će zamijenjen demonom systemd na nekim distribucijama Linuxa, dok ga je puno njih već implementiralo. Ovo je/će stvoriti veliki jaz između tradicionalnog Unix/Linux Guarda i New Linux Guarda – programera i administratora sustava.
U ovom ćemo članku raspravljati i rješavati sve upite jedan po jedan.
- Što je init?
- Što je systemd?
- Zašto je init trebao biti zamijenjen?
- Koje će značajke imati systemd.
Što je init?
U Linuxu, init je kratica za Initialization. Init je demonski proces koji se pokreće čim se računalo pokrene i nastavlja raditi dok se ne isključi. U stvari, init je prvi proces koji se pokreće kada se računalo podigne, što ga izravno ili neizravno čini nadređenim za sve ostale pokrenute procese i stoga mu se obično dodjeljuje “pid=1“.
Ako se na neki način init demon ne može pokrenuti, nijedan proces se neće pokrenuti i sustav će doći u fazu zvanu “Kernel Panic“. init se najčešće naziva System V init. System V je prvi dizajniran komercijalni UNIX operativni sustav i upotreba init-a na većini današnjih distribucija Linuxa identična je System V OS-u uz nekoliko iznimaka kao što je Slackware koji koristi BSD stil i Gentoo koji koristi prilagođeni init .
Potreba da se init zamijeni nečim savršenijim osjećala se dugo vremena i s vremena na vrijeme razvijeno je nekoliko alternativa, od kojih su neke postale izvorna init zamjena distribucije, a neke od njih su:
- Upstart – Init zamjenski demon implementiran u Ubuntu GNU/Linux i dizajniran za asinkrono pokretanje procesa.
- Epoha – Init zamjenski demon izgrađen oko jednostavnosti i upravljanja uslugom, dizajniran za pokretanje procesa u jednoj niti.
- Mudar – Init zamjenski demon napisan u Pythonu, implementiran na Pardus GNU/Linux i dizajniran za asinkrono pokretanje procesa.
- systemd – Init zamjenski demon dizajniran za pokretanje procesa paralelno, implementiran u niz standardnih distribucija – Fedora, OpenSuSE, Arch, RHEL, CentOS itd.
Što je systemd?
systemd je demon upravljanja sustavom nazvan UNIX konvencijom za dodavanje 'd' na kraj demona. Tako da se mogu lako prepoznati. U početku je izdana pod GNU općom javnom licencom, ali sada se izdanja objavljuju pod GNU manjom općom javnom licencom. Slično init-u, systemd je nadređeni za sve druge procese izravno ili neizravno i prvi je proces koji se pokreće pri dizanju pa mu se obično dodjeljuje “pid=1“.
systemd se može odnositi na sve pakete, pomoćne programe i biblioteke oko demona. Osmišljen je da prevlada nedostatke init. On sam po sebi je pozadinski proces koji je dizajniran za pokretanje procesa paralelno, čime se smanjuje vrijeme pokretanja i računalni troškovi. Ima puno drugih značajki u usporedbi s initom.
Zašto je postojala potreba za zamjenom init-a?
Proces pokretanja započinje serijski, tj. jedan zadatak počinje tek nakon što je pokretanje zadnjeg zadatka bilo uspješno i ako je učitan u memoriju. To je često dovodilo do odgođenog i dugog vremena pokretanja sustava. Međutim, systemd nije dizajniran za brzinu, već za uredno obavljanje stvari čime se zauzvrat izbjegavaju sva kašnjenja koja su UN-u potrebna.
Značajke systemd
- Čist, napredan i učinkovit dizajn.
- Jednostavniji postupak pokretanja.
- Konkurentna i paralelna obrada pri dizanju.
- Bolji API.
- Jednostavna sintaksa jedinica.
- Mogućnost uklanjanja opcijskih komponenti.
- Niska količina memorije.
- Poboljšana tehnika za izražavanje ovisnosti.
- Upute za inicijalizaciju napisane su u konfiguracijskoj datoteci, a ne u skripti ljuske.
- Iskoristite Unix Domain Socket.
- Zakazivanje poslova pomoću systemd kalendarskih mjerača vremena.
- Zapisivanje događaja s dnevnikom.
- Izbor bilježenja događaja sustava pomoću systemd kao i syslog.
- Dnevnici se pohranjuju u binarnu datoteku.
- systemd stanje se može sačuvati za pozivanje kasnije u budućnosti.
- Pratite proces koristeći cgroup kernela, a ne PID.
- Prijavom korisnika upravlja systemd-logind.
- Bolja integracija s Gnomeom za interoperabilnost.
Sustav uskih grla
- Sve na jednom mjestu.
- Nije standard POSIX.
Systemd i Distro integracija
- Linux Distribution
Integracija
- Fedora
Da, prva distribucija koja je usvojila systemd
- Arch
Da
- RedHat
Da
- CentOS
Da
- Debian
-
Da, Debian 8 kodno ime Jessie će prema zadanim postavkama imati systemd
- Gentoo
Da, ali treba ga preuzeti, instalirati i konfigurirati s prilagođenim init-om
- OpenSUSE
Da
- Slack
Ne (Iako do sada nije usvojen u Slackware-u, Patric Volkerding nije pokazao nikakve naznake hoće li biti usvojen ili ne)
- Ubuntu
Da, potrebno ga je instalirati i konfigurirati uz Upstream.
Polemika
Linus Torvalds, glavni arhitekt Linux kernela, smatra da stav ključnog programera systemd-a prema korisnicima i izvještajima o greškama nije u redu. Također je objavljeno da je systemd filozofija čudan i stran način kontrole procesa sustava. Isto je zabilježeno od Patric Volkerdinga i drugih značajnih Linux korisnika i programera, kao i preko online foruma, s vremena na vrijeme.
systemd vs init
Features | init | systemd |
DBus Dependency – Mandatory | No | Yes |
Device based Activation | No | Yes |
Device dependency configuration with udev | No | Yes |
Timer based Activation | Cron/at | Proprietary |
Quota Management | No | Yes |
Automatic Service Dependency Handling | No | Yes |
Kills users Process at logout | No | Yes |
Swap Management | No | Yes |
SELinux integration | No | Yes |
Support for Encrypted HDD | No | Yes |
Static kernle module loading | No | Yes |
GUI | No | Yes |
List all the child processes | No | Yes |
Sysv compatible | Yes | Yes |
Interactive booting | No | Yes |
Portable to non x86 | Yes | No |
Adopted on | Several Distro | Several Distro |
Parallel service startup | No | Yes |
Resource limit per service | No | Yes |
Easy extensible startup script | Yes | No |
Separate Code and Configuration File | Yes | No |
Automatic dependency calculation | No | Yes |
Verbose debug | Yes | No |
Version | N/A | V44+ |
Size | 560 KB | N/A |
Number of Files | 75 files | 900 files + glib + DBus |
Lines of code – LOC | 15000 (Approx) | 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code) |
Zaključak
Sve što radi kao pid=1 ne smije se pokvariti, ne smije biti nered i korisnici ga moraju učinkovito i djelotvorno kontrolirati. Mnogi korisnici vjeruju da zamjena init-a za systemd nije ništa drugo nego svaki put ponovno izmišljanje kotača kao nuspojava Linuxa. Ali to je raznolika priroda Linuxa. To je zato što je Linux toliko moćan. Promjena je dobra i moramo je cijeniti ako je za nju dobar razlog.
To je sve za sada. Ponovno ću biti ovdje s još jednim zanimljivim člankom koji ćete voljeti pročitati. Do tada ostanite s nama i povezani na Tecmint. Ne zaboravite nam dati svoje vrijedne povratne informacije u komentarima ispod.