VMware ESXiをPXEブートさせる

VMware ESXiをPXEブートで起動させて使う方法メモ.
使用したESXiのバージョンは4.0.
使用したサーバのOSはGentooDebian

まずDHCPサーバを用意する.
DHCPサーバはPXEブートさせる設定と同じで構わない.
こんな感じだろうか.
ノードを指定して起動したい場合はMACアドレスを記述すればいい.

allow booting;
allow bootp;
ddns-update-style none;
default-lease-time 3600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.254.0 netmask 255.255.255.0 {

range 192.168.254.2 192.168.254.250;
option broadcast-address 192.168.254.255;
option ip-forwarding off;
option dhcp-server-identifier 192.168.254.254;
next-server 192.168.254.254;
filename "pxelinux.0";
}

次にTFTPサーバを設定する.
TFTPサーバも基本的には普通のPXEブートの方法と同じだが、ESXiではmenu.c32を用いる必要がある.
mboot.c32をkernelで指定して,appendの行でESXi自身のファイルを渡す.
必須なのは,vmkboot.gzとvmk.gz,state.tgzくらいだろうか.
vmkboot.gzとvmk.gzはELF形式の実行ファイルで,state.tgzは/etc以下のファイルなどが格納されている.
ESXiの起動時にSSHを有効にしたり,rc.localに実行したいコマンドを記述してstate.tgzの中に放り込んでおけば幸せになれる.
TFTPの設定はこんな感じ.

default menu.c32
timeout 20
ontimeout esxi

label esxi
kernel mboot.c32
append vmkboot.gz --- vmk.gz --- sys.vgz --- cim.vgz --- oem.tgz --- license.tgz --- mod.tgz --- state.tgz
ipappend 2

menu.c32を使っているので,起動時にメニューが出る.
タイムアウトを設定しておかないと,メニュー画面で待ち続けるので,ontimeoutでタイムアウトを設定している.
appendの行の各ファイル間は−(ハイフン)3つなので注意.
ipappend 2はこれを指定していると

BOOTIF=<ブート-インターフェースの-ハードウェア-アドレス>

に置き換えられる.
これは,システムブートにかかるインタフェースを指定するオプション.

正しく設定していれば,これでESXiがPXEブートするはず,