[ LUGOS ] modprobe sound (Appendix: O modulih v Linuxu)

Rok Krulec Rok na fpp.edu
Pon Jan 4 10:28:27 CET 1999


On Mon, 4 Jan 1999, Anze Vidmar wrote:

> Po nastavitvi zvocne kartice (kot modul), zalaufam "modprobe sound" in
> dobim:
> 
> compute_finetune undefined
> pmgr_inform undefined
> note_to_freq undefined
> Loading failed! The module symbols (from linux-2.0.27) don't match your
> linux-2.0.27
> 
> Kernela nisem nikoli spreminjal! Zakaj se to redno (samo na slacku) dogaja
> da se 100 simbolov ne ujema ze ob bootu po tem ko prvic re-compajlam
> kernel ?

O modulih in kernelu:
Linux jedro je sestavljeno iz skupine funkcij.
   Tiste funkcije, ki so vidne navzven in ki jih lahko uporabljajo programi
   so registrirane v tabeli simbolov jedra.
Ko prevajas jedro, lahko dolocene opcije vkljucis staticno ali dinamicno=modul.
   Vsaka opcija, ki jo vkljucis vsebuje skupek funkcij in struktur izmed
   katerih se nekatere izvozijo v tabelo simbolov jedra. Opcije, ki se
   vkljucijo kot staticne, nalozijo svoje funkcije/strukture v spomin ze
   ob bootanju kernela, tiste ki pa so oznacene kot moduli, pa jih sami
   vkljucimo po potrebi, tako, da vstavimo pripadajoce module spomocjo
   programa insmod (to lahko naredi tudi kerneld, t.i. "Demand Loading").
Moduli so navadne objektne datoteke, vendar so zlinkani tako, da se ne
   izvajajo iz tocno dolocenega naslova. Lahko so v a.out ali pa v ELF formatu.
insmod preden nalozi modul preveri, ce se vse funkcije, ki jih uporablja
   modul v tabeli simbolov jedra, kar pomeni, da so dosegljive.
   Ce funkcije v tabeli ni, se modul ne nalozi.
Linux dovoljuje t.i. "Module Stacking", ki omogoca, da moduli uporabljajo
   funkcije drugih modulov, ki morejo biti prej nalozeni.
   Primer: uspesno delovanje modulov msdos.o in vfat.o je odvisno od
   funkcij v modulu fat.o, zato je treba le-tega naloziti pred msdos.o in vfat.o
V vsakem modulu je tudi zapisano kateri verziji kernela pripada.

Odgovor na vprasanje:
Glede na imena zgornjih simbolov sklepam, da moras prej prevest in nalozit
podporo za synthesizer. Se pravi, najprej nastudiraj, kaj si vkljucil kot
modul in kaj je del jedra. Ce si dal vse kot modul, potem mores naloziti
zadeve v pravem vrstnem redu. Ponavadi gre tako, da se nalozi soundcore,
potem driver za specificno karto, pa synthesizer, pa razlicni MIDI UARTi
in nato visjenivojski moduli za mixerje e.t.c. ce seveda imas.

Reference:
Za nadalnje ctivo priporocam The Linux Kernel Guide, ki je del LDP-ja.




Dodatne informacije o seznamu Starilist