Luku 3. Ydin

Sisällys
Yleistä ytimestä
Miten käännän ytimen?
Virheitä ytimen käännössä
Ytimen Laitetuki
Miten Debianissa määritellä ytimeen ladattavat modulit?
Miksi minulla ei ole yhtään muistia vapaana?

Yleistä ytimestä

Mitä ovat ytimen ihmeelliset versionumerot?

Versionumerot ovat muotoa r.x.y. Kun x on parillinen numero, on kyseessä vakaa eli tuotantoversio. Pariton luku tarkoittaa kehitysversiota, jonka toiminnasta ei ole mitään takuuta. y:n muuttuminen tarkoittaa että muutos on ollut pieni, esim. löydettyjen virheiden korjauksia tai jotain lisäyksiä toimintoihin.

Varoitus

Älä missään nimessä asenna ytimen kehitysversiota (esim. 2.5-sarjaa) jollet tiedä mitä olet tekemässä! Eräät kehitysversiot ovat jopa tuhonneet tiedostojärjestelmiä, joten varmuuskopioiden ottaminen ennen kehitysytimen kokeilua on erittäin suositeltavaa. Jos käytät kehitysversiota, älä kysy myöskään apua sfnet-uutisryhmistä - sinun tulisi osata ratkaista ongelmatilanteet itse.

Mistä tietää ytimen version?

uname -a kertoo mikä ytimen versio on käytössä, koska se on käännetty ja mikä arkkitehtuuri on kyseessä.

Mikä on ytimen uusin versio?

Helsingin yliopiston Tietojenkäsittelytieteen laitoksen palvelimella on skripti, joka kertoo automaattisesti uusimmat versiot. Tai voit myös käyttää fingeriä: finger @ftp.kernel.org

Mistä löydän uusimman ytimen lähdekoodin?

Uusimman ytimen löydät lähimmästä kernel.org-peilistä. Myöskin levityksen mukana tulee lähdekoodi omana pakettina (deb tai rpm), joka voidaan helposti asentaa ja poistaa.

Mikä on tiedosto System.map?

System.map luodaan kernelin käännöksen yhteydessä lähdekoodipuun juureen (eli yleensä hakemistoon /usr/src/linux) ja se sisältää kernelin sisäisten muuttujien ja funktioiden muistiosoitetietoja. System.map-tiedostoa käyttää hyväkseen prosessi nimeltään klogd, eli kernelin oma lokiprosessi.

Uudet klogd:n versiot osaavat etsiä myös tiedostoja nimeltään /boot/System.map-kernelinversio, joten symbolista linkkiä System.map ei tarvitse enää käyttää tai luoda, kunhan noudattaa tätä nimeämiskäytäntöä. Kernelin version saa selville ajoaikana komennolla cat /proc/version.

Miten ja miksi annetaan parametrejä moduuleille

Jos osa ytimestä on käännetty tarpeen vaatiessa ladattaviksi moduuleiksi, joillekin moduuleille voi olla tarpeellista antaa parametrejä niitä ladattaessa. Esimerkiksi äänikortin ajurille täytyy antaa tieto äänikortin käyttämistä resursseista, kuten io-osoite, irq ja dma-kanava. PCI-lisäkorttien ajurit löytävät kortit yleensä automaattisesti, samoin jotkut muut ajurit.

On olemassa kaksi mahdollista tapaa antaa parametrejä moduuleille.

  • /etc/modules.conf-tiedoston avulla.

    Esimerkki 3-1. /etc/modules.conf

    alias sound sb
    options sb io=0x220 irq=5 dma=1 dma16=5
                    
    
    man depmod tai man modprobe kertoo lisää kyseisen tiedoston formaatista. Kyseiseen tiedostoon asetetut parametrit välittyvät moduulille sekä komentoa modprobe käsin käytettäessä että automaattisen lataamisen yhteydessä, eli käytettäessä kmod-ohjelmaa.

    Jos Linux-levityksestäsi ei löydy tiedostoa /etc/modules.conf, on mahdollista, että käytät vanhaa distribuutiota, jossa tiedoston nimi on /etc/conf.modules.

  • Ladattaessa moduuli käsin insmod-komennolla

                    #insmod sb io=0x220 irq=5 dma=1 dma16=5
                  
    
    man insmod kertoo enemmän komennon toiminnasta.