Multiple SCSI adapters and their boot order.

Dennis Veatch dveatch
Mon May 17 11:58:43 PDT 2004


For those that have multiple SCSI adapters and want to change the order the 
kernel loads the modules, this may be of help.

I had sent this to Mandrakes Cooker list whilst trying to figure out why a 
2.6.x kernel would have some pivot_root errors and then panic. 

On Sunday 18 January 2004 04:40 pm, Dennis Veatch wrote:
> How do I change the load order of ips.ko and aic7xxx.ko when running
> mkinitrd? I want 2.6.0 to load the aic first then ips. Tried swapping their
> order in /etc/modules.conf but no change?

Pardon the Emily Post violation.

First to lay some background. The box is a IBM PC Server 330. It has built in 
an Adaptec 7880 (aic7xxx.o) and IBM ServeRAID (ips.o) with a 6 drive hot swap 
bay. The raid bay is fully populated running Raid 5 with one hot swap spare. 
The Adaptec has one drive connected. 

So when installing Mandrake I would not want to install anything on the MBR of 
the raid array and choose to have it put on the Adaptec drive. That being the 
case I have the BIOS set the Adaptec as the first HBA. So then /dev/sda 
should refer to the drive on the Adaptec and quite naturally /dev/sdb should 
refer to the Raid 5. So I would expect to see during boot up, aic7xxx.o 
loaded first then ips.o.

This is not how Mandrake cooker has things setup. In fact they are 
flip-flopped. The ips.o is loaded then aic7xxx.o. 

So to get 2.4.24-0.pre2.1mdksmp load the HBA's in the correct order, the 
following was changed;

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.4.24-0.pre2.1mdksmp.img 
2.4.24-0.pre2.1mdksmp". Since by defautl initrd uses the entries 
in /etc/modules.conf (now that aic7xxx is first) it created the new initrd 
with aic7xxx first then ips. 

Now the system boots up with the with the modules loaded in the correct order 
and accurately reflects how the hardware is really configured.

Some may be thinking why the big deal if it was working before. Well, 

1. It has always annoyed me the module loading did not match how my system was 
really configured.

2. Thought on the long shot this might be why 2.6.0 will not boot on this box. 
Still no joy there.

So now the question is, why does the install process assume the ServeRaid 
is /dev/sda when the system BIOS says it should be /dev/sdb? Because that's 
where it's first seen when you choose custom partitioning. The reason is the 
order aic7xxx and ips are listed in module.conf and modprobe.conf.

-- 
Registered Linux user 193414
http://counter.li.org

"Trying"? My contribution was much closer to a "feeble wave in the general 
direction of something that might lead you one step closer to a solution 
if you squint really hard and do all of the work."



More information about the Linux-users mailing list