The Boston Diaries

The ongoing saga of a programmer who doesn't live in Boston, nor does he even like Boston, but yet named his weblog/journal “The Boston Diaries.”

Go figure.

Monday, April 25, 2005

Installing Debian on a MIPS-based Cobalt RaQ

There are two major types of Cobalt RaQs, those based on the MIPS chip (RaQs 1 and 2, plus the Qubes) and those based upon the Intel Pentium chips (RaQs 3 and 4). They come with a version of Linux preinstalled, but they're an older kernel (2.0 or 2.2) and due to the limited nature of the firmware, it's not easy to upgrade them with a more modern Linux kernel.

It can be done.

But it takes some work.

This entry is about upgrading a Cobalt RaQ 1 or 2 (the MIPS based machines).

I had intended to install NetBSD but the install instructions seem to assume you have a bootable Cobalt RaQ to begin with. I didn't, since the unit I was given lacked a harddrive (as I found out); I didn't have the luxury of a booting Cobalt RaQ (it came without a harddrive).

Debian has a port to the Cobalt RaQ (MIPS, not the Intel). The instructions I initially found mentioned the “woody” release (a few years old now) and that distribution failed miserably. Poking around the Debian site lead to the “sarge” release, which worked wonderfully, but in getting it going you need to do quite a bit of work.

I'm not sure if RARP is required for this or not (the NetBSD instructions seemed to indicate it was) but since I had RARP support for a previous NetBSD install a few years ago it didn't hurt to use it. Getting the MAC address of the machine was a simple matter of a forced network based boot and sniffing the network traffic and then rarp -s 00:10:e0:00:68:10. In any case, you will need the MAC address of the Cobalt RaQ.

Then it's configuring of NFS. Easy enough to export the /nfsroot directory (yes, I had to create it) and to keep the potential problems down added the following to /etc/exports:

/nfsroot *(rw,no_root_squash,async)

Now, the final DHCP configuration that worked:

host kobold
  hardware      ethernet 00:10:E0:00:68:10;
  filename      "/boot/vmlinux.gz";
  option        root-path "/nfsroot";
  option        domain-name             "kobold.groomlake.area51";
  option        domain-name-servers;
  option        routers       ;
  option        subnet-mask   ;
  option        broadcast-address;
  server-name   "";

(yes, I know that .area51 is not a valid TLD; it's one I created a few years ago when playing with DNS and it's only used for the private network at Casa New Jersey).

Next step, getting the files that are needed to boot the Cobalt RaQ. If you don't mind Debian, these work. You'll need initrd.gz, vmlinux.gz and vmlinux_raq-2800.gz—while I did get default.colo it didn't seem to actually work but hey, it can't hurt to get it. All the files are placed in /nfsroot/boot/ on the NFS server, and marked executable (I also placed a copy in /nfsroot but that shouldn't matter).

Next step, getting those files loaded. Hook up to the serial console on the Cobalt RaQ (baud rate 115200, parity 8n1 and if that doesn't work, take a paper clip and hold in the button in the hole just to the right of the LCD screen while powering up; that will reset the serial console to 115200 8n1). While powering it on, hit the space bar to get the boot prompt, and type:

bfd /boot/vmlinuz.gz root=/dev/nfs nfsroot=/nfsroot

What you are loading is not Linux, but yet another boot loader that doesn't have the same restrictions as the one built in (it's CoLo, which can be used to replace the existing boot loader, or used in this chaining method). That will boot and if it fails to load the actual Linux kernel (which in my case it always did) you can simply (hah!) type:

ColoPrompt> nfs {dhcp-next-server} {dhcp-root-path} vmlinux-2.4.27-r5k-cobalt initrd.gz
ColoPrompt> execute rd_start=0x{initrd-start} rd_size=0x{initrd-size} console=ttyS0,{console-speed}

(and if that doesn't work, power cycle the Cobalt RaQ and try again—I had to do this twice to get the Debian Intaller running)

You are then running the Debian Installer and from there on out it's just like any other Linux installation. You partition the drives (for this system it's recommended you let it partition the drives), select the type of install and let it go. You'll end up with a usable, if rather bare, Linux system (right now it's compiling MySQL).

Obligatory Picture

[“I am NOT a number, I am … a Q-CODE!”]

Obligatory Contact Info

Obligatory Feeds

Obligatory Links

Obligatory Miscellaneous

You have my permission to link freely to any entry here. Go ahead, I won't bite. I promise.

The dates are the permanent links to that day's entries (or entry, if there is only one entry). The titles are the permanent links to that entry only. The format for the links are simple: Start with the base link for this site:, then add the date you are interested in, say 2000/08/01, so that would make the final URL:

You can also specify the entire month by leaving off the day portion. You can even select an arbitrary portion of time.

You may also note subtle shading of the links and that's intentional: the “closer” the link is (relative to the page) the “brighter” it appears. It's an experiment in using color shading to denote the distance a link is from here. If you don't notice it, don't worry; it's not all that important.

It is assumed that every brand name, slogan, corporate name, symbol, design element, et cetera mentioned in these pages is a protected and/or trademarked entity, the sole property of its owner(s), and acknowledgement of this status is implied.

Copyright © 1999-2024 by Sean Conner. All Rights Reserved.