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 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. 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; 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).