Newsgroup: it.comp.os.linux.sys
Titolo: scheda di rete capricciosa

Ciao a tutti,
il problema è questo: non riesco a fare funzionare la mia scheda di rete.
In poche parole non riesco a pingare me stesso, e questo è grave;
tutto questo dopo una situazione iniziale in cui la sheda funzionava perfettamente in una rete mista linux-win e con
samba configurato.
Ora il risultato è questo:
[root@linux root]# cat /etc/hosts
192.168.0.1 
linux.org
 linux
127.0.0.1 localhost.localdomain localhost
[root@linux root]# ping -c 4 192.168.0.1
PING 192.168.0.1 (192.168.0.1) from 10.0.0.1 : 56(84) bytes of data.
From 
10.0.0.138
: Destination Host Unreachable
[root@linux root]# ifconfig eth
eth: error fetching interface information: Device not found
#...La mia scheda di rete è scomparsa.
[root@localhost root]# ifup eth0
Il dispositivo ne2k-pci non è presente. Ritardata l'inizializzazione di eth0
In fase di shutdown, tra i messaggi di testo sullo schermo compare il seguente:
insmod: /lib/modules/2.4.7-10/kernel/drivers/net/net2k-pci.0: insmod eth0 failed
Ho dato una 'spulciata' gratis a qualche libro in libreria, e quello che sono riuscito a mettere assieme è che
probabilmente c'è
stato qualche problema con un modulo che viene caricato dinamicamente dal kernel e che si occupa della configurazione
della rete (in
pratica, in gergo win, il driver della scheda); non sono riuscito a trovare informazioni maggiori su questo modulo, nè
eventualmente
di come si possa disinstallarlo e reinstallarlo.
Qualcuno può forse darmi una dritta in merito?
Ciao
Marco

 In poche parole non riesco a pingare me stesso, e questo è grave;
route -n  
e
ifconfig
che cosa ti dicono ?
Se provi ad inserire a manella il modulo della scheda che succede ?
Davide

Ciao davide_speed*,
prima di tutto la mia scheda è la seguente: realtek rtl-8029(as)
Usando 'info driver' vengo a sapere anche che:
driver ne2k-pci
device /dev/eth
poi, eccoti l'output di alcuni comandi da shell:
[root@linux root]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
[root@linux root]# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
...
#come vedi eth0 non viene rivelato
#Per curiosità ho guardato in /dev ma non ho trovato nulla (non so se significa qualcosa
)
[root@linux root]# find / '!' -type d -name 'eth' -print0
[root@linux root]#
#Dato che durante il shutdown un warning mi dice:
#insmod: /lib/modules/2.4.7-10/kernel/drivers/net/net2k-pci.0: insmod eth0 failed
#dò un'occhiata al file /etc/modules.conf:
[root@linux net]# cat /etc/modules.conf
...
alias usb-controller usb-uhci
options ne2k-pci irq=10
alias eth0 ne2k-pci
#Poi vado a cercare il modulo:
[root@linux net]# pwd
/lib/modules/2.4.7-10/kernel/drivers/net
[root@linux net]# ls -l
...
-rw-r--r-- 1 root root 10364 set 6 2001 ne2k-pci.o
#Quindi il modulo c'è ma non viene caricato
#Ho provato a installare il modulo manualmente ma non funziona:
[root@linux net]# insmod ne2k-pci.o
ne2k-pci.o: unresolved symbol ethdev_init_R6f4799dc
ne2k-pci.o: unresolved symbol ei_interrupt_Rb93d8fa5
ne2k-pci.o: unresolved symbol NS8390_init_Rfdf726b4
ne2k-pci.o: unresolved symbol ei_open_R9b2772b7
ne2k-pci.o: unresolved symbol ei_close_R52626469
#Non so se possa essere d'aiuto, ma ho dato un'occhiata a /var/log/dmesg
e non ho trovato alcuna voce che si riferisca a 'eth' o 'eth*'.
Inoltre ci sono queste righe che potrebbero essere utili per capire qualcosa:
...
PCI: Probing PCI hardware
Unknown bridge resource 0: assuming transparent
PCI: Using IRQ router VIA [1106/0596] at 00:07.0
...
PCI: Found IRQ 10 for device 00:07.2
-------------------------------------------------------
Ora proverò a controllare in internet se il driver è quello giusto
ma non credo sia questo il problema dato che inizialmente tutto
funzionava a meraviglia, poi è successo qualcosa ma... vattelo a capire!
Hai qualche idea?
Ciao
Marco

 Hai qualche idea?
Prova a ricompilare il kernel.
Davide

