PDA

View Full Version : Compilare modulo netfilter su Linpus


Maverick82^
20-05-2009, 22:58
Salve a tutti,

posseggo l'acer one con su Linpus. Ho la necessità di utilizzare Firestarter, per eseguire il forwarding di alcuni pacchetti. Scopro con stupore che il modulo ip_tables non è presente come modulo all'interno di questa distro.
Sono riuscito a compilate correttamente il modulo netfilter, infatti ottengo i file *.ko compilati, che ho copiato nel path /lib/modules......
il problema è che quando eseguo modprobe ip_tables ottengo questo errore

FATAL: Error inserting ip_tables (/lib/modules/2.6.23.9lw/kernel/net/ipv4/netfilter/ip_tables.ko): Unknown symbol in module, or unknown parameter (see dmesg)

e dmesg mi restituisce

ip_tables: Unknown symbol nf_register_sockopt

qualcuno può darmi una mano?

Gimli[2BV!2B]
20-05-2009, 23:00
Prova a dare un depmod (da root):

depmod -a

Maverick82^
21-05-2009, 06:35
già provato, quel comando lo eseguo subito dopo la compilazione dei moduli tramite make modules. Nessun errore...:(

jeremy.83
21-05-2009, 08:40
Scopro con stupore che il modulo ip_tables non è presente come modulo all'interno di questa distro.



:eek: :eek:

cambia distro

dragomirov
21-05-2009, 13:07
:eek: :eek:

cambia distro

Concordo. Detta questa banalità passiamo al problema. Credo che il problema che stai affrontando dipenda dalla specifica versione del kernel che stai utilizzando. Prova a compilarne una vanilla, magari salvandoti prima il file .config con tutte le impostazioni della compilazione attuale.

Gimli[2BV!2B]
21-05-2009, 19:32
Se non hai intenzione di cambiare distribuzione, specifica un paio di cose per capire meglio la situazione.


Di preciso, come hai fatto la compilazione?
Soprattutto, hai usato gli stessi sorgenti del kernel Linpus che hai installato?
(non solo della stessa versione, ma proprio i sorgenti fatti in casa Linpus contenenti le loro patch)


P.S. anch'io sarei dell'avviso di cambiare distribuzione...

Maverick82^
21-05-2009, 20:15
allora la compilazione dei moduli è stata fatta sia con i sorgenti del kernel linpus e sia con quelli scaricati da kernel.org, ovviamente stessa versione, ovvero 2.6.23.9. In entrambi i casi ottengo lo stesso errore. I passi che ho seguito per la compilazione dei moduli sono i seguenti:

* preso il file /boot/config_08067 e copiato in /usr/src/linux-2-6-23.9/.config
* make menuconfig
* selezionati tutti i moduli netfilter all'interno della voce Networking bla bla ...
* make modules (zero errori)
* copiato i file *.ko da /usr/src/linux-2.6.23.9lw/net/ipv4/netfilter a /lib/modules/2.6.23.9lw/kernel/net/ipv4/netfilter e da /usr/src/linux-2.6.23.9lw/net/netfilter a /lib/modules/2.6.23.9lw/kernel/net/netfilter
* depmod -a
* l'errore che ottengo l'ho specificato nel primo post

notavo che la nf_register_sockopt che non trova è una struttura, e googlando un pò dovrebbe trovarsi in netfilter.h. Quindi mi son fiondato in /usr/includes/ per cercarlo e.... sorpresa, il mio netfilter.h non contiene la dichiarazione di questa struttura!

Consigli? grazie ;)

Gimli[2BV!2B]
21-05-2009, 21:39
Bene, ora la situazione è più chiara.

/usr/includes ? Non mi risulta abbiano molto a che fare con il kernel.

Cercando nei sorgenti vanilla 2.6.29.4 ( rgrep -e nf_register_sockopt* /usr/src/linux-2.6.29.4/ ) dovrei aver rintracciato i vari pezzi.

In /usr/src/linux-2.6.23.9lw/include/linux/netfilter.h, dovresti trovare il prototipo della funzione:/* Functions to register get/setsockopt ranges (non-inclusive). You
need to check permissions yourself! */
int nf_register_sockopt(struct nf_sockopt_ops *reg);

All'inizio di /usr/src/linux-2.6.23.9lw/net/netfilter/nf_sockopt.c dovresti trovare l'implementazione:/* Functions to register sockopt ranges (exclusive). */
int nf_register_sockopt(struct nf_sockopt_ops *reg)
{
...
Nello stesso file si dovrebbe trovare l'elemento chiave:EXPORT_SYMBOL(nf_register_sockopt);

Se trovi tutti i pezzi direi che la cosa più logica sia provare a ricompilare l'intero kernel, non solo il modulo che ti serve.
Probabilmente Linpus rientra in una compilazione Fedora way (http://fedoraproject.org/wiki/Docs/CustomKernel), se hai disponibili gli strumenti necessari.

Prima proverei con i sorgenti Linpus, che credo contengano patch utili per i netbook.

Maverick82^
21-05-2009, 21:43
ti ringrazio, appena ho un pò di tempo proverò a compilare l'intero kernel con i sorgenti di linpus. Ti farò sapere..