このページの本文へ

前へ 1 2 次へ

Windows Info 第178回

プレビューが開始されたWindows Subsystem for Linux 2を動かす

2019年06月23日 10時00分更新

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

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

 WSL2(Windows Subsystem for Linux 2)のプレビューが開始された。

 現在Fast Ringで公開中のWindows Insider Preview Build 18917には、WSL2が搭載されており、インストール作業をすることで動かすことが可能だ。WSL2については、本連載でもすでに紹介している。

第172回 Linuxカーネルをそのまま利用する「Windows Subsystem for Linux」の新バージョン
第173回 Build 2019で見えた「Windows Subsystem for Linux 2」の詳細

 まだプレビュー段階であり、インストールにはGUIは使えず、PowerShellから作業する必要がある。このためコマンドラインに慣れていないとちょっと難しい。とはいえ、Linuxを動かしてみたいと思うユーザーならコマンドラインにはまず慣れているであろうから、ほとんど問題ないだろう。

実際のWSL2のインストール

 Build 18917がすでに動作している環境なら、すぐに試すことができる。インストール方法は、以下のURLに記載がある。

●Install WSL 2 | Microsoft Docs (英語)  https://docs.microsoft.com/en-us/windows/wsl/wsl2-install
●WSL 2 をインストールします。 | Microsoft Docs (機械翻訳)  https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-install

 手順を要約すると、管理者でPowershellを起動し、以下のコマンドを実行する。

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

 すでにインストールされているWSL1のディストリビューション(ここではUbuntu-18.04を仮定)があるなら、

wsl --set-version Ubuntu-18.04 2

とすることで、WSL2に変換できる。

既存のWSLディストリビューションがある場合には、wsl.exeで変換する

 また、WSLのディストリビューションがインストールされていない場合は、

wsl --set-default-version 2

を実行したあと、WSLのディストリビューションをMicrosoftストアアプリから入手して起動する。

 1つのディストリビューションはWSL1かWSL2のどちらかでしか動作できない。wsl.exeコマンドを使うことで、ディストリビューションをWSL1用、WSL2用に切り替えることは可能だ。ただし、変換はWSLが動作していないときに実行する必要がある。

それではWSL2を動かしてみる

 筆者の方で取り急ぎテストしてみたが、ざっと触った感じでは急に落ちてしまうこともなく、ある程度の安定性はあるようだ。

 マイクロソフトが主張するように、仮想環境を使いながらも起動は速い。同じマシンでWSL1とWSL2(どちらもUbuntu-18.04相当)を起動してみたが、どちらも2秒程度で起動し、差はほとんどなかった。これならWSL1の代用として十分な速度といえる。

 また、WSL2のext4ファイルシステムでの処理は、たしかに速い。WSL1とWSL2でfindコマンドを使って、VolFsとext4で速度を比べてみた。

/usr/bin/time find /usr /bin /lib /opt -name 'c*' > /dev/null

として、findで"c"で始まるファイルを探させた。このとき、WSL1とWSL2では、10倍ぐらいの差がある。

WSL1とWSL2のディスクアクセスを簡単に比較した。findコマンドでは実行時間に10倍程度の違いがある。ただし、WSL2は初回のアクセスに時間がかかっていた

 ただし、WSL2では初回のファイルアクセスには時間がかかっているようだ。これは、ext4が仮想HDD上にあり、初回のアクセスは、起動処理やNFTS側でキャッシュが作られていないことなどが理由と思われる。起動が高速なのは、ext4から通常手順で立ち上げているのではなく、仮想マシン環境に直接実行イメージを読み込ませて起動してからだと推測される。そうなると、初回のファイルアクセスではじめて、VHDXファイル側へのアクセスが起きるため、このときに時間がかかるのだと思われる。

 また、WSL2は“完全”なLinuxになっている。簡単なテストとしてFUSE(Filesystem in Userspace)を試してみた。FUSEはLinuxカーネルの機能であり、WSL1では実装されていなかった。具体的には、WSL2には、/dev/fuseがあるのに対して、WSL1には存在しない。

WSL2には、/devにfuseデバイスがある

WSL1には、/dev/fuseデバイスがない

 FUSEを利用するアプリケーションは、この/dev/fuseデバイスを使って動作する。まずは「sshfs」を動かしてみた。これは、sshを使い、接続先のディレクトリなどをファイルシステムとしてマウントできるようにするコマンドだ。インストールなどについては本筋ではないので省略するが、WSL2からは、正しく動作させることができたのに対して、WSL1内では、sshfsのインストールはできるものの動作はしなかった。

 WSL2により、いままでWSL1では利用できなかったLinuxコマンドが動作できるようになっている。まだプレビュー段階なので、その他の機能などで不具合が出る可能性はあるものの、とにかくFUSEは動作しているようだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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