4

I installed a new Mainboard (and CPU and RAM) (ASRock H97 Pro4, with Intel Gigabit Ethernet on-board), and am trying to get my existing LMDE (Linux Mint Debian Edition) to work with it. So far so good, but no internet.

The internet is managed with commandline, using pon dsl-provider. This now shows

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

sudo pppoeconf shows "Sorry, no working ethernet card could be found."

/sbin/ifconfig shows there is no eth0 or eth1 whatsoever. The only entry there is the lo (Loopback).

There are some other articles that suggest that eth0 or eth1 might just have been renamed to something else, e.g. to enp0s10. But then the renamed thing would show up in ifconfig, which it does not.

I also tried sudo service networking stop (works) and sudo service networking start. The second command gives:

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

And still only lo in ifconfig.

ip addr show eth0 (and with eth1 likewise) shows:

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

lspci -v shows:

[..]

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>

[..]

EDIT I: Funny, I thought I already wrote something about the /etc/udev/rules.d/70-persistent-net.rules file. Maybe I deleted it while writing the 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"

I suppose the two lines related to ethernet are both from the old board. So if I remove them, nothing is left.

Also, the file says it will be regenerated with /lib/udev/write_net_rules. According to other articles on the web, this can happen either manually or automatically on reboot if the file is removed/renamed/missing. In my case, however, nothing is regenerated on reboot. Running /lib/udev/write_net_rules manually first shows "missing $INTERFACE". When following these instructions, the ip addr show $INTERFACE is where it fails. This is why I posted ip addr show eth0 above. Doing it in a different way (don't remember) showed that the output file is locked (and I don't think it was about file write permissions).


EDIT II: I installed an additional PCI ethernet card to see if this works. At first this added a line in lspci, but nothing new in ifconfig. Now after more reboots and installing an additional HD (side effect?), I get an eth2 in ifconfig. I don't know if this is the PCI card or the onboard card.

sudo pppoeconf does pick up the eth2, but then fails to configure an internet connection with it, saying "the Access Concentrator of your provider did not respond."

Anyway, I should probably try to rename it back to eth0 / eth1 instead of eth2. Working on it.

2
  • Have you tried booting any other distros from a live CD (or USB)? If the ethernet is working in another Linux distro you could try to replicate the setup or install that other distro.
    – the
    Dec 28, 2014 at 17:35
  • @KasperSouren: This is something to try next. Unfortunately my DVD is not working since the new board. It is connected and somewhat half-recognized, but no boot DVD works, and Linux can't read any DVD either. Different problem / can of worms, I guess, not to be discussed here.
    – donquixote
    Dec 28, 2014 at 19:48

2 Answers 2

2

Well, a guess, but — I hope — right on the point.

Some background

These days device naming and creating entries in the /dev filesystem is managed by the udev daemon, which is necessarily installed in stock Debians. To make network card interface names predictable, udev binds them to their MAC addresses (low-level hardware address, which, for Ethernet cards, is only seen on the Ethernet layer). When udev observes a network interface appear for the first time, it generates an etnN name for it, and updates a file with network interface naming rules which, in Debian, is

% 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.

The problem with your replacing the motherboard is that the new card has a MAC address different to that of the card on the old motherboard, and so the interface created for this new card has a name different to those already in the "rules" file.

How to fix

I would just open that rules file with any text editor, deleted all the lines pertaining to the cards from the old motherboard, and edited the only left one to read eth0 for the interface name.

After saving the file you can run

# udevadm trigger

to see your network card reappear under the name eth0. (If that does not help, run service udev restart or reboot as a last resort.)


A side note: ip addr ... is not really useful in your case because it deals with IP-level, and you're struggling with configuring a link level — a lower one. So you'd try the ip link command to list available networking "links" which generally mean network access cards.

7
  • The two lines with eth(something) are for eth0 and eth1. I suppose both are from the old board. So if I remove these two lines, then nothing eth-related will be left. (The other two lines are for wlan0 and wlan1). I can't easily copy-paste the lines cause I'm on a different machine..
    – donquixote
    Dec 28, 2014 at 19:00
  • If the above doesn't work, look carefully in /var/log/dmesg or at the boot text of your system. Your NIC may be recognized but a non-free firmware file may be needed for it to actually show up and function. May be the case if it's certain types of Intel cards or others (like tg3).
    – LawrenceC
    Dec 28, 2014 at 19:24
  • Question updated. @ultrasawblade: What would I look for in /var/log/dmesg?
    – donquixote
    Dec 28, 2014 at 19:45
  • @donquixote, do dmesg | grep -i eth to see anything the kernel printed about ethernet devices it had been able to activate. It might turn out the built-in network card is not supported by available drivers (unlikely but still a possibility).
    – kostix
    Dec 28, 2014 at 19:56
  • try something like grep firmware /var/log/dmesg or grep firmware /var/log/kern.log.
    – LawrenceC
    Dec 28, 2014 at 22:02
0

Here is what I did that (kind of) solved the problem for me. I would not say this is a universal solution. Especially because not everyone has a spare PCI ethernet card.

  1. Install a PCI ethernet card (in addition to the on-board card). In my case this is an old Realtek RTL-8139.
  2. Rename the /etc/udev/rules.d/70-persistent-net.rules.
  3. (possibly do some unrelated things, like connect a new HD, or dance around the fire)
  4. Reboot.
  5. Run sudo pppoeconf. If it asks you to do a backup, do it. Then follow the steps.

Result (for me):

  • ifconfig shows the added PCI ethernet card as eth0, but no further eth* entries beyond that (only lo and ppp0).
  • File /etc/udev/rules.d/70-persistent-net.rules has NOT been regenerated. It is absent, nonexisting.
  • Internet works.

I suppose this means that the on-board ethernet still has not been recognized. I assume that the new on-board ethernet is somewhat technically superior to the old PCI card. But I don't know how much of a practical difference this makes.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .