2013年はXP問題に結構な時間をつかってます。
Windows Server 2012のWDS機能をつかったWindows 7 Professionalクローン作成は数千台おこなったので、もう少し気の利いたことをやろうと思います。
まずは、評価版など期限制限のないCentOS 6.5を使ってWindows 8.1 Enterprise Evaluationをゼロタッチ・インストールできるようにしてみました。(基本的には、ググってみつかる方法(tftp,dhcp,sambaの設定)をWindows 8.1のboot.wimで動作するようにデバッグして、バッチファイルと応答ファイルで動作するようにしただけです)
参考にしたサイト:
Windows PXEインストール環境をLinuxで作る方法
これを元に設定します
■ CentOS 6.5サーバの設定
テスト用ですので、selinuxとiptableは停止します
# chkconfig iptables off
# /etc/rc.d/init.d/iptables stop
# setenfoce 0
/etc/sysconfig/selinux
SELINUXTYPE=disable
tftp, DHCP, SAMBA, syslinuxをインストール
# yum install tftp tftp-server dhcp samba syslinux -y
<tftpサーバ>
デフォルトパスで設定、/etc/xinetd.d/tftpを編集
disable = no
server_args = -vvv -m /var/lib/tftpboot/tftpd.remap -s /var/lib/tftpboot
/var/lib/tftpboot/tftpd.remap
re ^pxeboot\.n12 Boot/pxeboot.n12
re ^pxeboot\.com Boot/pxeboot.com
re ^pxeboot\.0 Boot/pxeboot.n12
re ^bootmgr\.exe Boot/bootmgr.exe
rg A a
rg B b
rg C c
rg D d
rg E e
rg F f
rg G g
rg H h
rg I i
rg J j
rg K k
rg L l
rg M m
rg N n
rg O o
rg P p
rg Q q
rg R r
rg S s
rg T t
rg U u
rg V v
rg W w
rg X x
rg Y y
rg Z z
rg \\ /
※Boot以下のディレクトリ名も小文字でリンクしてます。
boot -> Boot
fonts -> Fonts
resources -> Resources
# /etc/rc.d/init.d/xinet restart
syslinuxファイルをコピー
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot
# mkdir /var/lib/tftpboot/pxelinux.cfg
# touch /var/lib/tftpboot/pxelinux.cfg/default
<defaultファイル>
DEFAULT menu
PROMPT 0
MENU TITLE Boot Menu
TIMEOUT 50
TOTALTIMEOUT 6000
ONTIMEOUT win81
LABEL win81
MENU LABEL Windows_8.2
KERNEL Boot/startrom.0
MENU end
/var/lib/tftpbootにboot.wimのファイルをコピー
BCD
Fonts
Resources
WdsConfig.inf
abortpxe.com
boot.sdi
bootmgr.exe
en-US
hdlscom1.com
hdlscom1.n12
hdlscom2.com
hdlscom2.n12
ja-JP
pxeboot.com
pxeboot.n12
wdsmgfw.efi
wdsnbp.com
# ln -s pxeboot.n12 startrom.0
■ boot.wim
CDイメージに含まれているboot.wimはWDSを探しにいくため、
winpe.wimをWindows Kits->Windows ADKを使って作ります。
展開およびイメージングツール環境(コマンドウィンドウが開きます)
(作業ディレクトリPETempは自身で作ってください)
> copype amd64 C:\PETemp\winpe40_x64
> dsim /mount-image /imagefile:"C:\PETemp\winpe40_x64\media\sources\boot.wim" /index:1 /mountdir:"C:\PETemp\wimpe40_x64/mount"
> dism /image:"C:\PETemp\winpe40_x64\mount" /set-allintl:ja-jp
> dism /image:"C:\PETemp\winpe40_x64\mount" /set-TimeZone:"Tokyo Standard Time"
> dism /image:"C:\PETemp\winpe40_x64\mount" /set-InputLocale:0411:00000411
> dism /image:"C:\PETemp\winpe40_x64\mount" /set-LayerDriver:6
> dism /umount-image /mountdir:"C:\PETemp\winpe40_x64\mount" /commit
このboot.wimを/var/lib/tftpboot/Boot/boot.wimと入れ替えます。
そうすると、PXE->windows PEが起動出来るようになります。
※ tftpのディレクトリパーミッション等がただしくないとboot.wimが立ち上がりませんので、/var/log/messagesに出力されるログを見ながら訂正します。
[caption id="attachment_122" align="alignnone" width="300"] uattend.xml指定無しの場合[/caption]
[caption id="attachment_121" align="alignnone" width="300"] unattend.xml指定した場合[/caption]
■ 起動コマンドファイル
C:\Windows\System32\startnet.cmdを変更します。
<例>
net use y: \\IPADDRESS\image
y:
setup.exe /unattend:unattend.xml
■ sambaの設定
<smb.conf>
# Under [global], add the following directives.
public = yes
kernel oplocks = no
nt acl support = no
security = share
guest account = nobody
[image]
comment = Windows 8.1 Image
path = /work/win81
public = yes
printable = no
guest ok = yes
read only = yes
browseable = yes
oplocks = no
acl check permissions = false
level2 oplocks = no
locking = no
strict locking = no
share modes = no
<setup.exe関連ファイルのコピー>
setup.exeがあるフォルダのdllやらなにやらをコピー
[caption id="attachment_120" align="alignnone" width="300"] 準備をしています[/caption]
■ unattend.xml
Windows Kits-> Windowsイメージマネージャー(Windows System Image Manager: WSIM)を使ってつくるか、xmlファイルを手作りします。
WIMを使う場合、Windows 8.1 Enterprise Evaluationにはカタログファイルが含まれていないのでinstall.wimから作成します。 (カタログファイルを指定するところで読み込みできます。)
そうすると、
PXE boot -> Administratorデスクトップ表示(この間全く触りません)
[caption id="attachment_118" align="alignnone" width="300"] アプリケーション インストール[/caption]
[caption id="attachment_117" align="alignnone" width="300"] 最終処理[/caption]
[caption id="attachment_116" align="alignnone" width="300"] スタート[/caption]
■ インストールイメージ:install.wimの差し替え
sysprepしたマスター機を作成後、WDSのキャプチャ用boot.wimを使ってマスターイメージをキャプチャしてinstall.wimを取り出せばカスタムイメージが使えます。
■ 今後の予定
これからの追加機能は、
・ホスト名を任意の名称で設定(自動割当)
・管理データベースへのホスト名、メーカー名、モデル名、シリアル番号、MACアドレスの登録、PC登録日
WDS(Windows 7 ProをWDSを使って展開)では、モデル毎にunattend.xmlを用意してクローン作成の度に設定変更していましたが機種のバリエーションとマスターイメージのバリエーションが多いととってもメンドクサイのでBoot.wimで立ち上げた際にWindows PEからサーバへ問い合わせをするように変更したいと思います。
参照
Windows セットアップ コマンド ライン オプション
WDSLINUX
nstall Windows 7 over PXE from Linux without WAIK
unattended-setup-scripts / Autounattend.xml