WDSをいろいろ調べて学んでいた
前回に引き続き、windowsPE環境でキャプチャ・リストアする環境をクラサ環境にして大量リストアを夢見る企画。
PXE起動でwindowsPEをロードして、クライアントPCからストレージサーバの共有フォルダへPCイメージを作る・それを使ってリストアする ということを目指します。
こんな感じのこと
今回やること
上記を実現するには①「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.クライアントはDHCPでIPアドレス受け取った後、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
クライアントの設定
いざ実践① キャプチャする
1.クライアントPCでネットワーク起動するように設定して電源on→サーバからIPをもらえる。画面に従いEnterキー押す。
2.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の元のストレージサイズより小さいとエラーになります(テストしていて気付かずハマった) ※リストア後は起動デバイスの順番を戻しておきましょう
ということで、ネットワーク越しに大量デプロイ環境が作れましたとさ。