調べて、学ぶ

検索したり実験したことを覚えとくブログ

チャチャッとwindowsでWDSとDHCP環境を構築してイメージ作成・適用する

WDSをいろいろ調べて学んでいた

前回に引き続き、windowsPE環境でキャプチャ・リストアする環境をクラサ環境にして大量リストアを夢見る企画。
PXE起動でwindowsPEをロードして、クライアントPCからストレージサーバの共有フォルダへPCイメージを作る・それを使ってリストアする ということを目指します。

こんな感じのこと

pxewindowsPEを起動する

今回やること

上記を実現するには①「PXEサーバ」②「共有フォルダのサーバ」③「windowsPEのISOイメージ」が要る。
③は「windowsPE」でググれば色々出てくるので割愛。
①②はwindows2022サーバの評価版で行う。

検証環境

①サーバ:以下の仮想マシンを作り、OSインストール直後の状態。 - OS: windows2022(ノーマルのほう。server coreじゃなく) - ストレージ:Cドライブ(20GB) - CD/DVD:Dドライブ - NIC:1個 - ネットワーク設定:IP:192.168.100.1 ADには参加せず。

②クライアント:仮想マシンを作ってsysprepした状態

ここからいろいろ設定する手順をすべてコマンド(コマンドプロンプトで実行)で実現する

サーバ設定

1.このサーバのIPアドレスを固定(サーバがあるならやらなくてよい)
※ IP:192.168.100.1、サブネット:255.255.255.0、デフォルトゲートウェイ:192.168.100.254にする場合。「イーサネット」の部分はNICの名称を入れる

powershell New-NetIPAddress -IPAddress 192.168.100.1 -InterfaceAlias 「イーサネット」 -DefaultGateway "192.168.100.254" -AddressFamily IPv4 -PrefixLength 24

2.役割:DHCPサーバを有効にする

dism /online /enable-feature /featurename:dhcpserver

3.dhcpセキュリティグループ作成(DHCP administrator とDHCP usersを作成する)

netsh dhcp add securitygroups

4.DHCPサービスを再起動

powershell Restart-Service dhcpserver

5.dhcp範囲
DHCPの範囲に名前(wds-dhcp)を付けて、DHCPで配布されるアドレス範囲(192.168.100.10-253)とサブネットマスクを設定する

powershell Add-DhcpServerv4Scope -name "wds-dhcp" -StartRange 192.168.100.2 -EndRange 192.168.100.253 -SubnetMask 255.255.255.0 -State Active

6.DHCPの除外範囲(192.168.100.1-10)を設定する:このアドレスはDHCPで払い出されない ‘‘‘ powershell Add-DhcpServerv4ExclusionRange -ScopeID 192.168.100.0 -StartRange 192.168.100.1 -EndRange 192.168.100.10 ‘‘‘

7.dhcpゲートウェイ(単一セグメントの環境なら使わない)

powershell Set-DhcpServerv4OptionValue -OptionID 3 -Value 192.168.100.254 

8.クライアントはDHCPIPアドレス受け取った後、OSイメージを受け取るためのpxeサーバのIPアドレスを設定する

powershell Set-DhcpServerv4OptionValue -OptionID 66 -Value 192.168.100.1

9.pxeサーバに到達してから受け取るOSイメージ名を設定する

powershell Set-DhcpServerv4OptionValue -OptionID 67 -Value boot.wim

10.役割:「Windows展開サービス」(ブートイメージ配布サーバ)をインストールする  windowsでのPXEサーバ機能は「Windows展開サービス」と「DHCP」で実現できる。
今まで気にしたことなかったけど、PXE環境って、IPがない状態のPCがDHCPで「IPをもらって」、「PXEサーバのIPを教えてもらって」、PXEサーバから「起動イメージをロードさせてもらう」ことなんですね。
コマンドでは以下の通り。

dism /online /enable-feature /featurename:Microsoft-Windows-Deployment-Services 
dism /online /enable-feature /featurename:Microsoft-Windows-Deployment-Services-Deployment-Server /all
dism /online /enable-feature /featurename:Microsoft-Windows-Deployment-Services-Transport-Server

11.windows展開サービスの設定で、PXE起動するクライアントに払い出すイメージのパスを設定する(タイムアウトするけどできている)
この時、共有フォルダ(名称:reminst 物理パス:"c:\wdsInstall")が作成される。クライアントPCからは”\(wdsサーバ)\reminst”でアクセスできるようになる。
※このコマンドはタイムアウトすることがあるけど、フォルダ設定はちゃんとされている。

wdsutil /initialize-server /reminst:"c:\wdsInstall" /standalone

12.PXE起動時に払い出すイメージを登録する
このときのdドライブ(CD)はwindowsPEのメディアを想定(550MBあるため少し待つ)

wdsutil.exe /add-image /imagefile:"d:\sources\boot.wim" /imagetype:boot /name:winPE /description:"windowsPE" /filename:"winPE.wim"

13.pxeブートの挙動(全クライアントに応答する)

wdsutil /Set-Server /AnswerClients:all

14.wdsサーバ開始

wdsutil.exe /start-server

クライアントの設定

  • BIOS/UEFInicから起動するように順番を変えておく(これをやっておかないとクライアントに入っているOSが起動する)

いざ実践① キャプチャする

1.クライアントPCでネットワーク起動するように設定して電源on→サーバからIPをもらえる。画面に従いEnterキー押す。

WDSによる起動時IP取得

2.PXEサーバにある起動イメージを受け取って起動開始

PXEからブートイメージを起動している画面

3.まずは共有フォルダをマウント
PXE起動時にクライアントとサーバのIPは表示されているので、サーバの公開ドライブ(reminst。サーバ作業の11番)をNドライブとしてマウントする。
※IDとパスワードを聞かれるので、サーバのユーザ(とりあえずadministrator)とパスワードを入力すればOK

net use n: \\192.168.100.1\reminst

ついでにキャプチャイメージの保管フォルダ(FFUimg)を作成する

md n:\FFUimg

4.クライアントのイメージをサーバに作成・保管する 前回作ったツールを使っても大丈夫でしたが、標準なコマンドを使用する。

dism /capture-ffu /imagefile:"n:\FFUimg\capturedIMG.ffu" /capturedrive:\\.\PHYSICALDRIVE0 /name:"windows10_24H pro"

いざ実践② リストアする

1.キャプチャしたFFUファイルをPCに適用する リストアするPCで実践① キャプチャの手順1から3を行い、以下のコマンドを使用します。

dism /apply-image /imagefile:"n:\FFUimg\capturedIMG.ffu /appplydrive:\\.\physicaldrive0 

※リストア先のストレージがFFUの元のストレージサイズより小さいとエラーになります(テストしていて気付かずハマった) ※リストア後は起動デバイスの順番を戻しておきましょう

ということで、ネットワーク越しに大量デプロイ環境が作れましたとさ。