Ero sivun ”Systemd” versioiden välillä

Siirry navigaatioon Siirry hakuun
EgoLuser (keskustelu | muokkaukset)
p Paranneltu ulkoasua.
 
(6 välissä olevaa versiota 4 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}
{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}
{{Ohjelma
| nimi          = Systemd
| logo          =
| kuva          =
| kuvateksti    =
| tekijä        =
| kehittäjä      =
| moottori      =
| ensijulkaisu  =
| vakaaversio    =
| vakaapvm      =
| kehitysversio  =
| kehityspvm    =
| ohjelmoitu    = [[C]]
| käyttöliittymä = [[komentorivi]]
| tyyppi        =
| lisenssi      = [[GPL]]
| kotisivu      = [https://systemd.io systemd.io]
| lähdekoodi    = [https://github.com/systemd/systemd/ github.com/systemd/systemd/]
}}
'''systemd''' on käyttöjärjestelmän ja siinä ajettavien palveluiden käynnistymistä ja sammuttamista ohjaava ns. [[init]]-järjestelmä. Useimmat jakelut ovat siirtyneet käyttämään systemd-järjestelmää.
'''systemd''' on käyttöjärjestelmän ja siinä ajettavien palveluiden käynnistymistä ja sammuttamista ohjaava ns. [[init]]-järjestelmä. Useimmat jakelut ovat siirtyneet käyttämään systemd-järjestelmää.


Rivi 10: Rivi 31:


== Yksiköt ==
== Yksiköt ==
Tavallisimmin systemd:n tarjoamia työkaluja käytetään palveluiden, kuten [[ssh]]d tai [[Cups]], hallintaan. Systemd hallitsee palveluiden lisäksi myös muutamaa muunlaista asiaa. Erilaisille systemd:lla käsiteltäville asioille yhteinen termi on ''yksikkö'' (englanniksi unit).
Tavallisimmin systemd:n tarjoamia työkaluja käytetään palveluiden, kuten [[sshd]] tai [[Cups]], hallintaan. Systemd hallitsee palveluiden lisäksi myös muutamaa muunlaista asiaa. Erilaisille systemd:lla käsiteltäville asioille yhteinen termi on ''yksikkö'' (englanniksi unit).


Erityyppiset yksiköt erottaa toisistaan helposti nimen loppuosan perusteella. Palvelut päättyvät aina <tt>.service</tt>-merkkijonoon, kun taas esimerkiksi tiedostojärjestelmien liitospisteitä vastaavien yksiköiden nimien lopussa on aina <tt>.mount</tt>.
Erityyppiset yksiköt erottaa toisistaan helposti nimen loppuosan perusteella. Palvelut päättyvät aina <tt>.service</tt>-merkkijonoon, kun taas esimerkiksi tiedostojärjestelmien liitospisteitä vastaavien yksiköiden nimien lopussa on aina <tt>.mount</tt>.
Rivi 150: Rivi 171:
Systemd tarjoaa perinteisen [[cron]]-palvelun tapaiset toiminnot komentojen ajastamiseen. Esimerkiksi edellisessä kohdassa tehty hello-palvelu voitaisiin ajastaa käynnistymään kymmenen minuutin välein luomalla tiedosto <tt>/etc/systemd/system/hello.timer</tt> tähän tapaan:
Systemd tarjoaa perinteisen [[cron]]-palvelun tapaiset toiminnot komentojen ajastamiseen. Esimerkiksi edellisessä kohdassa tehty hello-palvelu voitaisiin ajastaa käynnistymään kymmenen minuutin välein luomalla tiedosto <tt>/etc/systemd/system/hello.timer</tt> tähän tapaan:


<source>
[Unit]
[Unit]
Description=Ajetaan hello-palvelu kymmenen minuutin välein
Description=Ajetaan hello-palvelu kymmenen minuutin välein
 
[Timer]
# Ensimmäinen ajo 10 minuuttia järjestelmän käynnistyksen jälkeen
OnBootSec=10min
# Ajetaan uudelleen 10 minuuttia edellisen ajon päätyttyä jälkeen
OnUnitInactiveSec=10min
Unit=hello.service


[Timer]
[Install]
# Ensimmäinen ajo 10 minuuttia järjestelmän käynnistyksen jälkeen
WantedBy=default.target
OnBootSec=10min
# Ajetaan uudelleen 10 minuuttia edellisen ajon päätyttyä jälkeen
OnUnitInactiveSec=10min
Unit=hello.service


[Install]
WantedBy=default.target
</source>


Näin luodut uudet yksiköt on sitten tarpeellista kytkeä päälle ja käynnistää:
Näin luodut uudet yksiköt on sitten tarpeellista kytkeä päälle ja käynnistää:
<source>
<pre>
systemctl enable hello.service
systemctl enable hello.service
systemctl enable hello.timer
systemctl enable hello.timer
systemctl start hello.timer
systemctl start hello.timer
</source>
</pre>


Ajastimet voidaan listata <code>systemctl list-timers</code> -komennolla. Esimerkkituloste:
Ajastimet voidaan listata <code>systemctl list-timers</code> -komennolla. Esimerkkituloste:
Rivi 187: Rivi 207:
</pre>
</pre>


==Kritiikkiä==
== Verkon hallinta ==
Parannuksistaan huolimatta, systemd-järjestelmää kohtaan on myös lukuisia vasta-argumentteja, joista keskeisin, että systemd on [https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well unix-filosofian] ''( "tee yksi asia ja tee se hyvin" )''-vastainen tiivistää ongelman sillä systemd ei pelkästään hoida init-järjestelmän tehtäviä, vaan myös virranhallinta, laitteiston hallinta, [[Mount|liittäminen]], [[komentojen ajastaminen]], levyjen salaus, [[Pistoke|pistoke-rajapinta]], verkon asetukset, kirjautumisen / session-hallinta, readahead, GPT-osioinnin löytäminen, container registration, hostname/locale/time hallinta, mDNS/DNS-SD, Linux-konsoli ja monia muita toimintoja tiivistettynä yhteen.
 
* https://www.freedesktop.org/software/systemd/man/systemd.network.html
* https://www.freedesktop.org/software/systemd/man/systemd.netdev.html - virtuaaliset verkkoliitännät
* <code>networkctl</code>
* <code>systemctl status systemd-networkd</code>
* <code>systemctl status systemd-networkd-wait-online.service</code>
 
=== Kiinteä IP-osoite ===
 
<code>/etc/systemd/network/eth0.network</code>:
 
<pre>
[Match]
# Verkkokortin nimi
Name=eth0
 
[Network]
Description=eth0:n kiinteä verkko
DHCP=no
Address=192.168.1.11/24
# Gateway IP Address
Gateway=192.168.1.1
# DNS server address
DNS=192.168.1.1
#Domains=home.lan
</pre>
 
=== DHCP ===
 
<code>/etc/systemd/network/eth0.network</code>:
 
<pre>
[Match]
# Verkkokortin nimi
Name=eth0
 
[Network]
Description=eth0:n verkko DHCP:lla
# DHCP no|yes|ipv4|ipv6
DHCP=ipv4
# DNS server address
#DNS=192.168.101.1
#Domains=home.lan
</pre>
 
=== Verkkokortin nimen vaihtaminen (.link) ===
 
Verkkokorttien nimiä voidaan vaihtaa SystemD:n <code>.link</code>-tiedostoilla. Verkkokortin uudelleennimeäminen on hyödyksi silloin, kun esimerkiksi palomuurisääntöjä pitää voida helpommin siirtää järjestelmästä toiseen.
Tässä esimerkissä verkkokortti nimeltä <code>eno1</code> uudelleennimetään <code>phy0</code>-nimiseksi.  
 
Listataan verkkokortit:
 
<pre>
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 74:d0:2b:2c:6e:d7 brd ff:ff:ff:ff:ff:ff
</pre>
 
Luodaan <code>/etc/systemd/network/10-phy0.link</code>:
 
<pre>
[Match]
# Käytetään MAC-osoitetta tunnistamaan verkkokortti
MACAddress=74:d0:2b:2c:6e:d7
 
[Link]
# Uusi nimi
Name=phy0
Description=USB-portin vasemmalla puolella oleva ylempi verkkokortti
MACAddressPolicy=persistent
# Käännä verkkokortin rautakiihdytettyjä ominaisuuksia pois päältä (offloading)
# ethtool-ohjelmalla näitä voidaan hallita vielä monipuolisimmin
#TCPSegmentationOffload=off
#TCP6SegmentationOffload=off
#GenericSegmentationOffload=off
#GenericReceiveOffload=off
#LargeReceiveOffload=off
</pre>
 
Lisätietoa: https://www.freedesktop.org/software/systemd/man/systemd.link.html
 
== Muita Init-järjestelmiä ==
Vaikka Systemd on aika laajasti käytössä, ei se silti ole ainoa init-järjestelmä. Esimerkiksi perinteinen [[Sysvinit]], uudempi [[OpenRC]], [[Runit]] tai [https://cr.yp.to/daemontools.html daemontools] ovat tapoja hoitaa järjestelmän käynnistäminen. Helpointa on käyttää Linux-jakelua, josta haluttu init-järjestelmä löytyy. Esimerkiksi [[Gentoo]] käyttää OpenRC:tä ja [[Void Linux]] käyttää Runitia. Sysvinitiä edelleen käyttävät ainakin [[Devuan]] ja [[Slackware]].


==Katso myös==
== Aiheesta Muualla ==
* [[:archwiki:Systemd|Arch Wikin Systemd-artikkeli]]
* [[:archwiki:Systemd|Arch Wikin Systemd-artikkeli]]
* [http://without-systemd.org/wiki/index.php/Main_Page Without-Systemd-wiki], jossa on laajemmin systemd:n vaihtoehtoja käsitelty, lisäksi argumentteja, miksi systemd:tä ei välttämättä kannata käyttää sekä ohjeistuksia systemd:n poistamiseen ja korvaamiseen esim. [[:archwiki:OpenRC|OpenRC:llä. (Arch Wiki)]]
* [http://without-systemd.org/wiki/index.php/Main_Page Without-Systemd-wiki], jossa on laajemmin systemd:n vaihtoehtoja käsitelty, lisäksi argumentteja, miksi systemd:tä ei välttämättä kannata käyttää sekä ohjeistuksia systemd:n poistamiseen ja korvaamiseen esim. [[:archwiki:OpenRC|OpenRC:llä. (Arch Wiki)]]


[[Luokka: Järjestelmä]]
[[Luokka: Järjestelmä]]
{{Malline:Palvelin}}
Noudettu kohteesta ”https://www.linux.fi/wiki/Systemd