Friday, July 15, 2005
Drool
I want one of these keyboards! (link via Jason Kottke)
Postmortem on a Cobalt RaQ4 install/upgrade
Oddly enough, installing Linux on a Cobalt RaQ 1 or 2 is easier than installing Linux on a Cobalt RaQ 3 or 4, dispite the 1/2 not being an Intel based machine.
But yesterday, as I was lying face down on my bloodied keyboard, I suddenly realized that Smirk was telling me something. “Sean,” he said. “you don't have to get Apache running on the firewall.”
I had gotten close yesterday—with Wlofie's help the night before, we
were able to recover one of the RaQ4s with it's initial distribution, and I
had gotten a Linux 2.4 kernel and iptables
installed and
running. It was only getting Apache running that I did a horrible mistake:
I mounted the working drive in my workstation! That right there was
a monumental mistake.
You see, the Cobalt RaQ firmware (which is responsible for loading Linux
off the disk) only supports an ext2 revision 0 file system
and the fact of my just mounting said drive (for write access no
less) “fixed” it so that it was no longer a revision 0 file
system. In fact, I'm not sure what exactly happened, but the upshot of
mounting a filesystem formatted under Linux 2.2 onto a Linux 2.6 system
munged every symbolic link on the file system. Move the drive back to the
Cobalt RaQ, and attempt to load Apache, I kept getting stuff like:
Apache: libfoo.so not found.
I then check to see what's up:
-rw-r--r-- 1 root root 120184 Mar 28 2000 libfoo.a lrwxrwxrwx 1 root root 11 Jul 14 14:44 libfoo.so -rw-r--r-- 1 root root 120528 Mar 28 2000 libfoo.so.1
Well, libfoo.so
is there, but it should
look like:
-rw-r--r-- 1 root root 120184 Mar 28 2000 libfoo.a lrwxrwxrwx 1 root root 11 Jul 14 14:44 libfoo.so -> libfoo.so.1 -rw-r--r-- 1 root root 120528 Mar 28 2000 libfoo.so.1
And it wasn't just one or two symbolic links, but (at least in
/usr/lib
) every symbolic link was borked in this
manner.
What I did next only made things worse (resulted in the “kernel panic: counldn't find init” error) so I won't bother going into detail about that.
No, what eventually worked was the following:
- One Cobalt RaQ 3 or 4 that can still boot of its drive
- One Cobalt RaQ 3 or 4 Rescue CD
- One PC (A) with
- One (1) CD-ROM drive
- One (1) Harddrive
- One (1) 3Com-509B network card (there are three or four others that work, but I don't have that list handy right now)
- One PC (B) with
- Serial port capable of 115,200bps and 8n1
- Software capable of running said serial port at said settings
- NULL serial cable
- Network switch
- At least two network cables
- Hook NULL serial cable between Cobalt RaQ and PC B
- Start serial software on PC B and configure serial port to 115,200bps 8n1
- Hook Cobalt RaQ up to switch using network cable.
- Turn on Cobalt RaQ, and make sure it will use the serial console (you may have to shove a paper clip into the small hole next to the LCD screen as you power up to enable the serial console).
- Log into the Cobalt RaQ as root.
- Configure the network to something usable (
ifconfig
,route
, etc). - Download the latest version of the firmware (2.10 works fine in both RaQ3s and RaQ4s).
- Install new firmware.
- Shutdown Cobalt RaQ.
- Hook up PC A to network.
- Install rescue CD into CD-ROM.
- Reboot PC A from rescue CD.
- Accept license agreement.
- Turn on Cobalt RaQ holding down the “S” button, select “boot net” option.
- Play Solitare, Tetris, or eat lunch for the next half hour or so.
- Power cycle Cobalt RaQ.
- Power cycle Cobalt RaQ when it asks.
- Log into Cobalt RaQ as root.
- Run
passwd
and install a root password. - Download special Linux 2.4 kernel for Cobalt RaQ.
- Install Linux 2.4 kernel and kernel modules.
- Reboot.
- Reconfigure as required.
That last step, “reconfigure as required” may take a while. It may include stuff like downloading the source for such packages as ssh, Apache, MySQL, extracting the files, and doing the magical incantation:
./configure make make install
a few times over the next few days (since I had already done this step before a few months ago, I could just copy the existing binaries).