I know how terrible Linux systems tend to get, when fighting off an error message. I’ve been there a thousand times, but it never got any better. Thanks to the endless ways even a single given problem can tangle. Here I am, once again, trying to figure out a way out of this horrific error message my fellow comrades have encountered “Failed to start raise network interfaces”.
The exact cause, origin and the fix to this problem is still uncertain. There are posts on this particular topic scattered around the web. So in this article, I’ll be trying my best to help you digest the best solutions people have gotten through, with added bits from my own journey with this error.
Why do you see ‘failed to load raise network interfaces’?
Let’s start with where the problem is occurring. Basically, you’d see this message when trying to boot into your Linux machine, which is more significant among Ubuntu/Debian based users. The message should look something like this:
This message is of no problem for users who’re not using a Broadband (Ethernet) connection. Because for the most part, the problem arises with how the Ethernet interface is named in your system. Let me explain.
In a Linux machine, all the devices that are connected to your system are handled by a program called udev. Such devices include your keyboard, mouse, bluetooth adapter, USB thumb drives, and not to mention, the network cards and adapters. So what does all this have to do with the error message?
To connect your device to the internet, a network card is required. Two of the most common adapters are Ethernet and WLAN. Udev is responsible for detecting these devices, by assigning names to these interfaces. This is exactly where the problem seems to emerge from. For a long time, the ethernet adapters were named as eth0, eth1 and so on, while WLAN adapters were named wlan0, wlan1 and such. There is also another interface that is mostly always included, which is the Loopback interface, but that’s a tougher concept that we shouldn’t mess around with for now.
The problem here is that, in newer versions of udev, starting v197, the naming conventions have changed. In systems with the new version of udev, the adapters are given more distinctive names, like ens1, enp2s0, etc. As most systems are now used to recognise the classical naming schemes, it causes some sort of mismatch while starting the networking.service in your system, which is run during the startup to load the interfaces.
For users who need to use ethernet, they may be unable to do so due to this problem. While users not using ethernet and using wlan instead, are supposedly not going to face any issue whatsoever.
So how do we fix all this mess? Once again, the answer is quite unclear, as different users have stated different ways in how they fixed the issue. So what I’ll try to do, is to give you all the possible solutions that I’ve found to try for yourself and see which one works in your specific scenario.
Possible fixes to ‘failed to load raise network interfaces’
Remove the interfaces.d/setup file
This is one way to go about fixing the error message. Under the /etc/network directory in your system, there is another subdirectory, which is interfaces.d. It contains a file called setup which is like a demo file for the main configuration. It is possible that when the networking.service process attempts to trace for the network adapters during startup, it scans the setup file instead of the main configuration file, which is under /etc/network/interfaces. To fix this, execute the following command in your terminal:
$ sudo rm -r /etc/network/interfaces.d/setup
If it was removed and no other message was shown by the terminal, then restart your computer and see if the problem persists. However, if you see a message from the terminal saying “no such file or directory” when trying to remove the file, this means that it doesn’t exist in the first place, so removing it is not an option. Try looking out for the other fix instead.
Change the interface name in interfaces file
This one is the more common problem, as well as the more probable fix for most. Users have reported that the problem actually occurs after they have updated their systems. If you’re using Ubuntu, the newer versions no longer support names like eth0. So it is possible that before you updated your system, the interface name was set to eth0 in the interfaces file. After you updated the system, the name may have persisted, but your machine no longer is able to recognise it. So to fix this, first execute the below command:
$ ip link
You should be getting an output like this:
In the above image, what you want to look out for is this:
In my machine, the new interface name for the ethernet adapter is set to eno1. In your machine, it could be anything else and does not have to be the same. Once you’ve found the name out, keep note of it.
Now using a text editor, enter the interfaces file under /etc/network/interfaces. For example, if you use nano you’d type out the following command:
$ sudo nano /etc/network/interfaces
Once you’ve entered the file, search for the text “eth0”, and replace every occurrence of it with the name you found when you executed the ip link command previously. For example, in my case, before I’d edit the file, it looked like:
iface lo inet loopback
iface eth0 inet dhcp
In this file, I have two occurrences of eth0, so I’d change them with eno1:
iface lo inet loopback
iface eno1 inet dhcp
Save and exit the file. Lastly, restart your system for changes to take effect, and check whether the problem still persists. If it doesn’t, congratulations! You’ve fixed the error message successfully.
I’m quite confident that you’ve successfully been able to surpass the error message. This problem should not persist for long, as the system is always being updated and changes are coming every now and then. Many users who’ve just started out on Linux should probably not be a victim to such errors anyway, as the problem is more specific to the switching from an older version of distributions like Ubuntu and Debian to newer versions.