Had a machine that was running fedora core 1 on it. It has a Ultra 160 SCSI controller with a Adaptec AIC-7898 chip on it. But the motherboard had a Adaptec Ultra 320 AIC-7902 chip on it. The drives were all U320 so why not plug into the motherboards controller. Well to do this I was told we had to use the current system with out a kernel recompile or reinstall. Luckly the aic79xx.o module was already built. I turned on the U320 chip on the mobo by jumping it and rebooted. The old module failed to load as expected so I edited the modules.conf file and modprobe.conf files. Changed the line "alias scsi_hostadapter aic7xxx" to "alias scsi_hostadapter aic79xx". Then rebooted and it was still trying to load the aic7xxx module. I thought this was strange. Long story short I find out that I had to make a new initrd image so it would boot with the new configs from the .conf files. This system was setup to boot from an initrd image. To make the new image I used the command "mkinitrd" and the name of the current running kernel exactly. "mkinitrd /tmp/initrd-2.4.22-1.1199-smp.img 2.4.22-1.1199-smp". Then copy the new initrd image over to the /boot directory "cp /tmp/initrd-2.4.22-1.1199-smp.img /boot". Reboot and it came right up.
After reading the man page it makes sense now but just trying to figure it out is the hard part. Here is some info on it:
mkinitrd creates filesystem images which are suitable for use as Linux initial ramdisk (initrd) images. Such images are often used for preloading the block device modules (such as IDE, SCSI or RAID) which are needed to access the root filesystem. mkinitrd automatically loads filesystem modules (such as ext3 and jbd), IDE modules, all scsi_hostadapter entries in /etc/modules.conf, and raid modules if the systems root partition is on raid, which makes it simple to build and use kernels using modular device drivers. Any module options specified in /etc/modules.conf are passed to the modules as they are loaded by the initial ramdisk.