Windows 10 version 1903でのWSL新機能

情報源: Windows Command Line Tools For Developers | What’s new for WSL in Windows 10 version 1903?

雑に翻訳してみました。

WindowsからLinuxファイルへのアクセス

今までは、WindowsからLinuxファイルシステムにアクセスするための正規の方法はなく、WindowsからLinuxファイルシステム上のファイルを操作するとファイルが失われたり、データが破損したりしました。このバージョンよりWindowsからLinuxディストリビューション内のすべてのファイルに簡単にアクセスできるようになりました。

ファイルエクスプローラーからLinuxファイルにアクセスする左膳の方法は、ファイルエクスプローラーからLinuxファイルを開くことです。これを行うには、普段使用しているディストリビューションの$HOMEからファイルエクスプローラを起動します。

# explorer.exe .

ファイルエクスプローラウィンドウが開き、Linuxディストリビューションのファイルシステム内にあるファイルが表示されます。

エクスプローラーが開いてしまいさえすれば今まで通りです。ファイルを選択して、コンテキストメニューからVS Codeを起動する事もできます。

この機能を使うと、\wsl$\</pre> から始まるパスで開かれているのがわかると思います。これはWindowsから各ディストリビューション内のファイルにアクセスするための方法です。とうぜん、コマンドラインからもこのパスを使えばアクセスできます。

コマンドラインから

WSLは基本的にコマンドラインツールなので、もちろんこの機能はコマンドラインでも機能します。\wsl$\<Distribution Name>\ にアクセスすることで、各ディストリビューションのファイルにアクセスすることができます。

以下はDebianへのアクセス例です。

何が機能しているか

簡単にまとめると9PプロトコルのファイルサーバーへのWindowsクライアント動作して、これがファイル関連の要求を容易にしています。

WSLの起動設定のiniファイルで9Pサーバーを起動するように変更しました。このサーバーにはパーミッションを含むLinuxメタデータをサポートします。Windowsサービスの9PのクライアントがWSL上で動作している9Pサーバーと通信して処理を解決します。WSLはAF_UNIXを使用してWindowsアプリケーションとLinuxアプリケーション間の相互運用を許可するため、クライアントとサーバーはAF_UNIXソケットを介して通信します。

既知の問題

これは新機能であり、その一部は完全には機能しない可能性があります。この機能を使用する際に気をつけて頂きたい既知の問題がいくつかあります。

  • 現在、ディストリビューションファイルはディストリビューションが実行されているときにのみWindowsからアクセス可能です。9Pファイルサーバーは各ディストリビューション内で実行されるため、そのディストリビューションが実行されているときにのみアクセス可能です。チームはこれを解決するための方法を検討しています。
  • Linuxファイルへのアクセスはネットワークリソースへのアクセスと同じように扱われ、ネットワークリソースへのアクセスに関する規則は適用されます。たとえば: CMDを使用している場合、cd \wsl$\Ubuntu\home は機能しません(CMDは現在のディレクトリとしてUNCパスをサポートしていないため)。次のコマンドは(copyコマンドはUNCパスに対応しているので) \wsl$\Ubuntu\home\somefile.txt C:\dev\ 動作します。
  • AppDataフォルダを介してLinuxファイルにアクセスしないでください。AppDataフォルダを介してLinuxファイルにアクセスしようとすると、9Pサーバーを使用してバイパスしていることになります。つまり、Linuxファイルが破損する可能性があります。

フィードバックの提出作

私たちのチームはあなたのフィードバックを聞きたいと思います。実際、WSL自体は私たちのコミュニティからの素晴らしいフィードバックに基づいて作成されました。https://github.com/Microsoft/WSL:Githubのページであなたが見つけるかもしれないどんな問題でもあなたに提出してください、そして、我々はそれらに対処するために最善を尽くします。

WSLを素晴らしいツールにしてくれたコミュニティに感謝します。

wsl.exeコマンドの改善

この最新のアップデートでは、コマンドをwsl.exeに統合し、コマンドライン機能を追加することで、コマンドラインの操作性も向上しています。これで、wsl.exeを使用して、マシン上でWSLを構成および制御するために必要なすべてのコマンドを実行できます。wsl.exe –helpを実行すると、wsl.exeから実行できるすべてのコマンドをいつでも確認できます。

新しいコマンド

また、wsl.exeを使用するときの機能を増やすための新しいコマンドをいくつか追加しました。

異なるユーザーとしてコマンドを実行したり、実行中の配布を終了したり、異なるディストリビューションをエクスポートしたりインポートしたりすることができます。ディストリビューションのエクスポートは、引数として-exportを渡すことによって行われ、現在のディストリビューションのtarファイルが出力されます。たとえば、この機能を使用してディストリビューションの設定を他の人と共有することができます。さらに、引数として–importを渡すと、Linuxディストリビューションのルートファイルシステムを含むtarファイルをインポートできます。これにより、好きなディストリビューションを好きな構成でインポートできます。

これがwsl.exeに追加したコマンドの全リストです。

  • –user, -u Run as the specified user –export Exports the distribution to a tar file. The filename can be – for standard output.
  • –import Imports the specified tar file as a new distribution. The filename can be – for standard input.
  • –terminate, -t Terminates the distribution.

コマンドの統合

wslconfig.exe内に存在していたコマンドがwsl.exeに追加され、ディストリビューションをより簡単に設定できるようになりました。私たちの目標は、あなたがWSLと対話する方法を単一のバイナリに統合することです。

wslconfig.exeからwsl.exeに追加されたコマンド

  • –list , -l Lists all distributions available on your machine Can also contain further options: –all Lists all distributions, including distributions that are currently being installed or uninstalled –running Lists only distributions that are currently running
  • –setdefault, -s Sets the distribution as default.
  • –unregister Unregisters the distribution
  • –upgrade Upgrades the distribution to the WslFs file system format.

コンソールの改善

Windowsコンソールチームは、WSLを使用するときに気付くことになるいくつかの改善も行いました。コンソールチームはまもなくWindows 10バージョン1903の新機能の更新を公開する予定です。