Historien bak 'init' og 'systemd': Hvorfor 'init' måtte erstattes med 'systemd' i Linux
Jeg abonnerer på flere e-postlister relatert til forskjellige Linux-distribusjoner og -applikasjoner bare for å holde meg oppdatert med hva som skjer hvor. Hva er de nye feilene? Hva er oppdateringene utgitt? Hva forventes i neste utgivelse? og mye annet. I disse dager er e-postlisten tett befolket med "Velg din side på Linux Divide", hovedsakelig på Debians e-postliste sammen med noen få andre.
Hva "Velg din side på Linux Divide" handler om?
init-demonen kommer til å bli erstattet med daemon systemd på noen av Linux-distribusjonene, mens mange av dem allerede har implementert den. Dette er/vil skape et stort gap mellom tradisjonell Unix/Linux Guard og New Linux Guard – programmerere og systemadministratorer.
I denne artikkelen vil vi diskutere og løse etter alle spørsmål én etter én.
- Hva er init?
- Hva er systemd?
- Hvorfor måtte init byttes ut?
- Hvilke funksjoner systemd vil eie.
Hva er inni det?
I Linux er init en forkortelse for Initialization. init er en demonprosess som starter så snart datamaskinen starter og fortsetter å kjøre til den slås av. Init er faktisk den første prosessen som starter når en datamaskin starter opp, noe som gjør den til overordnet for alle andre kjørende prosesser direkte eller indirekte, og derfor er den typisk tildelt "pid=1".
Hvis init-demonen på en eller annen måte ikke kunne starte, vil ingen prosess startes, og systemet vil nå et stadium kalt "Kernel Panic". init er oftest referert til som System V init. System V er det første kommersielle UNIX-operativsystemet designet og bruken av init på det meste av Linux-distribusjonen i dag er identisk med System V OS med noen få unntak som Slackware som bruker BSD-stil og Gentoo som bruker tilpasset init .
Behovet for å erstatte init med noe mer perfekt har vært kjent fra lang tid, og flere alternativer ble utviklet fra tid til annen, hvorav noen ble distribusjonens opprinnelige init-erstatning, hvorav noen er:
- Upstart – En init-erstatningsdaemon implementert i Ubuntu GNU/Linux og designet for å starte prosessen asynkront.
- Epoke – En init-erstatningsdemon bygget rundt enkelhet og serviceadministrasjon, designet for å starte prosessen med én tråd.
- Mudar – En init-erstatningsdemon skrevet i Python, implementert på Pardus GNU/Linux og designet for å starte prosessen asynkront.
- systemd – En init-erstatningsdemon designet for å starte prosessen parallelt, implementert i en rekke standarddistribusjoner – Fedora, OpenSuSE, Arch, RHEL, CentOS, etc.
Hva er systemd?
En systemd er en systemadministrasjonsdaemon som er navngitt med UNIX-konvensjonen for å legge til «d» på slutten av demonen. Slik at de lett kan gjenkjennes. Opprinnelig ble den utgitt under GNU General Public License, men nå er utgivelsene laget under GNU Lesser General Public License. I likhet med init, er systemd overordnet for alle andre prosesser direkte eller indirekte og er den første prosessen som starter ved oppstart, og er derfor vanligvis tildelt en "pid=1".
En systemd kan referere til alle pakkene, verktøyene og bibliotekene rundt daemon. Den ble designet for å overvinne manglene ved init. Det er i seg selv en bakgrunnsprosess som er designet for å starte prosesser parallelt, og dermed redusere oppstartstiden og beregningsoverhead. Den har mange andre funksjoner sammenlignet med init.
Hvorfor var det behov for å erstatte init?
En init-prosess starter serielt, dvs. en oppgave starter først etter at den siste oppgaveoppstarten var vellykket og den ble lastet inn i minnet. Dette resulterte ofte i forsinket og lang oppstartstid. Systemd var imidlertid ikke designet for hastighet, men for å få tingene gjort pent, som igjen unngår all FN-nødvendige forsinkelser.
Funksjoner av systemd
- Ren, state-forward og effektiv design.
- Enklere oppstartsprosess.
- Samtidig og parallell behandling ved oppstart.
- Bedre API.
- Enkel enhetssyntaks.
- Evne til å fjerne valgfrie komponenter.
- Lite minneavtrykk.
- Forbedret teknikk for å uttrykke avhengigheter.
- Initialiseringsinstruksjon skrevet i konfigurasjonsfil og ikke i shell-skript.
- Benytt deg av Unix Domain Socket.
- Jobbplanlegging ved hjelp av systemd kalendertimer.
- Hendelseslogging med journald.
- Valg av logging Systemhendelser med systemd samt syslog.
- Logger lagres i binær fil.
- systemd state kan bevares for å bli kalt senere i fremtiden.
- Spor prosess ved å bruke kjernens cgroup og ikke PID.
- Brukere pålogging administrert av systemd-login.
- Bedre integrasjon med Gnome for interoperabilitet.
Flaskehalser systemd
- Alt på ett sted.
- Ikke POSIX-standard.
Systemd og Distro-integrasjon
- Linux Distribution
Integrasjon
- Fedora
Ja, første distro som tar i bruk systemd
- Arch
Ja
- RedHat
Ja
- CentOS
Ja
- Debian
-
Ja, Debian 8-kodenavnet Jessie vil ha systemdisert som standard
- Gentoo
Ja, men må lastes ned, installeres og konfigureres side med tilpasset init
- OpenSUSE
Ja
- Slack
Nei (selv om det ikke har blitt adoptert til nå i slackware, har Patric Volkerding ikke vist noen indikasjon på om det vil bli adoptert eller ikke)
- Ubuntu
Ja, må installeres og konfigureres med Upstream.
Kontrovers
Linus Torvalds, sjefsarkitekt for Linux-kjernen, føler at holdningen til nøkkelutvikleren av systemd overfor brukere og feilrapporter ikke virker ok. Det ble også rapportert at systemd filosofi er rar og en fremmed måte å kontrollere systemprosesser på. Det samme har blitt spilt inn fra Patric Volkerding og andre bemerkelsesverdige Linux-brukere og -utviklere, så vel som over nettforum, fra tid til annen.
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) |
Konklusjon
Alt som kjører som pid=1 må ikke gå i stykker, må ikke være rot og må kontrolleres av brukere effektivt og effektivt. Mange-en-bruker mener at å erstatte init for systemd ikke er noe mer enn å finne opp hjulet på nytt hver gang som en bieffekt av Linux. Men dette er den mangfoldige naturen til Linux. Dette er fordi Linux er så kraftig. Forandring er bra, og vi må sette pris på det hvis det er av en god grunn.
Det er alt for nå. Jeg vil være her igjen med en annen interessant artikkel dere vil elske å lese. Inntil da følg med og koblet til Tecmint. Ikke glem å gi oss din verdifulle tilbakemelding i kommentarene nedenfor.