<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fi">
	<id>https://www.linux.fi/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Erben</id>
	<title>Linux.fi - Käyttäjän muokkaukset [fi]</title>
	<link rel="self" type="application/atom+xml" href="https://www.linux.fi/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Erben"/>
	<link rel="alternate" type="text/html" href="https://www.linux.fi/wiki/Toiminnot:Muokkaukset/Erben"/>
	<updated>2026-04-11T17:57:16Z</updated>
	<subtitle>Käyttäjän muokkaukset</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Keskustelu_k%C3%A4ytt%C3%A4j%C3%A4st%C3%A4:80.223.150.204&amp;diff=18596</id>
		<title>Keskustelu käyttäjästä:80.223.150.204</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Keskustelu_k%C3%A4ytt%C3%A4j%C3%A4st%C3%A4:80.223.150.204&amp;diff=18596"/>
		<updated>2007-11-26T19:55:47Z</updated>

		<summary type="html">&lt;p&gt;Erben: Ak: Uusi sivu: Samat linkit ovat kahdesti sivulla http://linux.fi/index.php/Ion. Sen takia poistin toiset niistä.  *[http://www-128.ibm.com/developerworks/linux/library/l-cpion.html Fun with the Io...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Samat linkit ovat kahdesti sivulla http://linux.fi/index.php/Ion. Sen takia poistin toiset niistä.&lt;br /&gt;
