ERROR MESSAGES: "network autoconfiguration failed"
"eth0: ERROR while getting interface flags: No such device"
"eth0: error fetching interface information: Device not found"
dmesg "udev: renamed network interface eth0 to eth1"
Initial problem description ↑
When upgrading my Ubuntu 10.04 desktop OS to 12.04 I encountered the
following problem: on reboot the network would not automatically configure.
Further analysis revealed that my static ip setup on eth0 (ethernet network
device number 0 normally viewable when running the command ifconfig from the
command line) which is configured in the file - /etc/network/interfaces would
only generate error messages when I tried to bring it up with a
>sudo ifup -a command from the command line. (NB: the switch '-a' for all
network devices but one could simply use eth0 instead of -a for this one device).
Initial solution ↑
After searching for possible solutions I hit upon one person's suggestion
to enable the eth1 interface by removing the "#" comment mark in the
"#iface eth1 inet dhcp" line in /etc/network/interfaces and rerun sudo ifup -a
Voila eth1 came up and I had internet access again. Whew ... a sigh of
relief was heard uttered from the captain sitting in his command post ;-)
Further analysis even revealed I could set eth1 up as my static
this still didn't answer my question ... why eth0 would not come up either
as a dhcp (dynamically assigned ip address) or as a static ip ... #$%...!?
Extended problem description ↑
Further internet searching revealed the following intriguing piece of the
puzzle: if I grepped (i.e. searched for) 'eth0' in the dmesg bootlog
( >dmesg | grep eth0 ) it revealed that "udev: renamed network interface
eth0 to eth1" .....!!!!3
What the... I said?!
Extended solution ↑
Further analysis revealed that the source of this change was udev
-the universal device manager which takes the naming of devices out of the
hands of the kernel and allows for the hot plugging of new devices.
Apparently udev allows for the consistent naming of hardware devices across
machines. In my case, I had switched the hard disk from a box with a
dead motherboard and put it back in another working box. This switch,
if I understand correctly, meant that udev encountered a different
ethernet Network Interface Card (NIC) and therefore renamed eth0 identified
by the old card's MAC address to eth1 with the new card's MAC address.
What is not clear to me is why the network continued to function normally
under Ubuntu 10.4 but failed to autoconfigure correctly after the upgrade
to Ubuntu 12.04? My best guess is that it is probably due to some changes
in the network stack in 12.04.
The source of this eth0 to eth1 change was found in the udev rules
and that by either a) deleting this file to have it regenerated by udev on
the next boot or by b) commenting4 out the line which renamed eth0 to another MAC address
and renaming eth1 to eth0 in the line which assigned eth1 our new hardware
MAC address, all would return to normal.
After modifying the above file, when I rebooted eth0 came up as expected with the static address I had
declared in /etc/network/interfaces Whew ... another sigh of relief was
heard exclamed from the captain sitting in his command post ;-)
Further thoughts ↑
I see that this problem occurs in other linux distros as well that are
not debian based, such as Arch and Fedora so it seems the problem was somewhat
a result of my own unique Ubuntu 10.04 installation and likely does not
affect the general population of Ubuntu users. Nevertheless, in the interest
of documenting my fixes for future reference, here is this post.
A bon entendeur ... salut! (A rough translation from french:
A word to the wise is hopefully all that will be necessary. ;-)
Michael Wells - 06 May 2013