Modifica ricompilazione installazione modulo del kernel

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3072
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda joe » gio apr 23, 2015 0:10

Che dire, ti ringrazio per la traduzione della documentazione calzata al caso particolare della compilazione/installazione del solo modulo option come modulo esterno.

Un'ultima domanda.
Poniamo la seguente situazione:
abbiamo configurato, compilato e installato il kernel 4.0-smp e relativi moduli.
Poi per qualche motivo abbiamo rimosso i sorgenti, oppure abbiamo dato un "make clean" o "make mrproper" che ha riportato i sorgenti allo stato pulito.

Ora ci viene in mente di modificare il modulo "option" e testarne le modifiche: quindi dobbiamo modificarlo, ricompilarlo e installarlo.
Ma sta volta ci manca qualcosa, non avendo più i sorgenti del kernel lavorati disponibili.

Domanda:
Abbiamo qualche speranza di risparmiarci la compilazione dell'intero kernel oppure ci tocca?

Da come leggo nella documentazione servirebbe:
1- il ".config" relativo al nostro kernel in uso
2- gli headers relativi al nostro kernel in uso
3- file Module.symvers (immagino generato dalla compilazione del nostro kernel in uso)

Ecco il pezzo della documentazione che spiega cosa serve per compilare un modulo esterno.

Codice: Seleziona tutto

=== 2. How to Build External Modules

To build external modules, you must have a prebuilt kernel available
that contains the configuration and header files used in the build.
Also, the kernel must have been built with modules enabled. If you are
using a distribution kernel, there will be a package for the kernel you
are running provided by your distribution.

An alternative is to use the "make" target "modules_prepare." This will
make sure the kernel contains the information required. The target
exists solely as a simple way to prepare a kernel source tree for
building external modules.

NOTE: "modules_prepare" will not build Module.symvers even if
CONFIG_MODVERSIONS is set; therefore, a full kernel build needs to be
executed to make module versioning work.

La nota qui in fondo mi pare che non lasci scampo:
se voglio modificare un modulo e testarlo, per compilarlo e installarlo in modo che funzioni devo compilare da capo il kernel.

La questione del "make modules_prepare" non l'ho capita: cosa farebbe questo comando esattamente?
Fa solo una verifica oppure scrive anche qualcosa?

Però a me viene in mente:
ma se io ho dopo che ho compilato la prima volta mi copio e conservo gli headers, il config, e anche il Modules.symvers dovrei poter ricreare la situazione di post compilazione del mio kernel in uso.... o no?

In ogni caso grazie ancora per la spiegazione! :)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3072
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda joe » gio apr 23, 2015 12:44

Ferma restando la domanda del mio post precedente, volevo comunicarvi che ho testato la procedura: praticamente con molta fantasia ho ricopiato il modulo originale "option.c.orig" nella sua directory all'interno dei sorgenti del kernel.
Quindi ho eseguito la procedura descritta da rik70 così come indicato nella documentazione "modules.txt".

Tutto è filato liscio, il modulo è effettivamente presente in "extra". Quindi di fatto al momento ho due moduli option:

1- uno "in-tree" nella dir /lib/modules/$VERSION/kernel/drivers/usb/serial (è la versione modificata da me, quella che riconosce la mia chiavetta al volo)

2- uno "out-of-tree" nella dir /lib/modules/$VERSION/extra (è la versione originale)

A questo punto ho staccato dalle usb tutti gli aggeggi che lo stavano usando, poi l'ho rimosso con "modprobe -r".
Adesso il punto è verificare quale venga caricato.
Mi aspetto che venga caricato il modulo originale, perchè si trova in "extra".

Quindi il comportamento atteso dovrebbe essere:
- attacco il dispositivo
- non succede un piffero perchè il modulo option con priorità è quello vecchio

Invece accade il contrario: attaccando la chiavetta il modulo option vi si aggancia correttamente, è chiaro che viene richiamato quello "in-tree" e non quello in extra.

Per semplificare il test ho provato a dare un bel "modprobe -v option" così specifica quali moduli precisamente vengono caricati.

Codice: Seleziona tutto

[root@darkstar ~]# modprobe -r option
[root@darkstar ~]# lsmod|grep option

[root@darkstar ~]# diff /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/option.ko /lib/modules/3.19.4-hb_smp/extra/option.ko
I file binari /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/option.ko e /lib/modules/3.19.4-hb_smp/extra/option.ko sono diversi

