Ero sivun ”Ytimen moduulit” versioiden välillä

Siirry navigaatioon Siirry hakuun
6 007 merkkiä lisätty ,  9. huhtikuuta 2009
p
→‎Ulkopuoliset moduulit: wikilinkin korjaus ym
p (siirsi sivun ”Moduuli” uudelle nimelle ”Ytimen moduulit”)
p (→‎Ulkopuoliset moduulit: wikilinkin korjaus ym)
 
(3 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
Linuxin [[ydin|ytimeen]] voi ajonaikana liittää osia, jotka lisäävät sen toiminnallisuutta. Näitä osia sanotaan moduuleiksi. Useimmat ytimen lähdekoodipuuhun kuuluvat osat voidaan kääntämisvaiheessa valita käännettäväksi joko kiinteästi ytimeen mukaan, tai vaihtoehtoisesti moduuleiksi. Moduulien ei ole pakko kuulua ytimen lähdekoodipuuhun, vaan myös ulkopuolisia voidaan liittää mukaan, kunhan ne on käännetty sopivasti. Tällaisia ovat mm. jotkut laiteajurit ja [[Virtuaalikoneet|virtualisointi]]ohjelmistojen osat.
Linuxin [[ydin|ytimeen]] voi ajon aikana liittää moduuleiksi kutsuttuja osia, jotka lisäävät sen toiminnallisuutta. Tämän järjestelyn keskeisin hyöty on, ettei ydintä tarvitse [[kääntäminen|kääntää]] uudelleen aina, kun halutaan lisätä tai poistaa jokin toiminto (esimerkiksi laiteajuri). Moduulit ovat aina sidoksissa tiettyyn ytimen versioon, jos ytimestä asennetaan uusi versio, on myös moduulien oltava uutta versiota varten käännettyjä.


==Työkaluja moduulien käsittelyyn==
Useimmat ytimen [[lähdekoodi]]puuhun kuuluvat osat voidaan [[ytimen kääntäminen|ydintä käännettäessä]] valita joko kiinteästi ytimeen mukaan, ei lainkaan mukaan tai moduuleiksi. [[Jakelu]]iden oletusytimissä lähes kaikki mahdollinen on käännetty moduuleiksi, jotta ydin toimisi mahdollisimman monella eri laitteistokokoonpanolla kasvamatta samalla liian suureksi.
 
Moduulien ei ole pakko kuulua virallisen ytimen lähdekoodipuuhun, vaan myös ulkopuolisia moduuleja voidaan liittää mukaan, kunhan ne on käännetty oikealle ytimen versiolle. Tällaisia ovat mm. monet laiteajurit ja [[Virtuaalikoneet|virtualisointi]]ohjelmistojen osat.
 
==Moduulien sijainti==
Sekä viralliseen ytimeen kuuluvat että ulkopuoliset moduulit sijaitsevat [[Linuxin hakemistorakenne|hakemistossa]] <tt>/lib/modules/''ytimen_versio''/</tt>, esimerkiksi /lib/modules/2.6.25-ARCH/.
 
Yksittäinen moduuli voi löytyä esimerkiksi polusta <tt>/lib/modules/2.6.25-ARCH/kernel/drivers/net/wireless/[[Ralink_rt2x00|rt2x00]]/rt2500usb.ko</tt>.
 
==Lataaminen ja hallinta==
Useimmissa järjestelmissä käytetään [[udev]]ia tutkimaan laitteistoa käynnistyksen yhteydessä (coldplug) ja ajon aikana (hotplug) ja lataamaan laitteiden tunnisteiden (ks [[komentorivi|komennot]] <tt>[[lspci]]</tt> ja <tt>[[lsusb]]</tt>) perusteella oikeat (laiteajuri)moduulit. Jos jokin moduuli on riippuvainen toisten moduulien tarjoamista toiminnoista, ladataan myös nämä moduulit automaattisesti riippuvaisuustietokannan perusteella.
 
Moduulitiedostot sisältävät listan siitä, mitkä tunnisteet omaavien laitteiden kanssa ne on tehty toimimaan. Jos esimerkiksi [[paketinhallinta|paketinhallinnan]] kautta asennetaan ulkopuolisia moduuleita, ovat ne näin valmiita käyttöön heti, kun moduulit on lisätty /lib/modules-hakemistoon (ja moduulien riippuvaisuustietokanta on päivitetty). Moduulien lataamiseen tarvitsee puuttua käsin vain poikkeustapauksissa.
 
===Lataamisasetukset===
Ladattaville moduuleille voidaan määritellä asetuksia <tt>/etc/modprobe.conf</tt>-[[asetustiedosto]]ssa (2.4-ytimillä <tt>/etc/modules.conf</tt> tai <tt>/etc/conf.modules</tt>). Modprobe.confin sijaan asetukset voidaan myös sijoittaa vapaavalintaiseen tiedostoon hakemiston <tt>/etc/modprobe.d/</tt> alle.
 
Jos esimerkiksi jonkin tietyn moduulin latautuminen halutaan estää (vaikkapa päällekkäisyyksien takia), voidaan se mustalistata (engl. ''blacklist'') lisäämällä modprobe.conf-tiedostoon rivi
blacklist ''moduulinnimi''
 
Jos halutaan käsin määritellä jokin tietty moduuli latautuvaksi käynnistyksen yhteydessä (mikäli se ei lataudu automaattisesti), voidaan tiedostoon /etc/[[rc.local]] lisätä rivi
[[modprobe]] ''moduulinnimi''
Tähän on myös olemassa jakelukohtaisia menetelmiä, esimerkiksi [[Arch Linux]]issa moduulit voidaan listata <tt>/etc/[[rc.conf]]</tt>in kenttään <tt>MODULES=</tt>, [[Debian]]-pohjaisissa jakeluissa tiedostoon <tt>/etc/modules</tt> ja [[Gentoo]]ssa tiedostoon <tt>/etc/modules.autoload.d/kernel-2.6</tt> (2.6-sarjan ytimet).
 
===Komentorivityökalut===
Moduuleita voidaan hallita seuraavilla [[komentorivi]]komennoilla:
{{Moduulien hallinta}}
{{Moduulien hallinta}}


[[Luokka:Järjestelmä]]
==Ulkopuoliset moduulit==
Ulkopuoliset moduulit asennetaan yleensä binäärisinä (valmiiksi käännettyinä) versioina [[paketinhallintajärjestelmä|paketinhallinnan]] kautta. Moduulit ovat tällöin valmiiksi yhteensopivia jakelun oletusytimen kanssa. [[vapaa ohjelmisto|Ei-vapaiden]] moduulien (esimerkiksi [[näytönohjain]]ajurit) lataamiseen on usein käytettävä [[epäviralliset pakettilähteet|epävirallisia pakettivarastoja]].
 
Jos ja kun ytimestä tulee uusi versio, on myös ulkopuolisten moduulien päivityttävä sitä tukeviksi. Jakelusta ja [[pakettivarasto]]sta riippuen tähän on kaksi menetelmää. Joko kaikista moduulipaketeista julkaistaan uudet versiot aina ytimen päivittyessä tai käytetään [[akmod]]in ja [[DKMS]]:n kaltaisia järjestelmiä, jotka [[kääntäminen|kääntävät]] moduulit automaattisesti uudelleen aina havaittuaan ytimen päivittyneen.
 
Ensimmäisen vaihtoehdon ongelmana on paketoinnin työläys ja mahdolliset tilapäiset riippuvaisuusongelmat. Jälkimmäisen vaihtoehdon kanssa ongelmaksi taas tulee vaatimus jonkin verran tilaa vievien [[Portaali:Ohjelmistokehitys|kehitystyökalujen]] asentamisesta.
 
Jos paketinhallinnan kautta ei ole saatavilla haluttua moduulia tai sen versiota, on se käännettävä käsin [[lähdekoodi]]sta. Moduulin kääntämiseen tarvitaan ytimen kehityspaketit (paketit <tt>kernel-devel</tt>, <tt>kernel-dev</tt>, <tt>linux-devel</tt>, <tt>kernel-headers</tt>, <tt>linux-headers</tt> ym jakelusta riippuen) sekä moduulin kanssa yhteensopiva ytimen versio. Moduulin kehittäjän sivulta ladattavan lähdekoodin (yleensä [[tarball]]-muodossa) mukana toimitetaan tavallisesti <tt>README</tt>- ja <tt>INSTALL</tt>-tiedostot, joissa on lisätietoa kääntämisestä.
 
==Initrd==
Jos käytetään jakeluiden oletusytimiä joissa suurin osa laiteajureista on käännetty moduuleiksi, tulee ongelmaksi se, etteivät moduulit ole käytettävissä [[GNU/Linuxin käynnistysprosessi|järjestelmän käynnistyksen]] alkuvaiheessa. Moduulit sijaitsevat [[tiedostojärjestelmä]]ssä (yleensä [[juuriosio]]lla), mutta jotta tiedostojärjestelmään päästäisiin käsiksi, tarvitaan eri laitteistokokoonpanoja varten suuri määrä eri moduuleita.
 
Jotta moduulit olisivat käytettävissä tarpeeksi aikaisin, on kehitetty [[initrd]]-niminen järjestelmä, jossa tarvittavat moduulit on sijoitettu käynnistyksen ajaksi keskusmuistiin ladattavaan tiedostojärjestelmään.
 
Initrd-tiedostojärjestelmän [[levykuva]] korvataan uudella aina ydintä päivitettäessä. Levykuva voidaan myös luoda käsin, mikäli oletusversio ei sisällä kaikkia tarvittavia moduuleita.
 
==Katso myös==
*[[Usein kysyttyjä kysymyksiä ytimestä]]
*[[Ytimen kääntäminen]]
*[[Ytimen asetusten tekeminen]]
*[[Ytimen käynnistysparametrit]]
*[[GNU/Linuxin käynnistysprosessi]]
*[[Udev]]
 
==Aiheesta muualla==
*[[wikipedia:Loadable kernel module|Ytimen moduulit englanninkielisessä Wikipediassa]]
 
[[Luokka:Ydin]]
[[Luokka:Ohjeet]]
4 316

muokkausta

Navigointivalikko