WSL 1 と WSL 2 間のユーザーエクスペリエンスの変更User Experience Changes Between WSL 1 and WSL 2

このページでは、WSL 1 と WSL 2 preview のユーザーエクスペリエンスの違いについて紹介します。This page goes over the user experience differences between WSL 1 and the WSL 2 preview. 注意すべき重要な変更点は次のとおりです。The key changes to be aware of are:

  • Linux アプリが Linux ルートファイルシステムにアクセスするファイルを配置して、ファイルのパフォーマンスを高速化します。Place files that your Linux apps will access in your Linux root file system for faster file performance speed
  • WSL 2 preview の初期ビルドでは、localhost を使用せずに IP アドレスを使用してネットワークアプリケーションにアクセスする必要があります。In initial builds of the WSL 2 preview you will need to access network applications using an IP address and not using localhost

次に、その他の変更点の一覧を示します。And below is the full list of other changes that you may notice:

  • WSL 2 では、仮想ハードウェアディスク(VHD) を使用してファイルを格納します。最大サイズに達した場合は、拡張が必要になることがあります。WSL 2 uses a Virtual Hardware Disk (VHD) to store your files and if you reach its max size you may need to expand it
  • 開始時に WSL 2 では、メモリの割合がわずかに使用されるようになりました。When starting, WSL 2 will now use a small proportion of memory
  • 最初のプレビュービルドで、OS 間のファイルアクセス速度が低下するCross OS file access speed will be slower in initial preview builds

Linux のルートファイルシステムに Linux ファイルを配置するPlace your Linux files in your Linux root file system

ファイルのパフォーマンスを向上させるために、linux アプリケーションで頻繁にアクセスするファイルを linux ルートファイルシステム内に配置してください。Make sure to put the files that you will be accessing frequently with Linux applications inside of your Linux root file system to enjoy the file performance benefits. これらのファイルは、ファイルシステムへのアクセスを高速化するために、Linux ルートファイルシステム内に存在する必要があります。These files have to be inside of the Linux root file system to have faster file system access. また、Windows アプリが Linux ルートファイルシステム (エクスプローラーなど) にアクセスできるようになりました。We have also made it possible for Windows apps to access the Linux root file system (like File Explorer! Linux ディストリビューションのexplorer.exe .ホームディレクトリでを実行してみてください。これにより、この移行が大幅に簡単になります。Try running: explorer.exe . in the home directory of your Linux distro and see what happens) which will make this transition significantly easier.

ネットワークアプリケーションへのアクセスAccessing network applications

WSL 2 preview の最初のビルドでは、ホストコンピューターの IP アドレスを使用して Linux から任意の Windows server にアクセスする必要があります。In the initial builds of the WSL 2 preview, you will need to access any Windows server from Linux using the IP address of your host machine.

Linux からの Windows アプリケーションへのアクセスAccessing Windows applications from Linux

Windows ネットワークアプリケーションにアクセスするには、ホストコンピューターの IP アドレスを使用する必要があります。To access a Windows network application you'll need to use the IP address of your host machine. これを行うには、次の手順を実行します。You can do so with these steps:

  • コマンドcat /etc/resolv.confを実行し、という用語nameserverの後に ip アドレスをコピーして、ホストコンピューターの ip アドレスを取得します。Obtain the IP address of your host machine by running the command cat /etc/resolv.conf and copying the IP address following the term nameserver.
  • コピーした IP アドレスを使用して、任意の Windows サーバーに接続します。Connect to any Windows server using the copied IP address.

次の図は、curl を介して Windows で実行されている node.js サーバーに接続することによって、この例を示しています。The picture below shows an example of this by connecting to a Node.js server running in Windows via curl.

Windows からの Linux ネットワークアプリケーションへのアクセス

Windows から Linux アプリケーションにアクセスする (18945 より前のビルドでのみ)Accessing Linux applications from Windows (only in builds lower than 18945)

WSL ディストリビューションにサーバーがある場合は、ディストリビューションの電源を入れている仮想マシンの IP アドレスを検索し、その IP アドレスを使用して接続する必要があります。If you have a server in a WSL distro, you'll need to find the IP address of the virtual machine powering your distro and connect to it with that IP address. これを行うには、次の手順を実行します。You can do that by following these steps:

  • Wsl ディストリビューション内でコマンドを実行し、 ip addr eth0インターフェイスのinet値の下でそのコマンドを見つけることによって、ディストリビューションの IP アドレスを取得します。Obtain the IP address of your distro by running the command ip addr inside of your WSL distro and finding it under the inet value of the eth0 interface.
    • これは、のようにip addr | grep eth0grep を使用してコマンドの出力をフィルター処理することで、より簡単に見つけることができます。You can find this more easily by filtering the output of the command using grep like so: ip addr | grep eth0.
  • 上記の IP を使用して、Linux サーバーに接続します。Connect to your Linux server using the IP you found above.

次の図は、Edge ブラウザーを使用して node.js サーバーに接続することによって、この例を示しています。The picture below shows an example of this by connecting to a Node.js server using the Edge browser.

Windows からの Linux ネットワークアプリケーションへのアクセス

ビルドが18945以上の場合は、通常と同じように localhost を使用できます。If your build is 18945 or higher, you can use localhost just like normal.

ネットワークに関するその他の考慮事項Other networking considerations

