|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Apr 2006
Messaggi: 5857
|
Compilare singolo modulo del kernel, come ?
Sto usando una distribuzione Linux per la quale non hanno rilasciato molti moduli del kernel come binari già pronti.
In particolare mi servivano vari moduli DVB. Di solito usavo Media_Build per questo ma non so perché con l'ultimo kernel della distribuzione (attualmente 3.1.7) NON funziona più. Ossia i moduli che mi compila poi danno un sacco di errori quando vengono caricati. Quindi ho optato per compilare dai sorgenti del kernel. Ecco il problema è che non posso aspettare ne di compilare tutto il kernel ne neanche tutti i modules, perché ci vorrebbe troppo tempo (2 o 3 ore). A me serve urgentemente solo uno o due moduli che probabilmente in 5-10 min compilerei, il problema è che non so come dirgli "fai solo quello" |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2004
Messaggi: 9516
|
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Apr 2006
Messaggi: 5857
|
Grazie, ma il link non sembra dire nulla di utile.
Io non ho i sorgenti a parte del modulo, ho solo tutti i sorgenti del kernel (presi dal sito ufficiale). Ed il modulo (o i moduli) che voglio compilare sono già in quei sorgenti. Solo che non voglio compilare per ore tutti i moduli, ma compilare selettivamente solo quelli che mi interessano e mancano. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2004
Messaggi: 9516
|
non li hai trovati dentro: /lib/modules/......
entri nella relativa dir e li compili p.s. alternativa: http://guide.debianizzati.org/index....o_il_kernel.3F p.s. che distro usi? |
|
|
|
|
|
#5 | |
|
Bannato
Iscritto dal: Apr 2006
Messaggi: 5857
|
Quote:
In lib/modules/... ho alcuni dei moduli Dvb + ovviamente il DVB Core, però mancano i moduli per 2 delle 3 periferiche che voglio usare io. Di solito usavo compilare il pacchetto Media_Build (che poi sono i moduli Media, quindi anche DVB, del Kernel pacchettizzati a parte) e fino al kernel 3.1.4 funzionava bene. Poi è uscito l'aggiornamento a 3.1.6 e qui il pacchetto Media_Build faceva funzionare bene solo 1 delle 2 periferiche. Al successivo aggiornamento 3.1.7 (e relativa ricompilazione di Media_Build) NON funzionava più nessun driver (webcam compresa). Dato che però usando il driver webcam fornito di serie con i moduli del kernel invece la webcam funziona ho supposto che ci sia un problema di compatibità tra media_build (ufficialmente rilasciata a Novembre) e gli ultimi kernel. Quindi volevo compilare i 4 o 5 moduli del kernel che mi servono per le 2 periferiche che mi mancano usando direttamente i sorgenti del kernel, sperando poi che i driver ottenuti siano funzionanti. Entrare nella cartella (sorgenti del kernel) che li contiene NON serve a nulla dato che il Makefile lì presente non è un makefile da compilazione standalone. Ossia se faccio "cd linux-3.1.7/drivers/media/dvb/dvb-usb/ && make" ottengo la risposta che il makefile non ha un target main da eseguire E fare il downgrade al kernel 3.1.4 (per tornare ad usare con successo media_build) non è possibile perché la distribuzione (ArchLinux) non supporta di buon grado i downgrade (es. i server repo non tengono versioni vecchie a lungo) Ultima modifica di FabryHw : 22-01-2012 alle 17:03. |
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Apr 2006
Messaggi: 5857
|
Comunque visto che la cosa si è fatta lunga alla fine l'ho lasciato tutta notte a ricompilare tutti i moduli.
Mi piacerebbe ancora sapere come compilare un singolo modulo, ma cmq ora ce li ho tutti (quelli del mio config). Il problema è farli funzionare. Ho fatto "make modules_install" e tutti moduli sono stati copiati nella cartella lib/modules/3.1.7-.... però ora non ne va neanche uno (e non parlo solo del DVB ma di tutti i moduli del kernel). Allora sono ritornato indietro restorando un backup della cartella originale e devo capire cosa non gli piaccia (il kernel è 3.1.7 ed i moduli sono stati compilati dai sorgenti di tale kernel con il config del mio kernel). L'unica cosa che ho notato è che i moduli originali sono tutti gzipped (ko.gz) mentre quelli compilati da me no. Che sia solo quello ? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2004
Messaggi: 9516
|
i sorgenti che trovi in: /usr/src non sono completi
- per compilarti il kernel con arch devi usare: https://wiki.archlinux.org/index.php/Kernel_Compilation - oppure cercare in AUR se esiste un pacchetto per il tuo modulo - il downgrade perche' non puoi farlo? cancelli i pacchetti dalla cache di pacman? |
|
|
|
|
|
#8 | |
|
Bannato
Iscritto dal: Apr 2006
Messaggi: 5857
|
Quote:
Non ci sono moduli in AUR per i miei device (o meglio uno c'è ma è vecchio, si basa su sorgenti outdated). Ho reinstallato di recente la macchina (causa problemi di corruzione sul disco Ext2 dovuti ad uno spegnimento brutale) e quindi è ora una installazione pulita partita fin da subito con 3.1.7 (niente 3.1.4 in cache). Cmq prima della reinstallazione un downgrade l'avevo fatto, ed in effetti poi bootava con il kernel 3.1.4 Però pacman non gestiva bene le dipendenze transitive e non downgradava anche gli altri pacchetti. Es. se provavi a compilare media_build nonostante la macchina stesse girando con 3.1.4 e ci fossero gli headers giusti installati, media_build cercava cmq di compilare per 3.1.6 (il kernel più recente usato in preced.). PS Per la compilazione avevo seguito proprio il link da te consigliato usando il ramo "Traditional", solo che non volevo compilare tutto. Ultima modifica di FabryHw : 21-01-2012 alle 18:15. |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2004
Messaggi: 9516
|
ma compilando tutti i moduli con:
make modules make modules_install andrebbe bene? |
|
|
|
|
|
#10 | |
|
Bannato
Iscritto dal: Apr 2006
Messaggi: 5857
|
Quote:
In pratica invece non va ed i kernel non vede tutti i nuovi moduli anche se presenti fisicamente. Adesso ho provato a gzipparli (come quelli forniti dai repository) e poi proverò a copiarli a mano |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2004
Messaggi: 9516
|
li inserisci con: insmod ?
|
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Apr 2006
Messaggi: 5857
|
No di solito riavvio e trovando l'HW dovrebbe caricare lui il modulo, e se non voglio riavviare uso modprobe.
Cmq come sospettavo non era colpa del gzip, ma sono proprio i moduli ottenuti che NON sono compatibili con il kernel. Nonostante abbia seguito i passi della guida c'è qualcosa che non va e non basta mettere il .config del proprio kernel nei sorgenti e poi dare make modules. Cmq alla fine ho risolto spulciando vari forum (non legati a ArchLinux) e facendo un collage dei vari consigli. Procedura che ha funzionato:
Ora tutto funziona, e sotto kernel 3.1.7, come quando ero sotto kernel 3.1.4 + media_build Oddio una scheda non funziona ancora bene (freeza il frontend dopo un po' che la usi), ma non funzionava bene neanche prima ed è colpa del driver ufficiale per linux (devo provare qualche variante beta, visto che l'ufficiale ha problemi) Ultima modifica di FabryHw : 22-01-2012 alle 15:13. |
|
|
|
|
|
#13 | |
|
Bannato
Iscritto dal: Apr 2006
Messaggi: 5857
|
Quote:
In più sono in contatto con lo sviluppatore del driver AF9015 (quello che non va benissimo) il quale mi consiglia assolutamente di usare Media_build che ha una versione più recente (e che sarà rilasciata solo con il kernel 3.3). Vabbè ora faccio l'aggiornamento a 3.2.1 e poi provo a compilare MB |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:17.




















