braggtown: north durham

Qubuntu!

Installing Ubuntu 6.04 on the Cobalt Qube3


If you think you can help me improve this or, if you found this helpful, let me know.
If you have comments you'd like to share, please consider leaving a comment on this blog post. Thanks.

Change log

16 Mar 2007: 20 Mar 2007: 17 Feb 2007: 21 Feb 2007: 23 Feb 2007: 16 Sept 2007: 8 May 2008: 8 Aug 2008

Some Background

I picked my Cobalt Qube 3 Professional up on eBay for $100. It came with the original Cobalt OS installed on a 20GB disk. The original OS is based on Redhat 6.4 and is, in my opinion, too old to use. I easily installed CentOS 4.3, which I yum updated to 4.4, using the Strongbolt installer (instructions and iso). I'm not a Red Hat fan, though, and I wanted to keep my systems Debian-based. I thought about trying Ben Stokes' Slackware howto(down last time I checked) and Tim Wiley's Debian Sarge howto, but I really wanted to use Ubuntu- specifically the 6.06 Dapper Drake release for its long term support. The instructions here detail the steps I used to install Ubuntu and a 2.6.19.2 kernel on my Qube. My Qube now has:

I used my Qube as a web/database server and backup server using NFS. I used apt to install software as you would on any Ubuntu machine. The 450Mhz AMD K-6 processor is faster than one might expect. I have since sold my Qube, unhappily.

You can download the original Cobalt OS, original manuals, and updates to Cobalt OS from sun.com.

I'm assuming some knowledge about the Qube 3, the peculiar boot process of Cobalt machines, and familiarity with Linux. If this seems over your head, you might want to spend some time reading before you try this. You could potentially destroy your Qube. If you find mistakes here or have suggestions to improve it, please contact me. Remember during kernel configuration that the vmlinux.bz2 must be smaller than 1800kb. Mine was 1331.2kb after statically compiling in support for iptables. Where possible, try to use loadable kernel modules to keep the size down.




Updates

I occasionally receive updates from visitors that I expect others would be interested in. However, since I (sadly) no longer own a Qube, I have no way to verify suggested changes to this howto. Apologies. Iinformation in this section is provided without testing.

New Cobalt Rom: Frans van Berckel wrote to point out that Open Source Office, creators of the Strongbolt installer, are working on a new ROM for the Cobalt hardware. Details on the 2.6.23 ROM are available at http://www.osoffice.co.uk/forum/viewtopic.php?t=655. More details here. There is a a 2.6.18 kernel RPM at http://repo.osoffice.co.uk/repo/strongbolt2-4/kernel-2.6.18-53.el5.sb.i586.rpm. I'm afraid that's all I know about it.




Upgrading the prom

The Cobalt Qube boots in a very particular way. First, a very specialized kernel is booted from a flash ROM. This ROM kernel, in turn, loads the vmlinux.bz2 bzip-compressed kernel from hda1 which initializes hardware and loads the operating system. The stock ROM kernel on the Qube was designed to load a 2.2 Linux kernel, which is much smaller than the 2.6 kernel. Additionally, the stock ROM kernel does not understand ext3. To load a 2.6 kernel from an ext3 partition you'll have to upgrade your ROM image. If you plan to use ext3, which is strongly recommended, use care to choose a ROM that supports that filesystem. You may also see this ROM image referred to as a PROM, or programmable ROM.

Download the unsupported Cobalt flashtool program. Read the available text files thoroughly. Download both the cobalt-rom and romutils from http://sourceforge.net/project/showfiles.php?group_id=83123. I'm using cobalt-2.10.3-ext3-1M.rom, but check the release notes to ensure you get the appropriate rom.

Transfer the rom and the rom utility to the Qube via FTP or Samba. Uncompress and untar the romutils in the admin directory as root. If there are any error messages at all, repeat the process. The flashtool attempts to work around critical timing issues on its own, but may fail occasionally. It is important to repeat the process until the whole prom image has been read successfully. If you attempt to reboot without a working ROM, your Qube will be broken. In these next steps, I'm assuming you have a clean install of the original Cobalt OS, as I did. Also, once you've connected to the Qube via telnet, you'll have to download the ROM and flashtool or otherwise obtain them. I used wget. You could also use the Strongbolt installer to update your ROM, but the installer takes a long time to complete.
telnet-l admin qube
wget http://superb-east.dl.sourceforge.net/sourceforge/cobalt-rom/romutils-1.0.tar.bz2
wget http://umn.dl.sourceforge.net/sourceforge/cobalt-rom/cobalt-2.10.3-ext3-1M.rom
bunzip2 romutils-1.0.tar.bz2
tar xvf romutils-1.0.tar.bz2
cd romutils

