Nomes de placas de rede (eth0, eth1) ausentes após a substituição da placa-mãe

3

Instalei uma nova Mainboard (e CPU e RAM) (ASRock H97 Pro4, com Intel Gigabit Ethernet on-board) e estou tentando fazer com que meu LMDE (Linux Mint Debian Edition) existente funcione com ele. Até aí tudo bem, mas sem internet.

A internet é gerenciada com a linha de comando, usando pon dsl-provider . Isso agora mostra

Plugin rp-pppoe.so loaded.
/usr/sbin/pppd: In file /etc/ppp/peers/dsl-provider: unrecognized option 'eth1'

sudo pppoeconf mostra "Desculpe, nenhuma placa ethernet funcional pôde ser encontrada."

/sbin/ifconfig mostra que não há eth0 ou eth1. A única entrada é o lo (Loopback).

Existem alguns outros artigos que sugerem que eth0 ou eth1 poderiam ter sido renomeados para outra coisa, por exemplo, codificar%. Mas então a coisa renomeada apareceria no ifconfig, o que não acontece.

Eu também tentei enp0s10 (works) e sudo service networking stop . O segundo comando dá:

[....] Configuring network interfaces...eth1: ERROR while getting interface flags: No such device
Failed to bring up dsl-provider.
done.

e ainda apenas sudo service networking start no ifconfig.

lo (e com eth1 da mesma forma) mostra:

dig: couldn't get address for 'resolver1.opendns.com': not found

ip addr show eth0 mostra:

[..]

00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (2) I218-V
        Subsystem: ASRock Incorporation Device 15a1
        Flags bus master, fast devsel, latency 0, IRQ 5
        Memory at f7200000 (32-bit, non-prefetchable) [size=128K]
        Memory at f7238000 (32-bit, non-prefetchable) [size=4K]
        I/O ports at f040 [size=32]
        Capabilities: <access denied>

[..]

EDITAR I: Engraçado, eu pensei que já escrevi algo sobre o arquivo lspci -v . Talvez eu tenha apagado enquanto escrevia o post.

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:52:fe:13", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:1c.5/0000:04:00.0 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1f:d0:91:e1:68", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x1814:/sys/devices/pci0000:00/0000:00:1e.0/0000:05:01.0 (rt61pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:21:29:66:32:7a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

# USB device 0x:0x (r8712u)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:14:5c:8b:db:40", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"

Suponho que as duas linhas relacionadas à ethernet sejam ambas do quadro antigo. Então, se eu removê-los, nada é deixado.

Além disso, o arquivo informa que ele será gerado novamente com /etc/udev/rules.d/70-persistent-net.rules . De acordo com outros artigos na web, isso pode acontecer manualmente ou automaticamente na reinicialização se o arquivo for removido / renomeado / ausente. No meu caso, no entanto, nada é regenerado na reinicialização. A execução de /lib/udev/write_net_rules manualmente mostra primeiro "missing $ INTERFACE". Ao seguir estas instruções , o /lib/udev/write_net_rules é onde Falha. É por isso que postei ip addr show $INTERFACE acima. Fazê-lo de uma maneira diferente (não lembro) mostrou que o arquivo de saída está bloqueado (e eu não acho que foi sobre permissões de gravação de arquivos).

EDIT II: Eu instalei uma placa Ethernet PCI adicional para ver se isso funciona. No começo isso adicionava uma linha no lspci, mas nada de novo no ifconfig. Agora, após mais reinicializações e instalação de um HD adicional (efeito colateral?), Recebo um ip addr show eth0 no ifconfig. Não sei se esta é a placa PCI ou a placa onboard.

eth2 pega a eth2, mas não consegue configurar uma conexão com a internet, dizendo "o Access Concentrator do seu provedor não respondeu".

De qualquer forma, eu provavelmente deveria tentar renomeá-lo de volta para eth0 / eth1 ao invés de eth2. Trabalhando nisso.

    
por donquixote 28.12.2014 / 17:47

2 respostas

2

Bem, um palpite, mas - eu espero - bem no ponto.

Alguns antecedentes

Hoje em dia, nomear dispositivos e criar entradas no sistema de arquivos /dev é gerenciado pelo daemon udev , que é necessariamente instalado no repositório Debians. Para tornar os nomes da interface da placa de rede previsíveis, udev os vincula aos seus endereços MAC (endereço de hardware de baixo nível, que, para placas Ethernet, é visto apenas na camada Ethernet). Quando udev observa uma interface de rede aparecer pela primeira vez, gera um nome etnN , e atualiza um arquivo com regras de nomenclatura de interface de rede que, no Debian, é

% ls -1 /etc/udev/rules.d/*net*
/etc/udev/rules.d/70-persistent-net.rules

On a side note, I beleive it's not really udev itself which updates this file, but rather some script provided by Debian udev calls when it sees a network interface card's device appearing, but the exact mechanics are not relevant to our case.

O problema com a sua substituição da placa-mãe é que a nova placa possui um endereço MAC diferente daquele da placa na placa-mãe antiga, e assim a interface criada para essa nova placa tem um nome diferente daqueles já nas "regras "arquivo.

Como corrigir

Eu apenas abriria o arquivo de regras com qualquer editor de texto, apagaria todas as linhas pertencentes às placas da antiga placa-mãe e editaria a única esquerda para ler eth0 para o nome da interface.

Depois de salvar o arquivo, você pode executar

# udevadm trigger

para ver sua placa de rede reaparecer com o nome eth0 . (Se isso não ajudar, execute service udev restart ou reinicie como último recurso.)

Uma observação: ip addr ... não é muito útil no seu caso porque lida com o nível de IP, e você está lutando para configurar um nível de link - um nível mais baixo. Então, você experimentaria o comando ip link para listar os "links" de rede disponíveis, que geralmente significam cartões de acesso à rede.

    
por 28.12.2014 / 18:48
0

Aqui está o que eu fiz que (tipo de) resolveu o problema para mim. Eu não diria que esta é uma solução universal. Especialmente porque nem todo mundo tem uma placa PCI de reposição.

  1. Instale uma placa PCI ethernet (além da placa integrada). No meu caso, este é um velho Realtek RTL-8139.
  2. Renomeie o /etc/udev/rules.d/70-persistent-net.rules .
  3. (possivelmente fazer algumas coisas não relacionadas, como conectar um novo HD ou dançar ao redor do fogo)
  4. Reinicialize.
  5. Executar sudo pppoeconf . Se lhe pedir para fazer um backup, faça isso. Então siga os passos.

Resultado (para mim):

  • ifconfig mostra a placa ethernet PCI adicionada como eth0, mas nenhuma entrada eth * adicional além disso (somente lo e ppp0 ).
  • O arquivo /etc/udev/rules.d/70-persistent-net.rules NÃO foi regenerado. Está ausente, não existe.
  • funciona na Internet.

Suponho que isso signifique que a ethernet on-board ainda não foi reconhecida. Presumo que a nova ethernet on-board seja tecnicamente superior à antiga placa PCI. Mas eu não sei o quanto de diferença prática isso faz.

    
por 28.12.2014 / 23:28