LinuxのPXEサーバからディスクレスWindows XPを

LinuxPXEサーバからディスクレスWindows XPを立ち上げる検証をした。紆余曲折して、Windows XPカーネルを起動することに成功した。これでマシンのトラブル時など修復作業が大幅に楽になる。しかし、その方法の詳細は残念ながらブログでメモしておくことはできない。

概要は以下のとおり:

  • BartPEを作成する際に、ネットワーク経由のブートイメージを作成するためにはRAMDISKに工夫が必要。詳しくは「Bart Pe On Pxe Bootable Sdi Ramdisk, Network Boot Bart PE」を参照のこと。ここではSDI(System Deployment Image)イメージを使った例が出ているが、ISOイメージでも手順は同じ。SDIの方がファイルがコンパクトになるが、Windows XP Embeded環境が必要になったりするのでオプションで。(Windows XP Embededは120日の利用が可能な評価版がある。)

参考までに /etc/dhcpd.conf の該当部分と /tftpboot/ の様子について載せておく。(シンボリックリンクの大文字、小文字、ファイル名には意味があるので注意。)

 [root@pxeserver ~]# cat /etc/dhcpd.conf
 	:
 host disklesswin {
         hardware ethernet       01:23:45:67:89:AB;
         fixed-address           disklesswin;
         next-server             192.168.0.7;
         filename                "/win/startrom.n12";
         default-lease-time 1296000; # 2 weeks
         max-lease-time 2592000; # 4 weeks
 }
 	:

 [root@pxeserver ~]# ls -l /tftpboot/win/
 total 258652
 -rw-r--r-- 1 root root    000398 2008-06-10 01:51 BOOTFONT.BIN
 -rw-r--r-- 1 root root     00564 2008-06-10 03:13 NTDETECT.COM
 -rw-r--r-- 1 root root 261599232 2008-06-10 05:49 pebuilder.iso
 -rw-r--r-- 1 root root    000064 2008-06-10 07:50 setupldr.exe
 -rw-r--r-- 1 root root     00454 2008-06-10 09:42 startrom.n12
 -rw-r--r-- 1 root root       242 2008-06-10 11:35 winnt.sif

 [root@pxeserver ~]# ls -l /tftpboot/
 total 64
 lrwxrwxrwx 1 root root   16 2008-06-10 13:57 BOOTFONT.BIN -> win/BOOTFONT.BIN
 lrwxrwxrwx 1 root root   16 2008-06-10 13:57 ntdetect.com -> win/NTDETECT.COM
 lrwxrwxrwx 1 root root   16 2008-06-10 13:57 ntldr -> win/setupldr.exe
 lrwxrwxrwx 1 root root   17 2008-06-10 13:57 PEBUILDER.ISO -> win/pebuilder.iso
 lrwxrwxrwx 1 root root   13 2008-06-10 13:57 winnt.sif -> win/winnt.sif
 drwxr-xr-x 2 root root 4096 2008-06-10 01:03 win

 [root@pxeserver ~]# cat /tftpboot/win/winnt.sif
 [SetupData]
 BootDevice = "ramdisk(0)"
 BootPath = "\i386\System32\"
 OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=pebuilder.iso"

以上の手順でXPをネットワークからDiskless Bootできる。ちなみに今回はLinuxPXEサーバを利用したが、"Windows XP等+フリーウェアのPXEサーバ"でも同様のことはできる筈だ。(Windows Serverがあればこんな苦労なしに、もっと簡単にできるかもしれないが。)

しかし、マイクロソフトさんも、トラブル時のディスク管理やネットワークからのリストアのためにLinuxのようなLive CDを用意したり、もしくはネットワーク経由のディスクレスブートができるようにしてほしい。Windows PEやWindows XP EmbededはOEMや企業向け製品で一般ユーザ(コンシューマ)では利用できない。一般ユーザでも適切なツールさえあればトラブル対応できる人は多いのに。(貧乏人なのでVistaはまだ使っていないが、Vistaでは可能なのかな?)

追記(2008/06/16)

Windows PEは無償でWindows製品の正規ユーザであれば誰でも使えました。詳しくは「Windows PE」を参照のこと。

追記(2008/06/17)

Windows PEをPXEを使ってネットワークブートしてみた。「PXEを使ってWindows PEをネットワークブート」を参照のこと。