Backup the existing rom

./flashtool -v -r > stock.backup.rom
./flashtool: searching for PCI 10b9:7101 : found it at /proc/bus/pci/00/03.0
./flashtool: systype = COBT_3K
./flashtool: bank 0: AMD AM29F080B 1MB
./flashtool:Using pthread POSIX real time scheduling.
./flashtool: reading page 0
./flashtool: reading page 1
[...]
./flashtool: reading page 15
./flashtool: flushing buffers

Copy the rom image to a safe place.

Upgrade the rom

Warning! If there are any error messages at all, repeat the process. Repeat the process until it succeeds. If the given prom image cannot be written successfully, write back the stock backup prom image made in the previous step. Do not power down the device until a complete prom image has been successfully written to the device. That was your final warning.
./flashtool -v -w cobalt-2.10.3-ext3-1M.rom
./flashtool: searching for PCI 10b9:7101 : found it at /proc/bus/pci/00/03.0
./flashtool: systype = COBT_3K
./flashtool: bank 0: AMD AM29F080B 1MB
./flashtool: Using pthread POSIX real time scheduling.
./flashtool: writing page 0
./flashtool: buffer page 0 does not exist - creating it
./flashtool: writing page 1
./flashtool: buffer page 1 does not exist - creating it
[...]
./flashtool: writing page 15
./flashtool: buffer page 15 does not exist - creating it
./flashtool: flushing buffers
./flashtool: flushing block 0 to ROM... verifying... done
./flashtool: flushing block 1 to ROM... verifying... done
./flashtool: flushing block 15 to ROM... verifying... done


If there were no errors, attempt to reboot. Otherwise, repeat upgrade process until successful, then reboot.

Using debootstrap

Install debootstrap and nfs-user-server.

This will also install portmapper and possibly other dependencies. You will also likely need to add repositories to your apt sources.list file and update your package manager. You can use my sources.list.
wget http://braggtown.com/projects/qube/sources.list
sudo mv sources.list /etc/apt/sources.list
sudo apt-get update
sudo apt-get install debootstrap nfs-user-server

Create directory to be used for chroot files. The directory will later be used as an NFS server root and must be located at /nfsroot-x86.
sudo mkdir /nfsroot-x86

Download Ubuntu

Use debootstrap to download Ubuntu installation packages using 'sudo debootstrap dapper <release> <chroot_location> <ftp_url>' or use a cd/dvd as the debootstrap source. Install the server version as the Qube won't be able to use X or any windowing environments. A list of mirrors is available at https://wiki.ubuntu.com/Mirrors?action=show&redirect=Archive.
sudo debootstrap dapper /nfsroot-x86 ftp://ftp.ubuntu.com/ubuntu
or
sudo debootstrap dapper /nfsroot-x86 file:/media/cdrom0/ubuntu/
or
sudo debootstrap --arch i386 dapper /nfsroot-x86 http://ftp.ale.org/pub/mirrors/ubuntu

Edit files in NFS root

Edit the /nfsroot-x86/etc/inittab file. Comment out all six of the tty lines and uncomment the first entry for the serial port terminal. You'll also need to change the speed from 9600 to 115200 baud.
sudo nano /nfsroot-x86/etc/inittab
#1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

Copy a full, working apt sources.list file to the chroot environment. If you aren't working on a Dapper machine, you can use my sources.list.
sudo cp /etc/apt/sources.list /nfsroot-x86/etc/apt/sources.list

My sources.list contains the following (I removed the comments and empty lines):
deb http://archive.ubuntu.com/ubuntu dapper main restricted
deb-src http://archive.ubuntu.com/ubuntu dapper main restricted
deb http://archive.ubuntu.com/ubuntu dapper-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu dapper-updates main restricted
deb http://archive.ubuntu.com/ubuntu dapper universe
deb-src http://archive.ubuntu.com/ubuntu dapper universe
deb http://security.ubuntu.com/ubuntu dapper-security main restricted
deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted
deb http://security.ubuntu.com/ubuntu dapper-security universe
deb-src http://security.ubuntu.com/ubuntu dapper-security universe
deb http://archive.ubuntu.com/ubuntu dapper multiverse
deb-src http://archive.ubuntu.com/ubuntu dapper multiverse
deb http://archive.ubuntu.com/ubuntu dapper-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu dapper-commercial main

