projects. contact. think. deconfused.org.

Legacy Megaraid on RHEL4:

RHEL4 does not include support for legacy Megaraid devices by default. You must enable these manually. For now, you can download the modules for i686 and i686-smp systems here: megaraid_i686.ko and megaraid_smp.ko. These have been compiled on a dual-socket 800MHz P3 machine running the 2.6.9-67EL kernel. You'll probably want to rename each to simply "megaraid.ko" before storing them on your system.

Detailed instructions:

# Instructions current as of 6/16/08
# Boot from CD1 and begin the installation. 
# I usually do this with "linux askmethod text" and do a web install.
# My system has a PERC2/DC hardware RAID controller which does not get detected.
# When the text UI is unable to find a hard disk to install to, hit Alt-F2.
# This will take you to a shell. If you did a net install, your networking will
# already be configured. If not:

ifconfig eth0 up
pump -i eth0  # Gets DHCP lease

# Then, remove the existing megaraid modules:

rmmod megaraid_mbox
rmmod megaraid_mm

# Make some room to work

cd /modules
mkdir mr6 mrs

# Get the legacy modules.
# Substitute your copy of the binary modules if you like.

wget -O mr6/megaraid.ko http://deconfused.org/etc/megaraid_i686.ko
wget -O mrs/megaraid.ko http://deconfused.org/etc/megaraid_smp.ko

# Load the module for the CD environment

insmod mr6/megaraid.ko

# Now you can hit Alt-F1 and continue with the text UI installer.
# Proceed with the installation, but when prompted to reboot, don't!
# IF YOU REBOOT, YOU'LL BE TOAST
# When asked to reboot, hit Alt-F2 and do the following:

cp /modules/megaraid_i686/megaraid.ko \
/mnt/sysimage/lib/modules/2.6.9-67.0.15.EL/kernel/drivers/scsi
cp /modules/megaraid_smp/megaraid.ko \
/mnt/sysimage/lib/modules/2.6.9-67.0.15.ELsmp/kernel/drivers/scsi
chroot /mnt/sysimage
vi /etc/modprobe.conf

# Change so that the "alias scsi_hostadapter" line says:
alias scsi_hostadapter megaraid
# Save and exit. (:wq)

cd /boot

# Now, you have to make new initrds and replace the old ones so that the
# megaraid module gets used when you reboot.
# Replace kernel numbers with your own.

/sbin/mkinitrd initrd-2.6.9-67.EL.img.megaraid 2.6.9-67.EL
/sbin/mkinitrd initrd-2.6.9-67.ELsmp.img.megaraid 2.6.9-67.ELsmp
cp initrd-2.6.9-67.EL.img.megaraid initrd-2.6.67-EL.img
cp initrd-2.6.9-67.ELsmp.img.megaraid initrd-2.6.67-ELsmp.img
exit

# Hit Alt-F1 to return to the text UI, and reboot!

This is unfortunately very inconvenient, because this means you'll have to repeat a process just like this one for subsequent kernel updates. The process is documented in detail here, as I upgrade from 2.6.9-67ELsmp to 2.6.9-67.0.15.ELsmp. I re-use the modules I already have on disk, but you can redownload them if you want:

# First, install the new kernel with up2date.

up2date kernel kernel-smp

# Once completed, copy the existing modules over.

cd /lib/modules
cp 2.6.9-67.EL/kernel/drivers/scsi/megaraid.ko \
2.6.9-67.0.15.EL/kernel/drivers/scsi
cp 2.6.9-67.ELsmp/kernel/drivers/scsi/megaraid.ko \
2.6.9-67.0.15.ELsmp/kernel/drivers/scsi

# Make the new initrds.

cd /boot
/sbin/mkinitrd initrd-2.6.9-67.0.15.EL.img.megaraid 2.6.9-67.0.15.EL
/sbin/mkinitrd initrd-2.6.9-67.0.15.ELsmp.img.megaraid 2.6.9-67.0.15.ELsmp
cp initrd-2.6.9-67.0.15.EL.img.megaraid initrd-2.6.9-67.0.15.EL.img
cp initrd-2.6.9-67.0.15.ELsmp.img.megaraid initrd-2.6.9-67.0.15.ELsmp.img

# /etc/modprobe.conf gets overwritten.
vi /etc/modprobe.conf
# Change so that the "alias scsi_hostadapter" line says:
alias scsi_hostadapter megaraid
# Save and exit. (:wq)
# Now that the new initrds are in place, you can reboot.