Re: can't locate module
>>>>> On Sun, 24 Dec 2000 02:05:13 +0100 (CET), a.maurizi@isao.bo.cnr.it said:
>> ciao a tutti e auguri! ho ricompilato il kernel 2.2.18: ricevo
>> ora questo particolare avviso:
>>
>> modprobe: modprobe: Can't locate module char-major-10-135
>>
am> Ho appena avuto lo stesso problema ma l'ho risolto.
am> Si tratta di un modulo legato a /dev/rtc (Real Time Clock)
am> L'ho abilitato (nella sezione Character Devices) e il
am> messaggio di errore e` sparito (vedi anche
am> /usr/src/linux/Documentation/rtc.txt)
In generale, trovi l'associazione tra un "char-major number" di un
device e l'implementazione relativa nel kernel leggendo il file
`.../kernel-source-2.2.18/Documentation/devices.txt'. Ogni device in
Unix è identificato da due numerilli, detti appunti `major' e
`minor'. Un major indica una famiglia di dispositivi, il minor un
singolo elemento all'interno di questa.
Nel caso specifico, trovi:
10 char Non-serial mice, misc features
0 = /dev/logibm Logitech bus mouse
1 = /dev/psaux PS/2-style mouse port
2 = /dev/inportbm Microsoft Inport bus mouse
3 = /dev/atibm ATI XL bus mouse
4 = /dev/jbm J-mouse
4 = /dev/amigamouse Amiga mouse (68k/Amiga)
5 = /dev/atarimouse Atari mouse
6 = /dev/sunmouse Sun mouse
7 = /dev/amigamouse1 Second Amiga mouse
8 = /dev/smouse Simple serial mouse driver
9 = /dev/pc110pad IBM PC-110 digitizer pad
10 = /dev/adbmouse Apple Desktop Bus mouse
11 = /dev/vrtpanel Vr41xx embedded touch panel
13 = /dev/vpcmouse Connectix Virtual PC Mouse
128 = /dev/beep Fancy beep device
129 = /dev/modreq Kernel module load request {2.6}
130 = /dev/watchdog Watchdog timer port
131 = /dev/temperature Machine internal temperature
132 = /dev/hwtrap Hardware fault trap
133 = /dev/exttrp External device trap
134 = /dev/apm_bios Advanced Power Management BIOS
135 = /dev/rtc Real Time Clock
Detta in parole mooolto povere, quando ha bisogno di una qualche
"funzionalità" esterna, il kernel la "richiede" specificandone il suoi
numeri di dispositivo. E' compito di un altro pezzo del kernel, tipo
kmod, di riconoscere quei numeri, associarli ad un modulo del kernel,
ed eventualmente caricarlo dal filesystem se non è già "a bordo".
Non riesco a fare un esempio significativo col `rtc', ma considera
"ISDN": quando richiedi funzionalità legate a ISDN, il kernel
cerca di attivare genericamente un modulo adatto; i "char-major" dei
dispositivi associati ad ISDN sono il 43, 44 e 45, che in
`devices.txt' dicono:
43 char isdn4linux virtual modem
44 char isdn4linux virtual modem - alternate devices
45 char isdn4linux ISDN BRI driver
E' evidente però che il modulo da caricare dipende da che scheda/modem
ISDN ho montato sulla macchina (ed è questa la ragione principale che
giustifica tutto il meccanismo). A questo punto entra in ballo
"modprobe" ed in generale il sistema di caricamento dinamico dei
moduli del kernel, che viene configurato con "modutils". In
`/etc/modutils/hisax' ho:
options hisax type=36 protocol=2
alias ippp0 isdn
alias char-major-43 hisax
alias char-major-44 hisax
alias char-major-45 hisax
che di fatto stabilisce sia che modulo caricare quando viene richiesto
un certo char-major sia le opzioni di attivazione di questo modulo. Su
Debian "update-modules" provvede ad aggiornare il file
`/etc/modules.conf' a partire dalle specifiche presenti nei file
contenuti dalla directory `/etc/modutils/'.
ciao, lele.
--
nickname: Lele Gaifax | Quando vivro' di quello che ho pensato ieri
real: Emanuele Gaifas | comincero' ad aver paura di chi mi copia.
email: lele@seldati.it | -- Fortunato Depero, 1929.
Reply to: