Build 17093のWSLとコンソールに関する変更点
2018年2月7日にリリースされた「Build 17093」の「WSL」に関する変更の紹介です。WSLとは
「WSL」は、「Windows」上でLinuxバイナリーを動作させるための仕組みです。「Windows」上で「Ubuntu」や「openSUSE」などLinux環境を構築し、「Windows」からLinuxの実行ファイルを利用することができます。
「WSL」及びLinuxディストリビューションのインストール方法は、以下を参照してください。
- WindowsストアからUbuntuをインストールするには
- WindowsストアからopenSUSE Leap 42をインストールするには
- WindowsストアからSUSE Linux Enterprise Server 12をインストールするには
- Windows Server 2016にUbuntuをインストールするには
リリースノート
変更点の詳細は、リリースノートを参照してください。今回コンソールに関する変更点はありません。
注意事項
本ビルドでは、Linuxファイルシステムのディレクトリーをアップグレードする必要があり、各ディストリビューション起動時にこの処理が行われます。この処理が行われるのは一度だけですが、各ディストリビューションの初回起動時にシェルが起動するまで数分かかる可能性があります。
WSLの機能の改善や変更
「WSL」に関する機能の改善や変更です。1.DrvFsの大文字・小文字区別のサポート改善
「DrvFs」は、ディレクトリーごとに大文字・小文字の区別の有無を識別するフラグを設定できるようになりました。このフラグは各ディレクトリーごとに設定でき、このフラグが指定されたディレクトリー内に対するすべての操作は、大文字・小文字の区別が行われるようになります。
またこのフラグが指定されたディレクトリーは、Windowsアプリも大文字・小文字を区別するようになります。
さてこのフラグは、「WSL(Linux)」からディレクトリーを作成した時に自動的に設定されます。
またこの機能は本ビルドで搭載された機能であるため、以前のビルドで「WSL(Linux)」から作成したディレクトリーにはこのフラグが設定されていません。
今後既存のディレクトリーに対しフラグを設定する方法が紹介される予定です。
マウントオプション
この機能を制御するマウントオプションが追加されました。以下のオプションを指定することで、このフラグの扱いや大文字・小文字の区別に関する振る舞いを制御することができます。
マウント オプション |
説明 |
---|---|
case=force | フラグの有無に関わらず、すべてのディレクトリーで大文字・小文字を区別します。 また「WSL(Linux)」からディレクトリーを作成すると、フラグを設定します。 |
case=dir | フラグが設定されているディレクトリーは大文字・小文字を区別し、フラグが設定されていないディレクトリーは大文字・小文字を区別しません。 また「WSL(Linux)」からディレクトリーを作成すると、フラグを設定します。 |
case=off | フラグが設定されているディレクトリーは大文字・小文字を区別し、フラグが設定されていないディレクトリーは大文字・小文字を区別しません。 また「WSL(Linux)」からディレクトリーを作成しても、フラグを設定しません。 |
このマウントオプションを指定せず「DrvFS」のボリュームをマウントした場合は、「case=force」が指定されたものとして扱われます。
ただし将来のビルドでは、「case=dir」がデフォルトになる予定です。
マウントオプションは、以下のように指定します。
sudo mount -t drvfs C: /mnt/c -o case=dir
2.DrvFSのボリュームマウント時、パスにスラッシュが利用可能に
「DrvFs」のボリュームマウント時、以下のようにパスに「/」を利用できるようになりました。
sudo mount -t drvfs //server/share /mnt/share
3./etc/fstabが利用可能に
「WSL」インスタンス起動時、つまり「Linux」起動時に「/etc/fstab」を解釈し、記述されているボリュームをマウントできるようになりました。「/etc/fstab」の処理は「DrvFs」ボリュームの自動マウントよりも優先されます。
つまり自動マウント対象のボリュームが「/etc/fstab」に指定されている場合、「/etc/fstab」の内容が優先され、そのボリュームの自動マウント処理がスキップされます。
これにより特定の「DrvFs」ボリュームのみ異なる場所にマウントするなど、自動マウントとは異なる処理を指定できるようになりました。
「/etc/fstab」の解釈は、「wsl.conf」で無効にすることも可能です。
これにより改善する問題は、以下を参照してください。
4.DrvFs内に作成したスペシャルファイルをWindowsから操作可能に
「DrvFs」のメタデータが有効になっている時に、WSLのシンボリックリンクやFIFO、ソケットなど「WSL」から作成したスペシャルファイルを、「Windows」からコピーしたり移動できるようになりました。5.WSL起動時に各種設定を自動的に適用可能に
「WSL」起動時に各種設定を自動的に適用する仕組みが導入されました。詳細は以下を参照してください。
6.WindowsとWSL間でUNIXソケットを利用した通信が可能に
「Windows」と「WSL」間でUNIXソケットを利用した通信が可能になりました。詳細は以下を参照してください。
7.mmapがMAP_NORESERVEをサポート
「mmap」が「MAP_NORESERVE」をサポートしました。これにより改善する問題は、以下を参照してください。
8.CLONE_PTRACE及びCLONE_UNTRACEDのサポート
「CLONE_PTRACE」及び「CLONE_UNTRACED」がサポートされました。これにより改善する問題は、以下を参照してください。
9.max_user_instancesとmax_user_watchesのスタブ実装
以下のファイル(スタブ実装)が提供されました。- /proc/sys/fs/inotify/max_user_instances
- /proc/sys/fs/inotify/max_user_watches
これにより改善する問題は、以下を参照してください。
10.イメージ読み込み時、ページ末尾のバイトを0で埋める
イメージ読み込み時、ページ末尾のバイトを0で埋める用に修正されました。11.execveが無言でプロセスを終了するケースの改善
「execve」が無言でプロセスを終了するケースを減らしました。WSLの不具合修正
「WSL」に関する不具合の修正です。1.mount/mountinfo/mountstatsファイルの修正
「/proc 」内にある以下のファイルの内容は、バックスラッシュのような特殊文字を適切にエスケープするように修正されました。- mount
- mountinfo
- mountstats
これにより改善する問題は、以下を参照してください。
2.SIGCHLDがなくてもcloneが動作するように修正
「SIGCHLD」がなくても「clone」が動作するように修正されました。これにより改善する問題は、以下を参照してください。
3.オフセットされたload headerを含むELFバイナリーのロードに失敗する問題の修正
オフセットされたload headerを含むELFバイナリーのロードに失敗する問題が修正されました。これにより改善する問題は、以下を参照してください。