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.

  1. Hva er init?
  2. Hva er systemd?
  3. Hvorfor måtte init byttes ut?
  4. 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:

  1. Upstart – En init-erstatningsdaemon implementert i Ubuntu GNU/Linux og designet for å starte prosessen asynkront.
  2. Epoke – En init-erstatningsdemon bygget rundt enkelhet og serviceadministrasjon, designet for å starte prosessen med én tråd.
  3. Mudar – En init-erstatningsdemon skrevet i Python, implementert på Pardus GNU/Linux og designet for å starte prosessen asynkront.
  4. 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
  1. Ren, state-forward og effektiv design.
  2. Enklere oppstartsprosess.
  3. Samtidig og parallell behandling ved oppstart.
  4. Bedre API.
  5. Enkel enhetssyntaks.
  6. Evne til å fjerne valgfrie komponenter.
  7. Lite minneavtrykk.
  8. Forbedret teknikk for å uttrykke avhengigheter.
  9. Initialiseringsinstruksjon skrevet i konfigurasjonsfil og ikke i shell-skript.
  10. Benytt deg av Unix Domain Socket.
  11. Jobbplanlegging ved hjelp av systemd kalendertimer.
  12. Hendelseslogging med journald.
  13. Valg av logging Systemhendelser med systemd samt syslog.
  14. Logger lagres i binær fil.
  15. systemd state kan bevares for å bli kalt senere i fremtiden.
  16. Spor prosess ved å bruke kjernens cgroup og ikke PID.
  17. Brukere pålogging administrert av systemd-login.
  18. Bedre integrasjon med Gnome for interoperabilitet.
Flaskehalser systemd
  1. Alt på ett sted.
  2. 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.