[root@darkstar ~]# modprobe -v option
insmod /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/usbserial.ko
insmod /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/usb_wwan.ko
insmod /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/option.ko

Che conferma quanto riscontrato all'inserimento della chiavetta: il modulo caricato non è quello in "extra" ma quello "in-tree".
Nota come il modulo nuovo venga piazzato in '/lib/modules/4.0.0-smp/extra': in questo modo verrà caricato prima del vecchio - che pertanto non sarà necessario rimuovere.

Alla luce del mio test, questa affermazione è da rivedere... Omagari è giustissima e può essere che abbia sbagliato anche qualcosa io o che si venga a sovrapporre qualche altro problema...
Mi informerò meglio sulla priorità dei moduli...

rik70
Iper Master
Iper Master
Messaggi: 2097
Iscritto il: gio mar 10, 2011 9:21
Slackware: 14.2
Kernel: 5.0.21
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda rik70 » gio apr 23, 2015 13:54

Qualcosa che non va c'è di sicuro. Hai dato depmod -a versione_kernel dopo l'install?
Questo è il mio output sul kernel 3.18:

Codice: Seleziona tutto

modinfo option | grep filename
filename:       /lib/modules/3.18.11-ck1-smp/extra/option.ko
Punta nella direzione giusta, no?

Poi:

Codice: Seleziona tutto

sudo modprobe -v option

Codice: Seleziona tutto

insmod /lib/modules/3.18.11-ck1-smp/kernel/drivers/usb/serial/usbserial.ko
insmod /lib/modules/3.18.11-ck1-smp/kernel/drivers/usb/serial/usb_wwan.ko
insmod /lib/modules/3.18.11-ck1-smp/extra/option.ko

Vista l'ultima riga? Il modulo è caricato dalla directory 'extra/'. Questo dovrebbe fare anche udev quando inserisci la pennetta.

Quanto a `modules_prepare` e la sua utilità, ti rispondo al prossimo al post.

rik70
Iper Master
Iper Master
Messaggi: 2097
Iscritto il: gio mar 10, 2011 9:21
Slackware: 14.2
Kernel: 5.0.21
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda rik70 » gio apr 23, 2015 14:20

joe ha scritto:Ecco il pezzo della documentazione che spiega cosa serve per compilare un modulo esterno.

Codice: Seleziona tutto

    === 2. How to Build External Modules
[...]
    NOTE: "modules_prepare" will not build  even if
    CONFIG_MODVERSIONS is set; therefore, a full kernel build needs to be
    executed to make module versioning work.



La nota qui in fondo mi pare che non lasci scampo:
se voglio modificare un modulo e testarlo, per compilarlo e installarlo in modo che funzioni devo compilare da capo il kernel.

Allora, l'assenza di quel Module.symvers non implica che il modulo esterno non venga compilato. Anzi, è vero il contrario.

Ma andiamo con ordine. Tu solitamente compili un modulo esterno su un kernel che hai installato nel sistema. Altrimenti che te ne fai? Per far questo hai bisogno dei sorgenti del kernel opportunamente preparati.
Poi lascia stare il fatto che alcune distribuzioni dividono i sorgenti in pacchetti diversi:
uno di solito serve alla compilazione dei moduli esterni;
l'altro - aggiuntivo - per la ricompilazione dell'intero kernel. Ma la sostanza non cambia.

Su slackware tu hai i sorgenti completi. E sono in questo stadio:
dopo la compilazione/installazione del kernel - immagine + moduli - viene dato:

Codice: Seleziona tutto

make clean
make prepare
rm .version

Pronto per servire allo scopo - compilazione/ricompilazione di moduli.
Fine della storia.

-

Veniamo al make modules_prepare.
Io lo utilizzo solo in questo caso:
- esce un kernel nuovo. Devo testare che il modulo (esterno) nvidia funzioni. Ovviamente non mi metto a compilare tutto il kernel per poi rimanere 'a mani vuote'.

Perciò seguo questo procedimento:
- scompatto i sorgenti del kernel e mi sposto nella directory radice.
- copio il mio config funzionante - o quello di Pat - e do:

Codice: Seleziona tutto

make oldconfig

- correggo quello che c'è da correggere e poi:

Codice: Seleziona tutto

make modules_prepare


