2013/02/08

HP Z400にESXiをインストール

何年も前のエントリーですが、下書きのまま放置してたので公開します。ただ、もうESXi4.1の情報なんて価値がない気がします。この時構築した箱はまだ活躍中です。

 

目標

  • HP Z400にESXi 4.1U1をインストールする
  • 蟹NICを一枚追加する
  • USBメモリからインストールする
HP Z400のオンボードのNIC(Broadcom NetXtrem) のドライバはESXiのインストーラーに含まれているのですが、認識してくれずインストーラーーがコケてしまいます。これを使えるようにするのと、ついでに蟹NICを1枚追加して、こっちはインストーラーにドライバも無い(サポートされていない)ので、ドライバを含んだカスタムのインストーラーをUSBに作るの目標。

準備するもの

  • ESXiのインストーラーのCDのiso(VMware-VMvisor-Installer-4.1.0.update1-348481.x86_64.iso) VMwareから貰ってきます。
  • 追加する蟹NICのドライバ(後述)
  • USBメモリ1G以上のもの1つ
  • Linuxが動いているPC(VMじゃない物理マシンの方がベター)
Windowsで通したい人はがんばってください。

ハードウェアの確認


あらかじめHP Z400にNICを追加。BIOSの設定でSATA-RAIDをIDEに変更しておきます(影響よくわからず)。

CDドライブが無い場合、途中の工程をすっとばしてUSBメモリのインストーラーを作り、起動します。CDドライブが使えるなら、CD1枚無駄にしますが、素でisoを焼いてしまいブートしてみるのが確実に早いです。素のインストーラーでは、NICが認識されない先でインストーラーがコケるので、ここでALT+F1でシェルに降ります。

lspci -v | less で、NICの箇所を見つけてメモります。

オンボードNIC
000:001:00.0 Ethernet controller Network controller: Broadcom Corporation NetXtr
eme BCM5764M Gigabit Ethernet PCIe 
         Class 0200: 14e4:1684
蟹NIC
000:055:04.0 Ethernet controller Network controller: Realtek Semiconductor Co.,
Ltd. RTL-8169
         Class 0200: 10ec:8169

それぞれ最後の16進の数値をチェックして、次に hwinfo -p | less して、その数値がある所を探します。

(略)
000:001:00.0 14e4:1684 103c:1309 10/ 10/0xd0 A V
000:015:00.0 10de:1245 1048:0fa6  7/  7/0xb8 A V
000:015:00.1 10de:0bee 1048:0fa6 10/ 10/0xc0 B V
000:055:04.0 10ec:8169 1154:032b  3/  3/0x88 A V
(略)

上記の最初と最後です。
  • 14e4:1684 103c:1309 オンボード
  • 10ec:8169 1154:032b 蟹NIC
これをメモしておく。

oem.tgzの作成

