Ubuntu has a convention of naming each release after an animal, alphabetically. 9.04 was “Jaunty Jackalope”, 9.10 was “Karmic Koala” and 10.4 is “Lucid Lynx”.
Let me say first: 10.4 is in beta at this time, with patches and updates rolling out regularly. They’ve gone into feature freeze and are focused on bug fixes at this time.
But off the bat, my comments just a day or two ago about how Ubuntu still looked like a Linux lost a lot of their weight with 10.4. The anonymous gray dialogs, like the “authorize this activity” still need polish, but the desktop itself has begun to look sexy.
The installer on the ISO I used had some issues, but they were fixed by booting it into “Live” mode and applying patches. Alas, in both cases it failed to write GRUB to a USB flash drive. 9.10 did it without problems, allowing me to leave my boot drive in pristine state. 10.4b1 uses Grub2, which got it wrong and wrote the MBR data to /dev/sda and but the rest of the boot stuff to /dev/sdc rendering the machine unbootable from Flash or HDD =/
I installed the 64-bit OS, and it is quite nippy. With the nVidia drivers installed the desktop experience on my system is pretty smooth. I can even turn on the full desktop effects and notice no impact.
My first goal was to see if I could get Xen working so that I could run Windows in parallel. This came to a brutal halt. The Xen stuff requires “xen-tools” which is currently unavailable for 10.4 :( It seems another OpenSource package has lost it’s maintainer but it sounds like it’s not entirely in limbo.
So I tried both kvm-qemu running Ubuntu 9.10s. I couldn’t figure out how to get the qemu acceleration installed and running, even after installing packages that seemed to suggest they would achieve that. The kvm machine was chuggy with mouse stalls and such. The qemu machine took control of my mouse cursor and I was unable to get my cursor back out of it. I finally managed to ssh into the machine from my droid phone and kill the virtual machine… *boggle*
Other than that, the qemu machine felt smoother, but on both virtual machines it took nearly 10 minutes to build the host.
Then it came to time to try and build the host on the 64-bit host operating system:
The hosts all run 32-bit operating systems with 32-bit code. Doh: that’s why I wasn’t using 64-bit Ubuntu before. Ok, well, I got 32-bit binary builds working under Fedora pretty easily. This shouldn’t take long.
After 3 hours, I finally decided to give up. Presumably the package maintainers don’t want their 64-bit repository cluttered for average joes. I made a huge leap when I found “getlibs“. I don’t know why it isn’t an official package…
But ultimately I got stuck on pthreads. I spent the last hour trying to find a way to get a 32-bit pthreads, but the compiler wouldn’t accept it.
Then I found something called “scratchbox2” which I installed enthusiastically. Alas, it appears to have lost it’s maintainer too. After a minimal of effort, I gave up on trying to figure out how to use it or locate the documentation.
Ok… So since I’m not going to be building executables for the servers from home (I always build the host executables from my development box so that I don’t have to worry about what crap I install on my machine, or don’t infect the servers with anything I pick up on my home box), why not go ahead and see how hard it would be to build a 64-bit version of the hosts. If I can get both GCC and ICC to build it with the various additional warnings turned on, that might be worth it, eh?
Most of the issues were caused by that incomplete usage of “size_t”. It happily converts to a uint32 in most places on a 32-bit machine, and we’ve been sloppy. So I cleaned up a lot of those. Unfortunately, I’ll have to some of that again since I fixed printf’s etc with “%lu” and “%ld” instead of “%zu” and “%zd”. I’ll have to check if ICC and MSVC support “%zu” and “%zd”.
Overall: I was pretty disappointed by how difficult Lucid made it to build a cross-compiling environment :(
And while I got the hosts more-or-less built under the 64-bit version, I ran into problems with Intel’s Threading Building Blocks (what is with their penchant for crazy-ass over-specific file naming? and convoluted paths — I’ve got a 10 line bit of shell code in my .bashrc to try and locate the appropriate TBB installation. *sigh*), VTune doesn’t work under Lucid/64 and the ICC 64-bit compiler didn’t like building 32-bit binaries (so I had to download the full 32/64 1Gb installer and install that, and let me tell you, getting at the non-commercial downloads is a real pain in the backside; Intel’s website is so freakin’ slow and really doesn’t like you trying to download the stuff a second time).
Google’s Chrome seemed to have issues that I hadn’t seen before under 64-bit Lucid, I haven’t tried it under 32-bit yet. All my other Chrome installs have worked beautifully, so that it is now my defacto browser.
So lastly, I decided to try a few other packages. The last thing I’d done with my non-virtual 9.10 was to install Wine: last time I tried Wine was under Slackware, a good 10+ years ago. It was a horrible experience.
Installing it under Karmic (Ubuntu 9.10) was a breeze, and the fact that the first app it gives you access to is notepad, one of my favorite editors, made me chuckle for a good few minutes.
Wine and PlayUnderLinux installed, I fired up Wine.
“Sorry, Wine has terminated unexpectedly”.
I tried launching it from the console. “Segmentation fault (core dumped).” It seems Wine isn’t quite liking Lucid yet.
I’ve just finished (remotely) re-organizing the disks on my machine at the office; I’m going to bring the 32gb SSD drive home and reinstall an Ubuntu on that. I’m not sure whether I want to try 10.4b1 32-bit or just throw a solid 9.10 on it. With 9.10, at least I know I can build stuff and things will work.
But, I have to say this about Lucid Lynx: it has a really enjoyable desktop experience. I’m very much looking to experiencing it as a stable product. But unless you’re a hard core grognard, I would boot it in live mode and not go any further ;)
If you do decide to give it a try, a suggestion:
Make a script in your home directory, and as you install packages, add them to the script:
sudo apt-get install \
gcc g++ gdb ddd autoconf cmake cmake-gui codeblocks \
lua5.1 tolua++5.1-dev \
meld diffuse subversion git-core \
mysql-client sqlite3 \
wine playunderlinux \