Ero sivun ”Käynnistysprosessi” versioiden välillä
Siirry navigaatioon
Siirry hakuun
GRUB Hurdia varten; /linuxrc, pivot_root
Ei muokkausyhteenvetoa |
LP (keskustelu | muokkaukset) (GRUB Hurdia varten; /linuxrc, pivot_root) |
||
Rivi 13: | Rivi 13: | ||
Voisi kuvitella, että kaikki tiedostot ovat käynnistyssektorilla vain odottamassa lataamista. Näin ei kuitenkaan ole, sillä käynnistyssektori on aivan liian pieni ytimelle tai edes kokonaiselle [[LILO]]lle. Tästä syystä LILO onkin käytännössä pilkottu eri "vaiheisiin". Ensimmäisenä kun BIOS lataa käynnistyslataimen (tässä tilanteessa LILOn), se lataa tosiasiassa vain pienen osan koodia, joka osaa käynnistää toisen vaiheen suoraan kiintolevyltä. Ensimmäisen vaiheen jälkeen LILO tulostaa ruudulle kirjaimen L. Kun toinen vaihe on ladattu, LILO tulostaa ruudulle I-kirjaimen ja käynnistää toisen vaiheen. Toisen vaiheen käynnistämisen jälkeen LILO tulostaa ruudulle L-kirjaimen ja yrittää lukea kiintolevyltä karttatiedoston, joka kertoo LILOlle mm. mitä käyttöjärjestelmiä levyllä on ja missä ne sijaitsevat. Jos tämän karttatiedoston lataaminen onnistuu, printtaa LILO ruudulle O-kirjaimen. Nämä tulostetut kirjaimet mahdollistavat myös LILO:n virhetilanteiden korjaamisen, ja ne ovat dokumentoitu varsin hyvin, joten hakukoneen pitäisi auttaa ongelmatilanteissa. | Voisi kuvitella, että kaikki tiedostot ovat käynnistyssektorilla vain odottamassa lataamista. Näin ei kuitenkaan ole, sillä käynnistyssektori on aivan liian pieni ytimelle tai edes kokonaiselle [[LILO]]lle. Tästä syystä LILO onkin käytännössä pilkottu eri "vaiheisiin". Ensimmäisenä kun BIOS lataa käynnistyslataimen (tässä tilanteessa LILOn), se lataa tosiasiassa vain pienen osan koodia, joka osaa käynnistää toisen vaiheen suoraan kiintolevyltä. Ensimmäisen vaiheen jälkeen LILO tulostaa ruudulle kirjaimen L. Kun toinen vaihe on ladattu, LILO tulostaa ruudulle I-kirjaimen ja käynnistää toisen vaiheen. Toisen vaiheen käynnistämisen jälkeen LILO tulostaa ruudulle L-kirjaimen ja yrittää lukea kiintolevyltä karttatiedoston, joka kertoo LILOlle mm. mitä käyttöjärjestelmiä levyllä on ja missä ne sijaitsevat. Jos tämän karttatiedoston lataaminen onnistuu, printtaa LILO ruudulle O-kirjaimen. Nämä tulostetut kirjaimet mahdollistavat myös LILO:n virhetilanteiden korjaamisen, ja ne ovat dokumentoitu varsin hyvin, joten hakukoneen pitäisi auttaa ongelmatilanteissa. | ||
LILOn suurin ongelma on karttatiedoston tarve. Eli jos jostain syystä levyn geometria muuttuu tai karttatiedosto on väärä tai viallinen, ei LILO osaa enää käynnistää ydintä. Tämä on periaatteessa korjattavissa rescue-cd:llä, sillä LILO sisältää komennon nimeltä "lilo", joka kirjoittaa oikeellisen karttatiedoston. Tämä aiheuttaa myös sen, että komento "lilo" tulee ajaa aina kun [[kernelin kääntäminen|käännetään uusi ydin]] tai muutetaan LILO:n asetuksia. Tämän karttatiedoston tarpeen poistamiseen onkin kehitetty toinen käynnistyslatain nimeltään GRUB. | LILOn suurin ongelma on karttatiedoston tarve. Eli jos jostain syystä levyn geometria muuttuu tai karttatiedosto on väärä tai viallinen, ei LILO osaa enää käynnistää ydintä. Tämä on periaatteessa korjattavissa rescue-cd:llä, sillä LILO sisältää komennon nimeltä "lilo", joka kirjoittaa oikeellisen karttatiedoston. Tämä aiheuttaa myös sen, että komento "lilo" tulee ajaa aina kun [[kernelin kääntäminen|käännetään uusi ydin]] tai muutetaan LILO:n asetuksia. <!--Tämän karttatiedoston tarpeen poistamiseen onkin kehitetty toinen käynnistyslatain nimeltään GRUB. Syy GRUBin kehittämiseen oli, ettei LILO osaa käynnistää Hurdin kaltaista mikrokerneliarkitehtuuria--> | ||
===GRUBin lähestymistapa=== | ===GRUBin lähestymistapa=== | ||
Rivi 26: | Rivi 26: | ||
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 ydin jo latautuukin ja suorittaa koodia. Tässä vaiheessa, riippumatta siitä että onko initrd:tä käytetty vai ei, voimme valmistautua itse ytimen latautumiseen. | 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 ydin jo latautuukin ja suorittaa koodia. Tässä vaiheessa, riippumatta siitä että onko initrd:tä käytetty vai ei, voimme valmistautua itse ytimen latautumiseen. | ||
Ensimmäisenä käynnistyslatain lataa ytimen muistiin ja kontrolli siirtyy käynnistyslataimelta ytimelle. Ydin sisältää ytimen [[levykuva]]n purkuun tarvittavat järjestelmät ja kyseinen levykuva puretaan. Purkamisen jälkeen järjestelmälaitteet alustetaan - myös ne, jotka BIOS on jo aiemmin alustanut. Tämä mahdollistaa BIOS:ista riippumattoman järjestelmän käynnistämisen. Nyt purettu ydin ottaa koneen kunnolla valtaansa ja rupeaa alustamaan keskeytyksiä, [[scheduler]]eita, konsoleita sekä erinäisiä rautapuolen laitteita. Kun alustukset on tehty, | Ensimmäisenä käynnistyslatain lataa ytimen muistiin ja kontrolli siirtyy käynnistyslataimelta ytimelle. Ydin sisältää ytimen [[levykuva]]n purkuun tarvittavat järjestelmät ja kyseinen levykuva puretaan. Purkamisen jälkeen järjestelmälaitteet alustetaan - myös ne, jotka BIOS on jo aiemmin alustanut. Tämä mahdollistaa BIOS:ista riippumattoman järjestelmän käynnistämisen. Nyt purettu ydin ottaa koneen kunnolla valtaansa ja rupeaa alustamaan keskeytyksiä, [[scheduler]]eita, konsoleita sekä erinäisiä rautapuolen laitteita. Kun alustukset on tehty ajetaan skripti tai ohjelma /linuxrc, jos sellainen on initrd:llä. Tämän jälkeen liitetään root-osio tiedostojärjestelmän juureksi initrd:n tilalle. Nyt valmistelut on tehty ja käynnistetään ohjelma /sbin/init (tai sen sijaan muu ohjelma, jos ytimen komentorivillä on init=/jokin/ohjelma). | ||
==Init== | ==Init== | ||
[[Init]] on ohjelma, joka määrää Linuxin käynnistysjärjestyksen sekä sen, mitä käynnistetään. Init-järjestelmiä on useammanlaisia. Yleisin on [[wikipedia:UNIX System V|System V]] -tyylinen init, jossa skripti lataa halutut palvelut omiin hakemistoihinsa sijoitettujen [[symbolinen linkki|symbolisten linkkien]] perusteella. Toinen yleinen on [[BSD]]-tyylinen init, jossa eri tiloja varten on omat skriptinsä ja käynnistettävät palvelut määritetään asetustiedostossa. Initin ei välttämättä kuitenkaan tarvitse pohjautua skripteihin, vaan esimerkiksi sulautetuissa järjestelmissä se on usein korvattu puhtaalla [[C]]-kielisellä ohjelmalla, joka huolehtii tarvittavien palvelujen käynnistyksestä. | [[Init]] on ohjelma, joka määrää Linuxin käynnistysjärjestyksen sekä sen, mitä käynnistetään. Init-järjestelmiä on useammanlaisia. Yleisin on [[wikipedia:UNIX System V|System V]] -tyylinen init, jossa skripti lataa halutut palvelut omiin hakemistoihinsa sijoitettujen [[symbolinen linkki|symbolisten linkkien]] perusteella. Toinen yleinen on [[BSD]]-tyylinen init, jossa eri tiloja varten on omat skriptinsä ja käynnistettävät palvelut määritetään asetustiedostossa. Initin ei välttämättä kuitenkaan tarvitse pohjautua skripteihin, vaan esimerkiksi sulautetuissa järjestelmissä se on usein korvattu puhtaalla [[C]]-kielisellä ohjelmalla, joka huolehtii tarvittavien palvelujen käynnistyksestä. | ||
===Ajotasot=== | ===Ajotasot=== |