Building lsi mpt fusion drivers in centos 5


In trying to test a set of SAS cables recently I had to build the lsi mpt fusion driver in Centos 5.9.  I really don’t recommend you do this on a production machine or a machine you care much about.  I was seeing errors while trying to uses disks in a JBOD disk array. This worked for me in CentOS 5.9. The documentation that lsi gives for doing this in the readme with the drivers is for old kernels. My instructions work for a 2.6 kernel.

kernel-devel usual gcc glib and make packages I might be missing some packages here but again I expect you to know how to setup the kernel source so that this works. If the commands start failing most likely you missed a package.

Preparing kernel source
Download the lsi mpt linux driver bundle. It should contain a directory with the kernel source.
cd /usr/src/kernels
Now cd into the directory for your current kernel uname -r
Something like 2.6.18-348.1.1.el5-x86_64
cd 2.6.18-348.1.1.el5-x86_64/drivers/message
Backup the current driver source.
tar -cvf fusion_orig.tar fusion
rm -rf fusion
mkdir fusion
pwd to get the current working directory
change into the directory where you uncompressed the lsi driver.
cd message/fusion
find . -print |cpio -pdvm directory from pwd above
find . -print |cpio -pdvm /usr/src/kernels/2.6.18-348.1.1.el5-x86_64/drivers/message/fusion
Your source should be setup now.

Building module
In the kernel source directory /usr/src/kernels/2.6.18-348.1.1.el5-x86_64
make oldconfig
make prepare
make modules_pepare
make M=drivers/message/fusion
cd drivers/message/fusion
cp *.ko /lib/modules/`uname-r`/drivers/message/fusion
depmod -a

Finally reboot the machine. After reboot run modprobe -l |grep mpt to get the path to the mpt driver. Then run modinfo /lib/modules/2.6.18-348.1.1.el5/kernel/drivers/message/fusion/mptbase.ko (change this to output from modprobe). This should show the version of the driver you downloaded.

Leave a Reply