リモート IP アドレスを使用してアプリケーションに接続すると、ローカルエリアネットワーク (LAN) からの接続として扱われます。When using remote IP addresses to connect to your applications, they will be treated as connections from the Local Area Network (LAN). つまり、アプリケーションが LAN 接続を受け入れることができることを確認する必要があります。次に例を示します。0.0.0.0127.0.0.1代わりに、アプリケーションをにバインドすることが必要になる場合があります。This means that you will need to make sure your application can accept LAN connections, i.e: You might need to bind your application to 0.0.0.0 instead of 127.0.0.1. たとえば、flask を使用した python では、コマンドapp.run(host='0.0.0.0')を使用してこれを行うことができます。For example in python using flask this can be done with the command: app.run(host='0.0.0.0'). これらの変更を行う場合は、LAN からの接続が許可されるため、セキュリティを考慮してください。Please keep security in mind when making these changes, as this will allow connections from your LAN.

WSL 2 を理解すると、VHD が使用され、最大サイズに達した場合の対処方法がわかります。Understanding WSL 2 uses a VHD, and what to do if you reach its max size

WSL 2 では、ext4 ファイルシステムを使用する VHD 内にすべての Linux ファイルが格納されます。WSL 2 stores all your Linux files inside of a VHD that uses the ext4 file system. この VHD は、ストレージのニーズに合わせて自動的にサイズ変更されます。This VHD automatically resizes to meet your storage needs. この VHD には、256 GB の初期の最大サイズもあります。This VHD also has an initial max size of 256GB. ディストリビューションのサイズが 256 GB よりも大きくなると、ディスク領域が不足していることを示すエラーが表示されます。If your distro grows in size to be greater than 256GB you will see errors stating that you've run out of disk space. VHD のサイズを拡張することで、これらの問題を解決できます。You can fix these by expanding the VHD size. その方法については、以下を参照してください。Instructions on how to do so are below:

  1. コマンドを使用してすべてのwsl --shutdown wsl インスタンスを終了しますTerminate all WSL instances using the wsl --shutdown command
  2. ディストリビューションのインストールパッケージ名 ' 整理 Efamilyname ' を検索しますFind your distro installation package name 'PackageFamilyName'
    • Powershell プロンプトで、次のように入力します (' distribution ' は配布名です)。In a powershell prompt (where 'distro' is your distribution name) type:
      • Get-AppxPackage -Name "*<distro>*" | Select PackageFamilyName
  3. WSL 2 のインストールで使用される VHD ファイルの場所を特定します。これは ' pathToVHD ' になります。Locate the VHD file fullpath used by your WSL 2 installation, this will be your 'pathToVHD':
    • %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx
  4. 次のコマンドを実行して、WSL 2 VHD のサイズを変更します。Resize your WSL 2 VHD by completing the following commands
    • 管理者特権でコマンドプロンプトウィンドウを開き、次のコマンドを実行します。Open a command prompt Window with admin privileges and run the following commands:
      • diskpart
      • Select vdisk file="<pathToVHD>"
      • expand vdisk maximum="<sizeInMegaBytes>"
  5. WSL ディストリビューションを起動しますLaunch your WSL distro
  6. ファイルシステムのサイズを拡張できることを WSL に認識させるMake WSL aware that it can expand its file system's size
    • WSL ディストリビューションで次のコマンドを実行します。Run these commands in your WSL distro:
      • sudo mount -t devtmpfs none /dev
      • mount | grep ext4
        • このエントリの名前をコピーします。次のようになります (X は他の文字を表します)。Copy the name of this entry, which will look like: /dev/sdXX (with the X representing any other character)
      • sudo resize2fs /dev/sdXX
        • 前の手順apt install resize2fsでコピーした値を使用してください。を使用する必要がある場合があります。Make sure to use the value you copied earlier, and you may need to use: apt install resize2fs.

注意:通常は、Windows のツールまたはエディターを使用して、AppData フォルダー内にある WSL 関連ファイルを変更、移動、またはアクセスしないでください。Please note: In general do not modify, move, or access the WSL related files located inside of your AppData folder using Windows tools or editors. これにより、Linux ディストリビューションが破損する可能性があります。Doing so could cause your Linux distro to become corrupted.

WSL 2 は起動時にメモリを使用しますWSL 2 will use some memory on startup

WSL 2 は、実際の Linux カーネル上で軽量のユーティリティ VM を使用して、優れたファイルシステムのパフォーマンスとシステムコールの完全な互換性を実現しながら、WSL 1 と同じようにライト、高速、統合、応答性を提供します。WSL 2 uses a lightweight utility VM on a real Linux kernel to provide great file system performance and full system call compatibility while still being just as light, fast, integrated and responsive as WSL 1. このユーティリティ VM ではメモリフットプリントが小さく、起動時に仮想アドレスがサポートされるメモリが割り当てられます。This utility VM has a small memory footprint and will allocate Virtual Address backed memory on startup. これは、メモリの合計のごく一部から開始するように構成されています。It is configured to start with a small proportion of your total memory.

最初のプレビュービルドで、OS 間のファイル速度が遅くなるCross OS file speed will be slower in initial preview builds

Linux アプリケーションから Windows ファイルにアクセスする場合、または Windows アプリケーションから Linux ファイルにアクセスする場合は、WSL 1 と比較してファイルの速度が遅いことがわかります。You will notice slower file speeds compared to WSL 1 when accessing Windows files from a Linux application, or accessing Linux files from a Windows application. これは、WSL 2 でのアーキテクチャの変更の結果であり、WSL チームがこのエクスペリエンスを向上させる方法について積極的に調査しているものです。This is a result of the architectural changes in WSL 2, and is something that the WSL team is actively investigating on how we can improve this experience.