Pagina 1 di 1

[RISOLTO]Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 20:32
da robbybby
Si tratta di una Slackware 13.1 (a 64 bit, ma credo sia ininfluente).
Ho appena cambiato la motherboard. Ho preso una Gigabyte con chipset AMD785G, con South Bridge SB710.
La scheda di rete è la solito Realtek 8111, pienamente riconosciuta dal kernel, infatti:

Codice: Seleziona tutto

r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
r8169 0000:02:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
r8169 0000:02:00.0: setting latency timer to 64
r8169 0000:02:00.0: irq 27 for MSI/MSI-X
eth0: RTL8168c/8111c at 0xffffc900106ef000, 6c:dd:44:71:89:3f, XID 1c4000c0 IRQ 27
A un certo punto, udev cambia eth0 in eth1

Codice: Seleziona tutto

udev: renamed network interface eth0 to eth1
Perché?
Per risolvere ho semplicemente aggiunto anche eth1 in /etc/rc.d/rc.inet1.conf

Codice: Seleziona tutto

# Config information for eth1:
IPADDR[1]="192.168.1.15"
NETMASK[1]="255.255.255.0"
USE_DHCP[1]=""
DHCP_HOSTNAME[1]=""
E così funziona.
ifconfig -a ritorna

Codice: Seleziona tutto

eth1      Link encap:Ethernet  HWaddr 2c:f1:47:71:89:3f  
          inet addr:192.168.1.15  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::67f0:49ef:ff71:882f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13120 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9976 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:16024459 (15.2 MiB)  TX bytes:1298655 (1.2 MiB)
          Interrupt:27 Base address:0xe000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1351 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1351 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:142411 (139.0 KiB)  TX bytes:142411 (139.0 KiB)

pan0      Link encap:Ethernet  HWaddr ee:2a:56:10:81:7f  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Quindi la eth0 proprio non esiste più.
La pan0 è la chiavetta Bluetooth.
Il fatto è che l'installazione è la stessa che usavo con la vecchia scheda madre. Ho tenuto lo stesso disco. Tanto ho su la Slackware 13.1 col kernel huge, e riconosce tutto.
Qualcuno ha idee in merito?

PS: non sto usando la scheda grafica integrata, ma la nVidia che già avevo prima.

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 20:36
da conraid
perché dovevi cancellare le regole di udev. Guarda la documentazione varia CHANGES_AND_HITS, il wiki qui, vari post passati, etc...

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 21:05
da robbybby
Scusa, ma perché devo cancellare le regole di udev? L'installazione è stata fatta ex-novo, non è stata fatta aggiornando una release precedente. Ho cambiato la motherboard, ma l'installazione è di una Slackware 13.1 fatta partendo da un hard disk vuoto.
Comunque adesso mi leggo per bene la documentazione che mi hai suggerito.

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 21:11
da conraid
avevo capito che tu avessi mentenuto la vecchia installazione
Il fatto è che l'installazione è la stessa che usavo con la vecchia scheda madre. Ho tenuto lo stesso disco. Tanto ho su la Slackware 13.1 col kernel huge, e riconosce tutto.
Comunque quel messaggio indica che c'è una regola di udev che dice di fare così, controlla udev e guarda le regole che ha creato

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 21:59
da robbybby
Ho controllato.
In effetti c'è una regola (l'unica regola in cat 70-persistent-net.rules) che rinomina ethx con il mio mac address in eth1.

Codice: Seleziona tutto

 $cat 70-persistent-net.rules 

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
La mia domanda adesso è: chi gliel'ha messa? E perché? Non sono molto esperto di udev.

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 22:04
da conraid
Sicuro che è una installazione ex-novo? Guarda che qui installazione/aggiornamento non c'entra niente, è più legato alle modifiche dell'hardware, anche semplicemente cambiando scheda di rete succede così.

