Systemd

**systemd** on suosittu Linux-käyttöjärjestelmässä käytetty init-ohjelman korvaaja. Muitakin init-ohjelman korvaajia on käytössä. Systemd käynnistää tärkeimmät ohjelmat sekä hoitaa järjestelmän lokitietojen keruun, cron-tyyppisen tehtävien ajoituksen sekä useita muita tehtäviä. Se hoitaa esimerkiksi virranhallinnan, laitteistohallinnan, liittää levyosiot, huolehtii levyjen salauksesta, verkkoyhteyksien hallinnasta, järjestelmään kirjautumisesta, järjestelmän nimen, kellonajan ja maa-asetusten hallinnasta.
systemd:n ovat kehittäneet Red Hatillä Lennart Poettering ja Kay Sievers.

## Toimintaperiaate ja ominaisuudet
Ohjelma on ensimmäinen prosessi, jonka Linux-ydin käynnistää tietokoneen käynnistyessä. Eräitä kehityskohteita aiempiin ratkaisuihin olivat käynnistymisnopeuden parantaminen sekä laitteiston ja ohjelmiston muutoksien käsittely käynnissä olevassa järjestelmässä. systemd korvaa perinteiset Unix-tyyliset suoritustasot (runlevel) omalla ratkaisullaan, mutta tarjoaa yhteensopivuuden. 

Tyypillisesti Linuxilla käyttöjärjestelmän eri palvelut ajetaan eri käyttäjätunnuksilla, mutta palveluille voidaan asettaa lisää rajoitteita tarpeiden mukaan. Systemd käyttää käyttöjärjestelmän ytimen ominaisuuksia palveluiden hallintaan. Systemd sisältää useita konfiguroitavia asetuksia käynnistettävien palveluiden suorittamiseen rajatuilla oikeuksilla. Hiekkalaatikossa ajettaville palveluille voi asettaa tietyt hakemistot vain luettaviksi, esimerkiksi palvelun suorittamiseen käytettävän käyttäjätunnuksen kotihakemiston ja väliaikaisille tiedostoille tarkoitetut hakemistot voivat olla yksityisiä. Tietyt palveluiden hallintaan käytettävät ominaisuudet ovat käytettävissä vain alustoilla joissa on mukana niille tuki, esimerkiksi seccomp, cgroups ja Linux-nimiavaruuksien tuki. Suoritettavat palvelut ja toiminnot konfiguroidaan unit-tiedostoissa. Suoritettavien palveluiden tilaa voi tarkastella `systemd-analyze`-komennon avulla. 

Systemd sisältää toiminnot virtuaalikoneiden ja säiliöiden käynnistämiseen.

Systemd sisältää mahdollisuuden käynnistää palveluita käyttäjäkohtaisesti sisäänkirjautuneiden käyttäjien yhteydessä, ja kyseiset palvelut voidaan sammuttaa kun käyttäjä kirjautuu ulos. Käyttäjäkohtaiset palvelut ovat jaettuja käyttäjäkohtaisesti mikäli käyttäjällä on useita rinnakkaisia istuntoja samaan aikaan. Kun useampi käyttäjä on kirjautunut sisään samaan aikaan systemd voi suorittaa käyttäjälle määriteltyjä palveluita.

systemd-logind on käyttäjien sisäänkirjautumisien ja istuntojen hallintaan tarkoitettu palvelu, joka tukee istuntojen vaihtoa ja useaa samanaikaista käyttäjää (monipaikkainen istunto, *multiseat*).

Systemd:n käynnistämiä palveluita muokataan `systemctl`-ohjelmalla.
systemd:n hallinta tapahtuu D-Bus-väylän kautta ja systemd myös julkaisee kaikkien palvelujensa tilan väylällä.
systemd:n lokeja puolestaan tarkastellaan `journalctl`-komennolla.

systemd-resolved on nimipalvelun käsittelyyn tarkoitettu paikallinen palvelu, joka tarjoaa tietokoneen sovelluksille nimipalvelun käsittelyn. Palvelu tukee nimipalvelutietojen välimuistia ja siinä on kokeellinen tuki DNSSEC ja DNS over TLS -varmistuksille. Nimipalvelutuki on saatavilla kolmen rajapinnan kautta: D-Bus, natiivi ohjelmointirajapinta (Varlink), ja glibc:n tukema Name Service Switch (NSS). Lisäksi se kuuntelee paikallisesti nimipalvelulle tarkoitetussa portissa jotta ohjelmat, jotka eivät käytä näitä rajapintoja voivat käyttää palvelua kuten muuta DNS-palvelua. systemd:n nimipalvelun toimintaa tarkastellaan `resolvectl`-komennolla.

## Historia
Aiemmin Linux-alustalla käytettiin System V:n tyylistä SysVInit:iä ja BSD:n initiä, joiden jälkeen tulivat `service` ja `chkconfig` -ohjelmat. Myöhemmin tuli Upstart, jonka systemd on korvannut useissa paikoissa. Red Hat halusi pitää Canonicalin ylläpitämän Upstartin, mutta Debian-projektin siirryttyä käyttämään systemd:tä kiinnostus Upstartiin päättyi.
systemd:n käyttö tuli pakolliseksi GNOME:n version 3.8 myötä.

## Kritiikiä
Ohjelmaa on kritisoitu ja boikotoitu useita kertoja. Kriitikkojen mielestä systemd "laittaa kaikki munat samaan koriin". Ohjelman kaatuminen tietää suurella todennäköisyydellä koko järjestelmän kaatumista ja sen päivittämiseksi koko järjestelmä täytyy käynnistää uudelleen. systemd:n lokitiedostot on tallennettu sen omassa binäärimuodossa, eikä niitä voi lukea tavanomaisilla tekstitiedostoja käsittelevillä ohjelmilla.
Linus Torvalds ei vastusta systemd:n käyttöä, mutta on kertonut eräiden kehittäjien olevan liian välinpitämättömiä bugeista. Ohjelman mukana ollut udev-ohjelmisto on poistettu systemd-projektista koska firmwaren lataaminen on ytimen vastuulla. Theodore Ts’o on kritisoinut tapaa, jolla järjestelmään vaikuttavia muutoksia tehdään välittämättä tietyn käyttökohteen ulkopuolisista.

## Lähteet

## Aiheesta muualla
* https://www.freedesktop.org/wiki/Software/systemd/
* Daemon Management Under Systemd (PDF)