Systemd - Hvad du behøver at vide
Medmindre du har levet under en sten eller værre - du er ligeglad med, hvordan Linux fungerer, skal du have hørt om systemd, det (relativt) nye init-system, der erstatter det gamle og forældede SysV init, der for nylig blev vedtaget af de fleste store Linux distributioner.
Hvad er et init-system?
Når din Linux-maskine starter, vil den først køre en "indbygget" kode, der er indlæst fra BIOS eller UEFI først, efterfulgt af bootloaderen, som ifølge sin konfiguration lægger en Linux-kerne. Kernen indlæser drivere, og som det allerførste job starter init-processen, som er den første får PID (Process ID) 1 tildelt det.
Fra brugerens synspunkt ser det ud til at starte netværk og databaser mv., Men i virkeligheden er der en ret kompleks proces, der finder sted under emhætten. Tjenesterne startes, stoppes og genstartes, ofte parallelt med hinanden. Nogle køres under forskellige privilegier end andre, service statuser bliver rapporteret og logget, og mange andre opgaver udføres, der gør den forskellige del af dit system til at fungere og kunne interagere med sine brugere og miljø.
Hvordan dette implementeres, er imidlertid langt fra ensartet, og det er virkelig, hvor det hele er ved at være almindeligt og veldefineret.
Det gamle init system
Det init-system, der blev brugt af de fleste almindelige Linux-distroer indtil for nylig, var System V init (eller SysV init kort), der har afledt sin navneform UNIX System V (Udtalet "System Five"), det første kommercielt tilgængelige UNIX-system. System V OS har haft en bestemt måde at køre sin init-proces, og SysV init har holdt sig loyal over for dette gennem årene.
Og det har været mange år. UNIX System V blev oprindeligt udgivet i 1983, hvilket gør init SysV init en over 30 år gammel tilgang til at starte Linux-maskiner.
Behovet for en forandring
Som det er blevet bemærket, har SysV init været forældet og lang tid for at blive udskiftet. Nogle af grundene til dette er:
- SysV init bruger / sbin / init til at starte init processen, men init selv har en meget begrænset rolle. init gør lidt mere end at starte /etc/init.d/rc, ifølge konfigurationen læst fra / etc / inittab, som igen vil køre scripts for at gøre det virkelige arbejde i init processen. Dette sker, medmindre det eksplicitte panelpanel (som med startpar på Debian) sker i rækkefølge, et script startende efter det andet, hvilket gør hele processen langsom, da hvert script skal vente på, at den foregående skal afslutte.
- SysV init har ikke adgang til PID eller de processer, den har (indirekte) startet. Den læser kun PID'er og forbinder dem med egentlige processer på en omstridt, kompliceret måde.
- For systemadministratorer, der forsøger at ændre det miljø, under hvilket en bestemt proces ville starte, er det ret vanskeligt med SysV init. (For at opnå dette skal de ændre init strcipt, der er ansvarlig for at starte den givne proces.)
- Der er visse funktioner, der er fælles for hver tjeneste, som SysV ikke implementerer, men hver proces skal selv implementere sig selv, som f.eks. "Demonisere" sig selv (bliver en systemdemon), hvilket er en udførlig og lang proces. I stedet for at gennemføre disse trin en gang kræver SysV hver proces til selv at gøre jobbet.
- SysV overlader også visse funktioner til eksterne programmer og ved intet om tjenester, der startes af dem.
Alt det ovennævnte, og mange flere designfejl, eller snarere det forældede systemdesign af SysV, har skabt et moderne init-system, der er længe siden.
Indtast systemd
Der var mange forsøg på at oprette et alternativt init system, hvoraf systemd kun er en af dem. Ubuntu plejede at køre sit eget init system kaldet upstart. Gentoo bruger stadig OpenRC. Andre init systemer inkluderer initng, busybox-init, runit og Mudur og andre.
Årsagen systemd er en klar vinder er, at den er blevet vedtaget af de fleste store distributioner. RHL og CentOS gik naturligvis systemd-vejen, da Fedora var den første distro, der officielt vedtog systemd i 2011. Men systemd er virkelig blevet det ene init-system til at styre dem alle, da Debian 8 officielt skiftede til systemd, hvilket medførte Ubuntu og derivater, overvinde Canonicals (eller mere præcist Mark Shuttleworths) indledende modstand mod systemd.
Hvordan er systemd anderledes?
- Systemd har til formål at give en enkelt centraliseret måde at håndtere init-processen fra begyndelsen til slutningen på.
- Det starter og stopper processer og tjenester, mens du holder øje med deres afhængigheder. Det kan endda starte en proces som et svar på en anden proces 'afhængighedskrav.
- Ud over at starte og stoppe processer under opstartstid, kan Systemd også starte når som helst, når systemet er op som svar på bestemte udløsningsbegivenheder, f.eks. Når en enhed er tilsluttet.
- Det kræver heller ikke processer til at dæmpe sig selv. I modsætning til SysV init kan systemd håndtere tjenester, der løber uden at skulle gennemgå den lange proces med at blive dæmoner.
- I modsætning til SysV init kender systemd og sporer alle processer, herunder PID'er, og at få information om processer er meget enklere for systemadministratorer under systemd.
- Systemd understøtter containere, der er grundlæggende isolerede servicemiljøer uden krav om virtuelle maskiner. Dette har stort potentiale i retning af sikrere og enklere systemdesign i fremtiden.
Det er selvfølgelig kun nogle af de store fordele. For en fuldstændig diskussion om systemd's fordele bør du læse Debian 8's "Systemd Position Statement"
Kontrovers
Selvfølgelig blev systemet ikke hilst velkommen af alle. Faktisk har mange og stadig gør frynser på det og kalder det monolitisk og besværligt, nogle selv anklager det for at gå "windows-vejen" for at have alt centraliseret. Mange argumenterer for, at det ikke er "Linux-vejen", og helt sikkert systemd ser ikke ud til at være i overensstemmelse med POSIX-standarder, og hvis vi betragter systemd som et værktøjssæt (bortset fra det binære), er det helt klart hugae.
Ikke desto mindre er systemd klart et skridt fremad, og selv om det ikke er perfekt, er meget af den kritik, den har modtaget, taget op af sin oprindelige forfatter og udvikler Lennart Poettering. Det er absolut en meget nødvendig fremskridt og et trin op fra det gamle init system. Linus Torvalds, skaberen af Linux, synes ikke at tænke systemd for meget, og hvem skal vi argumentere for med "Skaberen".
Konklusion
Efter at være blevet vedtaget af alle store Linux-distributioner, er systemd her for at blive. Uanset hvad nogle systemadministratorer siger uanset grunden, er systemd fremtiden for almindelig Linux, hvorvidt enkelte brugere kan lide det eller ej, hvilket ikke er nødvendigvis en dårlig ting at se på dens forskellige fordele.
For den gennemsnitlige bruger bringer det hurtigere opstartstider og sandsynligvis mere pålidelige systemer, mens i fremtiden distributioner vedtagelse det kan blive mere "kompatible" med hinanden. På brugerens slutning vil vi helt sikkert drage fordel af det mere moderne og moderne systemdesign, det bringer til vores desktops.