&lt;br /&gt;
*[http://www-128.ibm.com/developerworks/linux/library/l-cpion.html Fun with the Ion window manager] ([[IBM]].com)&lt;br /&gt;
*[http://www.linux.com/article.pl?sid=06/06/19/1634225 Ion, the efficient window manager] Artikkeli linux.comissa&lt;br /&gt;
*[http://www-128.ibm.com/developerworks/linux/library/l-cpion.html Fun with the Ion window manager] ([[IBM]].com) (englanniksi)&lt;br /&gt;
*[http://www.linux.com/article.pl?sid=06/06/19/1634225 Ion, the efficient window manager] Artikkeli Linux.comissa (englanniksi)&lt;br /&gt;
&lt;br /&gt;
Joku näemmä palautti ne kun ilmeisesti luuli ilkivallaksi, vai onko tuolle jokin järkevä tarkoitus jota en keksinyt. Myös linkki &amp;quot;Ion englanninkielisessä Wikipediassa&amp;quot; samalla sivulla vie sivulle joka kertoo ioneista englaniksi eikä ikkunanmanagerista.&lt;/div&gt;</summary>
		<author><name>Erben</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Keskustelu:K%C3%A4ynnistysprosessi&amp;diff=16345</id>
		<title>Keskustelu:Käynnistysprosessi</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Keskustelu:K%C3%A4ynnistysprosessi&amp;diff=16345"/>
		<updated>2007-08-18T04:28:44Z</updated>

		<summary type="html">&lt;p&gt;Erben: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Erben</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Keskustelu:K%C3%A4ynnistysprosessi&amp;diff=16344</id>
		<title>Keskustelu:Käynnistysprosessi</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Keskustelu:K%C3%A4ynnistysprosessi&amp;diff=16344"/>
		<updated>2007-08-18T04:28:03Z</updated>

		<summary type="html">&lt;p&gt;Erben: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(Artikkeli Raja-anturasta)&lt;/div&gt;</summary>
		<author><name>Erben</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=K%C3%A4ynnistysprosessi&amp;diff=16343</id>
		<title>Käynnistysprosessi</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=K%C3%A4ynnistysprosessi&amp;diff=16343"/>
		<updated>2007-08-18T04:24:10Z</updated>

		<summary type="html">&lt;p&gt;Erben: /* Entä init:n jälkeen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GNU/Linuxin käynnistysprosessi selitettynä==&lt;br /&gt;
&lt;br /&gt;
Yleensä käyttäjän ei tarvitse huolehtia siitä, mitä tapahtuu sillä välin kun tietokoneeseen kytketään virta ja ruudulle pamahtaa [[graafinen ympäristö (X)|graafinen ympäristö]], jossa pyydetään kauniisti kirjautumaan sisään järjestelmään. Kuitenkin jossain vaiheessa tulee tavankin käyttäjälle kytö säätää käynnistysaikaa tai vaikka käynnistyviä palveluita, tällöin olisi hyvä tuntea kuinka järjestelmä itseasiassa käynnistyykään. Tässä artikkelissa pyritään selvittämään sitä väliä mikä on virtanapin ja järjestelmään kirjautumisen välissä. Ikävä kyllä artikkeli ei voi tarjota kaikille jakelupaketeille “suoraa lähestymistä”, mutta kirjoittaessa on pyritty tästä tekemään mahdollisimman jakelupakettiriippumaton.&lt;br /&gt;
Virtanapista eteenpäin&lt;br /&gt;
Niin, mitkä oikeastaan ovat ensimmäiset vaiheet? Tämä on yksi niitä elämän mysteerejä, eikä oikeastaan millään tavalla vielä liity käyttöjärjestelmään. Yleensä tietokoneeseen virtojen tultua, tietokone lataa [[BIOS]]:n, joka on pieni ohjelma poltettuna erillisille piisirulle (nykyään sähköisesti purettavia ja uudelleenohjelmoitavia muistipiirejä). Tämä pieni ohjelma, joka pyörii pienellä piisirulla tekee ensimmäisenä käynnistyttyään [[POST-testi (POST-testi)|POST-testi]]n (Power-On-Self-Test), joka tarkastaa että tiettyjä laitteita (kuten muistit, emolevy, prosessori...) on paikalla, ja että ne ovat toimintakunnossa. Sen jälkeen BIOS alustaa joitakin järjestelmäkomponentteja (kiintolevyt jne.), jakaa niille keskeytyksiä sekä tulostaa niistä taulukon ruudulle. Kaiken muun tehtävän seassa voitaisiin sanoa, että BIOS:lla on päätehtävä, jonka tarkoitus on etsiä käynnistettävän median aivan alkupäästä ohjelma, joka kykenee lataamaan käyttöjärjestelmän. Voitaisiinkin sanoa, että BIOS ei ole olemassakaan mitään muuta varten kuin sitä, että se osaa ladata ohjelman nimeltä käynnistyslatain. Käynnistyslatain sijaitsee yleensä [[Master Boot  Record]]illa, joka sijaitsee yleensä boottaavan median alkupäässä. Kiintolevyistä puhuttaessa alkupää on ensimmäinen sektori, ensimmäinen sylinteri sekä ensimmäinen lukupää. Menikö hieman ohi? Ei hätää, emme ole vielä päässeet käyttöjärjestelmän käynnistämiseen :)&lt;br /&gt;
&lt;br /&gt;
[[Käynnistyslatain (käynnistyslatain)|Käynnistyslatain]] on siis ohjelma, joka kykenee lataamaan käyttöjärjestelmän. Tämä onkin oikeastaan ensimmäinen vaihe, jossa pystytään puhumaan [[GNU/Linux]]in käynnistysprosessista. Käynnistyslatain kuulostaa varmaan tutulta ja monelle se tulee vielä tutummaksi kun mainitsen, että kaksi suosituinta käynnistyslatainta ovat [[GRUB (grub)|GRUB]] (Grand Unified Bootloader) sekä [[LILO (lilo)|LILO]] (Linux Loader). Käynnistyslataimen tehtävä on tarjota tietokoneelle keino päästä käynnistämään käyttöjärjestelmän ydintä, eli kerneliä. Miksi BIOS ei voi suoraan bootata kerneliä, niinhän windowskin tekee? Itseasiassa näin ei windowskaan tee. Vaikka ruudulle ei tulekaan mitään tekstiä, joka kehottaa valitsemaan käyttöjärjestelmää, vaatii myöskin Windows käynnistyslataimen.&lt;br /&gt;
&lt;br /&gt;
No takaisin asiaan. Nyt tiedämme, että BIOS lataa käynnistyslataimen ja käynnistyslataimen tehtävä on ladata käyttöjärjestelmän ydin. Mitä eroa sitten LILO:lla ja GRUB:lla on? Vaikka LILO ja GRUB vaikuttavat hyvinkin samanlaisilta ohjelmilta, ne molemmat tarjoavat käynnistysvalikon, mistä saa valittua ladattavan käyttöjärjestelmän ja ne molemmat myös lataavat sen käyttöjärjestelmän. Ero piileekin lähinnä siinä, kuinka nämä käynnistyslataimet sen tekevät.&lt;br /&gt;
&lt;br /&gt;
==LILOn lähestymistapa==&lt;br /&gt;
&lt;br /&gt;
Voisi kuvitella, että kaikki tiedostot ovat boottisektorilla vain odottamassa lataamista. Näin ei kuitenkaan ole, sillä boottisektori on aivan liian pieni kernelille tai edes kokonaiselle LILO:lle. Tästä syystä LILO onkin käytännössä pilkottu eri &amp;quot;vaiheisiin&amp;quot;. Ensimmäisenä kun BIOS lataa käynnistyslataimen (tässä tilanteessa LILO:n), se lataa tosiasiassa vain pienen osan koodia, joka osaa käynnistää toisen vaiheen suoraan kiintolevyltä. Ensimmäisen vaiheen jälkeen LILO tulostaa ruudulle kirjaimen &amp;quot;L&amp;quot;. Kun toinen vaihe on ladattu, LILO tulostaa ruudulle&amp;quot;I&amp;quot;-kirjaimen ja käynnistää toisen vaiheen. Toisen vaiheen käynnistämisen jälkeen LILO tulostaa ruudulle &amp;quot;L&amp;quot;-kirjaimen ja yrittää lukea kiintolevyltä karttatiedoston, joka kertoo LILO:lle mm. että mitä käyttöjärjestelmiä levyllä on ja missä ne sijaitsevat. Jos tämän karttatiedoston lataaminen onnistuu, printtaa LILO ruudulle &amp;quot;O&amp;quot;-kirjaimen. Nämä tulostetut kirjaimet mahdollistavat myös LILO:n virhetilanteiden korjaamisen, ja ne ovat dokumentoitu varsin hyvin joten googlen pitäisi auttaa ongelmatilanteissa. Mutta ettemme karkaisi asiasta liikaa, niin LILOn ongelma on karttatiedoston tarve, jos jostain syystä levyn geometria muuttuu tai karttatiedosto on väärä tai viallinen, ei lilo osaa enää käynnistää kerneliä. Tämä on periaatteessa korjattavissa rescue-cd:llä, sillä LILO sisältää komennon nimeltä &amp;quot;lilo&amp;quot;, joka kirjoittaa oikeellisen karttatiedoston. Tämä aiheuttaa myös sen, että komento &amp;quot;lilo&amp;quot; tulee ajaa aina kun käännetään uusi kernel tai muutetaan LILO:n asetuksia. Tämän karttatiedoston tarpeen poistamiseen onkin kehitetty toinen käynnistyslatain nimeltään GRUB.&lt;br /&gt;
&lt;br /&gt;
==GRUB:n lähestymistapa==&lt;br /&gt;
&lt;br /&gt;
Aivan kuten LILO, myöskään GRUB ei pysty käynnistymään suoraan boottisektorilta, vaan sekin jakautuu eri vaiheisiin. Boottisektorille mahtuu itseasiassa vain yksi+reilu vaihetta, joten ensimmäisen vaiheen jälkeen GRUB siirtyy oikeastaan vaiheeseen 1,5. Vaiheessa 1,5 GRUB lataa tiedostojärjestelmän sille osiolle, millä toinen vaihe sijaitsee. Riippuen käytettävästä tiedostojärjestelmästä, ladataan aina eri tiedostojärjestelmälle eri 1,5 vaihe. Koska GRUB lataa tiedostojärjestelmän karttatiedoston sijaan, voi se myös siis bootata kernelin josta sille ei ole aiemmin konfiguraatiotiedostossa kerrottu. Vaiheessa 2 GRUB lataa käytännössä valikon sekä pienen komentokehotteen, jolla voidaan ladata kerneleitä jotka eivät valikoihin kuulu. Tämä poistaa myös tarpeen ajaa mitään erillistä karttatiedostoa luovaa ohjelmaa GRUB:n käynnistyslataimen konfiguroinnin jälkeen. Periaatteessa konfiguraatiotiedosto voi olla vaikka kuinka väärin, sillä se on aina muokattavissa käynnistyksen yhteydessä (ellei sitä salasanalla suojata ja salasana on hukassa).&lt;br /&gt;
&lt;br /&gt;
==Initrd==&lt;br /&gt;
Nykyiset GNU/Linux-jakelupaketit tarjoavat tuen hyvinkin monelle erityyppiselle laitteelle, toiset tarjoavat jopa mahdollisuuden täyteen toiminnallisuuteen pelkältä levykkeeltä boottaamisen avulla. Kernel alkaakin jo olemaan olennaisessa osassa tässä vaiheessa käynnistystä. Linuxin ydin (siis se kernel) on suunniteltu niin sanotusti modulaariseksi, eli eri tarpeisiin voidaan ladata eri moduleita aina tarpeen mukaan, eikä kaikki ole käännetty sisään yhteen tiedostoon. Tällä saadaan mukavasti itse kernelin kokoa pieneksi ja se osittain mahdollistaa jo levykkeeltä boottaamisen. Joissain tapauksissa kuitenkin modulaarisuus aiheuttaa ongelmia, hyvänä esimerkkinä toiminee tiedostojärjestelmä. Jos meidän pitää ladata tiedostojärjestelmän moduli, että pääsemme käsiksi levyosioon jossa tämä moduli sijaitsee, olemme luonnollisesti ongelmissa. Tätä varten GNU/Linuxin käynnistykseen onkin keksitty sellainen järjestelmä kuin initrd.&lt;br /&gt;
&lt;br /&gt;
[[Initrd]] (&amp;lt;i&amp;gt;Initial RAM Disk Image&amp;lt;/i&amp;gt;) on pieni &amp;quot;kuva&amp;quot; RAM-muistiin sijoitettavasta paketista, joka sisältää erinäisiä pakattuja ja bootin kannalta tarpeellisia moduleita (kuten SCSI-ohjaimia, verkkoboottausmoduleita yms.). Initrd ei ole aina tarpeellinen, kuten silloin jos on itsekäännetty kernel, jonka sisään on kaikki käynnistyksen kannalta tarpeelliset ajurit käännetty eikä useampaa laitetta tarvitse bootin yhteydessä tukea. Kuitenkin monesti kun on kyseessä esimerkiksi jakelupaketti, jonka pitäisi pyörähtää useilla tuhansilla (ellei jopa miljoonilla) erilaisilla laitekokoonpanoilla, on initrd lähes välttämätön, ettei itse kernel paisu mahdottoman suureksi. Käytännössä initrd on siis pakattu juuritiedostojärjestelmä jonka sisään on pakattu erilaiset käynnistettävät modulit, tämä mahdollistaa jopa 8Mt:n jakelupaketin pakkaamisen yhdelle yksittäiselle levykkeelle.&lt;br /&gt;
Kernelin lataaminen&lt;br /&gt;
Pieni välikatsaus tässä vaiheessa lienee paikallaan. Tähän mennessä siis olemme painaneet virtanappia, BIOS on ladannut käynnistyslataimen, joka on mahdollisesti ladannut initrd:n fyysiseen muistiin ja kohta kernel jo latautuukin ja suorittaa koodia. Tässä vaiheessa, riippumatta siitä että onko initrd:tä käytetty vai ei, voimme valmistautua itse ytimen latautumiseen.&lt;br /&gt;
&lt;br /&gt;
Ensimmäisenä kernel ladataan muistiin bootloaderin toimesta ja kontrolli siirtyy bootloaderilta kernelille. Kernel sisältää kernel-imagen purkuun tarvittavat järjestelmät ja se puretaan. Purkamisen jälkeen järjestelmälaitteet alustetaan, myöskin ne jotka BIOS on aiemmin alustanut. Tämä mahdollistaa BIOS-riippumattoman järjestelmän käynnistämisen. Nyt purettu kernel ottaa koneen kunnolla valtaansa ja rupeaa alustamaan keskeytyksiä, schedulereita, konsoleita sekä erinäisiä rautapuolen laitteita. Kun alustukset on tehty, kutsutaan ohjelmaa nimeltä init. Init on ohjelma, joka määrää linuxin käynnistysjärjestyksen sekä sen, mitä käynnistetään. Init-järjestelmiä voi olla kahdenlaisia. Toinen on skriptityylinen Init, joka määrää kaiken yhden skriptitiedoston perusteella ja toinen (käytössä lähes poikkeuksetta nykyisissä jakelupaketeissa) on System V Init, joka lataa yhden tiedoston perusteella tarvittavat palvelut modulaarisesti. Sulautettujen järjestelmien tekijöille pieni vinkki: jos järjestelmään halutaan nopeutta, init:n ei tarvitse olla mitään muuta kuin esim. C-kielellä ohjelmoitu koodinpätkä joka hoitaa ko. Järjestelmässä tarvittavat käyttöönotot (esim. ramdiskin mounttaus jne).&lt;br /&gt;
System V Init&lt;br /&gt;
Init:n käynnistyttyä alkaakin järjestelmän muokkaaminenkin olemaan mahdollista ilman suurempaa työtä. Init toimii siten, että ensimmäisenä se lukee konfiguraation inittab-tiedostosta (yleensä /etc -hakemistossa). Tiedosto näyttää jotakuinkin tältä:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;# Oletusrunlevel&lt;br /&gt;
 id:3:initdefault:&lt;br /&gt;
 &lt;br /&gt;
 # Järjestelmän alustus, paikallisten levyjen mounttaus ym.&lt;br /&gt;
 si::sysinit:/sbin/rc sysinit&lt;br /&gt;
 &lt;br /&gt;
 # Myöhempi alustus, aloittaa runlevelit.&lt;br /&gt;
 rc::bootwait:/sbin/rc boot&lt;br /&gt;
 &lt;br /&gt;
 l0:0:wait:/sbin/rc shutdown&lt;br /&gt;
 l1:S1:wait:/sbin/rc single&lt;br /&gt;
 l2:2:wait:/sbin/rc nonetwork&lt;br /&gt;
 l3:3:wait:/sbin/rc default&lt;br /&gt;
 l4:4:wait:/sbin/rc default&lt;br /&gt;
 l5:5:wait:/sbin/rc default&lt;br /&gt;
 l6:6:wait:/sbin/rc reboot&lt;br /&gt;
 #z6:6:respawn:/sbin/sulogin&lt;br /&gt;
 &lt;br /&gt;
 # terminaalit&lt;br /&gt;
 c1:12345:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
 c2:12345:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
 c3:12345:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
 c4:12345:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
 c5:12345:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
 c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
 &lt;br /&gt;
 # Mitä tehdään, kun painetaan ctrl+alt+del.&lt;br /&gt;
 ca:12345:ctrlaltdel:/sbin/shutdown -r now&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inittab-tiedostossa tulee olla oletusrunlevel (näistä lisää myöhemmin), jolle bootataan GNU/Linuxin käynnistyessä, terminaalit joita käytetään (virtuaalikonsolit/virtuaaliterminaalit, yleensä kuusi kappaletta), sekä skriptit joita pitää ajaa aina tietyn runlevelin yhteydessä. Inittab mahdollistaakin siis räätälöidyn käynnistysjärjestelyn tekemisen hyvinkin pienellä vaivalla. Monessa skriptissä on myös määritelty respawn-parametri, joka tarkoittaa prosessin uudelleenkäynnistämistä heti sen sammumisen jälkeen. Kuten esimerkiksi kun järjestelmästä kirjaudutaan ulos niin käynnistetään uusi sisäänkirjautumiskehote. Tiedostossa on myös määritelty se, mitä tehdään kun ctrl+alt+del -näppäinyhdistelmää painetaan. Inittabin rakenne sekä tiedostojen sijainnit vaihtelevat hyvinkin paljon distrokohtaisesti, joten niiden säätämistä emme tässä vaiheessa sen enempää käsittele. Esimerkiksi RedHat:lla sekä Debianilla on jokaiselle runlevelille määrätty oma hakemisto, jossa on symbolisia linkkejä ajettaviin ohjelmiin ja ne on numeroitu erikoisennäköisellä koodilla käynnistysjärjestyksen takaamiseksi. Toiset [[UNIX]]-variantit käyttävät pelkkiä tiedostoja joissa määrätään mitä järjestelmiä ladataan ja mitä sammutetaan missäkin vaiheessa. Yleispätevänä ohjelmana KDE:n käyttäjille ksysv tarjoaa kohtuullisen hyvät mahdollisuudet muokata eri runleveleitä jakelupakettiriippumattomasti.&lt;br /&gt;
&lt;br /&gt;
====Runleveleistä====&lt;br /&gt;
&lt;br /&gt;
Mitä nämä runlevelit ovat? Ne ovat käytännössä erilaisia käynnistysprofiileja, joita voidaan muokata tarpeen mukaan. Runleveleitä on yleensä GNU/Linux järjestelmässä kahdeksan kappaletta, joista kolme on varattu erikoiskäyttöön. Vaikka runleveleitä ei ole millään tavalla standardoitu, niin ne menevät yleensä seuraavasti (tarkempaa tietoa haluavat kääntykää jakelupaketin valmistajan dokumentaatioon):&lt;br /&gt;
&lt;br /&gt;
 S	Varattu&lt;br /&gt;
 0	Varattu, järjestelmän sammutus&lt;br /&gt;
 1	Yleensä yhden käyttäjän tila (Single user mode)&lt;br /&gt;
 2	Yleensä Ei-graafinen monen käyttäjän tila&lt;br /&gt;
 3	Ensimmäinen täysin toimiva tila&lt;br /&gt;
 4	Toinen täysin toimiva tila&lt;br /&gt;
 5	Kolmas täysin toimiva tilaa&lt;br /&gt;
 6	Varattu, järjestelmän uudelleenkäynnistys&lt;br /&gt;
&lt;br /&gt;
Yleensä oletusrunlevel, eli runlevel jolle käynnistetään on joko 3. tai 5. Joissain tapauksissa käytetään myös 2. runleveliä. Runlevel 1 on niin sanottu Single User Mode, jota ennen ajetaan S-runlevelin skriptejä. Runleveliä S ei ole oikeastaan tarkoitettukaan ajettavaksi suoraan vaan ennemminkin alustamaan runlevelille 1 siirtyminen.&lt;br /&gt;
&lt;br /&gt;
Nyt kursitaankin sitten kaikki tietomme kokoon, ettei harhauduta reitiltä. BIOS lataa käynnistyslataimen, käynnistyslatain kernelin ja kernel käynnistää init:n. Kun [[init]] käynnistyy, se tekee ensimmäisen init-skriptin vaatimat tehtävät, kuten mounttaa /etc/[[fstab]]-tiedostossa luetellut osiot, asettaa järjestelmän kellon, käynnistää satunnaislukugeneraattorin jne. Tämän jälkeen init lukee konfiguraatiotiedostosta oletusrunlevelin numeron ja hyppää suorittamaan oletusrunlevelin käynnistysskriptiä. Nyt otamme mielikuvituksen käyttöön ja kuvitellaan, että runlevelit olisivat hakemistoja, joten kun init lukee oletusrunlevelin 5, se käynnistää kaikki runlevelin 5 hakemistossa olevat skriptit listatussa järjestyksessä. Jos oletusrunlevel olisi 2, init siis käynnistäisi runlevelin 2 hakemiston sisällön. Käytännössä asia ei aivan näin toimi, mutta periaate räätälöidyistä käynnistysprofiileista tullee selväksi.&lt;br /&gt;
&lt;br /&gt;
====Pikkuisen init-skripteistä====&lt;br /&gt;
&lt;br /&gt;
Ne pienet ohjelmat, joita käynnistetään eri runleveleillä sijaitsevat usein hakemistossa /etc/init.d, josta ne sitten on mahdollisesti linkattu eri runlevelien yhteyteen käynnistettäväksi bootin aikana. Init-skriptit ovat pieniä [[shell]]-ohjelmia, joilla voidaan sammuttaa, käynnistää sekä uudelleenkäynnistää palveluita ja ohjelmia. Tästä mainitsen sen takia, koska joskus on erittäin käytännöllistä käynnistää tai sammuttaa järjestelmän käynnissäollessa ohjelmia näillä pienillä init-skripteillä. Käytännössä init-skriptit ottavat vastaan komentoja start (käynnistys), stop (sammutus) sekä restart (uudelleenkäynnistys). Kuvitellaan että haluamme esimerkiksi sammuttaa apache http-palvelimen ilman killall-komentoa. Tämä onnistuu niinkin helposti, kuin&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;/etc/init.d/apache stop&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pitää kuitenkin muistaa, että hakemisto ei välttämättä jokaisessa jakelupaketissa ole sama, mutta teoriassa näin voimme kätevästi hallita ohjelmia ihan järjestelmän käydessä.&lt;br /&gt;
&lt;br /&gt;
====Entä init:n jälkeen====&lt;br /&gt;
&lt;br /&gt;
Init käytännössä hoitaa lopun järjestelmän käynnistymisestä, kuten displaymanagerin lataamisen sekä mahdollisesti graafisen käyttöympäristön käynnistämisen. Sama init hoitaa myös järjestelmän sammuttamisen ja uudelleenkäynnistämisen. Init-järjestelmä on oikeastaan lähes koko UNIX-tyylisten käyttöjärjestelmien selkäranka kustomoitavan käynnistämisen kannalta ja siihen perehtyminen ei koskaan ole liian myöhäistä, ennemmin tai myöhemmin sitä tarvitaan.&lt;br /&gt;
&lt;br /&gt;
Tämä artikkeli alkaa olemaan lopuillaan ja sen tarkoitus oli tarjota GNU/Linux-käyttäjille kuva siitä, kuinka järjestelmä itseasiassa käynnistyy ja miten monimutkainen prosessi kokonaisuudessaan on. Paljon yksityiskohtia jäi vielä käsittelemättä, mutta niiden ollessa hyvinkin käyttöjärjestelmäkohtaisia, ei niitä voida käsitellä näinkin geneerisessä artikkelissa.&lt;br /&gt;
&lt;br /&gt;
Onnellisia hetkiä järjestelmän käynnistymisen kanssa :)&lt;br /&gt;
&lt;br /&gt;
Artikkelin kirjoittaja ei ota vastuuta artikkelin aiheuttamista päähänpistoksista muokata järjestelmä hajalle. Syvempi perehtyminen aiheeseen on erittäin suositeltavaa ennen init-skriptien tai bios-piirien vaihtoa omatekemiin.&lt;br /&gt;
[[Luokka:Perustietoa]]&lt;br /&gt;
[[Luokka:Järjestelmä]]&lt;/div&gt;</summary>
		<author><name>Erben</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Bash-skriptaus&amp;diff=16342</id>
		<title>Bash-skriptaus</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Bash-skriptaus&amp;diff=16342"/>
		<updated>2007-08-18T03:56:52Z</updated>

		<summary type="html">&lt;p&gt;Erben: /* Linkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Komentorivi on jo yksinään [[Komentorivin perusteet|monipuolinen]] työkalu, mutta skriptien avulla on mahdollista toteuttaa huomattavasti monipuolisempia prosesseja pienellä vaivalla. Tässä oppaassa käsitellään skriptien kirjoittamista [[bash]]-[[komentotulkki|komentotulkille]].&lt;br /&gt;
&lt;br /&gt;
== Alkuun ==&lt;br /&gt;
Skripti aloitetaan rivillä&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
Joka kertoo, että skripti suoritetaan käyttäen bashia riippumatta siitä, mitä komentotulkkia käyttäjä käyttää ajaessaan skriptin. Huomaa, että vaikka rivi alkaa #-merkillä, se ei ole kommentti. Muualla skriptissä #:llä alkavat rivit ovat kommentteja, eikä niitä huomioida.&lt;br /&gt;
&lt;br /&gt;
Skriptejä ei kuitenkaan ole pakko kirjoittaa erilliseen tiedostoon, vaan ne voi kirjoittaa myös suoraan komentoriville. Tällöin eri komentojen väliin laitetaan erottimeksi puolipiste (;).&lt;br /&gt;
&lt;br /&gt;
=== Ensimmäinen skripti ===&lt;br /&gt;
Tehdään aluksi yksinkertainen skripti, joka esittelee muutamia perustoimintoja:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;Hei, `whoami`, mitä kuuluu&amp;quot;&lt;br /&gt;
 echo &amp;quot;Olet hakemistossa $PWD, tiedostolistaus:&amp;quot;&lt;br /&gt;
 ls&lt;br /&gt;
Kuten huomaat, skripteissä käytetään tavallisia komentorivikomentoja, jotka sitten suoritetaan järjestyksessä. Toisaalta kuten myöhemmin huomaamme, skriptit tarjoavat paljon enemmän mahdollisuuksia kuin pelkkä komentojen näpyttely konsoliin.&lt;br /&gt;
&lt;br /&gt;
Tallenna skripti vaikka nimellä &amp;lt;tt&amp;gt;eka.sh&amp;lt;/tt&amp;gt; (sh-päätettä käytetään yleensä skriptien kanssa), anna sille [[chmod|suoritusoikeudet]] ja aja skripti, jolloin tulostus on suunnilleen seuraavanlainen:&lt;br /&gt;
 Hei, käyttäjä, mitä kuuluu&lt;br /&gt;
 Olet hakemistossa /home/kayttaja/ohjelmointi/skriptit, tiedostolistaus:&lt;br /&gt;
 eka.sh&lt;br /&gt;
Esimerkistä nähdään heti muutama perusasia. Ensinnäkin toisella rivillä käytetään ohjelmaa [[whoami]], joka tulostaa käyttäjänimen. Kun ohjelma on `-merkkein välissä, kyseiseen kohtaan &amp;quot;kopioidaan&amp;quot; ajetun ohjelman tuloste.&lt;br /&gt;
&lt;br /&gt;
Toisella rivillä käytetään muuttujaa. Muuttujien edessä on dollarimerkki ($), ja niitä voidaan tunkea vaikka merkkijonojen (jotka erotetaan lainausmerkillä) sisälle. Muuttujia käsitellään tarkemmin myöhemmin. Esimerkissä käyttämämme muuttuja &amp;lt;tt&amp;gt;$PWD&amp;lt;/tt&amp;gt; on [[ympäristömuuttuja]], jonka arvona on aina se hakemisto, jossa käyttäjä on. Voit kokeilla tätä esimerkiksi kirjoittamalla komentoriville komennon &amp;lt;tt&amp;gt;echo $PWD&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Viimeisellä rivillä ajetaan normaalisti komentoriviohjelma [[ls]]. Voit myös kokeilla korvata tämän rivin rivillä&lt;br /&gt;
 echo &amp;quot;`ls`&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Skrpti voitaisiin myös kirjoittaa suoraan komentoriville muodossa&lt;br /&gt;
 echo &amp;quot;Hei, `whoami`, mitä kuuluu&amp;quot;; echo &amp;quot;Olet hakemistossa $PWD, tiedostolistaus:&amp;quot;; ls;&lt;br /&gt;
&lt;br /&gt;
== Muuttujat ==&lt;br /&gt;
Muuttujat määritellään syntaksilla&lt;br /&gt;
 nimi=arvo&lt;br /&gt;
ja niihin viitataan syntaksilla&lt;br /&gt;
 $nimi&lt;br /&gt;
Ensimmäisen skriptimme tapauksessa käytimme jo ympäristömuuttujaa $PWD echo:n kanssa. Tehdäänpä samantyyppinen skripti nyt käyttäen itse määrittelemäämme muuttujaa:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 HEI=&amp;quot;Hei, `whoami`, mitä kuuluu?&amp;quot;&lt;br /&gt;
 echo $HEI&lt;br /&gt;
Kuten huomaat, kun muuttujaan sijoitetaan arvo, voidaan käyttää samoja &amp;quot;kikkoja&amp;quot; kuin muuallakin skriptissä, esimerkiksi tässä tapauksessa sijoitamme muuttujaan merkkijonon jonka sisällä on ohjelman &amp;lt;tt&amp;gt;whoami&amp;lt;/tt&amp;gt; tuloste.&lt;br /&gt;
&lt;br /&gt;
Huomaa, että yhtäsuuruusmerkin on oltava kiinni muuttujan nimessä ja arvossa, eli seuraavat muodot eivät käy:&lt;br /&gt;
 MUUTTUJA = &amp;quot;terve vaan&amp;quot;&lt;br /&gt;
 MUUTTUJA= &amp;quot;moi&amp;quot;&lt;br /&gt;
 MUUTTUJA =&amp;quot;moi&amp;quot;&lt;br /&gt;
Lisäksi muuttujaan sijoitettavan arvon on oltava lainausmerkkien sisällä, jos siihen kuuluu välilyönti. Yksittäisen sanan tai numeron voi sijoittaa ilman lainausmerkkejä:&lt;br /&gt;
 numero=43&lt;br /&gt;
&lt;br /&gt;
== Ehtolauseet ==&lt;br /&gt;
Ehdollisia rakenteita luodaan bashille if, then, else ja fi -avainsanoilla. Rakenteen syntaksi on seuraava:&lt;br /&gt;
 if [ehto]&lt;br /&gt;
 then&lt;br /&gt;
    lauseita&lt;br /&gt;
 elif [toinen ehto]&lt;br /&gt;
    lauseita&lt;br /&gt;
 else&lt;br /&gt;
    muita lauseita&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Ehdot merkitään hakasulkeiden sisään esimerkiksi seuraavalla tavalla&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 if [ $PWD = &amp;quot;/&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
         echo &amp;quot;Tämä skripti suoritetaan juurihakemistossa&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
         echo &amp;quot;Skripti suoritetaan hakemistossa $PWD&amp;quot;;&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Tässä käytetään vertailuoperaattoria =, joka on tosi, jos merkkijonot ovat samat. Muita vertailuoperaattoreita ovat&lt;br /&gt;
{|&amp;lt;!--taulukon määrite--&amp;gt; {{siistitaulukko}}&lt;br /&gt;
|-&lt;br /&gt;
! Operaattori&lt;br /&gt;
! Kuvaus&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- taulukko alkaa tästä --&amp;gt;&lt;br /&gt;
| -n || Pituus ei ole 0&lt;br /&gt;
|- &lt;br /&gt;
| -z || Pituus on 0&lt;br /&gt;
|- &lt;br /&gt;
| -d || Hakemisto on olemassa&lt;br /&gt;
|- &lt;br /&gt;
| -f || Tiedosto on olemassa&lt;br /&gt;
|- &lt;br /&gt;
| -eq || Kokonaisluvut ovat yhtäsuuret&lt;br /&gt;
|- &lt;br /&gt;
| -neq || Kokonaisluvut eivät ole yhtä suuret&lt;br /&gt;
|- &lt;br /&gt;
| = || Merkkijonot ovat samat&lt;br /&gt;
|- &lt;br /&gt;
| != || Merkkijonot eivät ole samat&lt;br /&gt;
|- &lt;br /&gt;
| -lt || Kokonaisluku on pienempi kuin toinen&lt;br /&gt;
|- &lt;br /&gt;
| -gt || Kokonaisluku on suurempi kuin toinen&lt;br /&gt;
|- &lt;br /&gt;
| -le || Kokonaisluku on pienempi tai yhtäsuuri kuin toinen&lt;br /&gt;
|- &lt;br /&gt;
| -ge || Kokonaisluku on suurempi tai yhtäsuuri kuin toinen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Esimerkiksi seuraavat ehdot ovat tosia&lt;br /&gt;
 [ 2 -lt 5 ]&lt;br /&gt;
 [ &amp;quot;moi&amp;quot; != &amp;quot;linux&amp;quot; ]&lt;br /&gt;
 [ 54 -ge 53 ]&lt;br /&gt;
 [ -f &amp;quot;/etc/fstab&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
== Silmukat ==&lt;br /&gt;
=== For ===&lt;br /&gt;
For-silmukka on näppärä monessa tapauksessa, tässä esimerkkinä hakemiston kaikkien tiedostojen läpikäynti.&lt;br /&gt;
&lt;br /&gt;
 for muuttuja in `ls` &lt;br /&gt;
 do&lt;br /&gt;
   echo $muuttuja&lt;br /&gt;
 done&lt;br /&gt;
Silmukassa suoritettavat rivit laitetaan siis sanojen &amp;lt;tt&amp;gt;do&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;done&amp;lt;/tt&amp;gt; väliin. Laskurimuuttujaan sijoitetaan vuorotellen &amp;lt;tt&amp;gt;in&amp;lt;/tt&amp;gt;:n jälkeen olevat sanat, esimerkiksi tässä tapauksessa konennon [[ls]] tuloste (eli hakemistossa olevien tiedostojen nimet). Ohjelman tuloste voidaan merkitä myös seuraavasti: &amp;lt;tt&amp;gt;$(komento)&amp;lt;/tt&amp;gt;. Jos silmukalla on käytävä läpi kaikki kokonaisluvut tietyltä väliltä, voi käyttää komentoa [[seq]], joka tulostaa kokonaisluvut väliltä 1-annettu parametri. Esimerkiksi&lt;br /&gt;
 echo &amp;quot;Lasketaan kymmeneen:&amp;quot;&lt;br /&gt;
 for luku in $(seq 10)&lt;br /&gt;
 do&lt;br /&gt;
  echo $luku&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Läpi käytävä joukko voidaan merkitä myös syntaksilla &amp;lt;tt&amp;gt;{alku..loppu}&amp;lt;/tt&amp;gt;. Jos esimerkiksi halutaan käydä läpi kaikki merkit c-o, kokeile vaikka kirjoittaa&lt;br /&gt;
 for muuttuja in {c..o}; { echo -n &amp;quot;$muuttuja &amp;quot;; sleep 1;}&lt;br /&gt;
=== While ===&lt;br /&gt;
&lt;br /&gt;
== Funktiot ==&lt;br /&gt;
Kuten &amp;quot;oikeissa&amp;quot; ohjelmointikielissä, myös bash-skripteissä on mahdollista käyttää funktioita seuraavalla tavalla&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
function Käyttis {&lt;br /&gt;
        os=&amp;quot;Linux&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
os=&amp;quot;Windows&amp;quot;&lt;br /&gt;
#Kutsutaan funktiota&lt;br /&gt;
Funktio&lt;br /&gt;
echo $os&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tulostaisi &amp;quot;Linux&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Funktio määritellään siis syntaksilla&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function Funktio {&lt;br /&gt;
 #koodi&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jos halutaan skriptin toimivan myös [[Sh]]-komentotulkkia käytettäessä, funktion kanssa on käytettävä syntaksia&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Funktio() { ... }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jos muuttujia ei funktiossa erikseen määritellä yksityisiksi, ne ovat julkisia. Eli kun esimerkkiskriptissämme muutimme muuttujan $os arvoa funktiossa, tämä muutos näkyi myös funktion ulkopuolella. Muuttuja voidaan määritellä yksityiseksi avainsanalla &amp;lt;tt&amp;gt;local&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
function Käyttis {&lt;br /&gt;
        local os        # os paikallinen muuttuja&lt;br /&gt;
        os=&amp;quot;Gentoo&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
os=&amp;quot;Debian&amp;quot;&lt;br /&gt;
#Kutsutaan funktiota&lt;br /&gt;
Käyttis&lt;br /&gt;
echo $os&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tulostaisi &amp;quot;Debian&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Vinkkejä ==&lt;br /&gt;
=== Joukot ===&lt;br /&gt;
Käytimme jo aiemmin merkintätapaa &amp;lt;tt&amp;gt;{1..4}&amp;lt;/tt&amp;gt; merkitsemään joukkoa, johon kuuluu kaikki välin merkit (esimerkissä 1,2,3,4). Tämä ominaisuus on kuitenkin monipuolisempi. Esimerkiksi jos haluamme luoda Matille, Martalle ja Mikolle työ- ja kotihakemistot, voisimme kirjoittaa lyhyesti näin&lt;br /&gt;
 mkdir {ma{ti,rta},jorma}n_{työ,koti}hakemisto&lt;br /&gt;
Jolloin luotaisiin hakemistot matin_työhakemisto, matin_kotihakemisto, martan_työhakemisto, martan_kotihakemisto, jorman_työhakemisto ja jorman_kotihakemisto.&lt;br /&gt;
&lt;br /&gt;
Puretaanpa hieman tuota komentoa. &amp;lt;tt&amp;gt;ma{ti,rta}&amp;lt;/tt&amp;gt; tuottaa sanat mati ja marta. Kun joukon merkinnän ulkopuolella on n, liitetään jokaisen joukon sisällä olevan alkion perään n, jolloin alaviivaa edellä oleva osuus tuottaa sanat matin, martan ja jorman. Jälkimmäinen osuus toimii samalla tavalla, sanojen työ ja koti perään liitetään sana hakemisto. Näin saamme lyhyellä komennolla aikaan paljon.&lt;br /&gt;
&lt;br /&gt;
Tässä huomataan myös, että komentoja voi käyttää aivan normaalien [[Komentorivikomennot|komentoriviohjelmien]] kanssa, sillä bash käsittelee syötteen, ja suorittaa skriptit antaen ohjelmalle syötteenä skriptin tulosteen.&lt;br /&gt;
&lt;br /&gt;
=== Hyödyllisiä ohjelmia ===&lt;br /&gt;
Unixin filosofian mukaisesti Linuxissa on lukuisia ohjelmia, jotka hoitavat jonkin yksittäisen tehtävän ja tekevät sen hyvin. Näitä pikkuohjelmia käytetäänkin usein skripteissä hoitamaan erilaisia tehtäviä.&lt;br /&gt;
&lt;br /&gt;
Kaikista Unix-järjestelmistä löytyviä ohjelmia on listattu luokkaan [[:Luokka:Coreutils|Coreutils]]. Näit ohjelmia kannattaa selailla. Komentoriviohjelmia on listattu käyttötarkoituksen mukaan myös artikkelissa [[komentorivikomennot]]&lt;br /&gt;
&lt;br /&gt;
== Katso myös ==&lt;br /&gt;
*[[Komentorivin perusteet]]&lt;br /&gt;
*[[Komentorivivinkkejä]]&lt;br /&gt;
&lt;br /&gt;
== Linkkejä ==&lt;br /&gt;
*[http://tldp.org/LDP/abs/html/ Advanced Bash-Scripting Guide] - laaja englanninkielinen opas bash-skriptaukseen&lt;br /&gt;
*[http://www.panix.com/~elflord/unix/bash-tute.html Pikaopas bash-skriptaukseen] (englanniksi)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentorivi]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;/div&gt;</summary>
		<author><name>Erben</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Bash&amp;diff=16341</id>
		<title>Bash</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Bash&amp;diff=16341"/>
		<updated>2007-08-18T03:55:15Z</updated>

		<summary type="html">&lt;p&gt;Erben: /* Linkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Bash&#039;&#039;&#039; eli &#039;&#039;Bourne again shell&#039;&#039; on useimpien Linux-jakeluiden [[komentotulkki|oletuskomentotulkki]].&lt;br /&gt;
Muita komentotulkkeja ovat mm. [[sh]], [[csh]] ja [[zsh]].&lt;br /&gt;
&lt;br /&gt;
Bashin komentokehotteen ulkoasua on mahdollista muokata hyvinkin monipuolisesti, katso ohjeet artikkelista [[Bashin ulkoasu]].&lt;br /&gt;
&lt;br /&gt;
== Katso myös ==&lt;br /&gt;
* [[Komentorivin perusteet]]&lt;br /&gt;
* [[Bash-skriptaus]]&lt;br /&gt;
&lt;br /&gt;
==Linkkejä==&lt;br /&gt;
* [http://www.gnu.org/software/bash/ Bashin virallinen kotisivu]&lt;br /&gt;
[[Luokka:Komentotulkit]]&lt;br /&gt;
* [http://www.linuxien.com/docs/bash/shellscript.html Introduction To Bash Shell Scripting]&lt;br /&gt;
[[Luokka:Komentotulkit]]&lt;/div&gt;</summary>
		<author><name>Erben</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Linux.fi:Raja-antura&amp;diff=16340</id>
		<title>Linux.fi:Raja-antura</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Linux.fi:Raja-antura&amp;diff=16340"/>
		<updated>2007-08-18T00:36:52Z</updated>

		<summary type="html">&lt;p&gt;Erben: /* Tuodut artikkelit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Raja-antura lopetti toimintansa, ja sen artikkelien käyttöön wikissä [[Linux.fi:Lisenssi|CC-BY:n]] alaisena on suurelta osin saatu lupa. Artikkelit löytyvät toistaiseksi [http://www.raja-antura.org/index.php?option=com_content&amp;amp;task=section&amp;amp;id=2&amp;amp;Itemid=10 täältä]. Kaikki artikkelit, joiden kirjoittaja on tuxu, eero tai pq ovat käytettävissä, ja niitä saa tuoda wikiin.&lt;br /&gt;
&lt;br /&gt;
== Tuodut artikkelit ==&lt;br /&gt;
Raja-anturasta on tuotu seuraavat artikkelit (wikitettynä ja muokattuna):&lt;br /&gt;
*[[Bashin ulkoasu]]&lt;br /&gt;
*[[Sarjaterminaali]]&lt;br /&gt;
*[[Ntp]]&lt;br /&gt;
*[[GNU/Linuxin käynnistysprosessi]]&lt;br /&gt;
&lt;br /&gt;
Lisäksi seuraavia artikkeleita on täydennetty Raja-anturan sisällöllä:&lt;br /&gt;
*[[Man]]&lt;br /&gt;
&lt;br /&gt;
== Keskustelualue ==&lt;br /&gt;
Linux.fi:n alaisuuteen perustettiin keskustelualue korvaamaan edesmenneen Raja-anturan melko suosittua foorumia. [http://linux.fi/foorumi Keskustelualueelle].&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Wiki]]&lt;/div&gt;</summary>
		<author><name>Erben</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=K%C3%A4ynnistysprosessi&amp;diff=16339</id>
		<title>Käynnistysprosessi</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=K%C3%A4ynnistysprosessi&amp;diff=16339"/>
		<updated>2007-08-18T00:33:50Z</updated>

		<summary type="html">&lt;p&gt;Erben: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GNU/Linuxin käynnistysprosessi selitettynä==&lt;br /&gt;
&lt;br /&gt;
Yleensä käyttäjän ei tarvitse huolehtia siitä, mitä tapahtuu sillä välin kun tietokoneeseen kytketään virta ja ruudulle pamahtaa [[graafinen ympäristö (X)|graafinen ympäristö]], jossa pyydetään kauniisti kirjautumaan sisään järjestelmään. Kuitenkin jossain vaiheessa tulee tavankin käyttäjälle kytö säätää käynnistysaikaa tai vaikka käynnistyviä palveluita, tällöin olisi hyvä tuntea kuinka järjestelmä itseasiassa käynnistyykään. Tässä artikkelissa pyritään selvittämään sitä väliä mikä on virtanapin ja järjestelmään kirjautumisen välissä. Ikävä kyllä artikkeli ei voi tarjota kaikille jakelupaketeille “suoraa lähestymistä”, mutta kirjoittaessa on pyritty tästä tekemään mahdollisimman jakelupakettiriippumaton.&lt;br /&gt;
Virtanapista eteenpäin&lt;br /&gt;
Niin, mitkä oikeastaan ovat ensimmäiset vaiheet? Tämä on yksi niitä elämän mysteerejä, eikä oikeastaan millään tavalla vielä liity käyttöjärjestelmään. Yleensä tietokoneeseen virtojen tultua, tietokone lataa [[BIOS]]:n, joka on pieni ohjelma poltettuna erillisille piisirulle (nykyään sähköisesti purettavia ja uudelleenohjelmoitavia muistipiirejä). Tämä pieni ohjelma, joka pyörii pienellä piisirulla tekee ensimmäisenä käynnistyttyään [[POST-testi (POST-testi)|POST-testi]]n (Power-On-Self-Test), joka tarkastaa että tiettyjä laitteita (kuten muistit, emolevy, prosessori...) on paikalla, ja että ne ovat toimintakunnossa. Sen jälkeen BIOS alustaa joitakin järjestelmäkomponentteja (kiintolevyt jne.), jakaa niille keskeytyksiä sekä tulostaa niistä taulukon ruudulle. Kaiken muun tehtävän seassa voitaisiin sanoa, että BIOS:lla on päätehtävä, jonka tarkoitus on etsiä käynnistettävän median aivan alkupäästä ohjelma, joka kykenee lataamaan käyttöjärjestelmän. Voitaisiinkin sanoa, että BIOS ei ole olemassakaan mitään muuta varten kuin sitä, että se osaa ladata ohjelman nimeltä käynnistyslatain. Käynnistyslatain sijaitsee yleensä [[Master Boot  Record]]illa, joka sijaitsee yleensä boottaavan median alkupäässä. Kiintolevyistä puhuttaessa alkupää on ensimmäinen sektori, ensimmäinen sylinteri sekä ensimmäinen lukupää. Menikö hieman ohi? Ei hätää, emme ole vielä päässeet käyttöjärjestelmän käynnistämiseen :)&lt;br /&gt;
&lt;br /&gt;
[[Käynnistyslatain (käynnistyslatain)|Käynnistyslatain]] on siis ohjelma, joka kykenee lataamaan käyttöjärjestelmän. Tämä onkin oikeastaan ensimmäinen vaihe, jossa pystytään puhumaan [[GNU/Linux]]in käynnistysprosessista. Käynnistyslatain kuulostaa varmaan tutulta ja monelle se tulee vielä tutummaksi kun mainitsen, että kaksi suosituinta käynnistyslatainta ovat [[GRUB (grub)|GRUB]] (Grand Unified Bootloader) sekä [[LILO (lilo)|LILO]] (Linux Loader). Käynnistyslataimen tehtävä on tarjota tietokoneelle keino päästä käynnistämään käyttöjärjestelmän ydintä, eli kerneliä. Miksi BIOS ei voi suoraan bootata kerneliä, niinhän windowskin tekee? Itseasiassa näin ei windowskaan tee. Vaikka ruudulle ei tulekaan mitään tekstiä, joka kehottaa valitsemaan käyttöjärjestelmää, vaatii myöskin Windows käynnistyslataimen.&lt;br /&gt;
&lt;br /&gt;
No takaisin asiaan. Nyt tiedämme, että BIOS lataa käynnistyslataimen ja käynnistyslataimen tehtävä on ladata käyttöjärjestelmän ydin. Mitä eroa sitten LILO:lla ja GRUB:lla on? Vaikka LILO ja GRUB vaikuttavat hyvinkin samanlaisilta ohjelmilta, ne molemmat tarjoavat käynnistysvalikon, mistä saa valittua ladattavan käyttöjärjestelmän ja ne molemmat myös lataavat sen käyttöjärjestelmän. Ero piileekin lähinnä siinä, kuinka nämä käynnistyslataimet sen tekevät.&lt;br /&gt;
&lt;br /&gt;
==LILOn lähestymistapa==&lt;br /&gt;
&lt;br /&gt;
Voisi kuvitella, että kaikki tiedostot ovat boottisektorilla vain odottamassa lataamista. Näin ei kuitenkaan ole, sillä boottisektori on aivan liian pieni kernelille tai edes kokonaiselle LILO:lle. Tästä syystä LILO onkin käytännössä pilkottu eri &amp;quot;vaiheisiin&amp;quot;. Ensimmäisenä kun BIOS lataa käynnistyslataimen (tässä tilanteessa LILO:n), se lataa tosiasiassa vain pienen osan koodia, joka osaa käynnistää toisen vaiheen suoraan kiintolevyltä. Ensimmäisen vaiheen jälkeen LILO tulostaa ruudulle kirjaimen &amp;quot;L&amp;quot;. Kun toinen vaihe on ladattu, LILO tulostaa ruudulle&amp;quot;I&amp;quot;-kirjaimen ja käynnistää toisen vaiheen. Toisen vaiheen käynnistämisen jälkeen LILO tulostaa ruudulle &amp;quot;L&amp;quot;-kirjaimen ja yrittää lukea kiintolevyltä karttatiedoston, joka kertoo LILO:lle mm. että mitä käyttöjärjestelmiä levyllä on ja missä ne sijaitsevat. Jos tämän karttatiedoston lataaminen onnistuu, printtaa LILO ruudulle &amp;quot;O&amp;quot;-kirjaimen. Nämä tulostetut kirjaimet mahdollistavat myös LILO:n virhetilanteiden korjaamisen, ja ne ovat dokumentoitu varsin hyvin joten googlen pitäisi auttaa ongelmatilanteissa. Mutta ettemme karkaisi asiasta liikaa, niin LILOn ongelma on karttatiedoston tarve, jos jostain syystä levyn geometria muuttuu tai karttatiedosto on väärä tai viallinen, ei lilo osaa enää käynnistää kerneliä. Tämä on periaatteessa korjattavissa rescue-cd:llä, sillä LILO sisältää komennon nimeltä &amp;quot;lilo&amp;quot;, joka kirjoittaa oikeellisen karttatiedoston. Tämä aiheuttaa myös sen, että komento &amp;quot;lilo&amp;quot; tulee ajaa aina kun käännetään uusi kernel tai muutetaan LILO:n asetuksia. Tämän karttatiedoston tarpeen poistamiseen onkin kehitetty toinen käynnistyslatain nimeltään GRUB.&lt;br /&gt;
&lt;br /&gt;
==GRUB:n lähestymistapa==&lt;br /&gt;
&lt;br /&gt;
Aivan kuten LILO, myöskään GRUB ei pysty käynnistymään suoraan boottisektorilta, vaan sekin jakautuu eri vaiheisiin. Boottisektorille mahtuu itseasiassa vain yksi+reilu vaihetta, joten ensimmäisen vaiheen jälkeen GRUB siirtyy oikeastaan vaiheeseen 1,5. Vaiheessa 1,5 GRUB lataa tiedostojärjestelmän sille osiolle, millä toinen vaihe sijaitsee. Riippuen käytettävästä tiedostojärjestelmästä, ladataan aina eri tiedostojärjestelmälle eri 1,5 vaihe. Koska GRUB lataa tiedostojärjestelmän karttatiedoston sijaan, voi se myös siis bootata kernelin josta sille ei ole aiemmin konfiguraatiotiedostossa kerrottu. Vaiheessa 2 GRUB lataa käytännössä valikon sekä pienen komentokehotteen, jolla voidaan ladata kerneleitä jotka eivät valikoihin kuulu. Tämä poistaa myös tarpeen ajaa mitään erillistä karttatiedostoa luovaa ohjelmaa GRUB:n käynnistyslataimen konfiguroinnin jälkeen. Periaatteessa konfiguraatiotiedosto voi olla vaikka kuinka väärin, sillä se on aina muokattavissa käynnistyksen yhteydessä (ellei sitä salasanalla suojata ja salasana on hukassa).&lt;br /&gt;
&lt;br /&gt;
==Initrd==&lt;br /&gt;
Nykyiset GNU/Linux-jakelupaketit tarjoavat tuen hyvinkin monelle erityyppiselle laitteelle, toiset tarjoavat jopa mahdollisuuden täyteen toiminnallisuuteen pelkältä levykkeeltä boottaamisen avulla. Kernel alkaakin jo olemaan olennaisessa osassa tässä vaiheessa käynnistystä. Linuxin ydin (siis se kernel) on suunniteltu niin sanotusti modulaariseksi, eli eri tarpeisiin voidaan ladata eri moduleita aina tarpeen mukaan, eikä kaikki ole käännetty sisään yhteen tiedostoon. Tällä saadaan mukavasti itse kernelin kokoa pieneksi ja se osittain mahdollistaa jo levykkeeltä boottaamisen. Joissain tapauksissa kuitenkin modulaarisuus aiheuttaa ongelmia, hyvänä esimerkkinä toiminee tiedostojärjestelmä. Jos meidän pitää ladata tiedostojärjestelmän moduli, että pääsemme käsiksi levyosioon jossa tämä moduli sijaitsee, olemme luonnollisesti ongelmissa. Tätä varten GNU/Linuxin käynnistykseen onkin keksitty sellainen järjestelmä kuin initrd.&lt;br /&gt;
&lt;br /&gt;
[[Initrd]] (&amp;lt;i&amp;gt;Initial RAM Disk Image&amp;lt;/i&amp;gt;) on pieni &amp;quot;kuva&amp;quot; RAM-muistiin sijoitettavasta paketista, joka sisältää erinäisiä pakattuja ja bootin kannalta tarpeellisia moduleita (kuten SCSI-ohjaimia, verkkoboottausmoduleita yms.). Initrd ei ole aina tarpeellinen, kuten silloin jos on itsekäännetty kernel, jonka sisään on kaikki käynnistyksen kannalta tarpeelliset ajurit käännetty eikä useampaa laitetta tarvitse bootin yhteydessä tukea. Kuitenkin monesti kun on kyseessä esimerkiksi jakelupaketti, jonka pitäisi pyörähtää useilla tuhansilla (ellei jopa miljoonilla) erilaisilla laitekokoonpanoilla, on initrd lähes välttämätön, ettei itse kernel paisu mahdottoman suureksi. Käytännössä initrd on siis pakattu juuritiedostojärjestelmä jonka sisään on pakattu erilaiset käynnistettävät modulit, tämä mahdollistaa jopa 8Mt:n jakelupaketin pakkaamisen yhdelle yksittäiselle levykkeelle.&lt;br /&gt;
Kernelin lataaminen&lt;br /&gt;
Pieni välikatsaus tässä vaiheessa lienee paikallaan. Tähän mennessä siis olemme painaneet virtanappia, BIOS on ladannut käynnistyslataimen, joka on mahdollisesti ladannut initrd:n fyysiseen muistiin ja kohta kernel jo latautuukin ja suorittaa koodia. Tässä vaiheessa, riippumatta siitä että onko initrd:tä käytetty vai ei, voimme valmistautua itse ytimen latautumiseen.&lt;br /&gt;
&lt;br /&gt;
Ensimmäisenä kernel ladataan muistiin bootloaderin toimesta ja kontrolli siirtyy bootloaderilta kernelille. Kernel sisältää kernel-imagen purkuun tarvittavat järjestelmät ja se puretaan. Purkamisen jälkeen järjestelmälaitteet alustetaan, myöskin ne jotka BIOS on aiemmin alustanut. Tämä mahdollistaa BIOS-riippumattoman järjestelmän käynnistämisen. Nyt purettu kernel ottaa koneen kunnolla valtaansa ja rupeaa alustamaan keskeytyksiä, schedulereita, konsoleita sekä erinäisiä rautapuolen laitteita. Kun alustukset on tehty, kutsutaan ohjelmaa nimeltä init. Init on ohjelma, joka määrää linuxin käynnistysjärjestyksen sekä sen, mitä käynnistetään. Init-järjestelmiä voi olla kahdenlaisia. Toinen on skriptityylinen Init, joka määrää kaiken yhden skriptitiedoston perusteella ja toinen (käytössä lähes poikkeuksetta nykyisissä jakelupaketeissa) on System V Init, joka lataa yhden tiedoston perusteella tarvittavat palvelut modulaarisesti. Sulautettujen järjestelmien tekijöille pieni vinkki: jos järjestelmään halutaan nopeutta, init:n ei tarvitse olla mitään muuta kuin esim. C-kielellä ohjelmoitu koodinpätkä joka hoitaa ko. Järjestelmässä tarvittavat käyttöönotot (esim. ramdiskin mounttaus jne).&lt;br /&gt;
System V Init&lt;br /&gt;
Init:n käynnistyttyä alkaakin järjestelmän muokkaaminenkin olemaan mahdollista ilman suurempaa työtä. Init toimii siten, että ensimmäisenä se lukee konfiguraation inittab-tiedostosta (yleensä /etc -hakemistossa). Tiedosto näyttää jotakuinkin tältä:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;# Oletusrunlevel&lt;br /&gt;
 id:3:initdefault:&lt;br /&gt;
 &lt;br /&gt;
 # Järjestelmän alustus, paikallisten levyjen mounttaus ym.&lt;br /&gt;
 si::sysinit:/sbin/rc sysinit&lt;br /&gt;
 &lt;br /&gt;
 # Myöhempi alustus, aloittaa runlevelit.&lt;br /&gt;
 rc::bootwait:/sbin/rc boot&lt;br /&gt;
 &lt;br /&gt;
 l0:0:wait:/sbin/rc shutdown&lt;br /&gt;
 l1:S1:wait:/sbin/rc single&lt;br /&gt;
 l2:2:wait:/sbin/rc nonetwork&lt;br /&gt;
 l3:3:wait:/sbin/rc default&lt;br /&gt;
 l4:4:wait:/sbin/rc default&lt;br /&gt;
 l5:5:wait:/sbin/rc default&lt;br /&gt;
 l6:6:wait:/sbin/rc reboot&lt;br /&gt;
 #z6:6:respawn:/sbin/sulogin&lt;br /&gt;
 &lt;br /&gt;
 # terminaalit&lt;br /&gt;
 c1:12345:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
 c2:12345:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
 c3:12345:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
 c4:12345:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
 c5:12345:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
 c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
 &lt;br /&gt;
 # Mitä tehdään, kun painetaan ctrl+alt+del.&lt;br /&gt;
 ca:12345:ctrlaltdel:/sbin/shutdown -r now&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inittab-tiedostossa tulee olla oletusrunlevel (näistä lisää myöhemmin), jolle bootataan GNU/Linuxin käynnistyessä, terminaalit joita käytetään (virtuaalikonsolit/virtuaaliterminaalit, yleensä kuusi kappaletta), sekä skriptit joita pitää ajaa aina tietyn runlevelin yhteydessä. Inittab mahdollistaakin siis räätälöidyn käynnistysjärjestelyn tekemisen hyvinkin pienellä vaivalla. Monessa skriptissä on myös määritelty respawn-parametri, joka tarkoittaa prosessin uudelleenkäynnistämistä heti sen sammumisen jälkeen. Kuten esimerkiksi kun järjestelmästä kirjaudutaan ulos niin käynnistetään uusi sisäänkirjautumiskehote. Tiedostossa on myös määritelty se, mitä tehdään kun ctrl+alt+del -näppäinyhdistelmää painetaan. Inittabin rakenne sekä tiedostojen sijainnit vaihtelevat hyvinkin paljon distrokohtaisesti, joten niiden säätämistä emme tässä vaiheessa sen enempää käsittele. Esimerkiksi RedHat:lla sekä Debianilla on jokaiselle runlevelille määrätty oma hakemisto, jossa on symbolisia linkkejä ajettaviin ohjelmiin ja ne on numeroitu erikoisennäköisellä koodilla käynnistysjärjestyksen takaamiseksi. Toiset [[UNIX]]-variantit käyttävät pelkkiä tiedostoja joissa määrätään mitä järjestelmiä ladataan ja mitä sammutetaan missäkin vaiheessa. Yleispätevänä ohjelmana KDE:n käyttäjille ksysv tarjoaa kohtuullisen hyvät mahdollisuudet muokata eri runleveleitä jakelupakettiriippumattomasti.&lt;br /&gt;
&lt;br /&gt;
====Runleveleistä====&lt;br /&gt;
&lt;br /&gt;
Mitä nämä runlevelit ovat? Ne ovat käytännössä erilaisia käynnistysprofiileja, joita voidaan muokata tarpeen mukaan. Runleveleitä on yleensä GNU/Linux järjestelmässä kahdeksan kappaletta, joista kolme on varattu erikoiskäyttöön. Vaikka runleveleitä ei ole millään tavalla standardoitu, niin ne menevät yleensä seuraavasti (tarkempaa tietoa haluavat kääntykää jakelupaketin valmistajan dokumentaatioon):&lt;br /&gt;
&lt;br /&gt;
 S	Varattu&lt;br /&gt;
 0	Varattu, järjestelmän sammutus&lt;br /&gt;
 1	Yleensä yhden käyttäjän tila (Single user mode)&lt;br /&gt;
 2	Yleensä Ei-graafinen monen käyttäjän tila&lt;br /&gt;
 3	Ensimmäinen täysin toimiva tila&lt;br /&gt;
 4	Toinen täysin toimiva tila&lt;br /&gt;
 5	Kolmas täysin toimiva tilaa&lt;br /&gt;
 6	Varattu, järjestelmän uudelleenkäynnistys&lt;br /&gt;
&lt;br /&gt;
Yleensä oletusrunlevel, eli runlevel jolle käynnistetään on joko 3. tai 5. Joissain tapauksissa käytetään myös 2. runleveliä. Runlevel 1 on niin sanottu Single User Mode, jota ennen ajetaan S-runlevelin skriptejä. Runleveliä S ei ole oikeastaan tarkoitettukaan ajettavaksi suoraan vaan ennemminkin alustamaan runlevelille 1 siirtyminen.&lt;br /&gt;
&lt;br /&gt;
Nyt kursitaankin sitten kaikki tietomme kokoon, ettei harhauduta reitiltä. BIOS lataa käynnistyslataimen, käynnistyslatain kernelin ja kernel käynnistää init:n. Kun [[init]] käynnistyy, se tekee ensimmäisen init-skriptin vaatimat tehtävät, kuten mounttaa /etc/[[fstab]]-tiedostossa luetellut osiot, asettaa järjestelmän kellon, käynnistää satunnaislukugeneraattorin jne. Tämän jälkeen init lukee konfiguraatiotiedostosta oletusrunlevelin numeron ja hyppää suorittamaan oletusrunlevelin käynnistysskriptiä. Nyt otamme mielikuvituksen käyttöön ja kuvitellaan, että runlevelit olisivat hakemistoja, joten kun init lukee oletusrunlevelin 5, se käynnistää kaikki runlevelin 5 hakemistossa olevat skriptit listatussa järjestyksessä. Jos oletusrunlevel olisi 2, init siis käynnistäisi runlevelin 2 hakemiston sisällön. Käytännössä asia ei aivan näin toimi, mutta periaate räätälöidyistä käynnistysprofiileista tullee selväksi.&lt;br /&gt;
&lt;br /&gt;
====Pikkuisen init-skripteistä====&lt;br /&gt;
&lt;br /&gt;
Ne pienet ohjelmat, joita käynnistetään eri runleveleillä sijaitsevat usein hakemistossa /etc/init.d, josta ne sitten on mahdollisesti linkattu eri runlevelien yhteyteen käynnistettäväksi bootin aikana. Init-skriptit ovat pieniä [[shell]]-ohjelmia, joilla voidaan sammuttaa, käynnistää sekä uudelleenkäynnistää palveluita ja ohjelmia. Tästä mainitsen sen takia, koska joskus on erittäin käytännöllistä käynnistää tai sammuttaa järjestelmän käynnissäollessa ohjelmia näillä pienillä init-skripteillä. Käytännössä init-skriptit ottavat vastaan komentoja start (käynnistys), stop (sammutus) sekä restart (uudelleenkäynnistys). Kuvitellaan että haluamme esimerkiksi sammuttaa apache http-palvelimen ilman killall-komentoa. Tämä onnistuu niinkin helposti, kuin&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;/etc/init.d/apache stop&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pitää kuitenkin muistaa, että hakemisto ei välttämättä jokaisessa jakelupaketissa ole sama, mutta teoriassa näin voimme kätevästi hallita ohjelmia ihan järjestelmän käydessä.&lt;br /&gt;
&lt;br /&gt;
====Entä init:n jälkeen====&lt;br /&gt;
&lt;br /&gt;
Init käytännössä hoitaa lopun järjestelmän käynnistymisestä, kuten displaymanagerin lataamisen sekä mahdollisesti graafisen käyttöympäristön käynnistämisen. Sama init hoitaa myös järjestelmän sammuttamisen ja uudelleenkäynnistämisen. Init-järjestelmä on oikeastaan lähes koko UNIX-tyylisten käyttöjärjestelmien selkäranka kustomoitavan käynnistämisen kannalta ja siihen perehtyminen ei koskaan ole liian myöhäistä, ennemmin tai myöhemmin sitä tarvitaan.&lt;br /&gt;
&lt;br /&gt;
Tämä artikkeli alkaa olemaan lopuillaan ja sen tarkoitus oli tarjota GNU/Linux-käyttäjille kuva siitä, kuinka järjestelmä itseasiassa käynnistyy ja miten monimutkainen prosessi kokonaisuudessaan on. Paljon yksityiskohtia jäi vielä käsittelemättä, mutta niiden ollessa hyvinkin käyttöjärjestelmäkohtaisia, ei niitä voida käsitellä näinkin geneerisessä artikkelissa.&lt;br /&gt;
&lt;br /&gt;
Onnellisia hetkiä järjestelmän käynnistymisen kanssa :)&lt;br /&gt;
&lt;br /&gt;
Artikkelin kirjoittaja ei ota vastuuta artikkelin aiheuttamista päähänpistoksista muokata järjestelmä hajalle. Syvempi perehtyminen aiheeseen on erittäin suositeltavaa ennen init-skriptien tai bios-piirien vaihtoa omatekemiin.&lt;/div&gt;</summary>
		<author><name>Erben</name></author>
	</entry>
</feed>