Newsgroup: it.comp.os.linux.sys
Titolo: kernel 2.6.12 e 2 schede di rete

Un saluto a tutto in NG e i miei auguri di buone feste.
Ho un problema che mi assilla da un paio di mesetti:
ho un athlon 2400+ con installata una Debian Etch e kernel 2.6.12.
Su questo sistema ci sono 2 schede PCI ethernet, una 3com 3c905c-tx e 
una D-link (chipset Realtek RTL8139).
Con il kernel 2.6.8 ha funzionato tutto bene, ma da quando sono passato 
al 2.6.12 (ho dovuto installare anche udev al posto di hotplug) ho 
notato uno strano comportamento.
All'accensione del PC le schede vengono associate a eth0 e eth1 a 
seconda di come gira il vento.
Senza cambiare nulla fisicamente (posizioni delle schede, cavi o altro), 
anche facendo semplicemente un reboot software, l'associazione eth0 e 
eth1 è completamente casuale (o per essere più precisi non ho trovato 
alcuna possibile causa che ne influenzi l'associazione).
Aggiungendo il fatto che su una scheda di rete ho un client DHCP e 
sull'altra un server DHCP (il PC funziona principalmente come 
gateway/firewall tra due reti fisiche differenti), ecco che si presenta 
il problema (potrei fare partire il server DHCP manualmente dopo aver 
verificato le associazini, ma sarebbe solamente un paliativo, non la 
soluzione).
In pratica mi piacerebbe avere sempre la stessa associazione scheda/nome 
(non mi interessa chi sia la eth0 o la eth1, purchè non cambino ad ogni 
avvio).
Ho provato googlare un po', ma finora non ho trovato alcuna soluzione.
Rigrazio anticipatamente chiunque voglia/possa dare una mano
Ancora auguri
Luca

 al 2.6.12 (ho dovuto installare anche udev al posto di hotplug) 
Installa "anche" hotplug e probabilmente tornera' tutto ok , su slack li ho
entrambi , nessun problema con 2 eth ....

Dovresti poter scegliere tu passando al boot i parametri opportuni al 
kernel o in lilo.conf o in grub.conf (o menu.lst).
I parametri da aggiungere alla fine della riga che comincia per kernel sono:
ether=<IRQ>,<IPORT>,<eth0> ether=<IRQ>,<IPORT>,<eth1>
un lspci dovrebbe dirti quali sono <IRQ> e <IOPORT> da usare.
Andrea

 avvio).
guarda se puoi "bindare" una determinata interfaccia di rete (ethX) al 
relativo MAC ADDR della scheda fisica.
su FC4 è possibile .. non so per le altre distro

Giandomenico De Tullio ha scritto:

Come si fa?
Andrea


su FC( 3, 4, ...) ?
o lo fai con il "wizard"  system-config-network (la versione -gui ce l'ha )
oppure nei vari ifcfg-eth* ... aggiungi HWADDr=
DEVICE=eth0
HWADDR=aa:bb:cc:dd:ee:ff
BOOTPROTO=none

 BOOTPROTO=none
Questo e` gia` meglio, ma ci sara` un benedetto comando che poi 
eseguira` l'azione con quei dati. Presumo un ifconfig? (purtroppo in 
qsto momento sono su un subsistema Windoze, e` tardi e ad accendere il 
linux qui vicino divento vecchio).
Vediamo che dice google per un man ifconfig, ma il mio sospetto e` che 
con quel comando imposti il MAC della scheda, non che associ il nome 
dell'interfaccia a quel MAC, perche' la prima cosa in Linux sicuramente 
la puoi fare, mentre per la seconda non so. Si`, direi che da una 
lettura della man page sia confermata la mia ipotesi, ovvero non compare 
traccia dell'assegnamento ad un MAC del nome dell'interfaccia mentre 
compare dell'impostazione del MAC all'interfaccia.
Andrea

 compare dell'impostazione del MAC all'interfaccia.
man nameif
(sara` che sei giovane e non ti sei mai trovato le eth scambiate)

frick ha scritto:

Grazie, bello. Purtroppo non sono giovane, ma non mi sono trovato le eth 
scambiate e credevo si potesse porre rimedio solo passandole come 
parametri del kernel al boot.
Rimango convinto che questo metodo funzioni o accade anche che possano 
cambiare IRQ da un boot all'altro?
Andrea

 linux qui vicino divento vecchio).
dopo lo smandrutto di rename_device() (in network-functions ) richiama
/sbin/nameif

 cambiare IRQ da un boot all'altro?
