そろそろNano ServerとPowerShell Coreに触れていかないといけないかなぁと思ったので。
普段使いの環境がVirutalBox + Vagrantなので、Nano ServerもVirtualBoxで動かしたいと思い環境を作ったのですが、ちょっとハマりどころがあったので、その辺を含めてエントリとしてまとめてみました。
はじめに
検証環境
【2016/09/27追記】
本日Windows Server 2016 GA版がダウンロード可能になりました。
GA版でも以降の手順はそのまま実行可能です。
ちなみに日本語版で文字化けするのは改善されていませんでした。
ただ文字化けするのはリカバリコンソール上だけで、PowerShell Remoting等で接続して利用する分には日本語版でも問題なかったです。
Windows Server 2016 GA版(評価版)はこちらからダウンロードできます。
今回検証する環境は、
- ホスト : Windows 10 Pro (64bit)
- VirtualBox : 5.1.0
- ゲスト : Windows Server 2016 TP5 (US版)
となります。
Windows Server 2016 TP5はこちらからダウンロードできます。
日本語版だと文字化けするそうなのでUS版を使います。
ハマりどころ
そんなに大したことではないのですが、VirtualBoxで使用可能なネットワークドライバはNano Serverの標準パッケージには含まれていません。
このため、OEMドライバー込みのNano Serverイメージを用意する必要があります。
現時点での各ネットワークアダプターのドライバの対応状況は以下の様になっているみたいです。
| アダプタータイプ | ドライバ | 特記事項 |
|---|---|---|
| PCnet-PCI Ⅱ | × | ドライバ無し |
| PCnet-FAST Ⅲ | × | ドライバ無し |
| Intel PRO/1000 MT Desktop | E1G6032E.sys | OEMDriverの追加が必要 |
| Intel PRO/1000 T Server | × | ドライバ無し |
| Intel PRO/1000 MT Server | E1G6032E.sys | OEMDriverの追加が必要 |
| 準仮想化ネットワーク(virtio-net) | × | ドライバ無し |
また、VirtualBoxではvhdx形式の仮想ディスクを読み込めませんので、仮想ディスクはvhd形式で作成する必要があります。
Nano Serverのイメージを作る
イメージ作成の細かい手順は山市さんのブログの資料を見てもらうとわかりやすいです。
山市良のえぬなんとかわーるど: セッション資料公開: Interact x Cloud Samurai 2016 Summer Track 1 Session 2
今回はこちらの資料を参考にして、以下の様なPowerShellスクリプトでイメージを作成しました。
このスクリプトを管理者として実行すると$TargetPathにvhdイメージ(nanosv01.vhd)が作成されます。
$MediaPath、$BasePath、$TargetPath等の各パラメーターは環境に応じて適当に変更してください。
$MediaPath = (Get-WmiObject Win32_CDROMDrive -Filter "VolumeName='SSS_X64FRE_EN-US_DV9'").Drive #$MediaPath = "D:\" $BasePath = "C:\Temp\NanoBase" $TargetPath = "C:\Temp\nanosv01.vhd" Import-Module (Join-Path $MediaPath "\NanoServer\NanoServerImageGenerator\NanoServerImageGenerator.psm1") $Params = @{ MediaPath = $MediaPath; BasePath = $BasePath; TargetPath = $TargetPath; # デプロイの種類とエディション # OEMDriverを追加するにはHostモードにする必要があります DeploymentType = "Host"; Edition = "Standard"; # ホスト名とAdministratorのパスワード ComputerName = "nanosv01"; AdministratorPassword = (ConvertTo-SecureString "P@ssw0rd" -Force -AsPlainText); # リモート管理/EMS設定 EnableRemoteManagementPort = $true; EnableEMS = $true; # パッケージ設定 - Intel NICのドライバーを入れるためにOEMDriverを追加 OEMDrivers = $true; } New-NanoServerImage @Params
VirtualBoxでNano Serverを動かす
仮想マシンの作成
仮想ディスクが出来た後はVirtualBoxから仮想マシンを作ってやります。
とりあえず今回はGUIからやっていきます。
VirtualBox マネージャーから仮想マシンを新規作成します。

名前は適当に。
OSタイプにWindows Server 2016が無かったのでWindows 10(64bit)としておきました。

メモリサイズは適当に。

仮想ハードディスクは前項で作成した仮想ディスクを使うのでここでは作成しません。

警告がでますが、そのまま続けます。

仮想マシンが出来上がりますが、まだ起動できないのでプロパティを表示します。

ストレージ設定を開き前項で作成した仮想ディスクを追加します。
以下の図では作成したnanosv01.vhdを、仮想マシンの設定のあるE:\VM\Win2016Nano\に移動した上で追加しています。
仮想ディスクの場所は適宜設定してくだい。



今回はネットワークアダプタにIntel PRO/1000 MT Desktopを選択します。
(Intel PRO/1000 MT Serverでも構いません)

また、PSRemoting用にWinRMのポート(TCP5985)をポートフォワードする様にしておきます。

EMS用にCOMポートの設定をします。
下図の様に設定するとlocalhost:12345ポートにアクセスするとゲストのCOM1に接続できます。

以上で設定は完了です。
設定後、仮想マシンを起動すると下図の様にNano Serverが起動し、NICも普通に見える様になります。




PSRemotingで接続する
作成した仮想マシンにPSRemotingで接続するにはポートを指定してEnter-PSSessionしてやればOKです。
実行例は以下の様になります。
Enter-PSSession -ComputerName localhost -Port 15985 -Credential administrator
$PSVersionTable.PSEditionがCoreであり、確かにNano Serverに接続していることがわかります。

EMSに接続する
EMSに接続するには適当なクライアントからCOMポートに接続してやればOKです。
今回は私が使い慣れているTera Termで接続します。
最初にNano ServerのEMSのボーレートはデフォルトで115200*1なのでTera Termの設定を変更します。

あとはTelnetでlocalhost:12345に接続すれば仮想マシンのCOM1に接続できます。

idコマンドの結果はこんな感じです。
ProductがWindows Server 2012 R2ですが、実際にはWindows Server 2016です。

また、CMDセッションに接続してPowerShellを起動してやるとこんな感じになります。

最後に
とりあえずこんな感じです。
頑張ればCUIでの設定やVagrant Boxを作ったりできると思いますが、私の用途では必要なさそうなのでこれ以上はやらないつもりです。
参考情報として、Matt WrockさんのブログでNano Server用のPacker Templateの作り方が紹介されていますので、その辺に興味がある方は参考にしてみてください。
加えてMattさんの作ったVagrant BoxがAtlasで公開されてますので、私はまだ試していないのですが、このBoxを使ってみるのも良いかもしれません。
*1:New-NanoServerImageのパラメータで変更可能