Anton Oussik :: Old GNU Thing

Fri, 18 May 2007

Ubuntu

On Tuesday I said a warm goodbye to Slackware 11, and installed Ubuntu on my laptop. Having not used Ubuntu in two years, I decided to give it a quick review.

The livecd booted without any problems, and soon I found myself in GNOME. I was pleasantly surprised by the hardware detection capabilities of the Ubuntu stock kernel - it found my wireless card, my SD reader, and something even configured my funny case buttons that control the volume, etc. The install process went just as smoothly. The installer asked some very basic questions and I had Ubuntu on my hard drive in no time.

Upon rebooting I discovered that the /etc/apt/sources.list did not need modifying by hand to get universe and multiverse packages, and all the special codecs, java, and flash could be installed by simply going to Applications->Add/Remove... . Installing the nVidia binary graphics drivers was just as easy, they got installed automatically when went to System->Preferences->Desktop Effects (which also gave me a shiny cube to play about with).

Another thing I like about GNOME is the funny little power graph it can draw, displaying the laptop's power use over time when I run on battery.

Despite the mostly positive experience, there is still plenty of room for improvement on Ubuntu's behalf. After installing the binary nVidia driver the text no longer fits into gdm's text boxes. I have so far sustained one X crash, which seems to have been brought down by a screen saver, and two GNOME crashes, which I think can be blamed on applets in the gnome-panel misbehaving.

Another quirk about Ubuntu I do not like is the lack of header files in normal packages. If I install a library I expect to be able compile things against it. Instead Ubuntu installed me a C compiler, but did not include any C library headers. How that can be considered as "useful" I can not say.

Also, by default the network interface names are not deterministic. This can cause problems when you have scripts that rely on eth0 being the wired interface and eth1 being the wireless interface for instance. To work around that, a simple udev modification is needed:

First create a file called /etc/udev/rules.d/10-ifaddresses.rules

Then add the following lines into it, replacing my MAC addresses with the ones in your cards (obtainable from ifconfig):

KERNEL=="eth*", SYSFS{address}=="00:12:3f:e9:1f:dc", NAME="eth0"
KERNEL=="eth*", SYSFS{address}=="00:13:ce:50:32:32", NAME="eth1"

There is no good reason this file can not be auto-generated by Ubuntu, so I consider having to do that myself to be a flaw in Ubuntu.

Finally, there is no good GNOME/Ubuntu GUI for setting up a NAT between two interfaces. iptables commands to achieve the effect are not complex, but still require a text editor and a rough idea of what you are doing. There is also no standard place for such a script to go that I could find, so I ended up using /etc/init.d/firewall, which is by my guess the Debian equivalent place of Slackware's /etc/rc.d/rc.firewall .