Create a /nfsroot-x86/etc/fstab.
sudo nano /nfsroot-x86/etc/fstab

The file will look like this:
192.168.0.100:/nfsroot-x86 / nfs defaults 0 0
proc /proc proc defaults 0 0

Substitute 192.168.0.100 for the ip address of your nfs server.

Install and configure packages in chroot

Be sure to include openssh-server, alien, debootstrap, wget, and a text editor. Without mounting /proc, there are some things you won't be able to install at this point, such as samba. You can install packages later, now you just need the essentials.

Chroot into /nfsroot-x86 to install and configure packages
sudo chroot /nfsroot-x86
apt-get update && apt-get upgrade
apt-get install openssh-server alien debootstrap nano wget

Create password for root to access openSSH
passwd

Exit the chroot
exit

Configure NFS and DHCP

Configure the /etc/exports file to export the nfsroot via NFS. Substitute 192.168.0.100 for the ip address of your nfs server. Restart the nfs server.
sudo echo '/nfsroot-x86 192.168.0.100/255.255.255.0(rw,no_root_squash)' >> /etc/exports
sudo /etc/init.d/nfs-user-server restart

Install a DHCP server on the network. When you boot the Qube, you'll want to ensure that this is the only DHCP server on your network.
sudo apt-get install dhcp3-server

Back up your DHCP configuration file.
sudo cp /etc/default/dhcp3-server /etc/default/dhcp3-server.bak

Configure your DHCP server. change INTERFACES="" to INTERFACES="eth0" or the interface you plan to use
sudo gedit /etc/dhcp3/dhcpd.conf
Comment out the following lines:
option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;

Declare a subnet in /etc/dhcp3/dhcpd.conf. My network router is 192.168.0.1. It should look similar to the following:
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.100 192.168.0.200;
  option domain-name-servers 192.168.0.1;
  option domain-name "localdomain.com";
  option routers 192.168.0.1;
  option broadcast-address 192.168.0.255;
  default-lease-time 600;
  max-lease-time 7200;
}

Make an entry for the Qube that looks like the following in /etc/dhcp3/dhcpd.conf.
host qube {
  hardware ethernet 00:10:E0:03:CA:12;
  fixed-address 192.168.0.120;
  option routers 192.168.0.1;
  next-server 192.168.0.100;
  option root-path "/nfsroot-x86";
  option host-name "qube";
}

Where 00:10:E0:03:CA:12 is the MAC/Hardware address of eth0 on the Qube, 192.168.0.1 is the address of your router or other gateway device, 192.168.0.100 is the IP address of the server, and 192.168.0.120 is the IP address you intend to assign to the Qube. If you don't already have a working OS on the Qube, you'll have to tail syslog on the server when the Qube tries to boot from the network to find the MAC address of your Qube. Otherwise you can use ifconfig on the Qube to get it.

Restart your DHCP server
sudo /etc/init.d/dhcp3-server restart

If necessary, set static configuration for server network interface
sudo ifconfig eth0 192.168.0.100 netmask 255.255.255.0 up

Confirm that the Qube will have access to services on the server. Make sure you've either disabled or allowed access in your firewall and that hosts.allow and hosts.deny do not block access. I dropped all of my rules in iptables while I worked on the Qube and moved my hosts.* files to hosts.*.bak.
If you use tcpwrappers, AKA host.deny, move them out of the way.
sudo mv /etc/hosts.deny /etc/hosts.deny.bak
sudo mv /etc/hosts.allow /etc/hosts.allow.bak
Don't forget to reload your firewall and move your hosts.* files back after you've finished installing the Qube.

Troubleshooting network and DHCP issues

