PXEブートしたGhostを使ってWin8.1を大量展開する(前編)

PXEブートしたGhostを使ってWin8.1を大量展開する(前編)

以前、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を読み返して再度同じ事をできる」様書きなおしたりしてるのでご了承ください。

全体を通しての流れ

作業は以下のフェーズを進みます。

  1. PXEによるGhostブート環境を作成
  2. マスターPCをSysprepして展開イメージを作成
  3. Ghostにて各PCへイメージを展開
  4. クローニングされたOSを個別設定

長くなりそうなので今回は前半としてi及びiiを書きます。

GhostのPXE配信環境を作る

まず最初にご紹介を。
Win8環境でのPXEブートについては下記サイトに大変お世話になりました。

大変に有益なサイトです。動画もあり分かりやすいので、正確な説明は上記サイトを御覧ください。

どうしてGhostを選ぶのか

Microsoftのツールのみを使用し、有料のGhostに頼らず全て無料で展開を実施する事もできます。

  1. dismにてイメージキャプチャ
  2. diskpartによるパーティショニング
  3. xcopyにてUSBメモリ等からリカバリ領域へコピー
  4. dismにてCドライブへのディスクイメージ展開
  5. 以降は起動初期処理

復元時の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イメージを作成します。

  1. 「展開及びイメージングツール環境」を起動し、x86(32bit)/amd64(64bit)どちらかをコピー
    mkdir c:\WinPE_x64
    copype amd64 c:\WinPE_x64
  2. boot.wimをマウントする。
    Dism /Mount-Wim /WimFile:C:\WinPE_x64\media\sources\boot.wim /index:1 /MountDir:C:\WinPE_x64\mount
  3. ドライバファイルの追加
    dism /image:<マウント先フォルダ> /add-driver /driver:<ドライバの.INFファイル名>

    今回はマルチキャストのパフォーマンスが伸び悩んだ為、ここでRealtekの8110 NICドライバを追加しました。OS用のドライバを解凍し、.INFのファイルパスを指定します。

  4. フォルダ・ファイルの追加
    GHOST ブートマネージャで作成したISOファイルから、GHOSTフォルダを取り出してイメージのルート配下へコピー。また、OS起動直後に実行するコマンドを下記ファイルへ記入します。

    %SYSTEMROOT%\System32\Startnet.cmd
  5. PXE用ブートファイルを抜き出しておく
    フォルダー:[C:\WinPE_x64\mount\Windows\Boot\PXE]
    ファイル:[bootmgr.exe][pxeboot.n12]
  6. (オプション)WinPEにパッケージを追加して日本語化する
    Dism /image:c:\WinPE_x64\mount /Add-Package /Packagepath:"C:\Program Files (x86)\Windows Kits.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.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-JA-JP.cab"
  7. (オプション)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
    
  8. boot.wimをクローズ(アンマウント)する
    Dism /Unmount-Wim /MountDir:C:\WinPE_x64\mount /Commit

    ※エラーになる場合は「ファイルパスの打ち間違え」「どこかでウィンドウが開いてる」事がほとんど。

  9. WinPEイメージの作成
    Makewinpemedia /iso c:\WinPE_x64 c:\WinPE_x64\winpe50_x64.iso
  10. 作成したWinPEイメージ(winpe50_x64.iso)を仮想CD(WinCDEmu etc.)などでマウントし、中身を丸ごとPXE用フォルダにコピーする
    xcopy V:\*.* c:\PXE
  11. 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 インストールをリセットする


 

イメージを展開する場合は、イメージを取得する前に 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と設定が替えられてしまう部分が多々あります。その中でも自分が気にしているのは以下のとおり。

    1. WindowsUpdateの適用設定
    2. アクションセンターのチェックボックス
    3. Administratorアカウントの有無
      基本無効にされるため、Untitled.xmlで有効化の設定が必要
    4. JavaのUpdateの更新チェックボックス
    5. InternetExplorerの初期設定ウィザードが表示される
    6. Windowsファイアウォール
    7. タスクバーの設定デフォルトのIME etc.

それぞれについて展開先クライアントにて設定が必要。

4.はJava最新版では修正されているけれど注意が必要。普通にコントロールパネルから「更新を自動的にチェックする」のチェックを外しても記憶されないバージョンではSysprepでもチェックが復活しやがります。おうしっと。

6.はマスターイメージが変更される訳ではなく、(ネットワーク展開などで)クライアントを初めてネットワークを挿した時の操作によって変更されるという事です。

20141028_01上記表示に対し操作の違いでこう変わりました。

  • 選ばずに他の場所をクリック→有効化されない
  • はいをクリック→有効化されない
  • いいえをクリック→プライベートネットワークのみ有効化される

準備の前半はこれで終了です。次回はGhostでの配信時の注意とクライアンでの自動設定について書きます。

コメントを残す