ページ

2013年12月25日

Windows 8.1 Enterprise展開テスト

win81fin

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


PXE boot

スクリーンショット 2013-12-25 11.21.42

■ 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指定無しの場合 uattend.xml指定無しの場合[/caption]

[caption id="attachment_121" align="alignnone" width="300"]unattend.xml指定した場合 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