ML110 G6 で BMC と Ubuntu Server を試す

最近仕事で BMC (Board Management Controller: サーバのリモート管理を可能にする追加ハードウェア) のついた PC サーバに Ubuntu Server 12.04 LTS をセットアップする機会がありました。

BMC も Ubuntu Server も初めてでいろいろと興味深かったので、自宅でもしばらく電源の入ってなかった HP ML110 G6 に Ubuntu Server をインストールしていじってみることにしました。

まず ML110 G6 に Ubuntu Server 12.04 LTS (64bit 版) をインストールします。これはテキストベースの Debian Installer とほぼいっしょで、デバイスの認識などでも特にひっかかるところはありませんでした。いつものように tasksel を一切実行しないミニマルパッケージ構成でスタートです。

次は ML110 G6 の BMC (Lights-Out 100) を試してみようということで BIOSBMC のネットワーク設定を行い、Web ブラウザで BMC に接続して設定を確認し、他のホストから ipmitoolSOL (Serial over LAN) を試してみたのですが、これがどうもうまくいきません。 BIOS の出す文字は出てくるのですが入力が一切できないのです。

わからんので ML110 G6 サポートページ を見たところ BIOSBMC ファームウェアも古いことがわかったので、これを更新することにしました。

ありがたいことに Linux で実行できるファームウェア更新プログラムとして CP016013.scexe (BIOS) と CP017117.scexe (BMC) というものが提供されています。 SCEXE (Smart Component Executable) とかいう名前がついているみたいですが、やってることは単なるシェルアーカイブファイルといっしょです。

BIOS 更新はマニュアル通りに実行してすんなりできました (勝手に /var/cpq というディレクトリを作るのに腹が立ちましたが)。

yaegashi@ml110:~$ sudo bash CP016013.scexe 

ところが BMC 更新のほうは途中でこけてうまくいきません。

yaegashi@ml110:~$ sudo bash CP017117.scexe 
./hpsetup: 2: .: lo100.sh: not found

途方にくれつつぐぐってみたところ こちらのブログSCEXE には --unpack オプションがあるということを知り、まずはこれで中身を取り出しました。

yaegashi@ml110:~$ bash CP017117.scexe --unpack=hoge
yaegashi@ml110:~$ cd hoge

自動実行される hpsetup#!/bin/sh のスクリプトですが bashism があるようだったので bash で実行してみます。

yaegashi@ml110:~/hoge$ sudo bash hpsetup 
Parameters are: 
HP Lights Out 100 Offline Firmware Update Engine
     Copyright (c) 2009 - Hewlett Packard
-----------------------------------------------
Running with 
Parsing 
./lo100.sh: line 16: ./lo100flash: No such file or directory
Found IPMI - checking results
cp: cannot stat `CP017117_disc.xml': No such file or directory
Package 4.23 - currently at 4.21
Firmware binary payload is LdrImage.bin
Firmware package is version 4.23
Not forced - checking version
           -Update needed
Flashing firmware
./lo100.sh: line 158: ./lo100flash: No such file or directory

こんどは lo100flash が実行できなくてこけました。 No such file or directory と出ていますがこのファイルは存在します。 file で調べてみると 32bit ELF の実行形式であることがわかります。

yaegashi@ml110:~/hoge$ file lo100flash 
lo100flash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped

ELF を実行しようとしてこうなるのは 32bit のライブラリがシステムにないせいだなとピンときたので、いつもの癖で ia32-libs パッケージをインストールしようとしたところ、250 くらいのパッケージをインストールされそうになり慌てて ^C で止めました。

yaegashi@ml110:~/hoge$ sudo apt-get install ia32-libs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  bluez bluez-alsa:i386 dconf-gsettings-backend dconf-service esound-common
  glib-networking:i386 glib-networking-common glib-networking-services
  gsettings-desktop-schemas gstreamer0.10-plugins-base:i386
...
0 upgraded, 249 newly installed, 0 to remove and 0 not upgraded.
Need to get 70.0 MB of archives.
After this operation, 227 MB of additional disk space will be used.
Do you want to continue [Y/n]? ^C

そういえば Ubuntu は 1 年前から multiarch 化してたんだったなあ、ということで必要そうな 32bit のライブラリパッケージを個別にインストールします。

yaegashi@ml110:~/hoge$ sudo apt-get install libc6:i386 libstdc++6:i386
yaegashi@ml110:~/hoge$ ldd lo100flash 
	linux-gate.so.1 =>  (0xf76f1000)
	libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf76e3000)
	libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf76c8000)
	libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf75e2000)
	libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf75b6000)
	libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7598000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf73f3000)
	/lib/ld-linux.so.2 (0xf76f2000)

ここまでやってようやくエラーなく実行できるようになりました。

yaegashi@ml110:~/hoge$ sudo bash ./hpsetup 
Parameters are: 
HP Lights Out 100 Offline Firmware Update Engine
     Copyright (c) 2009 - Hewlett Packard
-----------------------------------------------
Running with 
Parsing 
Found IPMI - checking results
Package 4.23 - currently at 4.21
Firmware binary payload is LdrImage.bin
Firmware package is version 4.23
Not forced - checking version
           -Update needed
Flashing firmware
HP Proliant Lights-Out 100 Flash Utility v1.2-00
Copyright (c) 2003, 2010 Hewlett-Packard Development Company, L.P.
[01:11:29] Validating Input File Run-time Image.
Validating Input File Image...................
[01:11:29] Run-time Image Checksum Validated
[01:11:29] Run-time Image Size (Bytes to Flash): 2071280
[01:11:29] Current BMC FW Revision: 4.21
*WARNING: FLASH PROCESS MAY TAKE A FEW MINUTES TO COMPLETE.
*WARNING: DO NOT CYCLE POWER OR IN ANY WAY INTERRUPT THE FLASH PROCESS.
Erasing Sectors...............................................................
Writing Sectors.............................................
Performing BMC Warm Reset...
Restoring BMC Sensors...
[01:14:12] Flash Process Complete.
[01:14:12] Current BMC FW Revision: 4.23
[01:14:12] Total elapsed time                                164.00 sec(s)

更新中は筺体ファンが例の轟音をたてて回転しっぱなしになります。深夜にやらなければよかった。

ファームウェア更新を終えて再起動したところ、SOL でも入力を受け付けるようになり、BIOS セットアップにも正常にアクセスできるようになりました。

Lights-Out 100 のマニュアル を読むと、いろいろ便利な使い方が書いてあります。

2012/06/30 18:28:00 JST