Sunday, September 15, 2024

Krazy Kubuntu Annoyances

Datamation content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

I’m running Kubuntu Gutsy Gibbon (7.10) on one of my main workstations. As with its sibling Ubuntu, it’s an endlessly-entertaining blend of really nice stuff and really irritating stuff. The nice stuff is nearly-current releases of fast-moving applications like KDE, Digikam, Krita, KWord, and other apps that I use a lot, easy-on-the-eyes graphics, a good set of default applications, and nicely-organized menus. The irritating stuff is they still don’t pay enough attention to delivering reliable basic functionality in core functions like networking and printing. Both often require manual tweakage to get them to work correctly, and even then you may be foiled by a Helpful Daemon.

NetworkManager is the newest addition to my Helpful Daemon hit list. I have two wired Ethernet interfaces on this box. One is configured and active, eth1, and one is not, which is eth0. The correct behavior is for any unconfigured NIC to be ignored by the system. But no. NetworkManager, which is installed by default on Gutsy, thinks it knows better than me how to manage my interfaces. This is what the Release Notes say:

In Ubuntu 7.10, network-manager only manages interfaces that are marked for roaming. Thus, all interfaces that were previously managed by network-manager will be set to roaming mode during upgrade. Technically, this takes any interface stanzas using the dhcp method with no options and that are marked auto, and removes them from /etc/network/interfaces. If you rely on your interfaces being started by ifupdown when the system starts up, you need to re-enable them in /etc/network/interfaces manually, or disable roaming in System -> Administration -> Network.

I read that a dozen times and I’m still not sure what it means, except it’s clear that NetworkManager is interfering unhelpfully. I never marked any interfaces for roaming, and when I create an entry in /etc/network/interfaces it is for a purpose, not because I’m bored and don’t care what happens. The result of this brilliant bit of engineering is NetworkManager started eth0 and plucked an address for it from my DHCP server, with the result that both interfaces were on the same subnet, 192.168.1.0/24. Which means no networking, because you can’t have two interfaces on one box on the same subnet. Nothing works.

[Update: An excellent reader pointed out that you can have two interfaces on one PC on the same subnet. So something else was responsible for the loss of connectivity. There are some twists and turns to this that we shall explore in the future.]

So after finding the relevant nugget in the Release Notes, I gave eth0 a minimal configuration just to shut up NetworkManager. But NetworkManager still had to sticks its oar in–it didn’t configure eth0, but it still brought it up in a weird half-baked way:

$ ifconfig
eth0  Link encap:Ethernet  HWaddr 00:01:11:00:11:CF
  BROADCAST MULTICAST  MTU:1500  Metric:1
  RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
  RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
  Interrupt:16 Base address:0xd400

eth1  Link encap:Ethernet  HWaddr 00:22:62:22:7E:22
  inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
  inet6 addr: fe80::20b:6aff:feef:7e8d/64 Scope:Link
  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  RX packets:12709 errors:0 dropped:0 overruns:0 frame:0
  TX packets:11869 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
  RX bytes:13013566 (12.4 MB)  TX bytes:1768011 (1.6 MB)
  Interrupt:19 Base address:0xbc00

ifconfig with no options only displays up interfaces. eth0 is not marked as up, so what the heck is it doing there? So then I tried System Settings -> Network Settings, and unchecked “activate when the computer starts.” That made no difference. So I removed NetworkManager, and that cured everything. Untangling NetworkManager, HAL, Avahi, udev, ifupdown, and the interfaces file to try to figure out who’s doing what is a beastly job–please, for the love of $deity, quit trying to be so darned helpful.

If you want to share your printers without hair loss and raised blood pressure, do it my way. Edit /etc/cups/cupsd.conf and forget all the GUI junk. This article tells how to share printers the right way in Linux. (This page lists more good Linux tutorials.)

The printer article has one error that I recently discovered the hard way, though I suspect that something changed during a routine update, because it worked fine before–get rid of all the policy junk in cupsd.conf. I had network printing working fine, then suddenly it stopped working. Deleting all the policy crud cured it. That’s the directives between the tags >. Blow it all away–it won’t hurt a thing, and you’ll be instantly happier. Moral: don’t lard up configuration files with useless stuff, especially when it doesn’t work.

I wonder if the various ‘buntu teams ever talk to each other. The ‘buntus have been weird about network printing from the beginning. It’s disabled by default, and the graphical configurators don’t work right. And yet Avahi-daemon, the Zeroconf network discovery daemon, runs by default even though there is nothing for it to auto-discover, so it’s virtually useless. (Hey, how about discovering network printers? Except CUPS already broadcasts printers, when it’s not handcuffed.) Not only that, but I find it interfering with all manner of functions. For one example, if there are no network interfaces configured, it will create a link-local address. This is a cute surprise when you don’t want Ethernet enabled at all. You can disable Avahi, or even remove it if you wish; don’t be scared when it wants to uninstall kde-desktop too. This is a meta-package, so it’s safe to remove it.

Bluetooth is on by default, even though a minority of users need it. Way more users want to share printing than want to auto-discover nothing or use Bluetooth devices. Ubuntu boasts about being very secure, yet having unneeded services running violates the most fundamental security principle, which is “deny all, allow as needed”. Managing services is easy, because both Ubuntu and Kubuntu have nice pointy-clicky graphical services configurators. In fact the first thing all Linux users should do after installation is turn off all unneeded services, and with the overly-helpful ‘buntu families, you better check after every update too.

This article was first published on LinuxPlanet.

Subscribe to Data Insider

Learn the latest news and best practices about data science, big data analytics, artificial intelligence, data security, and more.

Similar articles

Get the Free Newsletter!

Subscribe to Data Insider for top news, trends & analysis

Latest Articles