Linux Step By Steps
Multiple SCSI adapters
Written by Dennis Veatch on 25-January-2004

I have been using Mandrake for sometime now starting with 9.0. One of the things I noticed during the install was how it handles multiple SCSI adapters. By that I mean the order the kernel installs the appropriate modules.

The box in question is an IBM PC Server 330 with built-in Adaptec 7880 and ServeRAID (hardware level) adapters. It currently has what will be Mandrake 10 running on it. The 7880 uses the aic7xxx.ko module while the ServeRAID
uses ips.ko module. The ServeRAID is setup as Raid 5 with one hot spare and is the systems primary storage for a local cooker mirror among other things.  As such I don't want to boot from the raid array. So BIOS is set to
initialize the 7880 first as I want it to be /dev/sda.

So now during the install process you reach the part about choosing custom partitioning or one of the others. I pick custom. OK, now I' there and I see the 7880 is not /dev/sda but is /dev/sdb.

This is easy to fix, just complete the install in boot into the system. Here's what I did to change that boot order;

1. Changed /etc/modules.conf entry to read;
probeall scsi_hostadapter aic7xxx ips

2.  Changed /etc/modprobe.conf entry to read;
install scsi_hostadapter /sbin/modprobe aic7xxx; /sbin/modprobe ips; /bin/true

3. Changed the entries in /etc/fstab that referenced /dev/sda's to /dev/sdb's and vice versa.

4. Changed /boot/grub/device.lst to read;
a) (hd0) /dev/sda
b) (hd1) /dev/sdb

4. Ran "mkinitrd -f -v /boot/initrd-2.6.2-0.rc1.1mdk.img 2.6.2-0.rc1.1mdksecure".
Since by default initrd uses the entries in /etc/modules.conf (now that aic7xxx is first) it created the new initrd
with aic7xxx first then ips.

Now my Host Bus Adapters are loaded in the order I want.