WSL$の詳細を詳しく見る
WSL$は、Plan 9のために開発された9Pというプロトコルを使っている。Plan 9は、Unixを開発したベル研究所で作られてきたOSで「Plan 9 from Bell Labs」というのが正式な名前である(この名前はカルト的な人気を誇る映画「Plan9 from Outer Space」が元ネタである)。
Plan 9は、Unixの次の研究プロジェクトとして作られ、ファイルという形でOSの管理するリソースにアクセスできたため、9Pは単純なファイルシステム以外にも適用が可能だった。また、UnixやLinuxへのポーティングも進められていたため、すでに実績のあるコードが作られていた。
Linux/Unixで一般的なNFSを使わなかったのは、9Pが疑似ファイルシステムなどもサポートできたこと、ファイル共有プロトコルとしては軽量だったことが理由と考えられる。もちろん、すでにLinuxに移植されていたということもあるだろう。
そのソースコードの由来はともかく、マイクロソフトはWSLで9Pプロトコルを扱えるようにした。また、/initプロセスで9Pファイルサーバーを動作させるように改良した。これにより、WSL側は、VolFs(ルートディレクトリ以下)や/proc、/sysなどの特殊ファイルシステムを含めて、Win32側からアクセスを可能にした。
Win32側は、9Pプロトコルのクライアントをリダイレクタードライバーとして実装した。これは、C:\windows\system32\driversにある「p9rdr.sys」が対応している。このp9rdr.sysは、リダイレクタードライバーとして組み込まれ、ネットワークフォルダーに「wsl$」ホストを見せるようになっている。
p9rdr.sysと/init(9Pサーバー)の間は、AF_UNIXによるプロセス間通信を使う。AF_UNIXは、ソケット(バークレーソケット)を使う場合に同一マシン内のプロセス間通信に使う「アドレスファミリー(Address Family)」である。これは、Windows 10 Ver.1803(RS4)でWindows側とWSLに実装された機能だ。このときには、何に使うのかが見えていなかったが、実はこうした用途が想定されていたというわけだ。
利用面からいえば、これでWin32とWSLは、どちら側からもお互いのファイルシステムをアクセスできるようになった。今までは、WSLのファイルシステムにあるファイルはWSL側からしかアクセスできず、コマンドをDrvFs側(/mnt/cなど)の上で動かすことが強いられたが、今後はWSLのユーザーホームディレクトリなどにあるファイルをWin32側から簡単にアクセスできようになる。
文字コードや行末コードにさえ注意すれば、.bashrcをメモ帳で編集するといったことも可能になるし、WSL複数のディストリビューション間でのファイル転送がWin32のエクスプローラーからも可能になった(従来はDrvFsに一旦コピーする必要があった)。
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第525回
PC
6月以降「PCが起動不可能に?」と間違った騒がれ方をしている原因の「セキュアブート」とは? -
第524回
PC
Windows Insider Programが変化 チャンネルが3つになって整理される -
第523回
PC
AI傾倒に一息入れて、既存のWindowsの改良を宣言するMicrosoft タスクバーを画面の上下左右に移動可能に!? -
第522回
PC
Windowsでも完全キーボード操作派は注目! PowerToysのコマンドパレット -
第521回
PC
Windowsでアプリをインストールしたときに警告が表示する「Defender SmartScreen」と「Smart App Control」 -
第520回
PC
WindowsターミナルのPreview版 v1.25では「操作」設定に専用エディタが導入 -
第519回
PC
「セキュアブート」に「TPM」に「カーネルDMA保護」、Windowsのセキュリティを整理 -
第518回
PC
WindowsにおけるUAC(ユーザーアカウント制御)とは何? 設定は変えない方がいい? -
第517回
PC
Windows 11の付箋アプリはWindowsだけでなく、スマホなどとも共有できる -
第516回
PC
今年のWindows 11には26H2以外に「26H1」がある!? 新種のCPUでのAI対応の可能性 -
第515回
PC
そもそも1キロバイトって何バイトなの? - この連載の一覧へ











