このページの本文へ

Windows Info 第98回

Insider Previewでストア版のWindows Subsystem for Linuxが登場

2017年08月27日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

RS3でアップデートされるWindows Subsystem for Linux

 Fall Creators Update(以下、RS3)でもWindows Subsystem for Linux(以下、WSL)のアップデートが予定されている。

 WSLは、Preview版のビルド16251(7月26日配布)から正式版となり、「Windowsの機能」(コントロールパネルの「プログラムと機能」→「Windowsの機能の有効化または無効化」)にあった「Beta」の表記が消えた。また、Windows Server 2016のWindows Insider Preview版でもWSLが提供されるようになった。

 マイクロソフトによれば、RS3以降のWSLのアップデート内容としては、

互換性の向上
シリアルポートのサポート(COMデバイスをttyデバイスと接続)
ファイルシステム改良(SMBプロトコル、FAT32対応、USBドライブ対応、性能向上)
OpenCLへの対応(GoogleのTensor flowが動作)
サーバー機能(開発用およびDevOps向け)

といったことが挙げられている。

 RS3は現在Windows Insider PreviewでPreview版が公開中だが、これを用いることで、改良されたWSLが利用できる。たとえば、現在のPreview版では、Linux内でWindows側のファイルを扱うためのdrvfsが認識されており、Linux側からmountコマンドを使ってWindows側やネットワーク経由で他のWindowsマシンの共有ファイルをマウントできる。

RS3のPreview版では、WSLも改良されており、Linux側でdrvfsが認識されて、ローカルドライブやネットワークフォルダのマウントもLinux内から可能になった

 もっともPreview版のWSLやコンソールは機能的には改良されているものの、バグが混入し、RS2で到達していたレベルから落ちてしまうこともある。Preview版とはそういうものではあるが、WSLをある程度利用しているユーザーからするとツライ部分もある。

 たとえば、RS3 Build 16257では、RS2で動作していたコンソール分割アプリケーションのbyobuが正しく動作しなくなった。

 byobuは、tmuxなどのターミナル分割ソフトウェアで、その対応は、RS2の目標の1つだった(https://blogs.msdn.microsoft.com/commandline/2016/06/08/tmux-support-arrives-for-bash-on-ubuntu-on-windows/)。調べて見ると、byobuでステータスバーの描画に失敗するのは、ユニコード文字列の文字幅の判定方法に起因する問題らしい。RS2とRS3ではこのあたりが改良されたようだ。以下のコマンドにより、環境変数を設定することで、少なくとも表示の問題を回避できbyobuを正しく動作させることが可能だ。

export VTE_CJK_WIDTH=1

Insider Preview向けのWindowsストアで
Linuxディストリビューションが配布開始

 もう1つの話題として、Insider Preview向けにWindowsストアで、WSLで利用できるディストリビューションの配布が開始されたことがある。

 今年5月のBuild 2017では、「Fedora」「SUSE」「Ubuntu」の3つのLinuxディストリビューションの対応が発表されたが、原稿執筆時点では、「OpenSUSE Leap 42」と「SUSE Linux Enterprise Server 12」(有償ソフトウェアだが、1年間の開発者向け無料サブスクリプションが付属)およびUbuntuがWindowsストアで配布されている。

WindowsストアからSUSEのopenSUSE Leap 42とSUSE Linux Enterprise Server 12をインストール可能になった

Ubuntuは、従来通りbash.exeからもインストール可能だが、Windowsストアからもインストールできるようになっている。ただし、両者はインストール先などが違うため共存が可能

 Windowsストアで配布されているSUSEとUbuntuは、RS2に付属しているWSLとはちょっと違う。ここでは区別のため前者をストア版WSL、後者をデスクトップ版WSLと呼ぶ。簡単にいうとストア版WSLもデスクトップ版も同じ技術を使って実現されているが、ストア版は、デスクトップ版をベースにUWP Desktop Bridge(Project Centennial)を使って、UWPのパッケージ形式であるAPPX化したものだ。このため、両者はファイルやフォルダの利用方法が違っている。また、こうした違いがあるため、両者は共存可能だ。

 大きな違いとしてストア版WSLは、Bash.exeから起動するのではなく、UWPアプリと同じく、スタートメニューやタイルから起動する。ストアアプリであるため、コマンドラインからは起動できない。コマンドプロンプト(CMD.EXE)からBash.exeにコマンドを渡し、さらに結果をCMD.EXE側で受けるといった使い方はできない。ただし、Windowsとの相互運用性はあるため、ストア版WSL内からWindowsプログラムを起動することは可能だ。

 もう1つは、デスクトップ版WSLで利用可能だったLXRUNコマンドは、ストア版WSLでは利用できない。UWPアプリと同じになるため、アップデートは自動的に行なわれ、このときユーザー環境などはそのまま引き継がれることになると考えられる。

 また、インストール先は、UWPアプリと同じく、C:\Program Files\WindowsApps以下になる。

ストア版WSLは、UWPと同じくWindowsAppsフォルダ以下にインストールされる。rootfsのイメージはinstall.tar.gz内にあるようだ

 WSLでは、Linux側のファイルシステムをVolFSとして実現しているが、その元になるファイルシステムイメージは、インストールフォルダにある「Install.tar.gz」である。これは、GZIPで圧縮された(.gz)、tar形式のアーカイブファイルである。該当のインストール先フォルダには、このほかに「アプリマニフェスト」(AppxManifest.xml)やexe実行ファイルなどがある。また、「AppxBlockMap.xml」は、Windowsストアのストリーミングインストールを行う場合のファイルだ。

 なお、このVolFSは、UWPアプリのローカル情報を記録するフォルダである「%userprofile%\AppData\Local\Packages\パッケージ名」以下に格納されている。具体的には、

%userprofile%\AppData\Local\Packages\パッケージ名\LocalState\rootfs

にVolFSのベースになるフォルダが作られている。なお、WSLでは、VolFSをWindows側から直接アクセスすることを想定していないため、エクスプローラーでここを直接操作するのは避けること。

 Packagesフォルダは、多数のフォルダがあるが、エクスプローラーの検索欄で「*suse」や「*canonical」を指定して検索するといいだろう。各フォルダの下にある「LocalState」にマウントされるファイルシステムに対応したフォルダがある。このうちrootfsがWSL内の「/」以下のrootfsとなっている。

ストア版WSLをインストールしたとき、rootfsなどは、ユーザーフォルダ以下のAppData\Local\packagesフォルダ以下に置かれる。ただし、ここをWindows側から直接操作してはいけない

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン