以前、WindowsXPからWin7に移行展開する記事を何回かに分けて書きました。今回はWindows8.1 64bit ProfessionalをGhostを使ってデプロイする記録を残します。
要件は
- Windows8.1 64bit Professional VL版(MAK認証キー)
- Office 2013 Professionalはプレインストール版(PIPC)を使う
- Symantec Ghost 32bit版によるマルチキャスト配信
- 対象PCはWin8(UEFI)に対応したメーカーPC100台↑
- 旧PCからのデータ移行はなくキッティングのみ。
参照元ほぼそのままな部分も多いですが、「自分がBlogを読み返して再度同じ事をできる」様書きなおしたりしてるのでご了承ください。
全体を通しての流れ
作業は以下のフェーズを進みます。
- PXEによるGhostブート環境を作成
- マスターPCをSysprepして展開イメージを作成
- Ghostにて各PCへイメージを展開
- クローニングされたOSを個別設定
長くなりそうなので今回は前半としてi及びiiを書きます。
GhostのPXE配信環境を作る
まず最初にご紹介を。
Win8環境でのPXEブートについては下記サイトに大変お世話になりました。
大変に有益なサイトです。動画もあり分かりやすいので、正確な説明は上記サイトを御覧ください。
どうしてGhostを選ぶのか
Microsoftのツールのみを使用し、有料のGhostに頼らず全て無料で展開を実施する事もできます。
- dismにてイメージキャプチャ
- diskpartによるパーティショニング
- xcopyにてUSBメモリ等からリカバリ領域へコピー
- dismにてCドライブへのディスクイメージ展開
- 以降は起動初期処理
復元時のdismコマンドは1対1の処理となる為、比較的少数のPCを展開するのには向いています。これが数十台規模ともなるとイメージを格納した多くの媒体(DVD,USB)が必要となるため、ネットワークかつマルチキャスト配信ができるDeploymentToolが必要。マイクロソフトにもGhostと同じマルチキャスト配信を行うMicrosoft Deployment Toolkitがありますが、Windows Serverが必要。
その点でGhostは操作が簡単(イメージ作成からネットワーク配信まで)でWin8でも動作するため、「現時点では」有用なアプリと思っています。
配信用PC(以下サーバ)にはGhostをフルインストールする他、各端末(以下クライアント)がネットワークブートできるよう、2つのツールを入れてPXEブート環境を構築します。
WindowsADK
Win7時代にAIKと呼ばれていたツールは「 Windows アセスメント & デプロイメント キット (Windows ADK) 」へと名前を替えました。Windows8.1用のADKは下記リンクからダウンロードできます。
- WindowsPE5.0(展開およびイメージングツール環境)
- Windowsシステムイメージマネージャ
を使用しました。これでサーバはMicrosoftが言うテクニシャンコンピュータにもなります。
次にPXEブートに使用されるWindowsPEイメージを作成します。
- 「展開及びイメージングツール環境」を起動し、x86(32bit)/amd64(64bit)どちらかをコピー
mkdir c:\WinPE_x64 copype amd64 c:\WinPE_x64
- boot.wimをマウントする。
Dism /Mount-Wim /WimFile:C:\WinPE_x64\media\sources\boot.wim /index:1 /MountDir:C:\WinPE_x64\mount
- ドライバファイルの追加
dism /image:<マウント先フォルダ> /add-driver /driver:<ドライバの.INFファイル名>
今回はマルチキャストのパフォーマンスが伸び悩んだ為、ここでRealtekの8110 NICドライバを追加しました。OS用のドライバを解凍し、.INFのファイルパスを指定します。
- フォルダ・ファイルの追加
GHOST ブートマネージャで作成したISOファイルから、GHOSTフォルダを取り出してイメージのルート配下へコピー。また、OS起動直後に実行するコマンドを下記ファイルへ記入します。%SYSTEMROOT%\System32\Startnet.cmd
- PXE用ブートファイルを抜き出しておく
フォルダー:[C:\WinPE_x64\mount\Windows\Boot\PXE]
ファイル:[bootmgr.exe][pxeboot.n12] - (オプション)WinPEにパッケージを追加して日本語化する
Dism /image:c:\WinPE_x64\mount /Add-Package /Packagepath:"C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\ja-jp\lp.cab" Dism /image:c:\WinPE_x64\mount /Add-Package /Packagepath:"C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-JA-JP.cab"
- (オプション)WinPEを日本のセッティングに合わせる(Time,K/B)
Dism /image:c:\WinPE_x64\mount /Set-allintl:ja-jp Dism /image:c:\WinPE_x64\mount /Set-TimeZone:"Tokyo Standard Time" Dism /image:c:\WinPE_x64\mount /Set-LayeredDriver:6
- boot.wimをクローズ(アンマウント)する
Dism /Unmount-Wim /MountDir:C:\WinPE_x64\mount /Commit
※エラーになる場合は「ファイルパスの打ち間違え」「どこかでウィンドウが開いてる」事がほとんど。
- WinPEイメージの作成
Makewinpemedia /iso c:\WinPE_x64 c:\WinPE_x64\winpe50_x64.iso
- 作成したWinPEイメージ(winpe50_x64.iso)を仮想CD(WinCDEmu etc.)などでマウントし、中身を丸ごとPXE用フォルダにコピーする
xcopy V:\*.* c:\PXE
- 5.で抜き出しておいたブートファイルをPXE用フォルダ配下のBootフォルダへコピーする。
copy bootmgr.exe(pxeboot.n12) c:\PXE\boot
これでWinPEの準備は完成。
何度か手直しする必要があるため、2.8.9.あたりはバッチファイルにしておくと捗ります。
tftpd64
TFTPD32 : TFTP serverより64bit版をダウンロードして使用しました。
手順はまったく以下のサイトの通りです。
TFTPD 64でWindows PE 5.1をPXEブートさせる | 悩み多き文教市場のインフラ屋さん
したくないけどSysprep。
それでもなぜSysprepが必要かは古い記事ですが下記が参考になります。
このSysprepの際に設定を自動化する応答ファイル(Untitled.xml)は、ADKに含まれるWindowsシステムイメージマネージャで作成します。
今回使用したUntitled.xml
サンプルとして置いておきます。
コメントはインラインにて。そのまま入れても動きませんので悪しからず。
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="generalize"> <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <DoNotCleanUpNonPresentDevices>true</DoNotCleanUpNonPresentDevices> <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> # 導入済みドライバを初期化しない </component> <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SkipRearm>0</SkipRearm> # 認証リセットカウンタを消費して初期化する。 # これを1にするとカウンタは減らないがCMIDが再生成されない。 # またWin8は999回にまで増えたのであまり消費に気を使う必要は無い。 </component> </settings> <settings pass="oobeSystem"> <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <InputLocale>0411:E0010411</InputLocale> <SystemLocale>ja-JP</SystemLocale> <UILanguage>ja-JP</UILanguage> <UILanguageFallback>ja-JP</UILanguageFallback> <UserLocale>ja-JP</UserLocale> # 日本環境へ設定 </component> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Display> <DPI>96</DPI> # デスクトップアイコンが小さくなるのを防ぐ </Display> <OOBE> <HideEULAPage>true</HideEULAPage> <NetworkLocation>Work</NetworkLocation> <ProtectYourPC>2</ProtectYourPC> <SkipMachineOOBE>true</SkipMachineOOBE> <SkipUserOOBE>true</SkipUserOOBE> </OOBE> <UserAccounts> <LocalAccounts> <LocalAccount wcm:action="add"> <Name>LocalUserName</Name> </LocalAccount> </LocalAccounts> </UserAccounts> </component> </settings> <settings pass="specialize"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ComputerName>masty-spd00</ComputerName> <CopyProfile>true</CopyProfile> # マスターPCのプロファイルをコピーします(が、全ては引き継げない) <ProductKey>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</ProductKey> <AutoLogon> <Password> <Value>cwBwAGQAUABhAHMAxxxxxxxxxxxxxxxxx</Value> <PlainText>false</PlainText> </Password> <LogonCount>1</LogonCount> <Username>UserName</Username> <Enabled>true</Enabled> # Autologinの設定。上の設定では1回のみ自動ログインされる。 # そのタイミングでスタートメニューのスタートアップに入れた # 初期設定バッチを実行できる。 </AutoLogon> </component> </settings> <cpi:offlineImage cpi:source="wim:c:/temp/install.wim#Windows 8.1 Pro" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend>
Office入りのマスターPCをSysprepする際は
OfficeをKMS認証にてイメージ展開する場合、Sysprepの前にOfficeのリセットが必要との事。
イメージを展開する場合は、イメージを取得する前に Office 2013 のインストールの猶予期限をリセットする必要があります。猶予期限のリセットを行わないと、展開の 25 日後ではなく、イメージが展開された時点でユーザーに通知ダイアログ ボックスが表示されます。
今回はプレインストール版を使ったので自分では未検証です。検証しつつお使いください。
CMID(Office用のマシン番号)確認方法
cscript ospp.vbs /dcmid
CMIDの初期化(Sysprep直前に行う)
cd %installdir%\%Program Files%\Microsoft Office\Office15 OSPPREARM.exe
SID及び各種情報の参照コマンド
Sysprep起動
Sysprep前に各マシン情報を記録しておくと、クライアントとの差を確認しやすくなります。
whoami /user slmgr /dlv
作成したUntitled.xmlをC:\Windows\System32\Sysprepへコピーした後、コマンドプロンプト(管理者)で下記コマンドを実行します。
cd c:\windows\system32\sysprep Sysprep.exe /generalize /unattend:c:\windows\system32\sysprep\Untitled.xml
「システム準備ツール 3.14」が起動したら”システム クリーンアップ アクション”の[一般化する]をチェックし、”シャットダウンオプション”を[シャットダウン]に変更して[OK]を押下します。
Sysprep後初期化される項目
Sysprepを行う事で、マスターPCと設定が替えられてしまう部分が多々あります。その中でも自分が気にしているのは以下のとおり。
- WindowsUpdateの適用設定
- アクションセンターのチェックボックス
- Administratorアカウントの有無
基本無効にされるため、Untitled.xmlで有効化の設定が必要 - JavaのUpdateの更新チェックボックス
- InternetExplorerの初期設定ウィザードが表示される
- Windowsファイアウォール
- タスクバーの設定デフォルトのIME etc.
それぞれについて展開先クライアントにて設定が必要。
4.はJava最新版では修正されているけれど注意が必要。普通にコントロールパネルから「更新を自動的にチェックする」のチェックを外しても記憶されないバージョンではSysprepでもチェックが復活しやがります。おうしっと。
6.はマスターイメージが変更される訳ではなく、(ネットワーク展開などで)クライアントを初めてネットワークを挿した時の操作によって変更されるという事です。
- 選ばずに他の場所をクリック→有効化されない
- はいをクリック→有効化されない
- いいえをクリック→プライベートネットワークのみ有効化される
準備の前半はこれで終了です。次回はGhostでの配信時の注意とクライアンでの自動設定について書きます。