这里介绍怎么样在ubuntu 12.04下安装infiniband的MLNX_OFED_LINUX v2.0.iso驱动。在官方网站http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers上可以下到ubuntu 12.04的版本。有些朋友可能会问,既然有ubuntu12.04版的驱动,安装应该不是特别困难的吧。我本来也是这么认为的,可是事实证明,在linux上装软件,在成功之前,永远不要把问题想象的那么简单。
首先把下载的iso文件mount到/mnt下。命令是:sudo mount -o ro,loop MLNX_OFED_LINUX-2.0-2.0.5-ubuntu12.04-x86_64.iso /mnt
然后进入/mnt目录下运行sudo ./mlnxofedinstall --all。--all是配置文件,大家可以根据需要配置,具体的可以在user manual中查看到。结果就碰到错误了,下面是截图
大概意思是在DEBS目录下的deb文件出现了错误。为了准确的定位具体错误,我用手动的方法安装mlnx-ofed-kernel-dkms_2.0-OFED.2.0.2.0.5.g1593535_all.deb这个包,命令是:sudo dpkg -i DEBS/mlnx-ofed-kernel-dkms_2.0-OFED.2.0.2.0.5.g1593535_all.deb。截图如下:
大概意思是缺少这些个包。这里我就犯难了,因为12.04的内核是3.5.0-23。难不成我要装的新的内核吗?经过详细的调查,也经过试验,我发现了解决的方法。
这个是从ubuntu官网上的信息,大家可以看到上面缺失的4个包都是不可用。我大胆的猜测,这4个包只要安装其中一个就可以消除依赖,并且只需安装填实的包中的一个。由于12.04中的软件源都不存在2.6.32的包信息,于是我在网上找到了相关的deb包下载下来安装,网络地址是http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.32/,下载的是linux-headers-2.6.32-020632_2.6.32-020632_all.deb
用sudo dpkg -i linux-headers-2.6.32-020632_2.6.32-020632_all.deb命令将其安装
然后重新安装infiniband驱动。然后惊奇的发现,一切正常,哈哈!
在/etc/network/interfaces中配置了相关地址后,就可以正常使用infiniband了,很神奇吧!