🥒

Windows Server 2022 (Azure VM) の日本語化イメージを用意する Azure VM Image

2023/04/23に公開

Windows Server を 日本語化 する

Windows Server を 日本語化 するのって結構時間もかかるし、面倒な感じです。
日本語化した VM イメージを作成しておき、日本語での利用が可能な VM をすぐデプロイできるようにしておきたいと思います。

基本 - デプロイ済み VM を 日本語化する

とはいえ、
 イメージ作成なんて面倒、すぐ使える方法は…?
 まずは目の前の VM 1台をいますぐ日本語化したいんだけど?
なんて時もあるかと思います。

そんなとき、 @tksh164 さん のスクリプトが非常に便利です。

https://github.com/tksh164/change-windows-language-regional-settings

https://github.com/tksh164/change-windows-language-regional-settings

直接、日本語化済みの Windows Server 2022 Datacenter をデプロイすることや、Windows Server 2019/2022 を日本語化するための PowerShell スクリプト が公開されています。
素晴らしい。

日本語化済み VM をデプロイする VM を日本語化するスクリプト
URL Azure デプロイ可能版(PowerShell DSE) PowerShell版
概要 日本語化された VM を1台だけデプロイしたいというときは、こちらの GitHub からデプロイをすれば、OKです。
デプロイには多少時間がかかりますが、非常に楽です。
デプロイ済みの VM を日本語化したいということであれば、この日本語化スクリプトを実行することで、日本語化できます。
実行例 Github の デプロイボタンからデプロイを行います。
image.png
image.png
デプロイにかかる時間は 20分程度でした。
image.png
ログインしてみます。
image.png
日本語化済みの Windows Server 2022 DataCenter Gen2 が起動します。
image.png
途中で再起動が必要なスクリプトなので、2回に分けて実行します

1回目は 161行目までを実行します。
image.png
image.png
2回目は、161行目以降から最終行までを実行します。
image.png
image.png

日本語化されていることが確認できます。
image.png

Azure VM Image Builder で Windows Server 2022 を 日本語化 する

@tksh164 さん の PowerShell スクリプトを少し改変したものを用意して、Azure VM Image Builder で利用可能にしてみました。

https://github.com/uedait/change-windows-language-regional-settings-ImageBuilder

PowerShell の スクリプト が2つありますので、Azure VM Image Builder で 2つとも実行するように構成すれば OK です。

image.png

なお、Azure VM Image Builder については、以下で紹介されている内容が参考になります。

それでは Azure VM Image Builder での Windows Server 2022 の日本語化を試してみます。
手順は、概ね以下のようになります。

マネージドID の作成と権限の付与

マネージドID を作成します。

image.png

マネージドID に対して、ImageBuilder を作っていく リソースグループ への権限を付与します。
カスタムロール を作成することもできますが、今回は雑に、共同作成者権限を付与しました。

image.png

image.png

image.png

イメージテンプレートの作成

[イメージテンプレート] を検索し、新規に作成していきます。
[イメージ] を選択する際、 Windows Server 2022 のものを選択します。
選択肢が多いのですが、間違って Core (GUIなし) のものを選択したりしないようにしてください…
また、 [ギャラリー] や [VM イメージ定義] も、ここで新規作成が可能です。
最後に、十分な権限を持つ マネージドID との関連付けも行います。

image.png

[カスタマイズ] のタブで、PowerShell スクリプトを実行するように構成します。
以下2つのスクリプトを順番に実行するように構成します。
[Script Source URL] のところにそのまま張り付ければ大丈夫なはずです。

https://raw.githubusercontent.com/uedait/change-windows-language-regional-settings-ImageBuilder/main/change-ws2022-lang-ja-step1.ps1
https://raw.githubusercontent.com/uedait/change-windows-language-regional-settings-ImageBuilder/main/change-ws2022-lang-ja-step2.ps1

image.png

ビルドする

イメージテンプレートが作成された後は、ビルドを行います。

1時間程度かかりました。

image.png
image.png

VM を作成して確認

ビルドが完了したら、VM を作成して確認してみます。

image.png

ログインしてみると、Windows Modules Installer の処理が始まります。
それなりに時間( 5-8 分)がかかります。

image.png

