* * * * *

                 Installing Debian on a MIPS-based Cobalt RaQ

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
[2] http://www.debian.org/
[3] http://www.debian.org/releases/stable/mipsel/
[4] http://http.us.debian.org/debian/dists/sarge/main/installer-mipsel/current/images/cobalt/netboot/boot/
[5] gopher://gopher.conman.org/0Phlog:2000/02/15-16
[6] http://http.us.debian.org/debian/dists/sarge/main/installer-mipsel/current/images/cobalt/netboot/boot/
[7] http://www.colonel-panic.org/cobalt-mips/
[8] http://www.mysql.com/

Email author at [email protected]