Cambiare un modulo del kernel senza ricompilare

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.
Rispondi
mordecai
Linux 3.x
Linux 3.x
Messaggi: 752
Iscritto il: mer 10 gen 2007, 21:59

Cambiare un modulo del kernel senza ricompilare

Messaggio da mordecai »

Salve a tutti.
Vorrei sapere se è possibile cambiare un modulo del kernel, senza doverlo ricompilare.
Creare un semplice modulo e poi compilarlo inserendolo nel kernel inline, è semplice.
Il problema si pone quando il modulo che intendo cambiare appartiene già al kernel.
In tal caso il modulo buggato è hid_picolcd che si trova in /kernel/drivers/hid. Sui nuovi kernel crasha sempre, mentre sui kernel precedenti dal 2.6.35 in giù, va senza problemi.
Ergo vorrei modificare il sorgente che era presente alla versione precedente, su un kernel attuale.

È fattibile? :(

Grazie in anticipo.

Avatar utente
shark1500
Linux 3.x
Linux 3.x
Messaggi: 785
Iscritto il: gio 3 apr 2008, 14:33
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde
Località: Modna

Re: Cambiare un modulo del kernel senza ricompilare

Messaggio da shark1500 »

Purtroppo quello che vuoi fare e` molto difficile e non e` detto che funzioni (io opto piu` per il no che per il si`).

Quello che puoi fare e` trovare il bug e avvisare gli sviluppatori, cosi` non avrai piu` problemi nel futuro e nemmeno altra gente. Non e` cosi` difficile da fare, se vuoi posso scriverti qua come si fa (faccio una mini-guida).

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Cambiare un modulo del kernel senza ricompilare

Messaggio da 414N »

Puoi prendere i sorgenti del modulo attuale, modificarli (magari cambiandogli leggermente nome) ed eseguire una out-of-tree build. Nel link si fa riferimento a Debian/Ubuntu, ma, a parte i primi apt-get vari che servono a scaricare i sorgenti del kernel (che su Slackware dovresti aver già installato, in teoria), i passi da eseguire sono gli stessi su qualsiasi versione di Linux.
Se poi il modulo dovesse funzionare come desideri, puoi anche installarlo e mettere in blacklist il driver originale.
I wrapper dei vari driver proprietari (tipo i Catalyst della AMD) fanno proprio questo per compilare il modulo per il kernel.
Tuttavia concordo anch'io con shark1500 sul fatto di avvisare gli sviluppatori del bug (magari inviando una patch che lo corregga).

Avatar utente
shark1500
Linux 3.x
Linux 3.x
Messaggi: 785
Iscritto il: gio 3 apr 2008, 14:33
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde
Località: Modna

Re: Cambiare un modulo del kernel senza ricompilare

Messaggio da shark1500 »

Il problema e` che qua stiamo parlando di un modulo interno al kernel e non esterno (come i Catalyst o altro). Il kernel e` in continua evoluzione, e dal 2.6.35 ad oggi sono cambiate una miriade di cose, e secondo me quello non solo compila, ma le modifiche da fare sono talmente tante che si fa prima a trovare il bug e risolverlo :-)

Rispondi