Med mindre du har levd under en stein eller verre, bryr du deg ikke så mye om hvordan Linux fungerer, du må ha hørt om systemd, det (relativt) nye initsystemet som erstatter det gamle og utdaterte SysV init nylig vedtatt av de fleste store Linux distroer.

Hva er et init-system?

Når Linux-maskinen starter opp, vil den først kjøre en "innebygd" kode, lastet fra BIOS eller UEFI først, etterfulgt av bootloader, som ifølge sin konfigurasjon laster en Linux-kjernen. Kjernen laster opp drivere, og som sin aller første jobb starter init-prosessen, som er den første får PID (Process ID) 1 tildelt den.

Fra brukerens syn ser dette ut som å starte opp nettverk og databaser, etc., men i virkeligheten er det en ganske kompleks prosess som foregår under hetten. Tjenester er startet, stoppet og startet på nytt, ofte parallelt med hverandre. Noen kjøres under forskjellige privilegier enn andre, servicestatusene blir rapportert og logget, og mange andre oppgaver utføres som gjør at den forskjellige delen av systemet fungerer og kan kommunisere med brukerne og miljøet.

Hvordan dette implementeres, er imidlertid langt fra uniform, og dette er virkelig hvor alt slutter å være vanlig og veldefinert.

Det gamle init systemet

Det init-systemet som ble brukt av de fleste vanlige Linux-distroer til sist, var System V init (eller SysV init kort), som har utledet navneskjemaet UNIX System V (utpekt "System Five"), det første kommersielt tilgjengelige UNIX-systemet. System V OS har hatt en bestemt måte å kjøre sin init pros, og SysV init har holdt seg lojal mot dette gjennom årene.

Og det har vært mange år. UNIX System V ble opprinnelig utgitt i 1983, noe som gjør init SysV init en over 30 år gammel tilnærming til å starte opp Linux-maskiner.

Behov for endring

Som det har blitt notert, har SysV init vært utdatert og lenge for sent å bli erstattet. Noen av grunnene til dette er:

  • SysV init bruker / sbin / init for å starte init prosessen, men init selv har en svært begrenset rolle. init gjør lite mer enn å starte /etc/init.d/rc, i henhold til konfigurasjonen som leses fra / etc / inittab, som igjen vil kjøre skript for å gjøre det virkelige arbeidet med init-prosessen. Dette, med mindre det eksplisitt paneleriseres (som med startpar på Debian), vil det skje i rekkefølge, ett skript som starter etter det andre, gjør hele prosessen sakte etter hvert som hvert skript må vente på den forrige.
  • SysV init har ikke tilgang til PID eller prosessene den har (indirekte) startet. Den leser bare PID og forbinder dem med faktiske prosesser på en omstendig, komplisert måte.
  • For systemadministratorer som prøver å endre miljøet der en bestemt prosess skulle starte, er det ganske vanskelig med SysV init. (For å oppnå dette må de endre init strcipt som er ansvarlig for å starte den oppgitte prosessen.)
  • Det er viss funksjonalitet som er felles for hver tjeneste som SysV ikke implementerer, men hver prosess må iverksette seg selv i stedet, for eksempel "demonisere" seg selv (blir en systemdemon), som er en forseggjort og lang prosess. I stedet for å implementere disse trinnene en gang, krever SysV hver prosess å gjøre jobben selv.
  • SysV overlater også visse funksjoner til eksterne programmer og vet ingenting om tjenester startet av dem.

Alt ovenfor, og mange flere designfeil, eller heller den utdaterte systemdesignen til SysV, har gjort etableringen av et moderne init-system for sent.

Skriv inn systemd

Det var mange forsøk på å skape et alternativt init-system, hvorav systemd er bare en av dem. Ubuntu pleide å kjøre sitt eget init system kalt oppstart. Gentoo bruker fortsatt OpenRC. Andre init-systemer inkluderer initng, busybox-init, runit og Mudur og andre.

Årsaken systemd er en klar vinner er at den har blitt vedtatt av de fleste store distribusjoner. RHL og CentOS gikk naturlig på systemd måte, da Fedora var den første distroen som officielt vedtok systemd i 2011. Men systemd har virkelig blitt det ene init-systemet for å styre dem alle, da Debian 8 offisielt byttet til systemd, noe som førte til Ubuntu og derivater, overvinne Canonicals (eller mer presis Mark Shuttleworths) opprinnelige motstand mot systemd.

Hvordan er systemd forskjellig?

  • Systemd har som mål å gi en enkel, sentralisert måte å håndtere init prosessen fra begynnelse til slutt.
  • Det starter og stopper prosesser og tjenester mens du holder øye med deres avhengigheter. Det kan til og med starte en prosess som et svar på et annet prosessavhengighetskrav.
  • I tillegg til å starte og stoppe prosesser under oppstartstid, kan Systemd også starte når som helst når systemet er oppe som svar på bestemte utløsere, for eksempel når en enhet er plugget inn.
  • Det krever heller ikke prosesser for å demontere seg selv. I motsetning til SysV init kan systemd håndtere tjenester som kjører uten å måtte gå gjennom den lange prosessen med å bli daemoner.
  • I motsetning til SysV init, kjenner systemd og sporer alle prosesser, inkludert PID, og ​​å få informasjon om prosesser er mye enklere for systemadministratorer under systemd.
  • Systemd støtter containere som er i utgangspunktet isolerte tjenestemiljøer uten krav til virtuelle maskiner. Dette har stort potensial mot sikrere og enklere systemdesign i fremtiden.

Selvfølgelig er disse bare noen av de store fordelene. For en fullstendig diskusjon om systemds fordeler, bør du lese Debian 8s "Systemd Position Statement"

Kontrovers

Selvfølgelig ble systemet ikke ønsket velkommen av alle. Faktisk har mange og fortsatt frynser på det, kaller det monolitisk og tungvint, noen til og med anklager det for å gå "windows-måten" for å ha alt sentralisert. Mange hevder at det ikke er "Linux-veien", og det virker som om systemd ikke er i samsvar med POSIX-standarder, og hvis vi anser systemd som en verktøykasse (utover bare binæret), er det definitivt hugae.

Ikke desto mindre er systemd tydelig et skritt fremover, og mens det ikke er perfekt, har mye av kritikken den mottatt blitt adressert av den opprinnelige forfatteren og utvikleren Lennart Poettering. Det er absolutt en trengte fremgang og et steg opp fra det gamle init-systemet. Linus Torvalds, skaperen av Linux, synes ikke å tenke systemd for mye, og hvem skal vi argumentere for med "Skaperen".

Konklusjon

Etter å ha blitt vedtatt av alle store Linux-distribusjoner, er systemd her for å bli. Uansett hva noen systemadministratorer sier uansett grunn, er systemd fremtiden for det vanlige Linux, om enkelte brukere liker det eller ikke, som ikke ser på sine forskjellige fordeler, er ikke nødvendigvis en dårlig ting.

For den gjennomsnittlige brukeren bringer det raskere oppstartstider og trolig mer pålitelige systemer, mens i fremtiden distribusjoner vedta det kan bli mer "kompatibelt" med hverandre. På brukerens slutt vil vi definitivt dra nytte av den mer oppdaterte og moderne systemdesign det bringer til våre skrivebord.