Quelle regole le crea udev quando trova una nuova scheda di rete, se tu ne aggiungi un'altra (cioè con mac address diverso) creerà una regola e metterà eth2
E' molto utile questo, così tu sai sempre a quale scheda si riferisce la tua configurazione

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 22:09
da robbybby
Ok, comincio a capirci qualcosa.
L'installazione è stata fatta ex novo un paio di settimane fa.
Oggi ho cambiato la motherboard e, di conseguenza, la scheda di rete.
Quindi tu mi dici che, vedendo una scheda di rete diversa, le assegna il nome eth1, per non andare in conflitto con eth0. E, fin qui, ci siamo.
Però la scheda di rete vecchia non esiste più essendo saldata sulla vecchia motherboard :)
Se ha creato la regola, vuol dire che, da qualche parte, su qualche file, ci deve essere scritto il mac address della vecchia scheda, altrimenti come potrebbe sapere che è una nuova, e creare la regola?
Ho capito bene, o non ho capito un accidente?
Se ho capito bene, dove potrebbe essere scritto?
Nel sistema c'è una solo scheda di rete, come ho verificato con ifconfig -a.

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 22:13
da robbybby
Sto leggendo /lib/udev/rules.d
Ho visto che prende in considerazione anche le schede ieee1394 (firewire). In effetti, ho una firewire. Potrebbe essere quella che incasina le cose?
No, ho sbagliato. La firewire non c'entra niente.
Mi sa che avevi ragione nel primo post, Corrado: forse (dopo provo) basta cancellare 70-persistent-net.rules.

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 22:19
da conraid
robbybby ha scritto:Ok, comincio a capirci qualcosa.
L'installazione è stata fatta ex novo un paio di settimane fa.
Oggi ho cambiato la motherboard e, di conseguenza, la scheda di rete.
Quindi tu mi dici che, vedendo una scheda di rete diversa, le assegna il nome eth1, per non andare in conflitto con eth0. E, fin qui, ci siamo.
Però la scheda di rete vecchia non esiste più essendo saldata sulla vecchia motherboard :)
Se ha creato la regola, vuol dire che, da qualche parte, su qualche file, ci deve essere scritto il mac address della vecchia scheda, altrimenti come potrebbe sapere che è una nuova, e creare la regola?
Ho capito bene, o non ho capito un accidente?
Se ho capito bene, dove potrebbe essere scritto?
Nel sistema c'è una solo scheda di rete, come ho verificato con ifconfig -a.
Allora, riassumo :-)
1) avevo capito bene allora, non hai installato ex-novo, ma hai cambiato sistema su una vecchia installazione (se fatta ieri o un anno fa non ha importanza)
2) proprio perché non esiste più la vecchia ti ho detto che dovevi cancellare il file delle regole
3) c'è scritto nel file delle regole il mac address, udev legge quel file e da i nomi. Se non c'è più a udev non interessa molto. Anche perché magari lo hai fatto per esigenze tue. Magari sono schede esterne (pensa alle penne wifi, etc...).
4) non è scritto da nessuna parte, se non in quel file. C'è una solo scheda sì, ma che vuol dire? Cambia mac address e cambia nome. Se volevi ripartire da zero dovevi cancellare quel file. E se avessi letto la documentazione da qualche versione di Slackware in qua lo sapresti ;-)

5) riguardo alla firewire lo vedi subito, guarda il mac address, ma se non avevi cancellato il vecchio file.... mi fermo qui :p

a me sembra più strano che sia sparita la vecchia regola

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 22:23
da robbybby
Grazie Conraid, adesso è tutto chiaro.
Però, a mia discolpa, come vedi, ci ero arrivato da me qualche secondo prima che tu mi rispondessi :)
Comunque grazie.

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 22:25
da conraid
robbybby ha scritto:Grazie Conraid, adesso è tutto chiaro.
Però, a mia discolpa, come vedi, ci ero arrivato da me qualche secondo prima che tu mi rispondessi :)
Comunque grazie.

riguardo alla firewire devo correggermi, se quel file contiene una sola regola, oltre ad essere strano che abbia cancellato la vecchia (questo andrebbe indagato), se l'avesse presa in considerazione ci sarebbe una regola.
Semplicemente trovando già eth0 ha chiamato la scheda di rete eth1.
Puoi benissimo cambiare quel valore comunque, e mettere tu eth0, così tutto torna come vuoi.
Quel file puoi modificarlo a tuo piacimento senza cancellarlo, anche se puoi fare una prova per capire meglio

Re: Perché udev mi cambia eth0 in eth1?

Inviato: ven 16 lug 2010, 22:26
da robbybby
conraid ha scritto: a me sembra più strano che sia sparita la vecchia regola
La vecchia regola non c'è. Ho postato tutto il 70-persistent-net.rules, non solo una parte. Se ci fosse stata ancora la vecchia regola (sono andato a ripescarla da un backup, e da lì ho capito tutto) tutto sarebbe stato subito più chiaro.

Re: [RISOLTO]Perché udev mi cambia eth0 in eth1?

Inviato: sab 17 lug 2010, 15:39
da robbybby
Ho fatto una prova.
Ho preso il vecchio 70-persistent-net.rules, e ho modificato eth0, in eth1.

Quindi il file è diventato

Codice: Seleziona tutto

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="vv:vv:vv:vv:vv:vv", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
Dove vv:vv:vv:vv:vv:vv è il mac address della vecchia scheda.
Ho riavviato, la vecchia regola è sparita, e 70-persistent-net.rules è diventato:

Codice: Seleziona tutto

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="nn:nn:nn:nn:nn:nn", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Dove nn:nn:nn:nn:nn:nn è il mac address della nuova scheda.

Re: [RISOLTO]Perché udev mi cambia eth0 in eth1?

Inviato: sab 17 lug 2010, 15:41
da conraid
quindi aggiunge le regole correttamente, ma le toglie anche. Eppure tra gli script di udev non vedo cosa possa cancellare una regola. Probabilmente mi è sfuggito qualcosa