Here are some useful tips to verify that things are going right or to figure out why things may be going wrong.
To look at leases: gedit /var/lib/dhcp3/dhcpd.leases. This may help you to determine that your Qube is not getting information from your DHCP server. Confirm that your nfs server is the only DHCP server on your network.
To watch the system log: tail -f /var/log/messages.
Ethereal is also helpful here. It helped me realize that my hosts.allow file was blocking nfs access from the qube. I had to restart networking and ssh.
sudo /etc/init.d/networking restart && sudo /etc/init.d/ssh restart
To verify that the nfs server has been mounted: tail -f /var/log/syslog
This resulted in my first log confirmation in /var/log/syslog that nfs had been mounted:
Oct 21 08:58:19 localhost mountd[5679]: NFS mount of /nfsroot-x86 attempted from 192.168.0.120
Oct 21 08:58:19 localhost mountd[5679]: /nfsroot-x86 has been mounted by 192.168.0.120

As a small aside, the konsole application is extremely useful in situations in which you need multiple terminals. You can name each tab to keep them straight. sudo apt-get install konsole. This is a kde application, but it's worth downloading all of the requisite kde libraries, in my opinion.

Boot and Configure Qube from NFS

Configure the serial port

The settings required by the Qube are 115200 bps, N-8-1 parity. To create a Qube profile in minicom:
sudo minicom -s -o

I used a serial-to-USB cable. The serial port when using the usb-to-serial cable was /dev/ttyUSB0. You could use lsusb to confirm the location of your tty. Save configuration as qube. Restart minicom with:
sudo minicom -o qube

Also see http://www.cobaltfaqs.com/index.php/Using_a_null_modem_cable.

Boot from Net

Boot with Select button held down, select "Boot from Net"

Partition and format disk(s)

It's likely that you won't get a serial console at this point. You'll have to ssh to the Qube. Use the password you assign earlier in chroot.
ssh root@192.168.0.120

I used cfdisk, but I had to create the device nodes first.
cd /dev
./MAKEDEV hda

To use my second disk I had to do the same, but for some reason it was /dev/hdc. You should see the device location in the serial output during Qube boot.
./MAKEDEV hdc

Partition the drive as you see fit using cfdisk or fdisk. cfdisk is probably easier to use.
cfdisk /dev/hda

Format all of the drives using mkfs.ext2, mkfs.ext3, and mkswap. I used ext3 for all partitions other than swap since ext3 is journaling. For example:
mkfs.ext3 /dev/hda1
mkfs.ext3 /dev/hda3
mkswap /dev/hda2
swapon /dev/hda2
Clear the write buffer and confirm that all changes have been written to disk.
sync

Install and configure Ubuntu on Qube

Mount the partitions under /mnt
mkdir /mnt/home
mount -t ext3 /dev/hda3 /mnt/home
mount -t ext3 /dev/hda1 /mnt/

Debootstrap Ubuntu onto the local partitions.
debootstrap --arch i386 dapper /mnt http://ftp.ale.org/pub/mirrors/ubuntu

Copy your full sources.list file into the new system
cp /etc/apt/sources.list /mnt/etc/apt/sources.list

Copy modified files into new OS
cp /etc/inittab /mnt/etc/inittab
cp /etc/securetty /mnt/etc/securetty

Create or edit /mnt/etc/network/interfaces. This example configures both the primary and secondary network interfaces to automatically look for an address assigned by DHCP. Insert the following:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# The secondary network interface
auto eth1
iface eth1 inet dhcp

Edit /mnt/etc/fstab. Make certain it matches the partitions you created in cfdisk and formatted with mkfs.
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda3 /home ext3 defaults,errors=remount-ro 0 1
/dev/hda2 none swap sw 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0

Edit /mnt/etc/hosts
127.0.0.1 localhost.localdomain
192.168.0.120 qube.localdomain.com qube

::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Set hostname of the Qube in /mnt/etc/hostname. However, you'll have to manually remove the hostname that is already in the file. The hostname from the nfs server will have been populated the hostname file. You'll want to remove it. I've chosen the hostname 'qube'.
echo 'qube' >> /mnt/etc/hostname

Chroot into new system to install and configure software
chroot /mnt
apt-get update && apt-get upgrade
apt-get install openssh-server alien nano wget

Set a password for the Qube. If you don't do this, you won't be able to ssh to the Qube. Initially, your username will be 'root'. You should later add a user to use commonly.
passwd

Configure, compile, and install the kernel

