Ethernet Realtek 8139too

Da LugMan TNG.

La scheda Ethernet Realtek RTL-8139/8139C/8139C+ è una delle più comuni e con Linux ha una compatibilità pressochè perfetta. Personalemnte su tutti i computer che ho hanno questa scheda di rete PCI o integrata e non ha mai dato problemi. Da qualche anno a questa parte, però, i nuovi kernel dati di default con le distribuzioni più famose come Ubuntu e SuSE, la scheda non funziona più; per essere più precisi la scheda viene gestita in quanto il comando ifconfig eth0 non dà problemi e assegna correttamente l'IP. I problemi però vengono quando effettuo il DHCP o tentando di connettersi o pingare un host (differente ovviamente da quello locale). Questo problema è stato riscontrato su un ACER Aspire 1600 (1601LC precisamente). Altre persono in internet hanno postato soluzioni per il problema, ma questo caso è differente. Per risolvere il problema occorre RICOMPILARE IL KERNEL... il che sotto Slackware e Debian (dove normalemnte il problema non si presenta) è semplicissimo. Andando con ordine però: questa scheda il modulo 8139too e non 8139cp. Una volta scaricati i sorgenti del kernel, lanciare:

make menuconfig #oppure make oldconfig

oppure prima di lanciare questi comandi, prelevare da /proc il fie .config e metterlo nella root dei sorgenti, e quindi configurare il sistema. La cunfigurazione della scheda di rete (almno sul mio sistema) è:

Device Driver --> 
   Network device support -->
      Ethernet (10 or 100Mbit) -->
         [*] EISA, VLB, PCI and on board controllers

La configurazione della scheda è la seguente:

<M> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support
[ ]   Use PIO instead of MMIO
[*]   Support for uncommon RTL-8139 rev. K (automatic channel equalization)
[ ]   Support for older RTL-8129/8130 boards
[ ]   Use older RX-reset method

Non è necessario mettere M; può anche essere incluso direttamente nel kernel. Inoltre la prima e quarta opzione possono essere settate (almeno sotto SuSE 10.3 non mi hanno dato problemi) mentre assolutamente non mettere la terza. Quindi si procede nel metodo tipico:

make
make modules
make modules_install

La creazione del pacchetto del kernel dipende poi dalla distro utilizzata e quindi non verrà affrontato. Le distro su cui si è provato a risolvere il problema sono Slackware (la quale se non ricordo male il problema non l'aveva), Ubuntu 6.10/7.04, SuSE 10.3.

Nota: sotto Ubuntu 8.04 il problema sembra essere risolto. Su 8.10 la scheda funziona, anche se ho rilevato qualche problema attivando compiz: una volta attivato, infatti, la scheda non risponde più neppure ricaricando il modulo e occorre riavviare (ovviamente disabilitando compiz); non avendo provato a ricompilare il kernel non so se la soluzione proposta in questa pagina porti miglioramenti.