Rozdíl mezi jadernými moduly a ovladači

Arthur

Rozdíl mezi jadernými moduly a ovladači
« kdy: 23. 09. 2011, 14:56:00 »
Zdravim,

mel bych par BFU dotazu ohledne fungovani kernel modulu...

situace:  mam netbook s wifi RaLink3090, Ubuntu 11.04.  Wifina v principu funguje po ciste instalaci sama, ale chova se to nejak divne. 
lspci -v mi vypsalo ze
kernel driver in use: rt2800pci
kernel modules: rt2860sta, rt2800pci

jelikoz mam 3090, zkusil jsem nainstalovat z ppa predkompilovane ovladace. Nainstaloval jsem jen .deb balicek, nic jineho jsem nedelal a vsechno funguje zda se jak ma. Potud OK.
kernel driver in use: rt2800pci
kernel modules: rt3090sta, rt2860sta, rt2800pci
prekvapilo me ovsem, ze rt3090 vubec neni v kernelu zavedeny

zkusil jsem jen tak ze zvedavosti mu vnutit rt3090sta, coz se povedlo, lspci pise ze
kernel driver in use: rt2860
kernel modules: rt3090sta, rt2860sta, rt2800pci
ale wifi nefunguje - tvari se ze jo, ale nepripoji se to k zadne siti

vratil jsem se tedy k prostredni moznosti, ale jsem z toho dost zmateny:

1) jaky je rozdil mezi kernel driverem a modulem (pokud nejaky je ?)
2) co znamena radek "kernel modules" ? Jsou to moduly k dispozici nebo moduly zavedne do jadra nebo co ?
3) pokud mam prokazatelne zavedeny modul rt3090sta, proc je driver in use rt2860 ?
4) co znamena modul typu staging ? Souvisi to nejak s temito zmatky ?

Dekuji predem za info
« Poslední změna: 25. 09. 2011, 21:05:08 od Petr Krčmář »


Pali

Re: Dotaz na kernel moduly a drivery
« Odpověď #1 kdy: 23. 09. 2011, 16:00:17 »
1) myslim ze je to to iste. Moduly su v programoch zvycajne externe veci co sa da menit. Do linuxoveho kernelu (binarky v /boot) sa da lubovolny driver staticky zlinkovat (pri kompilacii), alebo sa necha ako externy modul v /lib/modules/. Teda nejake drivre su priamo staticky zlinkovane (napr usb, diskove radice, ...) a nedaju sa unloadnut a nevypisuje ich ani lsmod. Externe loadnute moduly vies vypisat pomocou lsmod a kedykolvek nacitat/odnacitat.

2) kazdy driver ma v sebe id-cka (usb, pci, ...) ktore oznacuju presny tym HW. No a podla toho vie lspci zistit ake externe moduly sa mozu pre dany hw pouzit (kernel modules). Avsak iba jeden modul/driver (vacsinou) moze byt pre dany HW nacitany (kernel driver in use).

3) ak mas dva moduly co komunikuju s rovnakym HW, mozu byt oba nacitane. ale iba jeden bude s HW komunikovat (druhy nebude robit nic). ujisti sa ze si pred nacitanim noveho modulu stary unloadol (prikazy rmmod, modprobe a lsmod)

4) staging moduly este neboli oznacene ako stabilne

Zoznam vsetkych sietovych interfacov zistit napr. progamom ip link alebo v adresari:
/sys/class/net/

Ak chces presne vediet aky driver sietove rozhranie pouziva pozri si kam smeruje symlink zo suboru:
/sys/class/net/<iface>/device/driver

napr u mna:
$ readlink /sys/class/net/wlan0/device/driver
../../../../bus/pci/drivers/iwlagn
(wlan0 pouziva driver iwlagn)

Sten

Re: Dotaz na kernel moduly a drivery
« Odpověď #2 kdy: 23. 09. 2011, 18:23:17 »
1) jaky je rozdil mezi kernel driverem a modulem (pokud nejaky je ?)

Ovladač (driver) je jaderný modul, který ovládá nějaké zařízení. V jádře jsou ale i neovladačové moduly, třeba šifrovací algoritmy, podpora pro různé síťové protokoly a podobně.


2) co znamena radek "kernel modules" ? Jsou to moduly k dispozici nebo moduly zavedne do jadra nebo co ?
To jsou dostupné moduly, které tvrdí, že umí to zařízení ovládat.

3) pokud mam prokazatelne zavedeny modul rt3090sta, proc je driver in use rt2860 ?
Protože si to zařízení zabral jako první. Před zavedením modulu rt3090sta modul rt2860 odeberte.

4) co znamena modul typu staging ? Souvisi to nejak s temito zmatky ?

Staging je větev jádra sdružující moduly, které nejsou stabilní, ale je zvažováno, že jako stabilní budou prohlášeny. Něco jako beta verze.