Installing Red Hat Linux 6.2 on a Compaq ProSignia 300


The ProSignia 300 uses a SMART array controller, which gives RAID 5 fault tolerance. The RedHat 6.2 distribution contains the cpqarray.o driver which is adequate for the install. You do not need a new driver.

Unfortunately, you do need to compile it into your kernel if you intend to place your root filesystem on the RAID array. It will not work as a module, although the installation will run fine. You won't be able to mount the root file system, and the kernel will panic as a result. This applies to the EISA bus variety only. PCI versions can be run as modules.

If you're using a really old SMART controller, i.e. an EISA bus version, you will need to specify parameters because the hardware is not detected and therefore the cpqarray.o module is not loaded.

Here's how I got mine to install:

Run the Compaq SmartStart utilities and run system erase. THIS WILL TRASH YOUR ENTIRE SYSTEM. Mine had NT Server on it. Tee Hee. ;-)

Chose a manual installation of Linux. If your SmartStart CD is old and doesn't support Linux, select UnixWare 7 instead. The CD then creates a Compaq System Partition (32MB) and copies all its utilities on to it. Eventually it tells you to put the Linux installation media into the drives and reboot.

I found that the RedHat CD wouldn't boot, so I used rawrite to create a boot disk of the boot.img file. All of these are on the CD.

At the install prompt, I entered text expert. When asked for the driver disk select cancel, you don't need one, these aren't the droids you're looking for.

Select the symbios ncr53c8xx driver. Add the Compaq SmartArray controller, but tell it that you wish to specify parameters. Parameters are eisa=0x3000 where 3 is the EISA slot number. Watch the server's POST if you're not sure which slot it's in.

I didn't bother specifying a network card and I found that RedHat picked the pcnet32.o driver for the onboard network controller. The lance.o driver works as well, but you must specify parameters:io=0x7000 irq=3. You can find the io address and interrupt by loading the Compaq system utilities and having a ferret around in the appropriate place.

Installation them proceeds as normal. Make sure that you install lilo into the boot partition, not the master boot record or you will scribble all over the Compaq system partition. Don't add the Compaq system partition to lilo as this mucks other stuff up, or so I am lead to believe.

Make sure when you select packages to install, that all of the kernel development packages are installed:

kernel-source
kernel-header
cpp
make
ncurses
ncurses-devel
glibc
glibc-devel
egcs
egcs-objc

I chose to install everything, which will squeeze into a 1.6MB /usr partition (just). Eventually (it's not quick on a P90) you will get to a "Congratulations" screen. Don't press enter to reboot. Press ctrl-alt-F2 to switch to the bash screen.

Use chroot /tmp/sysimage to force your root directory to the point where root is normally mounted. cd /usr/src/linux and follow the steps for compiling a kernel.

A couple of points that I had to work out/rummage around for:

In the kernel .config file, set the CONFIG_BLK_CPQ_DA parameter to y. This is usually best done when doing a make config. This is the magic switch that turns on the SmartArray support within the kernel.

The /etc/conf.modules (or possibly modules.conf) file will contain the lines

alias scsi_hostadapter1 cpqarray
options cpqarray eisa=0x3000

Remove them. Leaving them in causes mkinitrd to complain that it can't find the cpqarray.o module. This is fine, we're compiling it into the kernel.

When you've compiled and installed the kernel, you'll need to update lilo.conf. Add the line:


append="smart2=0x3000"

and don't forget to run /sbin/lilo to install it. If you don't do this you will get a kernel panic when Linux attempts to mount the root filesystem.

Type ctrl-d to end the chroot session, switch back to the installation screen (ctrl-alt-F1) and press that enter key.

System should then reboot off the RAID.

Should you forget to add the line to lilo.conf, you can simply type it as an argument at the LILO: prompt:

LILO: linux smart=0x3000

Memory

Not all the memory is detected, so specify mem=xxxxm or mem=xxxxk as a lilo argument or add it into the /etc/lilo.conf file after the smart line:

append="smart2=0x3000, mem=72m"

Note the space between the two parameters

Device Nodes

Linux usually uses /dev/sda etc for the first SCSI disk/array. Things are different with the SmartArray. The first disk array on the first controller is /dev/ida/c0d0. The first partition is /dev/ida/c0d0p1 etc.

Oops.

Occasionally I drop a brick. Today was one of those days. I manged to delete libc.so.6 from the /lib directory. Oh dear. This shared library is used in just about every place you can think of, including things like init, mv, cp ln etc.

The practical upshot of this is it's a damn good way to kill a perfectly good machine with very little effort. Time to reach for the CD and run rescue. Or so I thought. If only it were that simple.

I did the usual trick of pretending to use expert mode and specified the module parameters so that the cpqarray driver loaded. I made the device nodes and did fdisk -l to list the partitions. All was good. Except when I tried to mount the root partition it failed. No error, just no mount. I figured the file system needed cleaning before mount would touch it. Oh dear. e2fsck falls over with

Device not configured while trying to open /dev/ida/c0d0p2
Possibly non-existent or a swap device?

Lies!. It is a valid filesystem. Oh heck, what to do? The driver must be working in order to view the partition table, but why won't e2fsck run?

I Figured that I could mount a clean file system, so I created one by running fdisk and turning the swap partition into a file system. This is simply a case of changing the partition type to 83. I then did a mke2fs on it. This succeeded and I was able to mount the new filesystem. And now for the weird bit. Having successfully mounted this partition, e2fsck was able to check the original root fs that previously it had wobbled over. Onto a winner. I can now mount root, restore my little foobar and wha-hey!. Only thing to remember is to return the swap to its original condition.

This is all rather bizarre. Somehow the driver isn't fully operational until the disk has had some sort of activity. Ho Hum.

Now the panic is over, I tried rescue again. The partitions simply fail to mount under rescue, even when clean. However if you run fdisk and simply write the unmodified partition back to the disk, a subsequent attempt at mounting succeeds. Odd? Just a tad. I just hope this is useful to someone, someday.

Useful Links