2012年11月7日水曜日

iPXEでWindows7のインストーラをディスクレスブートし、iSCSIターゲット内ストレージにインストール

※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でも同様にして実現可能な模様。試してません。

0 件のコメント:

コメントを投稿