Mi sposto dove ho i sorgenti dei driver nvidia, li scompatto e provo a compilare:

Codice: Seleziona tutto

make SYSSRC=/usr/src/versione_kernel module

Il make restituisce sempre un warning riguardante l'assenza di quel Module.symvers, ma il modulo viene compilato.
Se fallisce, il problema è di compatibilità col nuovo kernel.

A questo punto so da subito come muovermi: se compila, installo il nuovo kernel. Altrimenti cerco una patch e se non la trovo rinuncio al nuovo kernel.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3072
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda joe » gio apr 23, 2015 15:12

Ummm... Allora ho incasinato qualcosa io forse, ma cosa potrebbe essere che non va... Ho seguito gli stessi tuoi passaggi alla lettera, nessun warning.
Ho anche dato depmod -a.
Ho tentato un improbabile soluzione riavviano il PC (non si sa mai :lol: ).

Tant'è se ora verifico con "modinfo":

Codice: Seleziona tutto

# modinfo -n option
/lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/option.ko

Siccome poi ho visto che il modulo dipende da usbserial e da usb_wwan, ho provato a ricompilare tutti e tre, come mostra il tuo output però questo passaggio non serve.. ad ogni modo ho editato il Kbuild della dir "serial", lo rifaccio per mostrare cosa dice (nel frattempo avevo riavviato) :

Codice: Seleziona tutto

[joe@darkstar linux-3.19.4]$ cat drivers/usb/serial/Kbuild
obj-$(CONFIG_USB_SERIAL)                        += usbserial.o

usbserial-y := usb-serial.o generic.o bus.o

usbserial-$(CONFIG_USB_SERIAL_CONSOLE)  += console.o

obj-$(CONFIG_USB_SERIAL_OPTION)                 += option.o
obj-$(CONFIG_USB_SERIAL_WWAN)                   += usb_wwan.o

[joe@darkstar linux-3.19.4]$ make -C /lib/modules/$(uname -r)/build M=drivers/usb/serial
make: Entering directory `/home/joe/.kernel-build/linux-3.19.4'
  Building modules, stage 2.
  MODPOST 3 modules
make: Leaving directory `/home/joe/.kernel-build/linux-3.19.4'

[joe@darkstar linux-3.19.4]$ su
Password:
[root@darkstar linux-3.19.4]# make -C /lib/modules/$(uname -r)/build M=drivers/usb/serial modules_install
make: Entering directory `/home/joe/.kernel-build/linux-3.19.4'
  INSTALL drivers/usb/serial/option.ko
  INSTALL drivers/usb/serial/usb_wwan.ko
  INSTALL drivers/usb/serial/usbserial.ko
  DEPMOD  3.19.4-hb_smp
make: Leaving directory `/home/joe/.kernel-build/linux-3.19.4'
[root@darkstar linux-3.19.4]# depmod -a
[root@darkstar linux-3.19.4]#

[root@darkstar linux-3.19.4]# modprobe -r option qmi_wwan
[root@darkstar linux-3.19.4]# lsmod|grep "option\|usbs\|cdc\|ww"
[root@darkstar linux-3.19.4]# modprobe -v option
insmod /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/usbserial.ko
insmod /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/usb_wwan.ko
insmod /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/option.ko

Non capisco, perchè si ostini a voler caricare i moduli in "kernel" piuttosto che quelli in extra...
E anche modinfo faccia riferimento a quello "in-tree"...

rik70
Iper Master
Iper Master
Messaggi: 2097
Iscritto il: gio mar 10, 2011 9:21
Slackware: 14.2
Kernel: 5.0.21
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda rik70 » gio apr 23, 2015 15:26

Prova a incollare qui:

Codice: Seleziona tutto

make -C /lib/modules/$(uname -r)/build M=drivers/usb/serial modules_install --dry-run

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3072
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda joe » gio apr 23, 2015 16:29

Codice: Seleziona tutto

