Ero sivun ”Init” versioiden välillä
Pb (keskustelu | muokkaukset) (initng:stä ja upstartista lisää ym.) |
Ei muokkausyhteenvetoa |
||
(9 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
Init on [[ | '''Init''' on [[Unix]]-järjestelmissä ohjelma, jonka tehtävänä on kaikkien muiden ohjelmien (prosessien) käynnistäminen. Tyypillisesti järjestelmän ydin käynnistää init-ohjelman ensimmäisenä ulkoisena prosessina ([[PID]] 1). Nykyään tässä artikkelissa kuvatut init-järjestelmät on useimmissa Linux-jakeluissa korvannut [[systemd]]. | ||
Linux-järjestelmissä | ==Perinteiset initit== | ||
Alun perin Linux-järjestelmissä oli käytössä kahden tyyppisiä init-ohjelmia, [[wikipedia:en:System V|System V Unixin]] ([[sysvinit]]) ja [[wikipedia:fi:BSD|BSD-Unixin]] initin toimintaa jäljitteleviä. Aikanaan lähes kaikki [[jakelu]]t käyttivät System V -tyylistä initiä poikkeuksena esimerkiksi [[Slackware]] ja [[Arch Linux]] jotka käyttivät [[BSD-init]]iä. | |||
System V -initin toiminta pohjautui ns. [[ajotaso]]ihin (''runlevel''), joiden avulla määriteltiin järjestelmän eri tilojen (esim. monen käyttäjän tekstipohjainen, monen käyttäjän graafinen, yhden käyttäjän tila sekä uudelleenkäynnistys ja sulkeminen) yhteydessä käynnistettävät ja suljettavat prosessit. Käytännössä nämä määriteltiin yleensä /etc/rc?.d-hakemistojen alle sijoitettavilla [[symbolinen linkki|symlinkeillä]]. BSD-init taas pohjautuu /etc-hakemiston alle sijoitettaviin rc-[[wikipedia:fi:skripti|skripteihin]]. BSD-initin valttina on nopeus ja yksinkertaisuus. | |||
==Uudempia init-toteutuksia== | |||
Perinteisten initien korvaajiksi toteutettiin uudempia järjestelmiä, kuten [[Initng]] sekä [[Upstart]]. Nämä pohjautuivat järjestelmän palveluiden käynnistämiseen rinnakkain. Rinnakkain käynnistäminen nopeuttaa jossain määrin käynnistysprosessia, kun esimerkiksi [[DHCP]]-palvelimelta vastausta odotellessa järjestelmän resursseja voidaan käyttää jonkin muun palvelun käynnistämiseen. | |||
Upstartiin sisältyi perinteisten init-ominaisuuksien lisäksi mahdollisuus hallita palveluiden käynnistämistä joustavasti erilaisten järjestelmätapahtumien pohjalta. Siinä on myös suppeita [[komentojen ajastaminen|komentojen ajastusominaisuuksia]], joiden pyrkimys oli korvata perinteiset at, cron ja anacron. | |||
Initng ei saavuttanut kovin suurta suosiota. Upstartia sen sijaan käyttivät [[Fedora]] ja [[Ubuntu]] vuosina 2006-2014. Näiden lisäksi on olemassa myös eräitä vähemmän tunnettuja initejä, kuten [[runit]], [[eINIT]] ja [[minit]] (kevyt init). | |||
== Nykyinen init-järjestelmä == | |||
Nykyisin ylivoimaisesti suosituin init-järjestelmä on [[Systemd]]. Systemd perustuu samaan lähtökohtaan kuin Upstart: palveluita käynnistetään rinnakain, ja palveluita voi käynnistää paitsi järjestelmän käynnistyessä, myös esimerkiksi tietokoneeseen kytkettyjen laitteiden muuttuessa. Siihen on lisätty komentojen ajastusominaisuuksia, jotka Upstartista puuttuivat. Myös käynnistettyjen palveluiden lokitiedostot tallentaa nykyään Systemd:n alainen journalointi. | |||
Systemd on käytössä lähes kaikissa tunnetuimmissa Linux-jakeluissa, ja luultavimmin järjestelmien ylläpitäjänä törmääkin juuri siihen. Edelleen käytetään myös joitain muita Init-järjestelmiä, tunnetuinpana näistä Gentoossa käytössä oleva [[OpenRC]]. | |||
Tässä artikkelissa ei käsitellä Systemd:n käyttöä, vaan ohjeet sen kanssa toimimiseen löytyvät [[Systemd]]-artikkelista. | |||
==Käyttö== | ==Käyttö== | ||
Esimerkiksi [[käynnistyslatain|käynnistyslataimessa]] voidaan [[ | Esimerkiksi [[käynnistyslatain|käynnistyslataimessa]] voidaan [[ytimen käynnistysparametrit|ytimen parametrilla]] <tt>init</tt> määrittää oletuksesta poikkeava init-ohjelma. Hyvin yleinen käyttökohde tälle on järjestelmän käynnistäminen vikatilanteessa suoraan root-komentotulkkiin. Esimerkiksi parametrilla | ||
init=/bin/bash | init=/bin/bash | ||
voitaisiin järjestelmä määrittää käynnistymään suoraan [[Bash]]-[[komentotulkki]]in ilman varsinaisen initin lataamista. | voitaisiin järjestelmä määrittää käynnistymään suoraan [[Bash]]-[[komentotulkki]]in ilman varsinaisen initin lataamista. | ||
Rivi 13: | Rivi 32: | ||
rdinit=<polku initrd:llä initiin> | rdinit=<polku initrd:llä initiin> | ||
joka ajaa [[initrd]]:n initin ohjelman /init sijaan. | joka ajaa [[initrd]]:n initin ohjelman /init sijaan. | ||
==Katso myös== | |||
*[[Init-skriptit]] | |||
*[[GNU/Linuxin käynnistysprosessi]] | |||
[[Luokka:Järjestelmä]] | [[Luokka:Järjestelmä]] |
Nykyinen versio 10. marraskuuta 2020 kello 11.53
Init on Unix-järjestelmissä ohjelma, jonka tehtävänä on kaikkien muiden ohjelmien (prosessien) käynnistäminen. Tyypillisesti järjestelmän ydin käynnistää init-ohjelman ensimmäisenä ulkoisena prosessina (PID 1). Nykyään tässä artikkelissa kuvatut init-järjestelmät on useimmissa Linux-jakeluissa korvannut systemd.
Perinteiset initit[muokkaa]
Alun perin Linux-järjestelmissä oli käytössä kahden tyyppisiä init-ohjelmia, System V Unixin (sysvinit) ja BSD-Unixin initin toimintaa jäljitteleviä. Aikanaan lähes kaikki jakelut käyttivät System V -tyylistä initiä poikkeuksena esimerkiksi Slackware ja Arch Linux jotka käyttivät BSD-initiä.
System V -initin toiminta pohjautui ns. ajotasoihin (runlevel), joiden avulla määriteltiin järjestelmän eri tilojen (esim. monen käyttäjän tekstipohjainen, monen käyttäjän graafinen, yhden käyttäjän tila sekä uudelleenkäynnistys ja sulkeminen) yhteydessä käynnistettävät ja suljettavat prosessit. Käytännössä nämä määriteltiin yleensä /etc/rc?.d-hakemistojen alle sijoitettavilla symlinkeillä. BSD-init taas pohjautuu /etc-hakemiston alle sijoitettaviin rc-skripteihin. BSD-initin valttina on nopeus ja yksinkertaisuus.
Uudempia init-toteutuksia[muokkaa]
Perinteisten initien korvaajiksi toteutettiin uudempia järjestelmiä, kuten Initng sekä Upstart. Nämä pohjautuivat järjestelmän palveluiden käynnistämiseen rinnakkain. Rinnakkain käynnistäminen nopeuttaa jossain määrin käynnistysprosessia, kun esimerkiksi DHCP-palvelimelta vastausta odotellessa järjestelmän resursseja voidaan käyttää jonkin muun palvelun käynnistämiseen.
Upstartiin sisältyi perinteisten init-ominaisuuksien lisäksi mahdollisuus hallita palveluiden käynnistämistä joustavasti erilaisten järjestelmätapahtumien pohjalta. Siinä on myös suppeita komentojen ajastusominaisuuksia, joiden pyrkimys oli korvata perinteiset at, cron ja anacron.
Initng ei saavuttanut kovin suurta suosiota. Upstartia sen sijaan käyttivät Fedora ja Ubuntu vuosina 2006-2014. Näiden lisäksi on olemassa myös eräitä vähemmän tunnettuja initejä, kuten runit, eINIT ja minit (kevyt init).
Nykyinen init-järjestelmä[muokkaa]
Nykyisin ylivoimaisesti suosituin init-järjestelmä on Systemd. Systemd perustuu samaan lähtökohtaan kuin Upstart: palveluita käynnistetään rinnakain, ja palveluita voi käynnistää paitsi järjestelmän käynnistyessä, myös esimerkiksi tietokoneeseen kytkettyjen laitteiden muuttuessa. Siihen on lisätty komentojen ajastusominaisuuksia, jotka Upstartista puuttuivat. Myös käynnistettyjen palveluiden lokitiedostot tallentaa nykyään Systemd:n alainen journalointi.
Systemd on käytössä lähes kaikissa tunnetuimmissa Linux-jakeluissa, ja luultavimmin järjestelmien ylläpitäjänä törmääkin juuri siihen. Edelleen käytetään myös joitain muita Init-järjestelmiä, tunnetuinpana näistä Gentoossa käytössä oleva OpenRC.
Tässä artikkelissa ei käsitellä Systemd:n käyttöä, vaan ohjeet sen kanssa toimimiseen löytyvät Systemd-artikkelista.
Käyttö[muokkaa]
Esimerkiksi käynnistyslataimessa voidaan ytimen parametrilla init määrittää oletuksesta poikkeava init-ohjelma. Hyvin yleinen käyttökohde tälle on järjestelmän käynnistäminen vikatilanteessa suoraan root-komentotulkkiin. Esimerkiksi parametrilla
init=/bin/bash
voitaisiin järjestelmä määrittää käynnistymään suoraan Bash-komentotulkkiin ilman varsinaisen initin lataamista.
Muita ytimelle annettavia parametreja ovat mm.
S
joka käynnistää initin yhden käyttäjän tilassa sekä
rdinit=<polku initrd:llä initiin>
joka ajaa initrd:n initin ohjelman /init sijaan.