kkamegawa's weblog

Visual Studio,TFS,ALM関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Windows Server 2016 Insider 16257のWindows Subsystem for Linuxを試す

待っていた、Windows Subsystem for Linux(WSL)をサポートしたWindows Server 2016 Insider 16275が公開されました(サポートそのものは16237かららしい)。

blogs.windows.com

Announcing Windows Server Insider Preview Build 16257 - Windows Experience Blog

実機に入れてみたので、簡単に試してみましょう。

WSLを追加

f:id:kkamegawa:20170810171747p:plain

PowerShellのコマンドレット、Enable-WindowsOptionalFeatureを使って有効にします。その前にGet-WindowsOptionalFeatureで入っているかどうか確認してみます。StateプロパティがDisabledなので、入っていませんね。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

再起動するとインストール完了です。

Ubuntuを追加

f:id:kkamegawa:20170810171550p:plain

Windows 10 Insider 16257ではストアからダウンロードしますが、現在のWindows Server InsderではWebからとってきます。Ubuntuを入れていますが、OpenSUSEとSLESにも対応しています。PowerShellのInvoke-WebRequestコマンドレットでとってきます。

Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile ~/Ubuntu.zip -UseBasicParsing

OpenSUSEの場合

Invoke-WebRequest -Uri https://aka.ms/wsl-opensuse-42 -OutFile ~/opensuse.zip -UseBasicParsing

SLESの場合

Invoke-WebRequest -Uri https://aka.ms/wsl-sles-12 -OutFile ~/sles.zip -UseBasicParsing

ここからはUbuntuで説明します。

f:id:kkamegawa:20170810171555p:plain

Expand-Archiveコマンドレットでzipを展開します。%USERPROFILE%直下に展開していますが、好きなところで構わないはずです。Windows 10の場合、%LocalAppData%\LxSSでした。

zipファイルを展開すると、こんな感じです。ubuntu.exeを実行すると、インストールが始まります。

f:id:kkamegawa:20170810171800p:plain

最初にUbuntu用のユーザーを作ります。これはWindows 10と同様に、Windowsのユーザーとは別管理です。

f:id:kkamegawa:20170810185210p:plain

インストール後、aptコマンドで更新しておきましょう。これでインストール終わりです。プログレスバーが乱れているのはリモート接続だからか、Insiderだからか…まぁいいでしょう。

f:id:kkamegawa:20170810171755p:plain

Ubuntuが入っています。

使ってみる

f:id:kkamegawa:20170810173524p:plain

Windows 10と同様に、Windows側のパスもWSLのパスとして登録されていますね。Windows 10と同様に、dirコマンドの結果をパイプでWSL側のgrepに渡せます。もちろん、そのままgrepと実行しても起動できないので、注意してください。

f:id:kkamegawa:20170810185142p:plain

ちなみに、bash.exeを実行した場合、ubuntu.exeを経由せず実行できます。複数のLinux環境入れた場合、どれが優先されるんでしょうね?

消した場合

f:id:kkamegawa:20170810171751p:plain

Enable-WindowsOptionalFeatureで追加できますが、Disable-WindowsOptionalFeatureでWSLを消すこともできます。Linuxモジュールは別管理のようで、Disable-WindowsOptionalFeatureで消した後、ubuntu.exeを実行すると、こんなエラーになります。

もちろん、再度Enable-WindowsOptinalFeatureでWSLを追加すると、ユーザー環境などはそのまま引き続き使用できます。確認してないですが、lxssコマンドもありました。

今後

とりあえずdocker入れたので、WSL側のdockerからWindowsのDockerコンテナ動くかとか、VSTS/TFSのビルドエージェント経由でWSLがどうやって動かせばいいのかとか、試してみたいと思います!