Dtrace means that Solaris wins

Posted on May 4, 2004

Sun’s Java Desktop System has had some reasonable press recently and, having only briefly played with a beta release, I figured that it was time that I had a look.

The installation (from 3 CDs) was mostly SuSE standard fare, meaning that it works well and isn’t any cause for concern. An oddity arose with a USB keyboard and mouse that threw me for a while, more of which later.

Once installed everything works well, including the bundled StarOffice 7, Evolution and Mozilla. The Sun branded Gnome theme is perhaps not quite as appealing to the eye as the Redhat version, but it’s easily replaced if something else is preferred. Hooking up Evolution to my Sun calendar required asking a question on #snt, but Dave Miner had the answer to hand and it was easy.

The USB keyboard and mouse problem was quite irritating. Most times the machine is booted the keyboard and mouse drivers are not correctly loaded and plumbed together, meaning that when the gdm login screen is displayed it’s not possible to log in or switch to another screen to try and sort things out. It seems to be some kind of a timing problem, as disconnecting the relevant hub from the machine, waiting a moment and then reconnecting usually brings it all back. By strange coincidence I happened to be installing a recent testing version of Debian on a similar machine and it has similar problems. The hotplug system on the Debian system somehow gets stuck and I’m left with half a dozen copies of /sbin/hotplug sitting around repeatedly running sleep 5. Maybe the two problems are different - that’s for another day.

To gain access to SWAN from the JDS machine I had to install the cisco VPN 3000 software. This comes in part-source/part-binary form - the source component allowing you to ensure that it will correctly glue into whatever linux kernel you choose. In the past I’ve had no problem getting the VPN 5000 software running, but this was a different story.

Building it was easy - there’s a shell script provided. Loading the module meant re-building, as there was an argument about kernel version naming, but it was easy to solve. Actually making it work currently has me stumped.

The user-level control interface for the software is a utility called vpnclient. From watching it with strace I can see that it opens a raw IP socket and then attempts to talk to the kernel code using SIOCDEVPRIVATE ioctls (the kernel code creates a fake NIC interface to facilitate this). Unfortunately the ioctl from the user-level code never reaches the interceptor driver, resulting in the whole process failing. If I had Solaris then dtrace would mean that solving this problem would be easy. I know that the interceptor driver is being loaded, as I can see it in ifconfig output and printks added to the module init function work, but nothing ever reaches the ioctl routine. Without dtrace I’m stuck re-building the linux kernel a few times to track the path of the ioctl using more printks. That takes ages and, at the moment, it’s easier just to revert to Solaris 10 and get on with what I have to do.