日本語化されています。
image.png

Sysprep + Azure Portal から VM をキャプチャして Windows Server 2022 日本語化イメージを作成する

日本語化した VM が既にある場合には、そちらを Sysprep で一般化して、使いまわすこともできます。
今回は日本語化しただけの ほぼクリーンな Windows Server で試していますが、既にある程度サーバー役割を持たせている場合(あまりないかとは思いますが)には、以下も参照して Sysprep が可能なのかどうかも確認する必要があります。

https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/sysprep-support-for-server-roles?view=windows-11

さて、Sysprep + Azure Portal から VM をキャプチャ の手順は概ね以下の通りです。

日本語化済みVM を sysprep で 一般化 する

sysprep する方法は 公開ドキュメントに記載があります。

抜粋すると概ね以下の順序です。 公開ドキュメント内の 手順5 までは、PowerShell ではなく cmd での実行なので注意です。
最後の ”仮想マシンのステータスを [一般化] に設定” は、 Azure Portal 上から Cloud Shell で実施すれば OK です。

3.panther ディレクトリ (C:\Windows\Panther) を削除します。

rmdir /s /q C:\Windows\Panther

5.次に、ディレクトリを %windir%\system32\sysprep に変更して、次を実行します。

cd %windir%\system32\sysprep
sysprep.exe /oobe /generalize /mode:vm /shutdown

sysprep (5.まで) を実施すると、VM はシャットダウンされ、Azure VM の状態は [停止済み] となります。
VM は再起動せず、続けて、CloudShell から以下を実施していきます。

Sysprep が完了したら、仮想マシンのステータスを [一般化] に設定します。

Set-AzVm -ResourceGroupName $rgName -Name $vmName -Generalized

image.png

Azure Portal から VM をキャプチャ

こちらも、公開ドキュメントがあります。
なお、VMイメージの作成と sysprep は別ですので、最初に sysprep してからキャプチャしましょう。

Azure Compute Gallery (旧称 Shared Image Gallery) に格納されているイメージの場合、アカウントが既に作成されている VM を使用することも (特殊化)、イメージを作成する前に VM を一般化して、マシン アカウントや他のマシン固有の情報を削除することもできます。

一般化まで済ませた VM で キャプチャ を開始します。

image.png

image.png

10分程度 で、VM イメージ バージョン が作成されます。
image.png

VM を作成して確認

VM を作成して確認してみます。
なお、作成したイメージは、[共有イメージ] の中にありますので、ここから選択してデプロイすることもできます。

image.png

日本語化されています。
なお、こちらは 1分 とかからず ログイン でき、Azure Image Builder よりも素早く利用を開始できました。

image.png

まとめ

それぞれ実施してみた感想など、まとめておきます。
なお、所要時間はあくまでも私の手元で試した限りで、デプロイする VM の SKU 等でも当然違ってくるかと思います。

Azure Image Builder Sysprep + キャプチャ
日本語化 + Sysprep + イメージ作成の手間 ビルドボタンを押せば、あとは自動 手動
イメージ作成 所要時間 1時間程度 Sysprep 2-3分、キャプチャ 10分程度
(日本語化にかかる時間を除く)
VM初回ログイン 所要時間 5-8 分程度 数十秒程度
メリット イメージ作成の手間がかからない。
KBが出た後などイメージが更新された場合でも、手間なくビルドして、最新の日本語化イメージを用意しておける。
初回ログインの際の「Windows Modules Installer」の処理が無く、初回ログインの所要時間が短い。VMデプロイ後、すぐに検証を開始できる。

Azure Image Builder で Windows Modules Installer の処理を省く方法があればいいのですが、ちょっと見つけられませんでした。
何か情報があれば教えてください。

何かのお役に立てば。

参考

https://github.com/tksh164/azure-demo-scripts-templates/tree/master/arm-templates/win-lang-region-config

https://github.com/tksh164/change-windows-language-regional-settings

https://www.kentsu.website/2023/04/02/azure-portal-対応の-azure-image-builder-を試し隊/

https://zenn.dev/microsoft/articles/6dca45e20e560f

https://hack-life.hatenablog.com/entry/azure-how-to-sysprep

Microsoft (有志)

Discussion