Varför Linux är systemd Är Fortfarande Sönd Efter Alla Dessa År

0
221
fatmawati achmad zaenuri/Shutterstock

systemd är 10 år gammal, men känslor om det i Linux inte har mognat—det är så splittrande nu som den någonsin varit. Även om det används av många stora Linux-distributioner, hardcore oppositionen har inte ångrade.

Linux Boot-Sekvens

När du slår på din dator, hårdvara stövlar, och sedan (efter typ av boot sektorn använder din dator) antingen MBR (master boot record) utför eller Unified Extensible Firmware Interface (UEFI) körs. Den senaste åtgärden för båda dessa är att skjuta upp Linux-kärnan.

Kärnan har laddats in i minnet, packar upp sig själv, och initierar. En temporär fil och systemet är skapat i RAM-minnet, vanligen genom ett verktyg som heter initramfs eller initrd. Detta gör att de drivrutiner som behövs för att vara bestämd och laddad. Detta, i sin tur, gör att användaren utrymme filsystem för att ladda och förbereda sig för att skapa användar-utrymme miljö.

Skapandet av user-space environment hanteras av init-processen, som är den första process som inleddes av kärnan i en användarens utrymme. Det har ett process-ID (PID) av 1. Alla andra processer är antingen direkta eller indirekta barn av init-processen.

Innan systemd, de vanliga standard för init-processen var en omarbetning av Unix System V init. Det fanns andra alternativ som finns, men Systemet V init var standardutrustning i de flesta icke-Berkeley Software Distribution (BSD) som härstammar distributioner. Eftersom det kom direkt från Unix System V—andlig förfader av Linux—många människor ser det som “officiellt” sätt att göra init.

Init processen startar alla demoner och tjänster som krävs för att göra operativsystemet fungerar på ett meningsfullt, interaktivt sätt. Dessa demoner hantera saker som nätverksstacken, möjliggöra för andra maskinvaran i din dator, och ger en känga skärmen.

Många av dessa processer bakgrund att fortsätta att köra efter start. De gör saker som att logga information om evenemang, titta på för ändringar i maskinvara som du kan infoga eller ta bort enheter, och hantera användarnas inloggningar. Föga förvånande, init-systemet innehåller också funktioner för att hantera tjänster.

Vi kan använda ps för att se den process som har PID-1. Vi kommer att använda f (full-format notering) och p (PID) alternativ:

ps -fp 1

Ser vi processen med process-id 1 är systemd. Kör samma kommando på Manjaro Linux gett ett annat resultat. Processen med process-id 1 identifierades /sbin/init. En snabb titt på filen visar att det är en symbolisk länk till systemd:

ps -fp 1
ls -hl /sbin/init

Med ppid (parent process ID) alternativ med ps, vi kan se vilka processer som har varit direkt lanserades av systemd:

ps -f –ppid 1

Det är en ganska lång lista, som ni kan se på bilden nedan.

Alternativen

Flera projekt har försökt att utarbeta ett alternativ till den traditionella System V init. Ett av de största problemen är, med System V init, alla processer är igång seriellt, en efter en. För att förbättra effektiviteten i startordningen, många alternativa projekt använder parallellism för att starta processer samtidigt och asynkront.

Här är lite info om några av dessa:

  • Uppkomling: Utvecklat av Canonical, var det som används i Ubuntu 9.10, Red Hat och Red Hat Enterprise Linux (RHEL) 6, CentOS 6, och Fedora 9.
  • For uim uim: Kör på FreeBSD och andra BSD-derivat, macOS, och Solaris-och Linux-system. Det är också den standard init system på Void Linux.
  • s6-linux-init: Denna ersättning för System V init var utformad för att noga följa Unix-filosofin, som ofta reduceras till sound bite “göra en sak och göra det bra.”

Det finns många andra med olika funktionalitet och design. Men ingen av dem skapade sensation systemd gjorde.

Den systemd Sätt

systemd släpptes 2010 och som används i Fedora i och med 2011. Sedan dess har det antagits av många distributioner. Det har utvecklats av Lennart Poettering och Kay Sievers, två software engineers på RedHat.

systemd är mycket mer än en init ersättare. Det är snarare en svit på cirka 70 binärer som hanterar systemet för initiering, demoner och tjänster, loggning och journalföring, och många andra funktioner som redan hanteras av särskilda moduler i Linux. Huvuddelen av dessa har ingenting att göra med systeminitiering.

