Ero sivun ”Ytimen kääntäminen” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(Ei ole aina kyse GNU/Linuxista)
 
(81 välissä olevaa versiota 28 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
Kernelin, eli GNU/Linux käyttöjärjestelmän ytimen, kääntämistä pidetään usein erittäin hankalana, mitä se tosiasiassa ei ole.  
Linux-ytimen (engl. ''kernel'') [[kääntäminen|kääntämistä]] pidetään usein erittäin hankalana, mitä se tosiasiassa ei ole. Nykyisin käyttäjän tarve kääntää ydin itse on vähentynyt, mutta toimenpide voi olla tarpeellinen esimerkiksi eksoottisimpien oheislaitteiden toimimaan saamiseksi. Toinen yleinen syy on halu optimoida ytimestä pois ominaisuuksia, joille käyttäjä ei koe olevan itsellään tarvetta.
 
Usein vanhentuneessa ohjeessa sanotaan ytimen käännön olevan välttämätöntä, vaikka vaaditut asetukset ovat valittuna jo [[jakelu]]n vakioytimessä (engl. ''stock kernel''). Tarkista, kuinka vanhaa ohjetta luet.


==Ytimen hakeminen==
==Ytimen hakeminen==
[http://www.kernel.org kernel.org]:ista voi ladata uusimman kernelin kehittäjien julkaiseman ytimen. Nykyään on suositeltavaa käyttää uusinta vakaata 2.6-sarjan ydintä. Kopioi tämä pura sitten paketti (<tt>tar xvjf linux-2.6.11.7.tar.bz2</tt>) ja siirry uuteen hakemistoon.
Helpoimmalla pääsee, jos ytimen [[lähdekoodi]] löytyy [[paketinhallinta|paketinhallinnasta]] (useimmissa jakeluissa paketinhallinnan kautta löytyy myös valmiiksi käännettyjä ytimiä). Jos haet lähdekoodin paketinhallinnasta, saat käyttöön saman lähdekoodin, josta jakelun vakioytimetkin on käännetty. Tällöin mukana on usein pieniä muutoksia jotka saattavat lisätä suorituskykyä tai tuoda ominaisuuksia, jotka virallisesta (siis kernel.orgin) lähdekoodipuusta puuttuvat. Huomaa kuitenkin, että vaikka haet lähdekoodin paketinhallinnan kautta, on kääntäminen tehtävä käsin.
 
Jos paketinhallinnassa ei ole sinulle sopivaa lähdekoodipakettia, [http://www.kernel.org kernel.orgista] voi ladata uusimman julkaistun ytimen. Nykyään on suositeltavaa käyttää uusinta vakaata 2.6-sarjan ydintä. Lataa paketti esimerkiksi /usr/src -[[Linuxin hakemistorakenne|hakemistoon]] ja pura se. <tt>tar.bz2</tt>-päätteinen paketti puretaan komennolla <tt>[[tar]] jxvf linux-2.6.x.x.tar.bz2</tt> ja <tt>tar.gz</tt>-päätteinen komennolla <tt>tar zxvf linux-2.6.x.x.tar.gz</tt>. Purettuasi paketin siirry tuloksena syntyneeseen uuteen hakemistoon. Ytimen lähdekoodin saa ladattua myös Suomessa sijaitsevalta [ftp://ftp.fi.kernel.org/pub/linux/kernel/v2.6/ ftp.fi.kernel.org]-palvelimelta.
 
Kannattaa huomata, etteivät kaikki ytimen ulkopuoliset ajurit välttämättä toimi uusimpien ytimen versioiden kanssa. Samassa lähdekoodipaketissa olevat [[moduuli]]t ''oikein'' säädettynä toimivat, mutta ulkopuoliset ajurit saattavat kieltäytyä kääntymästä sen vuoksi, että ytimessä on kehityksen myötä poistunut jotain tai jokin ajurin kannalta olennainen ominaisuus on ratkaisevasti muuttunut. Tämä koskee erityisesti suljetun lähdekoodin ohjelmien käyttämiä moduuleita.


==Asetusten tekeminen==
==Asetusten tekeminen==
Jos sinulla on käytössäsi 2.6-sarjan ydin (näet ytimen version komennolla <tt>uname -a</tt>), kannattaa katsoa josko sinulla olisi vanha asetustiedosto (<tt>.config</tt>) jossain. Monissa distroissa se löytyy polusta /boot/kernel-2.6.xxx-config. Jos tällainen lötyyy, kopioi se kernelin hakemistoon nimelle .config. Tämän jälkeen aja komento <tt>make oldconfig</tt>.<br>
Nykyisen ytimen version näet komennolla <tt>uname -a</tt>. Mikäli käytössäsi on jo 2.6-sarjan ydin, kannattaa tutkia löytyykö ytimen [[asetustiedosto]] (<tt>.config</tt>) jostakin. Monissa jakeluissa asetustiedosto löytyy /boot -hakemiston alta nimellä kernel-2.6.x.x.config. Asetustiedosto voi myös löytyä pakattuna tiedostosta /proc/config.gz. Jos vanha asetustiedosto löytyy, kopioi se uuden ytimen lähdekoodin juurihakemistoon nimellä <tt>.config</tt>. Aja tämän jälkeen komento <tt>make oldconfig</tt> jolloin sinulta kysytään asetukset niihin ominaisuuksiin, joita vanhassa asetustiedostossa ei ollut.


Jos sinulla ei ole vanhaa asetustiedostoa tai jos haluat tehdä itse asetuksia, aja komento <tt>make menuconfig</tt> (yleisin ja toimii lähes aina), <tt>make xconfig</tt> (täysin hiiriohjattu) tai <tt>make config</tt> (kysyy kaikki kohdat erikseen, ei suositeltava).<br>
Jos sinulla ei ole vanhaa asetustiedostoa tai jos haluat tehdä itse asetuksia, aja komento <tt>make menuconfig</tt> (yleisin ja toimii lähes aina, käyttää [[ncurses]]-kirjastoa), <tt>make xconfig</tt> (Graafinen, [[Qt]]-kirjastoa käyttävä), <tt>make gconfig</tt> (Graafinen, [[GTK+]]-kirjastoa käyttävä) tai <tt>make config</tt> (kysyy kaikki kohdat erikseen, ei suositeltava). Tämän jälkeen tee haluamasi asetukset, mutta älä kuitenkaan muuta mitään mistä et ole varma. Suurimpaan osaan tarjolla olevista asetuksista on hyvä ohjeistus kyseisen asetuksen kohdalla help-valikossa.
Tämän jälkeen tee haluamasi asetukset (älä kuitenkaan muuta mitään mistä et ole varma).


Jos haluat antaa kernelille erityisen nimen, editoi Makefile:n ensimmäisiä rivejä.  
Mikäli et tee ns. [[initrd]]-ydintä, on syytä muistaa että ''juuriosion tiedostojärjestelmän ajuri on käännettävä ytimen sisään'', muuten käynnistettäessä seuraa [[kernel panic]]. Initrd-ytimen tapauksessa ajurin voi kääntää myös moduuliksi, mutta tällöin on tehtävä erikseen initrd-tiedosto jotta ydin osaa ottaa tiedostojärjestelmän käynnistyksen yhteydessä käyttöön. Initrd-ytimissä käytetään romfs-muotoista [[RAM-levy|ram-levyasemaa]].
 
Valitessasi ytimen asetuksia on hyvä tutustua tarkkaan koneesi laitteistoon. Komento <tt>[[lspci]] -v</tt> antaa hyödyllistä tietoa laitteistostasi, ja runsaasti lisätietoa löytyy <tt>/[[proc]]</tt>-hakemistosta. Esimerkiksi tiedosto <tt>/proc/cpuinfo</tt> kertoo kattavasti millainen prosessori koneessasi on. Oikean vaihtoehdon valinta on tärkeää etenkin prosessorin kohdalla ydintä käännettäessä. x86-koneissa pienin yhteinen nimittäjä on 80386-prosessorityyppi, jonka valitsemalla ydin toimii jokaisessa koneessa, mutta se ei käytä hyödykseen läheskään kaikkia tarjolla olevia ominaisuuksia ja saattaa olla hieman hitaampi kuin edistyneempiä ominaisuuksia hyödyntävät ytimet. Perusnyrkkisääntönä sanottakoon, että nykyään pienin yhteinen nimittäjä on Pentium. Mikäli aiot tehdä ytimestäsi siirrettävän, eli sellaisen joka toimii koneessa kuin koneessa, on 386 hyvä vaihtoehto. Sen sijaan omalle koneelle optimaalista ydintä räätälöitäessä oikean prosessorityypin (tai lähimmän vastaavan) valinta on järkevin.
 
2.4 -sarjan ytimissä oli AMD:n prosessorien ja VIA-piirisarjan kanssa ongelmia, joiden vuoksi piti kääntää 686-ydin jonkin aikaa näihin koneisiin. Vastaavanlaisia ongelmia saattaa edelleenkin esiintyä erityisesti [[bleeding edge]] -tekniikoiden kanssa, kun kehitys ei ole vielä päässyt tarpeeksi pitkälle.
 
* [[Ytimen asetusten tekeminen]]


==Kääntäminen==
==Kääntäminen==
Asetusten tekemisen jälkeen ydin kääntyy yksinkertaisesti komennolla make (helppoa, eikö?)
Asetusten tekemisen jälkeen ydin kääntyy yksinkertaisesti komennolla <tt>make</tt>. Jos kääntäminen keskeytyy johonkin virheeseen, on syytä kääntää kriittinen katse asetustiedostoa kohtaan.
 
Ytimen oman ohjeistuksen mukainen komento ytimen kääntämiseen on yksinkertaisesti:
make
 
Mikäli käytettävissä on useampia suorittimia tai suoritinytimiä, kannattaa kääntää useammassa säikeessä:
CONCURRENCY_LEVEL=2 make
 
Tämä on erityisen suositeltavaa moniprosessorikoneilla, mutta se todennäköisesti nopeuttaa työskentelyä myös yhdellä prosessorilla, sillä yhdessä säikeessä kääntäminen ei jatkuvasti käytä kaikkea prosessoritehoa hyödykseen.
 
=== Kääntäminen Debianissa ===
[[Debian]]in (ja siihen pohjautuvien jakeluiden, kuten [[Ubuntu]]n) käyttäjät voivat käyttää seuraavia komentoja luodakseen ytimestä [[deb]]-paketin mikäli paketit <tt>kernel-package</tt> ja <tt>fakeroot</tt> ovat asennettuina:


Jos kääntäminen keskeytyy johonkin virheeseen, on syytä kääntää kriittinen katse asetustiedostoa kohtaan.
*Komento <tt>make-kpkg --rootcmd fakeroot --revision ''ytimen-versio'' kernel_image</tt> kääntää ytimen paketiksi, jonka voi asentaa komennolla <tt>dpkg -i</tt>.
 
*Komento <tt>make-kpkg --rootcmd fakeroot --revision ''ytimen-versio'' modules_image</tt> kääntää /usr/src/modules -hakemistossa olevat ulkopuoliset moduulit asennettaviksi ytimen moduuleiksi.
 
*Jos haluat käyttää [[initrd]]:tä, liitä make-kpkg:n parametreihin <tt>--initrd</tt>.
 
*Jos haluat käyttää [[distcc]]:tä make-kpkg:n kanssa, laita <tt>MAKEFLAGS="CC=distcc"</tt> ennen make-kpkg-käskyä.
 
*Mikäli käännät samoista lähdekoodeista muita ytimiä, siivoa ytimen lähdekoodit Debian-komentojen aikaansaamista ylimääräisistä tiedostoista komennolla <tt>fakeroot make-kpkg clean</tt>.
 
Kun ydin käännetään Debianin komennoilla, syntyneet <tt>deb</tt>-paketit voi siirtää koneesta toiseen tai asentaa samassa koneessa. Siirtäminen helpottaa etenkin heikkotehoisten koneiden ytimen kääntämistä, sillä vanha 100MHz Pentium kääntää ydintä useita tunteja kun taas nykyaikainen kone kääntää ytimen muutamassa minuutissa.


==Asentaminen==
==Asentaminen==
Tässä vaiheessa täytyy kirjautua pääkäyttäjäksi (komento <tt>su</tt>), jonka jälkeen ytimen moduulit asennetaan komennolla make modules_install. Tämän jälkeen /lib/modules-hakemistoon pitäisi ilmestyä uusi hakemisto jonka nimi on ytimesi nimi (olettaen että mitään virheitä ei satu).<br>
Ytimen kääntämisen jälkeen on asennettava moduulit niille kuuluvaan paikkaan sekä sijoitettava itse ydin /boot -hakemistoon. Nämä toiminnot on suoritettava pääkäyttäjänä - joko kirjautumalla pääkäyttäjäksi komennolla <tt>[[su]]</tt> tai suorittamalla komennot pääkäyttäjän oikeuksin komennolla <tt>[[sudo]]</tt>.
 
Ytimen moduulit asennetaan komennolla <tt>make modules_install</tt>. Komento sijoittaa valitut moduulit /lib/modules -hakemiston alle luomaansa hakemistoon, joka vastaa kääntämäsi ytimen versionumeroa.
 
Itse ydin asennetaan joko komennolla <tt>make install</tt> tai kopioimalla käsin lähdekoodihakemistosta tiedosto <tt>arch/i386/boot/bzImage</tt> (jossa <tt>i386</tt> korvataan sopivalla arkkitehtuurilla) /boot -hakemiston alle sopivalla nimellä. <tt>make install</tt> -komennolla pitäisi /boot -hakemistoon ilmestyä vmlinuz-2.6.x.x -niminen tiedosto, joka on siis itse ydin.


Tämän jälkeen itse ydin voidaan asentaa komennolla make install, jolloin /boot-hakemistoon pitäisi ilmestyä vmlinux-2.6.8 tms. tyylinen tiedosto, joka on itse kerneli.
==Käynnistyslataaja==
Jotta voisit käynnistää koneesi käyttäen kääntämääsi ydintä, on sinun muokattava [[käynnistyslataaja]]si asetustiedostoa. Jos käynnistyslataajasi on [[Grub]], muokkaa tiedostoa <tt>/boot/grub/menu.lst</tt>. Jos käynnistyslataajasi on [[Lilo]], muokkaa tiedostoa <tt>/etc/lilo.conf</tt>. [[Lilo]]a käytettäessä on se asennettava muokkaamisen jälkeen uudestaan käynnistyssektoriin ajamalla pääkäyttäjänä komento <tt>lilo</tt>.


==Käynnistyslatain==
Muokkaaminen onnistuu helpoiten katsomalla mallia vanhoista asetuksista. Vanhoja asetuksia ei kannata poistaa, sillä mikäli oma ytimesi ei toimi, voit käynnistää koneesi vanhalla ytimellä ja pääset näin korjaamaan itse kääntämäsi ytimen asetuksia.
Avaa käynnistyslataimesi asetustiedosto (GRUB:illa /boot/grub/menu.lst ja lilolla /etc/lilo.conf) ja lisää sinne uuden ytimen tiedot ottaen mallia vanhoista (ei kannata poistaa vanhoja siltä varalta että ydin ei toimikkaan). Tallennuksen jälkeen lilo:n käyttäjien on asennettava lilo boottisektoriin uudelleen komennolla <tt>lilo</tt>.


==Testaus==
==Testaus==
Boottaa kone, risti kädet ja toivo parasta!
Käynnistä kone uudelleen ja toivo parasta!  
 
Yleensä ydin toimii jos asetukset on tehty huolella. Rikkinäinen ydin ei haittaa jos vanha ydin on vielä tallella, sillä voit käynnistää koneen käyttäen vanhaa ydintä. Yleisimpiä syitä toimimattomuuteen lienevät virheelliset emolevyn ajurivalinnat sekä [[tiedostojärjestelmä]]ajurin puuttuminen ytimestä.


==Viimeistely==
==Viimeistely==
Jos ydin toimii, kannattaa luoda /usr/src-hakemistoon symbolinen linkki linux, joka viittaa kernelin lähdekoodihakemistoon (jotkut ohjelmat haluavat päästä käsiksi kääntövaiheessa ajossa olevan ytimen lähdekoodiin).
Mikäli ydin toimii, kannattaa luoda /usr/src -hakemistoon [[symbolinen linkki]] <tt>linux</tt>, joka viittaa ytimen lähdekoodihakemistoon. Linkki luodaan komennolla <tt>[[ln]] -s linux-2.6.x.x linux</tt>. Linkki kannattaa tehdä, sillä jotkin ohjelmat ja ajurit haluavat käännettäessä päästä käsiksi ajossa olevan ytimen lähdekoodiin, ja ne etsivät lähdekoodia hakemistosta /usr/src/linux.
 
Myöskin erikseen käännetyt ytimen moduulit on nyt käännettävä uudestaan, jotta ne toimisivat uuden ytimen kanssa.
 
=="Virityssarjat"==
On myös olemassa erilaisia muokkauspaketteja ([[patch]]) jolla saadaan kerneliin lisää tehoa tai uusia ominaisuuksia. Tutuimpia ovat esimerkiksi nitro, love, ck ja cko -paketit.
Ytimen patchit toimitetaan yleensä .patch-, .diff--, .bz2 tai .gz-muodoissa:
 
[[cat]] tiedosto.patch | patch -p1
cat tiedosto.diff | patch -p1
 
[[bzip2]] -dc tiedosto.bz2 | patch -p1
 
[[gzip]] -dc tiedosto.gz | patch -p1
 
===Esimerkki===
Luodaan ja viritetään 2.6.16-ydin beyond4-patchillä:
#Ladataan ja puretaan kerneli
[[cd]] /usr/src/
[[wget]] http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2
[[tar]] -xvjpf linux-2.6.16.tar.bz2
[[mv]] linux-2.6.16 linux-2.6.16-beyond4
[[rm]] linux
[[ln]] -s linux-2.6.16-beyond4 linux
cd linux
 
wget http://iphitus.loudas.com/beyond/2.6.16/patch-2.6.16-beyond4.bz2
bzip2 -dc patch-2.6.16-beyond4.bz2 | patch -p1
 
==Katso myös==
*[[Ytimen asetusten tekeminen]]
*[[Usein kysyttyjä kysymyksiä ytimestä]]
*[[Ytimen käynnistysparametrit]]
*[[System.map]]
 
[[Luokka:Ydin]]
[[Luokka:Ohjeet]]

Nykyinen versio 4. helmikuuta 2016 kello 11.33

Linux-ytimen (engl. kernel) kääntämistä pidetään usein erittäin hankalana, mitä se tosiasiassa ei ole. Nykyisin käyttäjän tarve kääntää ydin itse on vähentynyt, mutta toimenpide voi olla tarpeellinen esimerkiksi eksoottisimpien oheislaitteiden toimimaan saamiseksi. Toinen yleinen syy on halu optimoida ytimestä pois ominaisuuksia, joille käyttäjä ei koe olevan itsellään tarvetta.

Usein vanhentuneessa ohjeessa sanotaan ytimen käännön olevan välttämätöntä, vaikka vaaditut asetukset ovat valittuna jo jakelun vakioytimessä (engl. stock kernel). Tarkista, kuinka vanhaa ohjetta luet.

Ytimen hakeminen[muokkaa]

Helpoimmalla pääsee, jos ytimen lähdekoodi löytyy paketinhallinnasta (useimmissa jakeluissa paketinhallinnan kautta löytyy myös valmiiksi käännettyjä ytimiä). Jos haet lähdekoodin paketinhallinnasta, saat käyttöön saman lähdekoodin, josta jakelun vakioytimetkin on käännetty. Tällöin mukana on usein pieniä muutoksia jotka saattavat lisätä suorituskykyä tai tuoda ominaisuuksia, jotka virallisesta (siis kernel.orgin) lähdekoodipuusta puuttuvat. Huomaa kuitenkin, että vaikka haet lähdekoodin paketinhallinnan kautta, on kääntäminen tehtävä käsin.

Jos paketinhallinnassa ei ole sinulle sopivaa lähdekoodipakettia, kernel.orgista voi ladata uusimman julkaistun ytimen. Nykyään on suositeltavaa käyttää uusinta vakaata 2.6-sarjan ydintä. Lataa paketti esimerkiksi /usr/src -hakemistoon ja pura se. tar.bz2-päätteinen paketti puretaan komennolla tar jxvf linux-2.6.x.x.tar.bz2 ja tar.gz-päätteinen komennolla tar zxvf linux-2.6.x.x.tar.gz. Purettuasi paketin siirry tuloksena syntyneeseen uuteen hakemistoon. Ytimen lähdekoodin saa ladattua myös Suomessa sijaitsevalta ftp.fi.kernel.org-palvelimelta.

Kannattaa huomata, etteivät kaikki ytimen ulkopuoliset ajurit välttämättä toimi uusimpien ytimen versioiden kanssa. Samassa lähdekoodipaketissa olevat moduulit oikein säädettynä toimivat, mutta ulkopuoliset ajurit saattavat kieltäytyä kääntymästä sen vuoksi, että ytimessä on kehityksen myötä poistunut jotain tai jokin ajurin kannalta olennainen ominaisuus on ratkaisevasti muuttunut. Tämä koskee erityisesti suljetun lähdekoodin ohjelmien käyttämiä moduuleita.

Asetusten tekeminen[muokkaa]

Nykyisen ytimen version näet komennolla uname -a. Mikäli käytössäsi on jo 2.6-sarjan ydin, kannattaa tutkia löytyykö ytimen asetustiedosto (.config) jostakin. Monissa jakeluissa asetustiedosto löytyy /boot -hakemiston alta nimellä kernel-2.6.x.x.config. Asetustiedosto voi myös löytyä pakattuna tiedostosta /proc/config.gz. Jos vanha asetustiedosto löytyy, kopioi se uuden ytimen lähdekoodin juurihakemistoon nimellä .config. Aja tämän jälkeen komento make oldconfig jolloin sinulta kysytään asetukset niihin ominaisuuksiin, joita vanhassa asetustiedostossa ei ollut.

Jos sinulla ei ole vanhaa asetustiedostoa tai jos haluat tehdä itse asetuksia, aja komento make menuconfig (yleisin ja toimii lähes aina, käyttää ncurses-kirjastoa), make xconfig (Graafinen, Qt-kirjastoa käyttävä), make gconfig (Graafinen, GTK+-kirjastoa käyttävä) tai make config (kysyy kaikki kohdat erikseen, ei suositeltava). Tämän jälkeen tee haluamasi asetukset, mutta älä kuitenkaan muuta mitään mistä et ole varma. Suurimpaan osaan tarjolla olevista asetuksista on hyvä ohjeistus kyseisen asetuksen kohdalla help-valikossa.

Mikäli et tee ns. initrd-ydintä, on syytä muistaa että juuriosion tiedostojärjestelmän ajuri on käännettävä ytimen sisään, muuten käynnistettäessä seuraa kernel panic. Initrd-ytimen tapauksessa ajurin voi kääntää myös moduuliksi, mutta tällöin on tehtävä erikseen initrd-tiedosto jotta ydin osaa ottaa tiedostojärjestelmän käynnistyksen yhteydessä käyttöön. Initrd-ytimissä käytetään romfs-muotoista ram-levyasemaa.

Valitessasi ytimen asetuksia on hyvä tutustua tarkkaan koneesi laitteistoon. Komento lspci -v antaa hyödyllistä tietoa laitteistostasi, ja runsaasti lisätietoa löytyy /proc-hakemistosta. Esimerkiksi tiedosto /proc/cpuinfo kertoo kattavasti millainen prosessori koneessasi on. Oikean vaihtoehdon valinta on tärkeää etenkin prosessorin kohdalla ydintä käännettäessä. x86-koneissa pienin yhteinen nimittäjä on 80386-prosessorityyppi, jonka valitsemalla ydin toimii jokaisessa koneessa, mutta se ei käytä hyödykseen läheskään kaikkia tarjolla olevia ominaisuuksia ja saattaa olla hieman hitaampi kuin edistyneempiä ominaisuuksia hyödyntävät ytimet. Perusnyrkkisääntönä sanottakoon, että nykyään pienin yhteinen nimittäjä on Pentium. Mikäli aiot tehdä ytimestäsi siirrettävän, eli sellaisen joka toimii koneessa kuin koneessa, on 386 hyvä vaihtoehto. Sen sijaan omalle koneelle optimaalista ydintä räätälöitäessä oikean prosessorityypin (tai lähimmän vastaavan) valinta on järkevin.

2.4 -sarjan ytimissä oli AMD:n prosessorien ja VIA-piirisarjan kanssa ongelmia, joiden vuoksi piti kääntää 686-ydin jonkin aikaa näihin koneisiin. Vastaavanlaisia ongelmia saattaa edelleenkin esiintyä erityisesti bleeding edge -tekniikoiden kanssa, kun kehitys ei ole vielä päässyt tarpeeksi pitkälle.

Kääntäminen[muokkaa]

Asetusten tekemisen jälkeen ydin kääntyy yksinkertaisesti komennolla make. Jos kääntäminen keskeytyy johonkin virheeseen, on syytä kääntää kriittinen katse asetustiedostoa kohtaan.

Ytimen oman ohjeistuksen mukainen komento ytimen kääntämiseen on yksinkertaisesti:

make

Mikäli käytettävissä on useampia suorittimia tai suoritinytimiä, kannattaa kääntää useammassa säikeessä:

CONCURRENCY_LEVEL=2 make

Tämä on erityisen suositeltavaa moniprosessorikoneilla, mutta se todennäköisesti nopeuttaa työskentelyä myös yhdellä prosessorilla, sillä yhdessä säikeessä kääntäminen ei jatkuvasti käytä kaikkea prosessoritehoa hyödykseen.

Kääntäminen Debianissa[muokkaa]

Debianin (ja siihen pohjautuvien jakeluiden, kuten Ubuntun) käyttäjät voivat käyttää seuraavia komentoja luodakseen ytimestä deb-paketin mikäli paketit kernel-package ja fakeroot ovat asennettuina:

  • Komento make-kpkg --rootcmd fakeroot --revision ytimen-versio kernel_image kääntää ytimen paketiksi, jonka voi asentaa komennolla dpkg -i.
  • Komento make-kpkg --rootcmd fakeroot --revision ytimen-versio modules_image kääntää /usr/src/modules -hakemistossa olevat ulkopuoliset moduulit asennettaviksi ytimen moduuleiksi.
  • Jos haluat käyttää initrd:tä, liitä make-kpkg:n parametreihin --initrd.
  • Jos haluat käyttää distcc:tä make-kpkg:n kanssa, laita MAKEFLAGS="CC=distcc" ennen make-kpkg-käskyä.
  • Mikäli käännät samoista lähdekoodeista muita ytimiä, siivoa ytimen lähdekoodit Debian-komentojen aikaansaamista ylimääräisistä tiedostoista komennolla fakeroot make-kpkg clean.

Kun ydin käännetään Debianin komennoilla, syntyneet deb-paketit voi siirtää koneesta toiseen tai asentaa samassa koneessa. Siirtäminen helpottaa etenkin heikkotehoisten koneiden ytimen kääntämistä, sillä vanha 100MHz Pentium kääntää ydintä useita tunteja kun taas nykyaikainen kone kääntää ytimen muutamassa minuutissa.

Asentaminen[muokkaa]

Ytimen kääntämisen jälkeen on asennettava moduulit niille kuuluvaan paikkaan sekä sijoitettava itse ydin /boot -hakemistoon. Nämä toiminnot on suoritettava pääkäyttäjänä - joko kirjautumalla pääkäyttäjäksi komennolla su tai suorittamalla komennot pääkäyttäjän oikeuksin komennolla sudo.

Ytimen moduulit asennetaan komennolla make modules_install. Komento sijoittaa valitut moduulit /lib/modules -hakemiston alle luomaansa hakemistoon, joka vastaa kääntämäsi ytimen versionumeroa.

Itse ydin asennetaan joko komennolla make install tai kopioimalla käsin lähdekoodihakemistosta tiedosto arch/i386/boot/bzImage (jossa i386 korvataan sopivalla arkkitehtuurilla) /boot -hakemiston alle sopivalla nimellä. make install -komennolla pitäisi /boot -hakemistoon ilmestyä vmlinuz-2.6.x.x -niminen tiedosto, joka on siis itse ydin.

Käynnistyslataaja[muokkaa]

Jotta voisit käynnistää koneesi käyttäen kääntämääsi ydintä, on sinun muokattava käynnistyslataajasi asetustiedostoa. Jos käynnistyslataajasi on Grub, muokkaa tiedostoa /boot/grub/menu.lst. Jos käynnistyslataajasi on Lilo, muokkaa tiedostoa /etc/lilo.conf. Liloa käytettäessä on se asennettava muokkaamisen jälkeen uudestaan käynnistyssektoriin ajamalla pääkäyttäjänä komento lilo.

Muokkaaminen onnistuu helpoiten katsomalla mallia vanhoista asetuksista. Vanhoja asetuksia ei kannata poistaa, sillä mikäli oma ytimesi ei toimi, voit käynnistää koneesi vanhalla ytimellä ja pääset näin korjaamaan itse kääntämäsi ytimen asetuksia.

Testaus[muokkaa]

Käynnistä kone uudelleen ja toivo parasta!

Yleensä ydin toimii jos asetukset on tehty huolella. Rikkinäinen ydin ei haittaa jos vanha ydin on vielä tallella, sillä voit käynnistää koneen käyttäen vanhaa ydintä. Yleisimpiä syitä toimimattomuuteen lienevät virheelliset emolevyn ajurivalinnat sekä tiedostojärjestelmäajurin puuttuminen ytimestä.

Viimeistely[muokkaa]

Mikäli ydin toimii, kannattaa luoda /usr/src -hakemistoon symbolinen linkki linux, joka viittaa ytimen lähdekoodihakemistoon. Linkki luodaan komennolla ln -s linux-2.6.x.x linux. Linkki kannattaa tehdä, sillä jotkin ohjelmat ja ajurit haluavat käännettäessä päästä käsiksi ajossa olevan ytimen lähdekoodiin, ja ne etsivät lähdekoodia hakemistosta /usr/src/linux.

Myöskin erikseen käännetyt ytimen moduulit on nyt käännettävä uudestaan, jotta ne toimisivat uuden ytimen kanssa.

"Virityssarjat"[muokkaa]

On myös olemassa erilaisia muokkauspaketteja (patch) jolla saadaan kerneliin lisää tehoa tai uusia ominaisuuksia. Tutuimpia ovat esimerkiksi nitro, love, ck ja cko -paketit. Ytimen patchit toimitetaan yleensä .patch-, .diff--, .bz2 tai .gz-muodoissa:

cat tiedosto.patch | patch -p1
cat tiedosto.diff | patch -p1
bzip2 -dc tiedosto.bz2 | patch -p1
gzip -dc tiedosto.gz | patch -p1

Esimerkki[muokkaa]

Luodaan ja viritetään 2.6.16-ydin beyond4-patchillä:

#Ladataan ja puretaan kerneli
cd /usr/src/
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2
tar -xvjpf linux-2.6.16.tar.bz2
mv linux-2.6.16 linux-2.6.16-beyond4
rm linux
ln -s linux-2.6.16-beyond4 linux
cd linux
wget http://iphitus.loudas.com/beyond/2.6.16/patch-2.6.16-beyond4.bz2
bzip2 -dc patch-2.6.16-beyond4.bz2 | patch -p1

Katso myös[muokkaa]