There are two major types of Cobalt RaQs, those based on the MIPS (Microprocessor without Interlocked Pipeline Stages) 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 [1] 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 [2] has a port to the Cobalt RaQ [3] (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 [4], which worked wonderfully, but in getting it going you need to do quite a bit of work.
I'm not sure if RARP (Reverse Address Resolution Protocol) 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 [5] it didn't hurt to use it. Getting the MAC (Mandatory Access Control) address of the machine was a simple matter of a forced network based boot and sniffing the network traffic and then rarp -s 10.0.0.15 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 (Network File System). 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;
fixed-address 10.0.0.15;
filename "/boot/vmlinux.gz";
option root-path "/nfsroot";
option domain-name "kobold.groomlake.area51";
option domain-name-servers 10.0.0.1;
option routers 10.0.0.1;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.0.255;
next-server 10.0.0.3;
server-name "10.0.0.3";
}
```
(yes, I know that .area51 is not a valid TLD (Top Level Domain); it's one I created a few years ago when playing with DNS (Domain Name Service) 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 [6]. 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 (Liquid Crystal Display) 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 [7], 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 [8]).
[1] http://www.netbsd.org/Ports/cobalt/faq.html
[3] http://www.debian.org/releases/stable/mipsel/