Install tools necessary for kernel compiling.
apt-get install build-essential kernel-package gcc libncurses5 libncurses5-dev bin86 gawk ncurses-dev initramfs-tools kernel-package

Choosing a kernel

I suggest following the directions below to compile your own kernel, but the kernel image and headers I am using, based on 2.6.19.2 with support for Netfilter's iptables, are available at http://www.trilug.org/~jjtuttle/qube_kernel.tar.gz. [9.6M]. I may have to take them down if they generate significant traffic for the host, Triangle Linux Users Group. If you use my kernel, skip to Installing A Prebuilt Kernel, if not, continue from here. You may also be interested in Tim Wiley's Compiling Linux Kernel v.2.6.22.6 for Cobalt x86 Machines or Compiling Linux Kernel v.2.6.24.3 for Debian Cobalt x86 Machines. The latter reportedly will allow you to upgrade to Ubuntu 8.04 Hardy Heron.

Download a bz2 kernel (I used 2.6.19.2) from http://www.kernel.org/pub/linux/kernel/v2.6/. I chose this kernel because I wanted to use Jeff Walter's Cobalt kernel patch. See http://gentoo.404ster.com/projects.php?action=view&id=4. I closely followed the Dapper kernel compiling howto at http://doc.gwos.org/index.php/Kernel_Compilation_Dapper.

Download the kernel
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.2.tar.bz2

"

Uncompress and untar the kernel source code
tar --bzip2 -xvf linux-2.6.19.2.tar.bz2

Create a symbolic link to source code. Change into source directory.
ln -s linux-2.6.19.2 linux
cd linux

Copy config file into this directory and rename it.
wget http://www.braggtown.com/projects/qube/config.txt
mv config.txt .config

My config file is a combination of the config created by Jeff Walter at http://gentoo.404ster.com/texts.php?action=view&id=11 and the config that came in the Strongbolt 1.04 beta installation, which is available here.

Patching kernel source

I used the most recent patch from http://gentoo.404ster.com/projects.php?action=view&id=4.
wget ftp://www.404ster.com/pub/gentoo-stuff/patches/cobalt-kernel-2.6.x/linux-cobalt-2.6.19.2-2007012801.illogical.patch

Apply the patch.
patch -p1 < linux-cobalt-2.6.19.2-2007012801.illogical.patch

Compile the kernel

Configure kernel details. Insert any text you like in place of custom in the 'append-to-version=-' string. I used jtuttle# where # is the incrementing version I tried. You shouldn't have to make any changes in menuconfig, just use the tab key to select the exit option and save it. The last line is the command that compiles the kernel. It takes a long time. It took exactly one hour for my kernel to compile.
make oldconfig
make menuconfig
make-kpkg clean
make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers modules_image

Install the kernel.
cd /usr/src
dpkg -i kernel*

If you're asked about stopping due to initrd, say no and continue. There may be another question here to which the answer was also no.

Create vmlinux

I followed the instructions at http://gentoo.404ster.com/texts.php?action=view&id=6.

cd /usr/src/linux
make vmlinux modules modules_install
strip vmlinux
bzip2 vmlinux
cp vmlinux.bz2 /boot/


You might confirm that your bzipped kernel is less than 1800kb. Convert megabytes to kilobytes by multiplying by 1024.
du --si vmlinux.bz2
Running this on my kernel yielded 1.3M. 1.3 multiplied by 1024 is 1331.2kb, well below 1800kb.

Make initial ram disk (initrd)

Make the initial ram disk (initrd) by substituting the name you gave to your kernel.
cd /boot
mkinitramfs -o /initrd.img-2.6.19.2-jtuttle2 2.6.19.2-jtuttle2

Exit chroot
exit

Installing A Prebuilt Kernel

I always compiled my kernel each time I installed Ubuntu on my Qube, but I believe the following instructions will allow you to install the kernel I built on your Qube. You'll need to reboot the Qube with the serial cable attached so you can issue command to your Qube. When prompted during booting, hit the space bar to enter the ROM menu. Type "boot" (no quotes) and press ENTER. You'll need to set two devices in the ROM. First, set your root partition. Your root partition may be different.
set_root_dev hda2
You'll also need to set your boot partiton. Again, yours may be different.
set_boot_dev hda1

Reboot from Qube

That's it. Reboot and try it. If you don't change the dhcp server configuration, you'll see the Qube attempt to mount the NFS server, but it will give up and continue to boot from the kernel on the disk.