[root@darkstar linux-3.19.4]# make -C /lib/modules/$(uname -r)/build M=drivers/usb/serial modules_install --dry-run
make: Entering directory `/home/joe/.kernel-build/linux-3.19.4'
mkdir -p /lib/modules/3.19.4-hb_smp/extra
make -f ./scripts/Makefile.modinst
echo '  INSTALL drivers/usb/serial/option.ko'; mkdir -p /lib/modules/3.19.4-hb_smp/extra ; cp drivers/usb/serial/option.ko /lib/modules/3.19.4-hb_smp/extra ; true /lib/modules/3.19.4-hb_smp/extra/option.ko ; true /lib/modules/3.19.4-hb_smp/extra/option.ko || true ; true /lib/modules/3.19.4-hb_smp/extra/option.ko
echo '  INSTALL drivers/usb/serial/usb_wwan.ko'; mkdir -p /lib/modules/3.19.4-hb_smp/extra ; cp drivers/usb/serial/usb_wwan.ko /lib/modules/3.19.4-hb_smp/extra ; true /lib/modules/3.19.4-hb_smp/extra/usb_wwan.ko ; true /lib/modules/3.19.4-hb_smp/extra/usb_wwan.ko || true ; true /lib/modules/3.19.4-hb_smp/extra/usb_wwan.ko
echo '  INSTALL drivers/usb/serial/usbserial.ko'; mkdir -p /lib/modules/3.19.4-hb_smp/extra ; cp drivers/usb/serial/usbserial.ko /lib/modules/3.19.4-hb_smp/extra ; true /lib/modules/3.19.4-hb_smp/extra/usbserial.ko ; true /lib/modules/3.19.4-hb_smp/extra/usbserial.ko || true ; true /lib/modules/3.19.4-hb_smp/extra/usbserial.ko
:
echo '  DEPMOD  3.19.4-hb_smp'; /bin/sh ./scripts/depmod.sh /sbin/depmod 3.19.4-hb_smp ""
make: Leaving directory `/home/joe/.kernel-build/linux-3.19.4'

Mi pare tutto piuttosto normale...
Anche perchè i files ko vengo regolarmente installati in "extra"....
Il punto è che non vengono caricati quando lancio il modprobe... vengono caricati quelli in-tree.

rik70
Iper Master
Iper Master
Messaggi: 2097
Iscritto il: gio mar 10, 2011 9:21
Slackware: 14.2
Kernel: 5.0.21
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda rik70 » gio apr 23, 2015 16:54

Non ho la minima idea del perché da te non funzioni.
Qui tutto in regola:

Codice: Seleziona tutto

modinfo -n option
/lib/modules/4.0.0-smp/extra/option.ko

Codice: Seleziona tutto

sudo modprobe -v option
insmod /lib/modules/4.0.0-smp/kernel/drivers/usb/serial/usbserial.ko
insmod /lib/modules/4.0.0-smp/kernel/drivers/usb/serial/usb_wwan.ko
insmod /lib/modules/4.0.0-smp/extra/option.ko


Prova a controllare i permessi della directory extra e del suo contenuto. Altro non mi viene in mente.

P.s.

Codice: Seleziona tutto

depmod -a versione_kernel
è obbligatorio, altrimenti non carica dal nuovo percorso.
Ultima modifica di rik70 il gio apr 23, 2015 18:11, modificato 1 volta in totale.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3072
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda joe » gio apr 23, 2015 17:38

Boh... ci capisco sempre meno sinceramente. Dovrebbe funzionare...

I permessi della dir "extra" sembra no identici a quelli della dir "kernel/.../serial":

Codice: Seleziona tutto


[root@darkstar libqmi]# ls -l /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/option.ko
-rw-r--r-- 1 root root 121456 apr 22 01:45 /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/option.ko
[root@darkstar libqmi]# ls -l /lib/modules/3.19.4-hb_smp/extra/
totale 168
-rw-r--r-- 1 root root 121283 apr 23 15:00 option.ko
-rw-r--r-- 1 root root  10876 apr 23 15:00 usb_wwan.ko
-rw-r--r-- 1 root root  36247 apr 23 15:00 usbserial.ko
[root@darkstar libqmi]# ls -ld /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/
drwxr-xr-x 2 root root 4096 apr 22 01:45 /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial//
[root@darkstar libqmi]# ls -ld /lib/modules/3.19.4-hb_smp/extra/
drwxr-xr-x 2 root root 4096 apr 23 14:05 /lib/modules/3.19.4-hb_smp/extra//


Scusa ma non capisco il comando modprobe nel PS. A me dice:

Codice: Seleziona tutto

# modprobe -a `uname -r`
WARNING: Module 3.19.4-hb_smp not found.


Bo..

