ubuntu 12.04(3.x kernel) 在非 /opt 下面安装 MegaCli

LSI 释出的这个 megacli 工具目前的最新版本是 8.04.07,我下的就是 8.04.07_MegaCLI.zip 这个包,不过依然不支持 kernel 3.0 以上的版本,准确的讲是从 8.02.2 开始就有问题了。先下载然后转成 deb 格式:
# wget http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/8.04.07_MegaCLI.zip -O /var/tmp/megacli.zip
# cd !$
# unzip megacli.zip
# unzip CLI_Lin_8.04.07.zip
# unzip MegaCliLin.zip
# alien Lib_Utils-1.00-09.noarch.rpm
# alien MegaCli-8.04.07-1.noarch.rpm 

这两个包默认会安装在 /opt 下面,由于其 /opt/lsi/3rdpartylibs/x86_64/ 下面的包会跟 OMSA 的包产生冲突,可以将其安装的位置移植其他目录,比如 /usr/local/ 下面:
# dpkg -X megacli_8.04.07-2_all.deb  megacli_8.04.07-2_all
# cd megacli_8.04.07-2_all/
# dpkg -e ../megacli_8.04.07-2_all.deb
# mkdir usr/local
# mv opt/* usr/local

# cd ..
# dpkg -X lib-utils_1.00-10_all.deb lib-utils_1.00-10_all
# cd lib-utils_1.00-10_all/
# dpkg -e ../lib-utils_1.00-10_all.deb
# mkdir usr/local
# mv opt/* usr/local
# cd ..

# dpkg -b megacli_8.04.07-2_all/ megacli_8.04.07-2_all.deb
# dpkg -b lib-utils_1.00-10_all/ lib-utils_1.00-10_all.deb

接下来安装就好了:
# dpkg -i *deb

安装完毕之后,如果你愿意折腾可以像这个链接那样,写一个 fake uname 来欺骗 MegaCli64。当然有比这个简单点多的方式,通过 setarch 完成:
# setarch x86_64 --uname-2.6 /usr/local/MegaRAID/MegaCli/MegaCli64 -adpCount

写个脚本加到 PATH 里面就可以方便执行了:
# cat /usr/bin/megacli
#!/bin/bash
sudo setarch x86_64 –uname-2.6 /usr/local/MegaRAID/MegaCli/MegaCli64 [email protected]

ref:
http://action-jackson.de/wp/2012/05/08/how-to-install-lsi-megacli-on-ubuntu-12-04-2/