kkamegawa's weblog

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

Windows Server InsiderでのWSL

WSL = Windows Subsystem for Linux。いわゆるBash on Windowsです。

ちょっと時間が取れたので試してみました…と書こうとしたら、Insider Preview 16278が公開されるというタイミングの悪いものになってます。検証は16267でやってます。

blogs.windows.com

バージョンの更新

  • 今のところISOメディアでのみの提供のようです。
  • 前バージョンのプレビューからアップグレードはできますが、「何も引き継がない」というオプションしか選べません(16278も同じ)。
  • なので、インストールごとにWSLの環境も構築しなおしです。Server Coreとはいえ、自動化しないと結構やってられなさそう。

WSLのインストール

 現在OpenSUSE, Ubuntu, SLESと提供されています。Windows 10と違って、ストア経由ではなく、直接ダウンロード用のURLからappx(!)パッケージをダウンロード、PowerShellのexpand-archiveコマンドレットで展開します。なので、好きなフォルダに展開、インストールができます。

PowerShell
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile ~/Ubuntu.zip -UseBasicParsing
Expand-Archive ~/Ubuntu.zip c:\distro\Ubuntu

exeファイルが一つあるので、そのまま実行すればOK。

複数インストール

SLES, Ubuntu, OpenSUSEの同時インストールもできます。もちろんフォルダはわけてね。

Windowsのコマンドプロンプトからbash.exeを実行すると、WSLが起動します。この時の使われるディストロは最初にインストールしたものが使われるようです。

二番目以降にインストールしたディストロを起動したい場合、明示的にフォルダに移動してからubuntu.exeなどのセットアップに使ったexeを実行します。

消した場合

二番目以降にインストールしたディストロを消すのはいいのですが、最初にインストールしたディストロのインストールフォルダを消した場合、bash.exeではWSLが起動しなくなります。

一度WSLを消してから再度入れ直すのがよさそうです。

PowerShell
disable-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux

コメント欄で教えていただきました。消さなくても

ubuntu.exe /clean

wslconfig /u

コマンドで登録の解除をすればいいそうです。

lxrunコマンド

Windows 10ではlxrun /uninstallでBash on Windowsの削除ができましたが、Windows Serverでは実行しても無意味なコマンドのようです。

f:id:kkamegawa:20170906065926p:plain

lxrun /uninstall しても、bash.exeで最初のディストロが起動します。OS再起動しても問題ありません。