Ok Davide_speed*,
ho scaricato la versione più aggiornata del driver dal sito della realtek, dove ho trovato pure un readme prezioso,
perciò proverò come prima cosa a compilarlo e a reinstallarlo come dso.
Tuttavia, quello che mi lascia perlplesso è che stavo usando proprio questo driver...Spero che il problema dipenda
quindi solo dall'aggiornamento.
La scheda è proprio quella, c'è scritto pure sopra, quindi da questo punto di vista non ho dubbi.
Prima di ricompilare il kernel ci penso un pò, visto che non l'ho mai fatto, anche se credo anch'io sia la scelta
migliore; cerco solo di rimandarla un altro pò.
Ti tengo aggiornato!!!
Ciao
Marco

 compilarlo e a reinstallarlo come dso. Tuttavia, quello che mi lascia
Il tuo problema e` che il tuo kernel non e` stato compilato con il supporto
per quel driver.
Il driver che stai cercando e` standard nel kernel dalla 1.3, credo, se non
prima, quindi non usare driver forniti dalla realtek, ma quelli del kernel.
Gli unresolved symbol indicano che nel kernel non ci sono i simboli usati dal
driver. Puoi ricompilare il driver, ma se nel kernel non ci sono non puoi
farci niente.
Ricompila il kernel. Se usi una versione diversa da quella che hai installato
non rischi nulla. Ci sono anche HOWTO che spiegano come fare. Una volta tolto
lo spauracchio vedrai che e` piu` semplice di quel che si racconta in giro :)
Bye.

Ooops,
quanto segue (e scusate se sparlo ogni tanto ma sono alle prime
armi) č ciň che ho provato prima di leggere la replica
di Alessandro Pellizzari, perciň mi sa che ho fatto male a fidarmi
del sorgente fornito dalla realtek.
Dopo aver scaricato i sorgenti del driver (il file ne2k-pci.o)
ho, come consiglia il readme, sovrascritto la versione precedente
in /usr/src/linux-2.4.7-10/drivers/net poi ho fatto quanto segue:
[root@linux linux-2.4.7-10]# uname -r
2.4.7-10
[root@linux linux-2.4.7-10]# pwd
/usr/src/linux-2.4.7-10
[root@linux linux-2.4.7-10]# make menuconfig
...
Network device support  --->
[*] Network device support
Ethernet (10 or 100Mbit)  --->
[*] Ethernet (10 or 100Mbit)
< >   Sun Happy Meal 10/100baseT support
< >   Sun GEM support
[ ]   3COM cards
< >   AMD LANCE and PCnet (AT1500 and NE2100) support
[ ]   Western Digital/SMC cards
[ ]   Racal-Interlan (Micom) NI cards
< >   AT1700/1720 support (EXPERIMENTAL)
< >   DEPCA, DE10x, DE200, DE201, DE202, DE422 support
< >   HP 10/100VG PCLAN (ISA, EISA, PCI) support
[ ]   Other ISA cards
[*]   EISA, VLB, PCI and on board controllers
< >     AMD PCnet32 PCI support
< >     Adaptec Starfire support (EXPERIMENTAL)
< >     Ansel Communications EISA 3200 support (EXPERIMENTAL)
< >     Apricot Xen-II on board Ethernet
< >     CS89x0 support
< >     DECchip Tulip (dc21x4x) PCI support
< >     Generic DECchip & DIGITAL EtherWORKS PCI/EISA
< >     Digi Intl. RightSwitch SE-X support
< >     Davicom DM910x/DM980x support
< >     EtherExpressPro/100 support
< >     Intel PRO100 / EtherExpressPro/100 support (alternate driver)
< >     Mylex EISA LNE390A/B support (EXPERIMENTAL)
< >     Myson MTD-8xx PCI Ethernet support
< >     National Semiconductor DP8381x series PCI Ethernet support
<*>     PCI NE2000 and clones support (see help)
< >     Novell/Eagle/Microdyne NE3210 EISA support (EXPERIMENTAL)
< >     Racal-Interlan EISA ES3210 support (EXPERIMENTAL)
< >     RealTek RTL-8139 PCI Fast Ethernet Adapter support
< >     SiS 900/7016 PCI Fast Ethernet Adapter support
< >     SMC EtherPower II
< >     Sundance Alta support
< >     TI ThunderLAN support
< >     VIA Rhine support
< >     Winbond W89c840 Ethernet support
Poi ho iniziato la procedura di compilazione:
[root@linux linux-2.4.7-10# make dep
[root@linux linux-2.4.7-10# make clean
[root@linux linux-2.4.7-10]# make bzImage
...
make[3]: Entering directory `/usr/src/linux-2.4.7-10/drivers/net'
gcc -D__KERNEL__ -I/usr/src/linux-2.4.7-10/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fn
o-strict-aliasing -fno-common -Wno-unused -pipe -mpreferred-stack-boundary=2 -march=i686    -c -o ne2k-pci.o ne2k-pci.c
ne2k-pci.c:133: warning: `struct device' declared inside parameter list
ne2k-pci.c:133: warning: its scope is only this definition or declaration, which is probably not what you want.
ne2k-pci.c:230: warning: return type defaults to `int'
ne2k-pci.c: In function `__initfunc':
ne2k-pci.c:301: `dev' undeclared (first use in this function)
ne2k-pci.c:301: (Each undeclared identifier is reported only once
ne2k-pci.c:301: for each function it appears in.)
ne2k-pci.c: In function `ne2k_pci_probe1':
ne2k-pci.c:350: warning: passing arg 1 of `init_etherdev' from incompatible pointer type
ne2k-pci.c:350: warning: assignment from incompatible pointer type
ne2k-pci.c:431: dereferencing pointer to incomplete type
ne2k-pci.c:432: dereferencing pointer to incomplete type
ne2k-pci.c:435: warning: passing arg 1 of `ethdev_init' from incompatible pointer type
ne2k-pci.c:436: dereferencing pointer to incomplete type
................
ne2k-pci.c:467: warning: passing arg 1 of `NS8390_init' from incompatible pointer type
ne2k-pci.c: In function `ne2k_pci_open':
ne2k-pci.c:474: dereferencing pointer to incomplete type
ne2k-pci.c:474: dereferencing pointer to incomplete type
ne2k-pci.c:476: warning: passing arg 1 of `ei_open' from incompatible pointer type
ne2k-pci.c: In function `ne2k_pci_close':
ne2k-pci.c:484: warning: passing arg 1 of `ei_close' from incompatible pointer type
ne2k-pci.c:485: dereferencing pointer to incomplete type
ne2k-pci.c: In function `ne2k_pci_reset_8390':
ne2k-pci.c:498: dereferencing pointer to incomplete type
................
ne2k-pci.c: In function `ne2k_pci_get_8390_hdr':
ne2k-pci.c:522: dereferencing pointer to incomplete type
................
ne2k-pci.c: In function `ne2k_pci_block_input':
ne2k-pci.c:560: dereferencing pointer to incomplete type
................
ne2k-pci.c: In function `ne2k_pci_block_output':
ne2k-pci.c:605: dereferencing pointer to incomplete type
................
ne2k-pci.c:664: warning: passing arg 1 of `NS8390_init' from incompatible pointene2k-pci.c:669: dereferencing pointer to
incomplete type
make[3]: *** [ne2k-pci.o] Error 1
make[3]: Leaving directory `/usr/src/linux-2.4.7-10/drivers/net'
make[2]: *** [first_rule] Error 2
make[2]: Leaving directory `/usr/src/linux-2.4.7-10/drivers/net'
make[1]: *** [_subdir_net] Error 2
make[1]: Leaving directory `/usr/src/linux-2.4.7-10/drivers'
make: *** [_dir_drivers] Error 2
[root@linux linux-2.4.7-10]#
Perciň, pure compilato staticamente dentro il kernel, non riesco a caricare il modulo
e la compilazione fallisce (molto probabilmente proprio perchč come dice A.P. nel kernel
non ci sono i simboli usati dal driver, giusto?).
p.s. Visto che sono in corsa proverň prima a caricare le varie patch al kernel per vedere
di aggiornarlo (magari non serve a niente), poi proverň a compilare l'ultimo kernel
completo.
Al prossimo resoconto!
Ciao
Marco

