2015/12/03

Nano Server TP4 を第 2 世代仮想マシン用に作成する

Nano Server を Hyper-V 仮想マシンの第 2 世代仮想マシンで動かしたいときの作り方について...

昨日の失敗(→)が夢の中で解決できたので、早朝から実機で確認しました。



NanoServer\NanoServerImageGenerator.psm1 モジュールの New-NanoServerImage コマンドレット (正確には Function) を使って作る場合は、-TargetPath パラメーターに VHDX (拡張子.vhdx) のパスを指定すると、第 2 世代仮想マシン用の VHDX を作成してくれます。

VHD (拡張子.vhd) を指定した場合は BIOS (MBR)、VHDX (拡張子.vhdx)を指定した場合は UEFI (GPT) のディスクレイアウトで構成で作成してくれます。このとき、-GuestDrivers パラメーターの指定を忘れずに。

あと、既定では 4GB の容量可変 VHD/VHDX で作成されますが、より大きなサイズにしたければ -MaxSize 20GB とか指定すればいいみたい。※ Nano Server で Hyper-V とか Containers とか試す場合は 4 GB だとすぐに足りなくなっちゃうので注意。

NanoServer\Convert-WindowsImage.ps1 で WIM ファイルを VHDX に変換して作る場合は、次のように -VHDDormat VHDX -DiskLayout UEFI パラメーターを指定してあげれば、第 2 世代仮想マシン用 VHDX ファイルに変換できます。既定で容量可変タイプの 25 GB の VHDX ファイルが作成されます。サイズを変更したければ、-SizeBytes パラメーターで指定します。

Technical Preview 3 のときは、NanoServer\Convert-WindowsImage.ps1 は以下のスクリプト(Version 10 (June 2015)) とまったく同じものでしたが、Technical Preview 4 では改造版?が入っています。使い方やパラメーターが変更になっているので注意しましょう。

Convert-WindowsImage.ps1 — WIM2VHD for Windows 10 (also Windows 8 and 8.1)
[URL] https://gallery.technet.microsoft.com/scriptcenter/Convert-WindowsImageps1-0fe23a8f

あとは、第 2 世代仮想マシンに VHDX を割り当てて起動すれば OK なんですけど、こんな BSoD 画面に遭遇することも。

これは、-GuestDrivers (Microsoft-NanoServer-Guest-Package.cab) の入れ忘れです。いろいろとはしょっって、NanoServer.wim をそのまま VHDX ファイルに変換したとか(←これ私)。

第 2 世代仮想マシンは統合デバイスである SCSI ディスクから起動するので、Hyper-V のゲスト用ドライバーが入っていないと INACCESSIBLE_BOOT_DEVICE となっちゃいます。(ちなみに、Windows ブート マネージャーさんにはゲスト用ドライバーが入っていて、ディスクが見えるんですが、Windows を起動しようとした瞬間に見えなくなります。)

この状況をなんとかするには、VHDX を New-NanoServerImage コマンドレットで作成した場合は、Edit-NanoServerImage コマンドレットを次のように実行して -GuestDrivers を追加してあげます。

PS> Edit-NanoServerImage -BasePath .\Base -TargetPath <VHDX のパス> -Language en-us -GuestDrivers

en-us 指定が文句を言われる場合は、日本語版のインストール メディアを使っています。英語版のインストール メディアを使ってください。その理由は、「Nano Server TP4 の Recovery Console 文字化け問題」で説明しました。

VHDX ファイルをエクスプローラーや「ディスクの管理」スナップインでローカルにマウントし、コマンドプロンプトを管理者として開いて、次のように実行します。(G: は Windows フォルダーがあるボリュームのマウント先ドライブ、F: は英語版 Windows Server 2016 TP4 のインストール メディア)

C:\> DISM /Image:G: /Add-Package /PackagePath:F:\NanoServer\Packages\Microsoft-NanoServer-Guest-Package.cabC:\> DISM /Image:G: /Add-Package /PackagePath:F:\NanoServer\Packages\en-us\Microsoft-NanoServer-Guest-Package.cab

パッケージを追加したら、 「ディスクの管理」スナップインで VHDX ファイルを切断します。

これでめでたく起動できるように。ちなみに、カスタマイズしていない Nano Server イメージは、Administrator パスワードなし、コンピューター名 minwinpc です。起動後に変更してください。

ところで、NanoServerImageGenerator.psm1 モジュールに含まれる New/Edit-NanoServerImage コマンドレット(Function)は、役割やパッケージの追加以外にも、VHD/VHDX のファイルサイズ指定、コンピューター名の設定、管理者パスワードの設定、IP アドレスの設定、EMS の有効化、リモート管理用のファイアウォール規則の有効化(WinRM TCP/5985)、オフライン ドメイン参加設定(djoin)とかいろいろできるようになってます。



Microsoft-NanoServer-Guest-Package.cab 以外のパッケージは、Nano Server を起動してからでも DISM /Online /Add-Package /PackagePath:... であとから入れられますんで、最初からがんばって入れなくてもよいかと。逆に入れてしまうと、この VHD/VHDX に何に入れたっけ? ってことになりますし。

例えば、Windows Server 2016 TP4 の Hyper-V または Windows 10 バージョン 1511 (またはビルド10565 以降の Insider Preview) のクライアント Hyper-V で、第 2 世代仮想マシンの Nano Server で Nested Hyper-V を有効にして、Hyper-V の役割を後から追加するには...

PS> wget https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/hyperv-tools/Nested/Enable-NestedVm.ps1 -OutFile ~\Enable-NestedVm.ps1 
PS> ~\Enable-NestedVm.ps1 -VMName "仮想マシン名"
PS> Start-VM -Name "仮想マシン名"
PS> Enter-PSSession -VMName "仮想マシン名"
[仮想マシン名]: PS> DISM /Online /Add-Package /PackagePath:D:\NanoServer\Packages\Microsoft-NanoServer-Compute-Package.cab
The operation completed successfully.
Restart Windows to complete this operation. (応答が帰ってこなかったら Ctrl+Cとか押してみる)
[仮想マシン名]: PS> DISM /Online /Add-Package /PackagePath:D:\NanoServer\en-us\Packages\Microsoft-NanoServer-Compute-Package.cabThe operation completed successfully.
Restart Windows to complete this operation. (応答が帰ってこなかったら Ctrl+Cとか押してみる)
[仮想マシン名]: PS> DISM /Online /Enable-Feature /FeatureName:ServerManager-Core-RSAT /FeatureName:ServerManager-Core-RSAT-Role-Tools
The operation completed successfully.
Restart Windows to complete this operation. (応答が帰ってこなかったら Ctrl+Cとか押してみる)
[仮想マシン名]: PS>  Restert-Computer (ここで仮想マシンを再起動)
PS>

こんな感じだと思う。やってる途中で、Nested Hyper-V に対応していない Windows 10 Enterprise 2015 LTSB (ビルド 10240) のクライアント Hyper-V で作業していることに気付いたので、Hyper-V の動作確認まではしてません。

今日の教訓「わかっているつもりのちょっとした省略やミスで余計に時間がとられる」

Nano Server TP4 まとめ ->]

0 件のコメント: