当初玩儿N40L的时候总觉得BMC这个东西实在是太方便了,简直是神一样的存在,所以在看到Remote Access Card打折的时候便毫不犹豫地买了一张。不过在真正了解各大厂商的IPMI方案后发现,这个领域几乎是垄断一样的存在:不管是Dell的iDRAC,HP的iLO,还是联想的IMM;无论是板载还是外挂,几乎全都是Avocent的软件配合Aspeed的硬件。而HP这张配合Gen 7 MicroServer的卡不知为何,固件几乎从来没有更新过,以至于在64位盛行的今天,这张卡最重要的vKVM和vMedia功能都没什么办法正常使用了,因为自带的软件实在是太过时了。
在经过了一系列的谷歌和试错后,我终于找到了让这张卡正常在当代系统下使用的方法。这种方法主要包含两个部分:指定jre版本,以及使用其他厂家BMC固件中包含的更新版本的jar文件。
首先,由于Avocent老版本的客户端都不支持Java 8以上的jre,所以我们得先搞一个Java 7的jre,没什么必要安装,有可运行文件就够了。x64平台可以用64位版本的jre,最新版本是7u80。创建一个项目文件夹,然后将jre解压到这个文件夹里(解压后会得到一个文件夹,名字应该是jre1.7.0_80)。
接下来就是跑去偷其他BMC的固件啦~ 受到这篇文章的启发,我们可以用联想IMM的固件得到更新版本的KVM客户端,以及所需要的64位库文件。
由于懒得折腾个环境装binwalk,所以干脆去下载文章中提到的固件版本好了。起初是在联想支持网站的这个页面下看到了tgz格式的固件,但下载链接的名字是:
https://download.lenovo.com/pccbbs/thinkservers/bmc_64.00_web_rd640.tgz
于是乎,将文件名替换为文章中的名字:
https://download.lenovo.com/pccbbs/thinkservers/tshbmc07sr14.tgz
果然下载到了想要的版本的固件包(嘿嘿)
然后找到固件的镜像文件,分离其中的squashfs镜像:
$ dd if=fw290.img of=lenova.sqsh bs=1686528 skip=1 |
在Windows平台上,7-zip可以轻松访问squashfs镜像,在里面搜寻一番,将
$ /usr/local/www/software |
文件夹解压出来,我们要的东西都在里面了。
首先是Java Applet,将上述文件夹中 avctKVM.jar 和 avctVM.jar 两个文件放到项目文件夹里,然后在项目文件夹内创建一个lib文件夹。将 avctKVMIOWin64.jar 和 avctVMWin64.jar 两个文件的后缀名改为zip,解压,并将解压出来的两个dll文件(名称应该是 avctKVMIO.dll 和 avmWinLib.dll)放到刚才创建的lib文件夹中。
最后一步就是创建启动文件了。这个东西你可以直接下载我的gist里现成的文件:
当然,也有很多其他的版本,比如这个。别忘了替换上你自己的IP地址、用户名和密码。
默认情况下,IPMI卡会自动生成一对随机的用户名密码用于KVM连接,但其实你可以进入Users菜单,开启一个新的用户,将权限设置为Operator,IPMI权限设置为None并将这对用户名密码写入上述的启动文件中,这样就不用每次去下载jnlp文件获取临时用户名和密码了。
IMM固件的客户端带有电源控制(开机、重启之类的)功能,但HP这张卡不支持通过客户端更改电源状态,只能通过网页或IPMI接口。由于使用了独立的jre,现在启动客户端的时候应该是不会再看到证书错误的提示了。由于64位库的存在,Virtual Media也可以在最新的系统上使用了,远程加载ISO、软盘镜像真的是太方便了。
根据上面IPMI解包的文章的方法,你也可以尝试使用更新版本的固件,欢迎讨论。