The extra software

The other day, I mentioned that I had problems installing K3B and KOffice on Xandros. They are not available through the Xandros Network, but can be had from the "unsupported" Debian sources. The Debian packages don't work on Xandros, though I did manage to get both of them installed eventually.

K3B turned out to be the easy one. After surfing around the Xandros forums, I found that somebody had created an APT repository at xandros.or.id, wherever that is. (Is .id India? Or maybe Indonesia?) They had a working package for K3B there, so all I had to do was copy the APT source line
deb http://www.xandros.or.id/archive xxx main
and paste it into the "add" box in Xandros Network configuration, and I was good to go.

KOffice was a bit harder. Once I installed all the proper development packages through XN, building it was simple. Building real KDE packages is always simple - the only hard ones are the half-baked stuff you sometimes find on SourceForge or KDE-Apps. Hell, even building KDE itself is easy - it just takes a really long time. But building it is only half the battle - I also had to make a package for it. Sure, I could always just su to root and do a "make install", but my experience is that this is to be avoided when at all possible. It's acceptable for things like kernel modules, where you'll have to rebuild it when you change kernels anyway, but for desktop software, there's always a good chance that you'll want to remove, reinstall, or upgrade it at a later date, and doing this outside the system package manager is a pain in the neck. Especially uninstalling.

As a result, I find it best to build my own package whenever I install from source. I've been doing it on Slackware for years, and it's extremely easy in most cases. However, I don't have any experience with Debian, so I basically had to start from scratch. After a little searching, I eventually found a decent HOWTO on Debian packaging. Many of the other links I found had lots of stuff on Debian standards and best practices, but since I just want to build packages for my own personal use, I don't really care about those. This guide got me up and running with a quick and dirty Debian package that I can uninstall at will. It wasn't quite as easy as Slackware, but still not too difficult.

Xandros up and running

Well, I've more or less finished setting up Sarah's new computer. Xandros 3 OCE is up and running, I've slimmed down her desktop, updated her software, configured her wireless network card, and even managed to build a Debian package of KOffice that I built from source. The only thing I have left to do is decide how I want to network it with my computer.

The wireless network setup in Xandros was easy. In fact, much, much easier than it was on my Slackware box. I bought Sarah the same Edimax EW-7128G card that I have. For those of you who didn't read the inaugural LinLog post, this is a PCI 802.11b/g WiFi card with RaLink RT2500 chipset. It has native Linux drivers released under the GNU GPL, but they're still in beta release and have some issues. Since no distribution that I know of includes these drivers, I anticipated having to build them from source, and prepared accordingly.

Building the drivers was a bit of a pain, but not too bad. In addition to GCC, which isn't included on the Xandros install CD, I had to download the kernel sources from the Xandros Network. This was annoying, but not entirely unexpected. The only major annoyance was that the kernel source package from XN just dumps a bzip2 compressed tarball in /usr/src. That's it. They don't even bother to extract it. What do they have, a large number of customers who never actually use the source, but just want that warm, fuzzy feeling of knowing they have it? Anyway, before I could build the drivers, I had to extract the kernel sources, copy the kernel config file from /boot (no, the source archive didn't have any config file in it), and start building the kernel. I'm not certain if building the kernel was actually necessary, but I did it anyway. Actually, I only built part of the kernel - I killed the process after several minutes. The drivers built and installed without any problems after that.

The wireless configuration part was dead simple. In the control center, Xandros has a network configuration module reminiscent of the Windows network configuration applet. After installing the driver, the configuration module picked up the card automatically. All I had to do was uncheck the "enabled" box for the integrated NIC I had used initially and change the combo box to my RaLink wireless card. I checked the "enabled" box, set my IP, gateway, and so forth (I'm using static IPs on my LAN), and that was it. Xandros started using the new interface right away. It did show me a message saying that some programs might be using cached settings and would require a reboot, but I was able to unplug the cable from my router without interrupting anything. I'd almost forgotten things could be this easy.

For contrast, the installation process on Slackware was much more involved. Building the drivers was somewhat simpler in my case, as I already had a compiled and configured kernel sitting in /usr/src, but the configuration was much harder. I had to edit several system initialization files by hand, including /etc/rc.d/rc.wireless.conf and /etc/rc.d/rc.inet1. Now, I can see having to modify the wireless configuration file, but rc.inet1 is the script that brings up the network interfaces. It should work without modification for any network interface. In fact, I don't see any reason why this script couldn't have worked, other than the fact that it hard-codes the names of the network interfaces. In other words, the script assumes that the first (and, in most cases, only) network interface is eth0 and does not provide a way to override this other than hand-editing the script. Of course, when it comes to wireless devices, this is a horribly flawed assumption. For instance, the RaLink drivers name the first wireless card ra0, and the only way to change this is to set a parameter for the kernel module. Setting an alias for eth0 in your modprobe.conf or modules.conf won't do the trick. Of course, I didn't discover this until some time later, in a forum posting on the driver development page at SourceForge (no, it's not in the documentation). Apparently this isn't usually an issue, since most distributions are sane and let you set the device name in a configuration file. It's things like this that make me think about switching distributions.