Några av de tjänster som tillhandahålls av systemd är:

  • systemd-udevd: Hanterar fysiska enheter.
  • systemd-logind: Hanterar användarnas inloggningar.
  • systemd-löst: Ger network name resolution till lokala tillämpningar.
  • systemd-networkd: Förvaltar och upptäcker nätverksenheter, och lyckas nätverkskonfigurationer.
  • systemd-tmpfiles: Skapar, tar bort och rensar upp flyktiga och tillfälliga filer och kataloger.
  • systemd-localed: Hanterar systemets lokalinställningar.
  • systemd-frästa: Identifierar och övervakar virtuella maskiner och containrar.
  • systemd-nspawn: Kan starta ett kommando eller en annan process i en lätt namespace behållare, vilket ger en funktionalitet som liknar chroot-miljö.

Och det är bara toppen av isberget, som också är den springande punkten. systemd har för länge sedan sprungit förbi vad som krävs av en init-systemet, som enligt sin motståndare, är själva definitionen av tillämpningsområdet krypa.

“Det är För Stort. Det Gör Alldeles För Mycket.”

Motståndare till systemd påpeka den stora, nyfiken blandning av funktionalitet som den omfattar. Alla dessa funktioner redan funnits i Linux, och kanske några av dem behövde en uppdatering eller en ny metod. Men att bunta ihop all denna funktionalitet i vad som är tänkt att vara en init system är arkitektoniskt förbryllande.

systemd som har kommit att kallas en ” single point of failure för alltför många kritiska funktioner, men detta verkar inte vara motiverat. Visserligen, det kastar Unix-filosofin om att skapa små verktyg att arbeta tillsammans i stället för stora bitar av programvara som gör allt ut genom fönstret. Medan systemd är inte strikt monolitisk (det består av många binärer snarare än en enda stor en), det innehåller en hel del olika verktyg och kommandon under ett paraply.

Även om det kanske inte är monolitisk, det är stort. För att få en uppfattning om omfattningen, vi räknade rader text i kärnan 5.6.15 kodbasen och systemd master gren av GitHub repository.

Detta var en relativt rå mått. Det räknas rader text, inte bara rader kod. Så, detta ingår kommentarer, dokumentation och allt annat. Det var dock en like-for-like jämförelse och gav oss en enkel måttstock:

( hitta ./ -name ‘*.*’ -print0 | xargs -0 katt ) | wc -l

Kärnan hade nästan 28 miljoner euro (27,784,340, för att vara exakt) rader text. Däremot systemd hade 1,349,969, eller nästan 1,4 miljoner. Med vår happy-go-lucky metrisk, systemd kommer ut på ca 5 procent av storleken på kärnan, vilket är galet!

Som en annan jämförelse, linjen räknas för en modern genomförandet av System V init för Arch Linux-distribution som kom ut för att 1,721 linjer.

Poettering tydligt har ingen hänsyn till Institute of Electrical and Electronics Engineers (IEEE) Dator Samhället, eller Portable Operating System Interface (POSIX) standard. I själva verket, han uppmuntrade utvecklare att ignorera POSIX:

“Så, skaffa dig en kopia av Linux Programmering Gränssnitt, ignorera allt det som sägs om POSIX-kompatibilitet och hacka bort din fantastiska Linux programvara. Det är ganska befriande!”

Det har förekommit anklagelser om att systemd är en Red Hat-projekt som endast gynnar Red Hat, men det är som tvångsmatades till bredare Linux-världen. Ja, det var föds i Red Hat och regleras och styras av det. Dock, av 1,321 bidragsgivare, bara en bråkdel arbete för Red Hat.

Så, vad finns det för fördelar med att Red Hat?

Jim Whitehurst, ordförande för IBM, som en gång var VD för Red Hat, sade:

“Red Hat övervägt många alternativ som finns tillgängliga och som även används i canonicals Uppkomling för Red Hat Enterprise Linux 6. I slutändan valde vi systemd eftersom det är den bästa arkitekturen som ger töjbarhet, enkelhet, skalbarhet, och väl definierade gränssnitt för att hantera de problem vi ser i dag och att förutse i framtiden.”

Whitehurst sade också att de såg fördelar i inbyggda system också. Red Hat partner med “den största inbäddade leverantörer i världen, särskilt inom telekom-och fordonsindustrin, där stabilitet och tillförlitlighet är nummer ett bekymmer.”

Dessa verkar som tekniskt välgrundade skäl. Kan du förstå företagets behov av tillförlitlighet, och det är inte orimligt för Red Hat för att leta efter sina egna intressen, men alla andra att följa efter?

Dricka systemd Kool-Aid?

Vissa motståndare till systemd säga distributioner och människor är bara blint följande Red Hat ‘ s bly och anta det.