You'll likely need to remove the Qube's public ssh key signature from your known hosts file prior to connecting to the Qube via SSh. The signature was recorded when you SSH'd to the Qube while the Qube was running the NFS operating system. When the Qube is running Ubuntu from it's own disk, it will have a different public key. To determine which key signature belongs to your Qube, you can try to SSH to the Qube. The warning message will tell you which line identifies the Qube. Most likely it is the last line of the file, though.
nano ~/.ssh/known_hosts

Acknowledgments

Based largely on Tim Wiley's excellent Debian howto at Installing Debian 3.1 Sarge on a Cobalt RaQ4. Some debootstrap notes for Ubuntu taken from "Installing Ubuntu from a Unix/Linux System: Appendix C. Random Bits". Information on upgrading the rom mostly taken from Installing Red Hat Linux on the Cobalt Qube 3 Appliance, which was down the last time I checked. Kernel patch and instructions from Jeff Walter at gentoo.404ster.com. Details concerning compiling the Ubuntu kernel were take from Kernel Compilation Dapper-Ubuntu Document Storage Facility. Thanks to Donald MacIntyre for offering suggestions to improve this howto. Thanks to Tim Hockin, former Cobalt engineer, for all his contributions. Thanks to Scott Brookes for pointing out that it's possible to upgrade to 8.04.



Related Information

Replacing the fan

I replaced the stock fan, which was a Sunon KD1206PHB3 (DC12V, 1.2W, 0.06Amp, 3000RPM, 15CFM, 26dBA, 60x60x15mm), because it was obnoxiously loud. I bought a CoolerMaster DF6015-12SM from pcpartscollection.com. The fan is quiet, inexpensive, and my experience with that supplier was good. Probably any 2 or 3 pin 60x60x15mm fan will work.

Hard drive upgrade

I have two 120GB Western Digital ATA133 drives in my Qube. Cobaltfaqs.com claims that only the first 127GB of any drive may be used by the Qube, but they based that on the 2.9.36 rom kernel, so that may have changed. Some interesting Qube 2 projects focusing on drive space include the Gigaqube and Teraqube projects.

Using the LCD

My Qube is in the closet, so this wasn't terribly important to me, but it's easy to get the LCD working. The kernel config I used provides support for the hardware in the kernel. For software support, I downloaded the two RPM packages from Ben Stokes' Slackware howto. The files are PANEL_SCRIPTS_CARMEL_1_0_5_.RPM and PANEL_UTILS_5_0_5_I386.RPM. I changed the extensions from RPM to rpm, ran alien on them, then dpkg -i. Now I can write to the LCD with sudo lcd-write "hello world". Actually, I may have last installed the packages linked to from Da Hug Page. I can't recall. My French is pretty nonexistent so you'll have to work that out for yourself. There is a script to grab and display the ip address, but I'm not using it.
I wrote a couple of simple scripts of my own to write the temperature and ip address to the LCD. I put them both in /root/. I wrote it to display the temperature in both degrees Fahrenheit and Celsius.
Temperature:
#!/bin/bash
awk '{print $3 "C/" (9/5)*$3+32 "F"}' /proc/cobalt/sensors/thermal
Ip address:
#!/bin/bash
/sbin/ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

Then I added a command to root's crontab to write these to the Qube's LCD every 10 minutes.
sudo crontab -e
*/10 * * * * /sbin/lcd-write `/root/ip.sh` `/root/temp.sh`
I don't have occasion to look at the LCD panel, though, since my server is in a closet.

Fixing locales issue

It's likely you'll receive errors about the locale not being set similar to the following:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

You'll need to install the base language pack and reconfigure locales.
sudo apt-get install language-pack-en-base
sudo dpkg-reconfigure locales

USB to Serial Converter

I didn't have a serial port on my server or my laptop so I used a USB-to-serial converter. I bought the PPA Intl. PPA 3312 and a DB9 Female - Female null modem adapter. On Ubuntu, the device node is /dev/ttyUSB0. This combination worked extremely well and it's pretty flexible since you can use it on any system with a USB port.

Cobalt Qube and Raq Links

While researching the Qube I collected a large list of links related to the Cobalt Qube and Raq products. I've tagged them at http://del.icio.us/anthro398/qube.