Problema risolto!
Dato che in due mi avete dato lo stesso consiglio, ho deciso
di mettere da parte ogni timore e affrontare la compilazione
del kernel, che si è rivelata la scelta più saggia.
Ho scaricato i sorgenti (versione 2.4.18) e ho incluso 'PCI NE2000 and clones support'
staticamente; ora ho un kernel più recente, la scheda funzionante
e un motivo di orgoglio personale (cosa volete, mi ci vuole poco...)
che mi terrà compagnia per un pò.
Che dire...Grazie!!!
Grazie davide_speed e grazie Alessandro Pellizzari
p.s. Siete inseriti nel 'club della birra', il club per ora solo
virtuale cui fanno parte tutti coloro cui debbo una birra.
Ciao
Marco



 virtuale cui fanno parte tutti coloro cui debbo una birra.
Guarda che a me la birra piace bona (vedi 
http://www.davidebianchi.net
).
Davide

Ma guarda tu!!!
Ma allora è deciso, se riuscissi ad organizzare qualche 'birrata' mi sa che non potrò esimermi dal
coinvolgerti...Figurati, un appoggio olandese...Ma chi poteva sperare in cotanta fortuna!
Che ne dici di 'The Linux beer group'...Nooo, troppo banale; che ne pensi allora di 'The Linbeer
group'...Mhmmm, forse Linux è un pò troppo nascosto. Dovremmo pensarci un pò!
Ciao
Marco