Men, precis som uttrycket “att dricka Kool-Aid,” det är inte helt rätt. Som myntades 1978 efter cult ledare Jim Jones, tvingades hans över 900 anhängare att begå självmord genom att dricka en druva-smaksatt vätska spetsad med cyanid, frasen felaktigt shames Kool-Aid. Den grupp som faktiskt drack Smak Stöd, men Kool-Aid varit asfalterade genom att borsta sedan dess.

Plus, Linux-distributioner inte blint följande Red Hat, de är antar systemd efter allvarlig överläggning. Debatten rasade på Debians sändlistor för en lång tid. Men i och med 2014, gemenskapen röstade för att anta systemd som standard init system, men att även stödja alternativ.

Debian är ett viktigt exempel eftersom det inte härrör från RedHat, Fedora eller CentOS. Det finns ingen tredje klass tillämpas på Debian från Red Hat. Och Debian, som PID 1, har många ättlingar, inklusive Ubuntu och dess många spin-offs.

Beslut som fattas av Debians gemenskap är långtgående. De är också kraftigt debatterat och röstat om att använda Condorcet metod för röstning. Gemenskapen inte göra sådana val lätt heller.

Det röstade igen i December 2019 för att fortsätta att fokusera på systemd och att fortsätta att utforska alternativ. Motsatsen till att blint följa, detta är egentligen ett skolexempel på demokrati och valfrihet i arbetet.

Begränsningar i Val

Du behöver i allmänhet inte får välja om du vill använda systemd med en viss Linux-distribution. Snarare distributioner själva välja om de vill använda det, och du kan välja vilken Linux distribution du föredrar. Kanske en Linux-distribution du älskar bytte till systemd. Som en favorit musiker som förändringar genrer, detta kan vara skärande.

Människor som använder Debian, Fedora, CentOS, Ubuntu, Arch, Solus, och openSUSE, och motsätta sig antagandet av systemd, kan känna att de håller på att trängas ut av att använda deras fördelning av val. Om de känner sig tillräckligt starkt om någon av de arkitektoniska val, scope creep, eller ohörsamhet för POSIX, de kanske tycker att det är ohållbart att fortsätta att använda som distribution.

Det finns ett spektrum av kursen. I ena änden har du människor som inte förstår att de frågor (eller ens bryr sig), och på den andra har du en passionerad motståndare. Någonstans i mitten finns de som inte tycker om förändringar, men inte brytt sig tillräckligt mycket om det för att hoppa skepp. Men vad om fördelningen flyktingar, som inte kan stanna på sina valda distributionen på grund av att deras preferenser och principer?

Tyvärr, det är inte så enkelt som att bara installera beroende på vilket init system du vill. Inte alla har den tekniska möjligheten att göra det, nevermind de svårigheter som uppstår när program eller skrivbordsmiljöer som GNOME, har beroenden till systemd.

Vad sägs om att flytta till en annan fördelning? Vissa, som Devuan, dök upp som icke-systemd gafflar av fördelningar (i det här fallet, Debian) som hade antagit systemd. Med hjälp av Devuan bör likna den förälder distribution, men det är inte fallet för alla icke-systemd gafflar. Till exempel, om du lämnar Fedora och flytta till AntiX, Gentoo, eller till och Slackware, du kommer att ha en mycket annorlunda upplevelse.

Det är Inte på väg Någonstans

Jag gillar en del av vad systemd gör (enkel och standardiserad kontroll efter processer). Jag förstår inte resonemanget för en del av vad det gör (binära loggar). Dessutom ogillar jag en del av vad det gör (omskrivningen hem mappar—som bett om det?).

Distributioner som Debian gör det smart sak och undersöker alternativ för att hålla alternativ öppna. Men systemd är i det för lång haul.

Om du administrera Linux-maskiner för andra, lära sig systemd och som du vet System V init. Detta sätt, oavsett vilka du möter, du kommer att kunna utföra dina arbetsuppgifter.

Bara använda Linux hemma? Om så är fallet, välja en fördelning som både uppfyller dina tekniska behov och kompletterar din Linux ideologi.

RELATERAT: Systemd Kommer att Förändra Hur Din Linux-Hem-Katalogen Fungerar

LÄS NÄSTA

  • “Hur man ändrar storlek på Start-Menyn i Windows 10
  • “Vad Är Google Möter, och Hur Kan Du Använda Den Gratis?
  • “Är Det Verkligen Tar 60 Sekunder att Spåra ett Samtal?
  • “Hur att Handeln med Övriga Aktörer i” Animal Crossing: New Horizons
  • “Vad Gör “IDK” Betyder, och Hur Använder Man Det?