Ero sivun ”Ytimen moduulit” versioiden välillä
Siirry navigaatioon
Siirry hakuun
laajennusta
Pb (keskustelu | muokkaukset) p (siirsi sivun ”Moduuli” uudelle nimelle ”Ytimen moduulit”) |
Pb (keskustelu | muokkaukset) (laajennusta) |
||
Rivi 1: | Rivi 1: | ||
Linuxin [[ydin|ytimeen]] voi | 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ä. | ||
== | 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 pohjalta 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: | ==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 [[DKMS]]-ohjelmistoa, joka [[kääntäminen|kääntää]] moduulit uudelleen aina havaittuaan ytimen päivittyneen. Useimmat paketoijat ovat viime vuosina siirtyneet käyttämään DKMS:ää. | |||
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. Ajurikehittäjän sivulta ladattavan ajurin (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]] |