※wimboot-2.1.0以前を使用した場合の情報です。
重要なポイントはiPXE公式サイトの通りです。
http://www.ipxe.org/wimboot
iPXEを使ってiSCSIターゲット内ディスクにWindows7をインストールする方法は知っていました。
具体的には、iPXEでiSCSIターゲット内ディスクをsanhook(あるいは gpxeでkeep-san+sanboot失敗)し、
物理DVDドライブ(あるいはUSBフラッシュメモリー)を使ってWindows7のインストーラを起動する方法です。
インストーラもネットワークブートできればいいなと思い、やってみました。
iPXE、iSCSIターゲットとしてtgt、httpサーバとしてlighttpdを使いました。
以下
iSCSIターゲット内ストレージを iSCSI-DD
Windows7のDVDイメージを win7.iso
と呼ぶ事にします。
ちなみに、win7.isoをsanbootしても、インストールはできませんでした。
sanhook/sanboot の --driveについて
iSCSI-DDを0x80、win7.isoを0x81等にするとインストーラが起動せず、
win7.isoを0x80、iSCSI-DDを0x81等にするとインストーラは起動するが、
インストール先にiSCSI-DDを選択したところで、
「それは無理、BIOSから見えてないから(要約)」というエラーが出てインストールできませんでした。
その他、色々やりましたorz
1.
win7.isoを用意した。ちなみに、マウント方法は
mount -t udf -o loop /tgt/iso/win7.iso /tgt/iso/mnt/win7
といった具合です。
2.
win7.isoをiSCSI-DDと同じターゲット内の別lunに登録した。
<target iqn.2012-11.hoge.hoge:hoge>
#...
<backing-store /tgt/iso/win7.iso>
lun 2
device-type cd
readonly 1
</backing-store>
#...
</target>
といった具合です。iSCSI-DDと別のターゲットだと、(iPXEかtgtかwin7か何かの仕様の影響で)インストール不可でした。
3.
iPXEでiSCSI-DDをsanhookし、物理DVDドライブを使ってWindows7のインストーラを起動するiPXEスクリプトを元に、
iPXEでiSCSI-DDとwin7.isoをsanhookし、wimbootを使ってWindows7のインストーラを起動するiPXEスクリプトを用意した。具体的には
sanhook --drive 0x80 ${iSCSI-DD用root-path}
exit
といったところを
sanhook --drive 0x80 ${iSCSI-DD用root-path}
sanhook --drive 0x81 ${iSCSIでのwin7.iso用root-path}
set base-url http://tgt.or.some.server/hoge/
kernel ${base-url}ipxetool/wimboot
initrd ${base-url}mnt/win7/bootmgr bootmgr
initrd ${base-url}mnt/win7/boot/bcd BCD
initrd ${base-url}mnt/win7/boot/boot.sdi boot.sdi
initrd ${base-url}mnt/win7/sources/boot.wim boot.wim
boot
に変更した。
wimbootの取得は
http://www.ipxe.org/wimboot
こちらから。
bootmgr等、win7.iso内のファイルは、win7.isoをマウントしてアクセス可能にした。
ちなみに、win7.isoもsanhookしているのは、インストーラは途中からiPXE経由のアクセスを止めるために一応。
iSCSI-DDと同じターゲットなので、要らないと思いますけど。
httpを使うのは、公式サイトの説明がhttpになってるのと、その理由はおそらく
tftpではファイルサイズの上限が16MBか32MBで、boot.wimをとってこれないためだと思われる。
なお、
http://www.ipxe.org/wimbootにあるとおり、
Windows8でも同様にして実現可能な模様。試してません。