このページの本文へ

前へ 1 2 次へ

Windows Info 第173回

Build 2019で見えた「Windows Subsystem for Linux 2」の詳細

2019年05月19日 10時00分更新

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

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

DrvFsは廃止され9P serverが導入予定

 現在のWSL1には、Linux(WSL)側からWin32のファイルシステム(NTFS)へアクセスするためにDrvFsが用意されている。とはいえ、WSL1自体が、Win32のNTFS上に作られたVolFsを利用しているため、どちらもNTFSの上で動作するものだ。しかし、仮想マシン環境でLinuxカーネルが動作すると、VolFsもDrvFsも利用できなくなる。Build 2019のWSL2に関するセッションでは、このあたりの解説があった。

 まず、WSL2のLinuxカーネルは、標準的なファイルシステムであるExt4をそのまま利用する。しかし、直接ハードウェア(HDDコントローラーやドライブ)をアクセスするのではなく、Hyper-Vハイパーバイザー経由で、仮想HDDを利用する。

WSL2では仮想マシン内のLinuxカーネルはext4ファイルシステムで動作する。しかし、Hyper-Vの機能により、仮想ハードディスク上へのアクセスに変換されるようだ

 これは、Hyper-Vが用意する標準の外部記憶サポート機能だ。仮想化のレベルにもよるが、Hyper-VではPCのHDD関連デバイスを仮想化し、VHDファイルへのアクセスに変換できる。準仮想化が可能なら、ハードウェアエミュレーションではなく、もっと高いレベルでVHDへのアクセスができる。

 これにより、Linuxカーネル側はローカル上で動作しているのとほぼ同じコードを動かすことが可能だ。このためWSL2では、ファイルアクセスが多いアプリケーションが高速化するわけだ。どちらもNTFSの上で動作するが、Ext4を使うなら、Linuxカーネルのファイルキャッシュや遅延書き込みといった機能がそのまま利用できるので高速化の余地がある。

 仮想マシン内で動作することで、WSL2は、直接NTFSにアクセスすることは困難になった。WSL1では、LXcore内でLinuxのファイルアクセスをNTFSのアクセスへと変換していたため、Linux側はNTFSを扱う必要がなかった。

 もちろん、NTFSをファイルシステムとして扱うドライバーは存在するが、あくまでもマウントして占有して使うものであり、Windowsがマウントしたままのパーティションを直接アクセスさせることはできない。というわけでWSL側からWin32のファイルシステムをアクセスしていたDrvFsは使えなくなる。

 しかし、WSLが持つWin32相互運用性(WSL内部からWin32コマンドを起動する機能)を実現するには、WSL側で実行ファイルがWin32なのか、LinuxのELF64なのか(あるいはbashなどのスクリプトなのかも)を判別する必要があり、実行ファイルの先頭部分を読む必要がある。Win32側の実行ファイルだと判定できれば、起動はハイパーバイザー経由などで、WSL関連のサービスに依頼することも可能だが、実行ファイルの判定はWSL内でする必要がどうしてもある。

 その点について、Build 2019のセッションによれば、DrvFsの代わりに、Win32側に9Pサーバーが搭載され、WSL2からは、9Pを介してWin32のファイルシステム(Cドライブなど)をアクセスするようだ。

従来のDrvFsに代わり、Win32側でも9Pサーバーが動作し、Linux側でWin32のファイルシステム(NTFS)へのアクセスが可能になるようだ

 このため、DrvFsはなくても、そのまま/mnt/c以下にcドライブをマウントすることは可能である。つまり、これまでWSL1でしてきたDrvFsによるアクセスは、低レベルでは切り替わるものの、同じようにアクセスできるようになる。また、Win32側からWSL側へのアクセスは、Windows 10 Ver.1903で導入される9Pサーバーを介したネットワークファイルアクセスがかそのまま残るようだ。

 このあたりをまとめると、以下の表のようになる。

 現時点では、WSL1とWLS2の相互運用に関しては何も発表されていない。しかし、WSL1には当面廃止予定がないことから、なんらかの手段が用意されると思われる。

 一番可能性があるのは、9Pによるアクセスだ。WSL2が登場した時点では、WSL1には9Pサーバーが搭載されており、WSL2側は9Pクライアントとして動作することでVolFsのアクセスが原理的にはできるはずだ。また、WLS2のネイティブファイルシステムも9PでWin32側に公開していることからWSL1からアクセス可能になる可能性がある。

 もちろん、同じLinux同士なので、NFSを使うという方法も不可能ではないが、すでに9Pによるファイルアクセスが可能になっていることを考えると9Pを利用するのが自然に思える。

 GPUやUSBのサポートなど、WSL2の機能がさらに強化されれば、WindowsユーザーがLinuxを使う敷居は大きく下がることになると思われる。多くのユーザーにとってLinuxは、もっと気軽に利用できるようになるだろう。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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