# [Risolto] Assegnare /dev/ethX ad un modulo specifico.

## comio

Ciao a tutti,

ho un piccolo problemino. Ho due schede di rete (moduli sky2 e via-rhina). Al momento del boot ed a seconda del kernel che uso ho l'assegnazione dei device /dev/ethX diversa.

Per esempio, ora /dev/eth0 risulta associata al modulo sky2 e /dev/eth1 al via-rhina (k 2.6.11-r :Cool: , ma se avvio con un altro kernel (k 2.6.10 per esempio) non è garantito che l'assegnazione sia la stessa. Questo mi crea qualche problema con la configurazione di rete, dato che una scheda mi va in dhcp mentre l'altra ha una conf fissa.

Sono sicuro che la cosa è una banalità, ma come faccio ad imporre d'ufficio che sky2 deve pilotare /dev/eth0 e via-rhina deve pilotare /dev/eth1?

vi ringrazio per le risposte.

luigi

----------

## gutter

Prova ad inserire:

```
alias eth0 sky2

alias eth1 via-rhina
```

in /etc/modules.d/aliases.

----------

## comio

risposta:

inserire nella configurazione modules.conf (oppure nella directory /etc/modules.d) gli alias:

```

 alias eth0 sky2

 alias eth1 via-rhina

```

devo provarla ancora... 

luigi

----------

## comio

 *gutter wrote:*   

> Prova ad inserire:
> 
> ```
> alias eth0 sky2
> 
> ...

 

mi sono autorisposto mentre rispondevi. Scusa.

luigi

----------

## gutter

 *comio wrote:*   

> 
> 
> mi sono autorisposto mentre rispondevi. Scusa.
> 
> luigi

 

 :Very Happy: 

.... il tag [Risolto]  :Wink: 

----------

## nomadsoul

E in caso io abbia un modulo per 4 nic come posso fare?

mi spiego meglio:

ho eth0, eth1 ed eth2 che vengono gestite da 8139too.

solo che eth0 deve avere ipfisso

eth1 in dhcp 

eth2 un altro ip.

come posso fare?

la mie linee sarebbero

```

alias eth0 8139too

alias eth1 8139too

alias eth2 8139too

```

che rimarrebbe molto ambigua come cosa...

----------

## gutter

Utilizzi la sintassi:

```

alias eth0 8139too 

alias eth1 8139too 

alias eth2 8139too 

options eth0 -o 8139too-0 io=0x200 irq=5

options eth1 -o 8139too-1 io=0x210 irq=6

options eth2 -o 8139too-2 io=0x220 irq=7

```

Dove agli indirizzi di I/O e agli IRQ sostituisci quelli che ottieni con 

```
# lspci -vv
```

----------

## Maxxer

io sapevo che si potevano ridenominare con udev tramite il mac address.

peccato che a me non abbia mai funzionato  :Sad: 

----------

## nomadsoul

```
Region 0: I/O ports at e000
```

è questo l'indirizzo di I/o ?

----------

## comio

 *Maxxer wrote:*   

> io sapevo che si potevano ridenominare con udev tramite il mac address.
> 
> peccato che a me non abbia mai funzionato 

 

infatti credo che udev sia le scelta migliore, magari anche con l'ID sul bus messo nel filtro.

luigi

----------

## gutter

 *nomadsoul wrote:*   

> 
> 
> è questo l'indirizzo di I/o ?

 

si

----------

## comio

 *nomadsoul wrote:*   

> E in caso io abbia un modulo per 4 nic come posso fare?
> 
> mi spiego meglio:
> 
> ho eth0, eth1 ed eth2 che vengono gestite da 8139too.
> ...

 

Premetto che la soluzione con alias non funzia (almeno sul mio sistema). Dopo tanti studi (10 minuti...) ho deciso che forse udev è la migliore opzione. 

Bisogna creare un file .rules in /etc/udev/rules.d/ (per esempio 60-eth_assign.rules):

```

KERNEL=="eth*", SYSFS{address}=="aa:bb:cc:dd:ee:ff", NAME="eth0"

KERNEL=="eth*", SYSFS{address}=="gg:hh:ii:jj:kk:ll", NAME="eth1"

...

KERNEL=="eth*", SYSFS{address}=="mm:nn:oo:pp:qq:rr", NAME="ethX"

```

dove aa:bb:cc:dd:ee:ff è il mac della scheda a cui voglio assegnare eth0, e così via.

Per scoprire il mac puoi usare il comando (da root):

```

udevinfo -a -p /sys/class/net/eth0/

```

a me funziona, ipotizzo che sia replicabile. Se fate qualche prova postate pure il risultato (positivo o negativo).

Ciao a tutti.

luigi

----------

## nomadsoul

 *comio wrote:*   

> 
> 
> Per scoprire il mac puoi usare il comando (da root):
> 
> ```
> ...

 

o più semplicemente 

```

ifconfig | grep HWaddr

```

 :Very Happy: 

----------

## codadilupo

non ricordo come, ma so che è possibile fare questo ( e molto altro) buttando via ifconfig e usando direttamente ip (iproute2): puoi addirittura rinominare i dev ices in 'ippo' pluto' e 'paperino'  :Wink: 

Coda

----------

## comio

Miglioro la soluzione al problema:

```

KERNEL=="eth*", SYSFS{address}=="aa:bb:cc:dd:ee:ff", NAME="eth0", WAIT_FOR_SYSFS

KERNEL=="eth*", SYSFS{address}=="gg:hh:ii:jj:kk:ll", NAME="eth1", WAIT_FOR_SYSFS

...

KERNEL=="eth*", SYSFS{address}=="mm:nn:oo:pp:qq:rr", NAME="ethX", WAIT_FOR_SYSFS

```

dove aa:bb:cc:dd:ee:ff è il mac della scheda a cui voglio assegnare eth0, e così via.

Per scoprire il mac puoi usare il comando (da root):

```

udevinfo -a -p /sys/class/net/eth0/

```

Ciao a tutti.

luigi[/quote]

----------

## SilverXXX

Allora, ho un piccolissimo problema (che mi sta facendo odiare linux in questo periodo  :Evil or Very Mad:  ). Per qualche strano motivo, da (mi pare) quando è udev a caricare i moduli, l'ordine di caricamento mi sembra completamente casuale. E avendo due schede di rete è un problema. Come posso specificare quale deve essere la 0 e quale la 1?

----------

## comio

 *SilverXXX wrote:*   

> Allora, ho un piccolissimo problema (che mi sta facendo odiare linux in questo periodo  ). Per qualche strano motivo, da (mi pare) quando è udev a caricare i moduli, l'ordine di caricamento mi sembra completamente casuale. E avendo due schede di rete è un problema. Come posso specificare quale deve essere la 0 e quale la 1?

 

devi usare il renaming di udev.

Io nel mio file /etc/udev/rules.d/60-eth.rules ho:

```

KERNEL=="eth*", SYSFS{address}=="00:0e:2e:3d:a4:7b", NAME="eth_out"

KERNEL=="eth*", SYSFS{address}=="00:15:f2:65:9a:ae", NAME="eth_dmz"

```

dove fissato il mac della scheda, ho il device eth_out per quella che va sulla lan esterna e eth_dmz in quella interna. Cerca di non rinominare in eth0, eth1, ... dato che potresti avere problemi durante la creazione del device.

ciao

----------

## randomaze

 *comio wrote:*   

> Io nel mio file /etc/udev/rules.d/60-eth.rules ho:

 

Io sapevo che le impostazioni locali si mettevano nel 10-XXXXX (ovviamente al posto di XXXXXX mettete quelloc eh più vi aggrada). Ci sono ragioni di precedenze per cui hai messo 60?

----------

## comio

 *randomaze wrote:*   

>  *comio wrote:*   Io nel mio file /etc/udev/rules.d/60-eth.rules ho: 
> 
> Io sapevo che le impostazioni locali si mettevano nel 10-XXXXX (ovviamente al posto di XXXXXX mettete quelloc eh più vi aggrada). Ci sono ragioni di precedenze per cui hai messo 60?

 

semplicemente volevo che prima fossero eseguite le regole di default... e poi quelle mie (all'epoca facevo un po' di esperimenti).

Ora come ora, potrebbe essere benissimo 10-xxxxx.

ciao

----------