Di solito non capita, ma la mappatura tra l'interrupt PCI e quello di
sistema (PIC/APIC) e` decisa dal firmware.
Luca
-- 
Home: 
http://kronoz.cjb.net
Una donna sposa un uomo sperando che cambi, e lui non cambiera`. Un
uomo sposa una donna sperando che non cambi, e lei cambiera`.

 sistema (PIC/APIC) e` decisa dal firmware.
Da quale firmware?
-- 
 Daniele Orlandi                                                        つづく

 
dal supporto (o microcodice .. o quello che ti pare) ACPI che ha il bios.

 sistema (PIC/APIC) e` decisa dal firmware.
E non mi dirai che ci sono pure fw balzani che lo cambiano da un boot 
all'altro?! Se e` cosi`, preferirei non usarli o aggiornarli se e` 
possibile.
Andrea

 avvio).
Credo che udev serva proprio a questo. Dovresti inserire l'apposita regola.
-- 
Taekyon

 all'altro?!
Su macchine "medie" di solito capita solo aggiungendo hardware (o
cambiando manualmente il mapping). In ambienti virtualizzati (quando ad
esempio stai usando solo una partizione della macchina) direi che e` la
norma.
Luca
-- 
Home: 
http://kronoz.cjb.net
#include <stdio.h> 
int main(void) {printf("\t\t\b\b\b\b\b\b");
printf("\t\t\b\b\b\b\b\b");return 0;}

 Su macchine "medie" di solito capita solo aggiungendo hardware
o cambiando kernel ;)

 ha scritto:

Hum, non credo. Quello che puo` cambiare e` il mapping tra il nome
(ethX) ed il device (che dipende da come il kernel "trova" i device).
Luca
-- 
Home: 
http://kronoz.cjb.net
Un apostolo vedendo Gesu` camminare sulle acque:
- Cazzo se e` buono 'sto fumo!!!

 Hum, non credo.
mai provato ai tempi 2.4->2.5? comunque potrebbe capitare
coi 2.4 passando da monolitico a modulare x ragioni ovvie

 seconda di come gira il vento.
man nameif
Bye.
-- 
Alessandro Pellizzari

 ha scritto:

Mi sa che c'e` un po' di confusione ;) Nel post a cui hai risposto si
parlava del mapping degli interrupt, non dell'assegnazione dei nomi
ethX.
Luca
-- 
Home: 
http://kronoz.cjb.net
E' bene ricordare che l'intero Universo è formato,
con un'unica trascurabile eccezione, dagli "altri".
John Andrew Holmes

 ethX.
si` ero rimasto al secondo

 Luca
Chiedo scusa se non mi sono più fatto sentire, ma in questo periodo sono 
stato molto impegnato.
Ho comunque letto i vostri suggerimenti, ma ahimé nessuna soluzione ha 
funzionato.
Infatti le opzioni sul boot sono utilzzate solo nel caso che il driver 
della scheda sia inserito nel kernel e non compilato come modulo, ed io 
utilizzo il kernel pacchettizzato Debian.
Hotplug, su debian, non può essere installato con udev (conflitti di 
dipendenze dei pacchetti, quindi a meno di non installarlo a mano, non 
se ne parla).
In quanto a udev, sarà anche un prodotto ottimo, ma è anche molto 
complesso. Quando ho provato a scrivere o modificare delle regole, è 
sempre risultato in un nulla di fatto, quindi su questo campo ci riprovo 
quando avrò un po' più di tempo.
Per ciò che riguarda il "bindare" il nome al mac, su debian non è 
possibile, almeno io non ho trovato il modo. (probabilmente un mix tra 
nameif e la soluzione che ho trovato io)
Quindi posto che i nomi continuano a "saltare" tra eth0 e eth1, ho 
risolto (e posto la soluzione per i posteri) allineando il sistema ai 
nomi delle schede di rete. (forse è un po' brutto, ma per un PC 
casalingo va bene)
in pratica, questo è il mio /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
auto lo
auto eth1
auto eth0
# The loopback network interface
iface lo inet loopback
# di quale scheda si tratta?
mapping eth?
	script /usr/local/sbin/get-mac-address.sh
	map <mac della scheda 3Com> esterna
	map <mac della scheda Dlink> casa
# scheda esterna
iface esterna inet dhcp
# scheda interna
iface casa inet static
	address 10.2.9.4
	netmask 255.255.255.0
	network 10.2.9.0
	broadcast 10.2.9.255
(lo script get-mac-address era già nel sistema, mi sembra che venga 
installato da uno dei pacchetti base della rete)
Poi ho solo altri 2 punti dove il nome eth0/eth1 deve essere allineato 
con la scheda fisica: lo script di iptables e la configurazione di udhcpd
Per il primo ho inizializzato in bash 2 variabili in base al mac delle 
schede, nel secondo genero il file di configurazione prima dello "start".
Ringrazio comunque tutti.
Luca