After doing a fresh install of Linux Mandrake 7.1 on the robot's 2 GB drive for project 1 (as well as getting a working driver for the RangeLAN 2 network card) we ran into problems with the robot control software. We discovered that the only known driver/library (found in Nomad200/Nomad_robot/robot-linux-2.6.7 on the root partition of the older hard drive image described below) for the robot hardware itself (turret, wheels, etc.) would not work with the libraries and kernel that Mandrake supplied. We were presented with 3 options to fix this:
1) Fiddle with the Mandrake install, using library tweaking and/or library compatibility packages to try and make the robot driver/library feel more at home.
2) Attempt to reconstitute the entirety of the robot's hard drive from a point in time when it was known to work.
3) Install an older
Linux distribution that would play well with the robot driver/library.
Our team attempted all three, in the above order, and below is a summary of the outcomes.
1) Mandrake, the company, supplies packages that attempt to allow the use of programs and libraries intended for different/old/obsolete systems. Mandrake utilizes the glibc libraries for use by standard C, whereas the robot driver/library was compiled for libc libraries.
We installed the compatibility packages, and as a result were able to compile the robot driver/library. However, the software died with seg faults, and so we proceeded to the next logical step: modify the machine code. Roy took a stab at changing obviously unnecessary functions calls to simply be returns, but the end result was that the program seg faulted after it had progressed far enough to turn the robot's sonars on.
So we gave up on the idea of massaging and/or beating Mandrake into 'robot OS' mode, and proceeded to...
2) The wonderful world of master boot records and disk partitions! Smart people at an earlier time in the robot's aging progress realized that having an exact copy of a system that worked well would be a good thing, and so in robotics.robotics.cs.hmc.edu:/usr/nomad was kept the master boot record and 3 partitions of data off the 2 GB drive from some point in the past.
Prof. Dodds decided it would be a good thing to upgrade the robot's disk capacity, and so he purchased a 15 GB drive that we attempted to reconstitute the old hard drive image on. Our attempts to make this work resoundingly failed, most likely due to the difference in drive sizes (2 GB and 15 GB being less than and greater than 8 GB, respectively, which is where most older BIOS's and OS's were capped) and probably due also to poor use of the 'dd' command. It was felt that reconstituting the older hard drive image might work more smoothly on the 2 GB drive, but instead of over-writing the Mandrake install we first wanted to try the third option.
3) Thankfully it is possible to mount the partitions of the older hard drive image, so that we can see all the files and determine what Linux distribution was in use. We found that Redhat 3.0.3 was the distro of choice at that time, and so proceeded to download and install. Keep in mind that an 'install' of an OS, in the following paragraphs, involves using the robot's hard drive in an entirely different computer for reasons of convenience/net connection/cdrom access.
Unfortunately Redhat doesn't seem all that interested in maintaining its older releases, such that a person could download, create a CD, and then install. The father of Zeke Burgess had a Redhat 3.0.3 CD sitting around, though, and so we procured a copy of its contents and began the install. This attempt failed miserably, though, because we found that neither the CD nor any website seemed to have the complete release. Redhat seems to have spread out the necessary packages and other files across the 2.0, 2.1, and 3.0.3 releases at its archive site (ftp://ftp.redhat.com/pub/redhat/old-releases).
So after having shaken
the dust from our feet while leaving Redhat behind we moved on to try a
Debian install, specifically 1.3.1