蟹NICのドライバの入ったoem.tgzを vm-help.comから貰ってきます。http://www.vm-help.com/ から探せば大抵のドライバは見つかるはずです。今回の蟹NICのドライバは、http://www.vm-help.com/forum/viewtopic.php?f=12&t=3039&p=11774&hilit=8169 で貰ってきました。当該NICのドライバは、r8169.o ですが、このoem.tgzは、Realtek詰め合わせ状態です。 このoem.tgzをLinuxで、適当な場所で展開します。必要なのは、
  • etc/vmware/pci.ids
  • etc/vmware/simple.map
  • usr/lib/vmware/vmkmod/*.o 折角なので全部入れておこう。
です。それ以外は削除してしまってOK。使う気があれば残しておいてください。NICを追加しないで、オンボードだけ認識させる場合は、pci.idsとsimple.mapだけあればいいです。
pci.ids
pci.dsとsimple.mapをカスタムする訳ですが、まず lspci と hwinfo で調べた数値を頼りに pci.ids で、NICを探します。 オンボード
14e4  Broadcom Corporation
    0800  Sentry5 Chipcommon I/O Controller
<略>
    1681  NetXtreme BCM5761 Gigabit Ethernet PCIe
    1684  NetXtreme BCM5764M Gigabit Ethernet PCIe
    1685  NetXtreme II BCM57500S Gigabit Ethernet
<略>
14e3:1684をキーに探して、項目が載ってればOK。何故か載っていたので何もせず。 次、蟹NIC
10ec  Realtek Semiconductor Co., Ltd.
    0139  Zonet Zen3200
<略>
    8169  RTL-8169 Gigabit Ethernet
        1025 0079  Aspire 5024WLMi
        10bd 3202  EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter
        1259 c107  CG-LAPCIGT
<略>
10ec:8169 1154:032b の下位の2つまで該当する項目がありません。今回は追加せずに行けましたが、別の蟹NICだと足さないとダメなこともあったので、足すなら、
8169  RTL-8169 Gigabit Ethernet
        1025 0079  Aspire 5024WLMi
        1154 032b  LGY-PCI-GT
        10bd 3202  EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter
        <略>
てな具合に適当に埋めます。
simple.map
こっちにも2つエントリを足しますが、蟹NICの方は既に
10ec:8136 0000:0000 network r8169.o
10ec:8139 0000:0000 network 8139too.o
10ec:8167 0000:0000 network r8169.o
10ec:8168 0000:0000 network r8169.o
10ec:8169 0000:0000 network r8169.o
と定義してあったのでOK。ここもpci.ids同様認識されない場合は、
10ec:8169 1154:032b network r8169.o
を追加してみてください。 オンボードの方は、エントリが無いので、
14e4:1684 0000:0000 network tg3.o
を適当な場所に追加。これで認識されない場合、
14e4:1684 103c:1309 network tg3.o
と下2つまで追加してみてください。 tg3.oはインストーラーに含まれていて、ドライバは揃っているので、これで固め直します。ドライバを追加する場合は、usr/lib/vmkmod/ の下に集めます。 tar+gzするときに、全てのファイルのオーナーは201:201で、パーミッションも他のファイルに合わせておきましょう。なんとなく。
# tar cvfz oem.tar.gz usr etc

カスタムインストーラーUSB作成


基本的に、http://www.vm-help.com/forum/viewtopic.php?f=12&t=4 に沿って進めます。

mkesxiaio が途中で失敗すると、最初からやりなおしとなるのでトライ&エラーすると大部時間を喰います。折れずに頑張りましょう。

  • http://code.google.com/p/mkesxiaio/から、mkesxiaio_4.3.1.sh を貰ってきます。
  • 作業用のディレクトリを作ります。/tmp/work とか。
  • mkesxiaio_x.x.x.shを作業用ディレクトリに置いて、chmod +x します。
  • webアクセスにプロキシが必要な場合は環境変数にセットしておきます。export http_proxy=http://x.x.x.x:port/
  • VMWareのインストールCDのisoを/tmp/work に置きます。symbolic inkで可
  • 上で作った oem.tgz を 同じ場所に置きます。複数ある場合、とりあえず oem_*.tgz という名前にしておけば後から選択可能みたいです。
  • ./mkesxiaio_x.x.x.sh 実行。とりあえず実行してみて、足りない物があったらインストールしてください。
  • ESXiのバージョンは、4.1の3を選び
  • 2のUSB installtion を選ぶ。
  • wget や rsync他を入れる? と聞かれるけど、入れない n で。
  • あとはずんずんデフォルトで進めて
  • kickstart をカスタマイズするかと聞かれたらy で、ipaddress や netamask は空で。全部 enter のみで答えて、ks.cfgを編集するか? と聞かれたらYしてエディタに入ります。
vmaccepteula
rootpw nantokakantoka
autopart --firstdisk --overwritevmfs
install usb
network --bootproto=dhcp --device=vmnic0

こんな風にします。install usb がポイント。ネットワーク回りが決まっていれば最後の行は、
network --bootproto=static --ip=192.168.0.10 --gateway=192.168.0.254 --hostname=esxihost 
--device=vmnic0 --nameserver=192.168.70.1 --netmask=255.255.255.0

とかすればいいでしょう(実際は1行で)。 USBメモリを刺して(一応、やるならFAT32でフォーマットしておく) インストールするUSBのデバイス名を与える。後から刺したらupdateして認識しなおす。 これで、コピーが始まり完成するハズなのですが、私の環境だと
Next step will be to make the USB drive bootable
 and copy the installations files to the it.
        You need to unmount the device manually
        Need to be fat16 or fat32
 OBS !!! You need 700 MB free on the USB
Using /dev/sdd1
Do you really like to continue with this ? [y/N] y
Information: You may need to update /etc/fstab.

        [Done]
Mounting the /dev/sdd1 to /tmp/work/esx-usb/     [Fail]

The script failed for som reason,
 if you can't solve it your self please make a post on http://vm-help.com/forum
#
で、mountしにいって必ずコケました。USBを変えても同じ。/etc/fstabを変える必要あり?? 仕方ないので、手動で mount すると、ふつうにmountできます。
mount /dev/sdd1 /tmp/work/esx-usb
/tmp/work/esx-usb には、ldlinux.sys が入っていて、これはそのままにして、/tmp/work/save/VMware_esxi_cutom_4.1_oem.usb/* を全部/tmp/work/esx-usb にコピーして完了。 USBを刺して、USBからブートし(F9かBIOS)あとは眺めてれば終わります。 最後の画面に落ちつく前に一瞬赤い文字がチラっと見えます。こんなのです。
cpu3:4608)ALERT: Elf: 3043: Kernel module r8169 was loaded, but has no signature attached
3rd party製のドライバにsignatureが必要ですよ、と言われてる風ですが、動いてるので見なかったことにします。

(終わり)長かった。

0 件のコメント: