Thursday, November 21, 2013

Navigating the morass of systemd, NetworkManager, and GNOME 3.10

The world of Linux: Where making a laptop engage its wired connection when attached to a dock is an exercise in frustration. 


As a recent beneficiary of a laptop upgrade, I took the opportunity to re-examine my choice of Linux distribution that I use day-to-day. After a year of Arch Linux, and that distro deciding to move to the systemd init system, plus the depreciation of the far from impressive PreUpgrade tool in favour of a new upgrade experience on Fedora called FedUp, I decided that I would return to the land of Fedora.

Arch was, and still is, a very good Linux distribution — the community is good, and the Arch User Repository is as good as people say it is. In retrospect though, it was the move to systemd that made me decide to move on from Arch. 

Changing an init system on an already installed system is just asking for trouble, but eventually when a confluence of issues regarding GNOME and Arch made it impossible to continue without making the transition to systemd, I duly followed. The process was not as torturous as it could be, as I'd already made the switch previously at home with my Gentoo box, so I had some idea what I was in for.

But after transitioning over to systemd, it is a brave user that blows away all the remnants of the old init system that they were using, as there is generally one or two services that do not work with systemd, or are so tightly integrated with the existing init system that you may need to wait a release or two to get systemd compatibility.

In essence, what you end up with is a hybrid system that doesn't know whether it is Frankenstein's monster or Kuato from Total Recall. And thanks to my home Gentoo box, I'd already had one of those things in my life already, hence I decided to go full systemd, and give Fedora another shot.

At the same time that I was returning from the world of Arch Linux to Fedora, it had acquired a dock to go along with the new Lenovo laptop — even though it is a laptop, it does spend most of its time attached to monitors, keyboards, and other peripherals, so it made sense to end the ritual of plugging and unplugging the same cords at the start and end of each day.

Everything on the dock worked as it should, with two notable exceptions: having a network cable connected to the ethernet port on the dock did not fire a cable connection event, and it is impossible to record from auxiliary audio line on the dock if a pair of headphones are connected to the laptop itself.
Network settings in GNOME 3.8

   
The latter I have slowly turned to live with, because it is not often that I need to record from the auxiliary line, and is easily fixed by removing the headphones from the jack.
The former issue, despite the effect that a lack of connectivity has on modern desktop usage, was actually quite easily solved by quickly shooting the mouse to the top right of the desktop and clicking on the network icon of my GNOME 3 desktop to force enabling of the wired connection.

It sounds like a lot of movement, but it was really less than a second of work, and it wasn't too much trouble — if it was a bigger deal, I would have investigated why the connection was not being enabled at boot each day. 

What forced me to dig deeper was the attraction of trying out Fedora 20, Heisenbug, which was currently in beta.

As with every Fedora release, an upgrade to the latest release of GNOME occurs, and time I was updated to GNOME 3.10.
network-gnome310.png

GNOME developers will do what GNOME developers do so well, and that means removing features with startling regularity. Consequently that little icon that I had relied upon at the start of each day was removed, and in its place was a wi-fi icon — wired connectivity had been exiled to the GNOME network settings panel. 

Now I was forced to work dig into the inner workings of network connectivity involving NetworkManager and systemd.

A natural place to start would be the configuration file for NetworkManager, /etc/NetworkManager/NetworkManager.conf, but it contained only a one line reference to a Red Hat plugin, ifcfg-rh, that meant that all network configuration scripts would be stored in /etc/sysconfig/network-scripts/
 
Thanks to the changes in udev-197, network interfaces in Linux now have "predictable" names, gone is the eth0, eth1 names of old, and in its place is enp0s25 (in my particular piece of hardware). Therefore, in order to configure this interface, we need to edit /etc/sysconfig/network-scripts/ifcfg-enp0s25.

To get the network interface to come up on boot, all that is needed is to add ONBOOT=yes to the file.

It's not much work once you know where to look, but it is not as simple as toggling a default connection status in the graphical interface that used to exist in GNOME, nor is it quite as straight forward as manipulating network settings Gentoo, but much of that can probably be put down to familiarity with that distro.

0 comments:

Post a Comment

Appreciate your concern ...