rik70
Iper Master
Iper Master
Messaggi: 2097
Iscritto il: gio mar 10, 2011 9:21
Slackware: 14.2
Kernel: 5.0.21
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda rik70 » gio apr 23, 2015 18:10

Scusa, è un refuso.
sostituisci modprobe con depmod.

Correggo sopra.

Perdonami.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3072
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda joe » gio apr 23, 2015 18:38

Avevo già dato "depmod -a", come vedi dai miei post precedenti.
Inoltre la versione del kernel in questo caso non dovrebbe essere necessaria, come spiega il "man depmod":

Codice: Seleziona tutto

If a version is provided, then that kernel version's module directory is used rather than the current kernel version (as returned by uname -r)


Invece una cosa interessante potrebbe essere dare un'occhiata a cosa diavolo faccia depmod di preciso.
Leggendo il man ho notato lo switch "-v" (verbose).

Codice: Seleziona tutto

-v --verbose
           In verbose mode, depmod will print (to stdout) all the symbols each module depends on and the module's file name which provides that symbol.

Provando ad aggiungere -v allora e controllare in pipe con less cosa succede ecco cosa sputa fuori (ne riporto) qualche riga:

Codice: Seleziona tutto

/lib/modules/3.19.4-hb_smp/kernel/arch/x86/crypto/serpent-sse2-i586.ko needs "glue_cbc_encrypt_128bit": /lib/modules/3.19.4-hb_smp/kernel/arch/x86/crypto/glue_helper.ko
/lib/modules/3.19.4-hb_smp/kernel/arch/x86/kvm/kvm-intel.ko needs "kvm_rdpmc": /lib/modules/3.19.4-hb_smp/kernel/arch/x86/kvm/kvm.ko
/lib/modules/3.19.4-hb_smp/kernel/arch/x86/kvm/kvm-amd.ko needs "kvm_rdpmc": /lib/modules/3.19.4-hb_smp/kernel/arch/x86/kvm/kvm.ko
/lib/modules/3.19.4-hb_smp/kernel/fs/ocfs2/ocfs2_stack_user.ko needs "dlm_new_lockspace": /lib/modules/3.19.4-hb_smp/kernel/fs/dlm/dlm.ko
/lib/modules/3.19.4-hb_smp/kernel/fs/exofs/libore.ko needs "osd_req_write": /lib/modules/3.19.4-hb_smp/kernel/drivers/scsi/osd/libosd.ko
/lib/modules/3.19.4-hb_smp/kernel/fs/exofs/exofs.ko needs "osd_execute_request": /lib/modules/3.19.4-hb_smp/kernel/drivers/scsi/osd/libosd.ko
/lib/modules/3.19.4-hb_smp/kernel/fs/exofs/exofs.ko needs "osduld_device_info": /lib/modules/3.19.4-hb_smp/kernel/drivers/scsi/osd/osd.ko
/lib/modules/3.19.4-hb_smp/kernel/fs/exofs/exofs.ko needs "ore_remove": /lib/modules/3.19.4-hb_smp/kernel/fs/exofs/libore.ko
/lib/modules/3.19.4-hb_smp/kernel/fs/pstore/ramoops.ko needs "encode_rs8": /lib/modules/3.19.4-hb_smp/kernel/lib/reed_solomon/reed_solomon.ko
/lib/modules/3.19.4-hb_smp/kernel/fs/dlm/dlm.ko needs "sctp_do_peeloff": /lib/modules/3.19.4-hb_smp/kernel/net/sctp/sctp.ko
/lib/modules/3.19.4-hb_smp/kernel/fs/ecryptfs/ecryptfs.ko needs "key_type_encrypted": /lib/modules/3.19.4-hb_smp/kernel/security/keys/encrypted-keys/encrypted-keys.ko
[...]

Chissà che tra queste righe non ci debbano essere anche i nuovi moduli compilati esterni e collocati in "extra"...
Nel tuo caso vengono riportati?
Ad esempio se greppiamo su "option.ko":

Codice: Seleziona tutto

# depmod -av|grep option.ko
/lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/option.ko needs "usb_wwan_write": /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/usb_wwan.ko
/lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/option.ko needs "usb_serial_deregister_drivers": /lib/modules/3.19.4-hb_smp/kernel/drivers/usb/serial/usbserial.ko

E se poi greppiamo anche su "extra" (il mnome della dir dove sta collocato il modulo compilato esterno)...

Codice: Seleziona tutto

# depmod -av|grep extra
#

Ovvero non c'è traccia della nuova directory "extra".
Magari è normale e non c'entra nulla, però visto che hai testato anche tu la cosa, non è che potresti controllare un'attimo cosa restituisce nel tuo caso?

rik70
Iper Master
Iper Master
Messaggi: 2097
Iscritto il: gio mar 10, 2011 9:21
Slackware: 14.2
Kernel: 5.0.21
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda rik70 » gio apr 23, 2015 18:51

Codice: Seleziona tutto

sudo depmod -av|grep option.ko

Codice: Seleziona tutto

/lib/modules/4.0.0-smp/extra/option.ko needs "usb_wwan_write": /lib/modules/4.0.0-smp/kernel/drivers/usb/serial/usb_wwan.ko
/lib/modules/4.0.0-smp/extra/option.ko needs "usb_serial_deregister_drivers": /lib/modules/4.0.0-smp/kernel/drivers/usb/serial/usbserial.ko

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3072
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda joe » gio apr 23, 2015 19:07

Ok. grazie...
Nel tuo caso manca quello nella subdir "kernel" ovvero quello "in tree".... quello originale diciamo... Boh...

Ad ogni modo, tento una nuova ricompilata del modulo, ma prima ti chiederei se puoi postarmi il tuo "Kbuild" preciso. Era così?

Codice: Seleziona tutto

obj-$(CONFIG_USB_SERIAL_OPTION)                 += option.o


Ah una cosa, e se volessi ripulire la directory "extra" senza però ripulire i srgenti compilati "in-tree" del kernel?

Grazie del supporto! :)

rik70
Iper Master
Iper Master
Messaggi: 2097
Iscritto il: gio mar 10, 2011 9:21
Slackware: 14.2
Kernel: 5.0.21
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda rik70 » gio apr 23, 2015 19:25

joe ha scritto:Nel tuo caso manca quello nella subdir "kernel" ovvero quello "in tree".... quello originale diciamo... Boh...

Manca nel senso che trova prima quello in extra, dunque ignora l'altro. Infatti se lo rimuovo e riaggiorno la lista dei moduli:

Codice: Seleziona tutto

sudo rm -fv /lib/modules/4.0.0-smp/extra/*
"/lib/modules/4.0.0-smp/extra/option.ko" rimosso

sudo depmod -av `uname -r` | grep option.ko
/lib/modules/4.0.0-smp/kernel/drivers/usb/serial/option.ko needs "usb_wwan_write": /lib/modules/4.0.0-smp/kernel/drivers/usb/serial/usb_wwan.ko
/lib/modules/4.0.0-smp/kernel/drivers/usb/serial/option.ko needs "usb_serial_deregister_drivers": /lib/modules/4.0.0-smp/kernel/drivers/usb/serial/usbserial.ko
la situazione diviene identica alla tua.

Nel Kbuild ho questo:

Codice: Seleziona tutto

obj-$(CONFIG_USB_SERIAL_OPTION)         += option.o


joe ha scritto:Ah una cosa, e se volessi ripulire la directory "extra" senza però ripulire i srgenti compilati "in-tree" del kernel?

Cosa intendi: la directory che c'è in /lib/modules/$(uname -r) o parli del modulo ricompilato che c'è nei sorgenti?
Nel secondo caso devi fare:

Codice: Seleziona tutto

make -C /lib/modules/$(uname -r)/build M=drivers/usb/serial clean


A proposito, mi viene un dubbio: tu i sorgenti gli hai puliti con:

Codice: Seleziona tutto

make clean
make prepare
rm .version
prima di procedere?
Perché io parto da questa situazione, ma non ti so dire per certo se c'entri con la questione.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3072
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Modifica ricompilazione installazione modulo del kernel

Messaggioda joe » gio apr 23, 2015 20:41

No io non li ho dati quei comandi.
Perchè non vorrei rischiare che mi toccasse ricompilare tutto nel caso in cui mi servisse solo compilare un modulo come in questo caso...
Potrei farmi un backup dei sorgenti lavorati che ho adesso, e lanciare i tuoi comandi...

Ma una domanda, se io do "make help" il target "prepare" non lo trovo... cosa fà di preciso?

Quei comandi lì comunque li intendi lanciati dalla root dir dei sorgenti giusto?