Build 17763のWSLに関する変更点
2018年10月2日にリリースされた「Build 17763」の「WSL」に関する変更点の紹介です。「Windows 10 Insider Preview」を利用していないユーザー向けです。
「Windows 10 October 2018 Update(1809)」のリリースに合わせた内容です。
WSLとは
「WSL」は、「Windows」上でLinuxバイナリーを動作させるための仕組みです。「Windows」上で「Ubuntu」や「openSUSE」などLinux環境を構築し、「Windows」からLinuxの実行ファイルを利用することができます。
Ubuntuのインストール方法
「WSL」及び「Ubuntu」のインストール方法は、以下を参照してください。注意事項
「Microsoftストア」では3種類の「Ubuntu」を提供しています。「Ubuntu」をインストールする前に以下に目を通し、どの「Ubuntu」をインストールするのかを決めてから、「Ubuntu」のインストールを行ってください。
Ubuntu以外のLinuxディストリビューションのインストール方法
「WSL」及び「Ubuntu」以外のLinuxディストリビューションのインストール方法は、以下を参照してください。- openSUSE Leap 42をインストールするには
- SUSE Linux Enterprise Server 12をインストールするには
- Kali Linuxをインストールするには
- Debian GNU/Linuxをインストールするには
リリースノート
変更点の詳細は、リリースノートを参照してください。WSLの機能の改善や変更
「WSL」に関する機能の改善や変更です。1.binfmtがシンボリックリンクを処理できるようになった
「WSL」の「binfmt」インタープリターがシンボリックリンクを扱えるように修正されました。これにより改善する問題は、以下を参照してください。
2.スレッドグループリーダーの処理改良
スレッドグループリーダーのファイルディスクリプターのクリーンアップ処理が改良されました。3.KeQueryInterruptTimePreciseの使用
「WSL」はオーバーフローを避けるため、「KeQueryPerformanceCounter」の代わりに「KeQueryInterruptTimePrecise」 を使用するように変更されました。これにより改善する問題は、以下を参照してください。
4.file-maxスタブファイルの追加
「/proc/sys/fs/file-max」スタブファイルが追加されました。これにより改善する問題は、以下を参照してください。
5.IPv6に関する改善
IPv6のスコープ情報をより正確に返すようになりました。6.PR_SET_PTRACERのサポート
「PR_SET_PTRACER」がサポートされました。これにより改善する問題は、以下を参照してください。
7.ゾンビプロセスのサポート改善
ゾンビプロセスのサポート改善されました。これにより改善する問題は、以下を参照してください。
8.相互運用を制御するオプションの追加
「Windows」と「Linux」の相互運用の機能を制御するオプションが「wsl.conf」に追加されました。
[interop]
enabled=false # enable launch of Windows binaries; default is true
appendWindowsPath=false # append Windows path to $PATH variable; default is true
enabled=false # enable launch of Windows binaries; default is true
appendWindowsPath=false # append Windows path to $PATH variable; default is true
これにより改善する問題は、以下を参照してください。
wsl.conf
「wsl.conf」に関しては、以下を参照してください。9.TIOCSTIオプションのサポート
「ioctl」で「TIOCSTI」オプションがサポートされました。これにより改善する問題は、以下を参照してください。
10.VHDの相互運用性改善
マウントされたVHDボリュームの相互運用性が改善されました。これにより改善する問題は、以下を参照してください。
- wslpath -u doesn't work mounted VHDX drive or optical drive.
- Virtual disk right click open bash shell do not change the correct dir
11.ioctlのキーボードフラグのサポート改善
以下の「ioctl」のキーボードフラグがサポートされました。- KDGKBTYPE
- KDGKBMODE
- KDSKBMODE
12.Windows UIアプリの実行
バックグラウンドで起動した時でも、Windows UIアプリが実行されるように修正されました。13.ユーザーを指定してコマンドを実行可能に
「wsl.exe」にユーザーを指定する「-u」「--user」オプションが追加されました。
C:\>wsl --help
使用法: wsl.exe [オプション] ...
オプション:
-d, --distribution <ディストリビューション名>
指定したディストリビューションを起動します。
-e, --exec <コマンド ライン>
指定した Linux コマンドを実行します。残りの引数は
実行するコマンド ラインとして使用されます。
-u, --user <ユーザー名>
指定したユーザーとして実行します。
--help
この使用法の情報を表示します。
--
引数の解析を停止し、残りの引数を Linux プロセスに渡します。
使用法: wsl.exe [オプション] ...
オプション:
-d, --distribution <ディストリビューション名>
指定したディストリビューションを起動します。
-e, --exec <コマンド ライン>
指定した Linux コマンドを実行します。残りの引数は
実行するコマンド ラインとして使用されます。
-u, --user <ユーザー名>
指定したユーザーとして実行します。
--help
この使用法の情報を表示します。
--
引数の解析を停止し、残りの引数を Linux プロセスに渡します。
これにより改善する問題は、以下を参照してください。
14.DrvFsのマウントオプション変更
以前紹介したように、大文字・小文字の区別を制御するマウントオプションのデフォルト値が変更されました。本ビルド以降、「case=off」がデフォルトになります。
これにより改善する問題は、以下を参照してください。
- cl.exe can't access file in mixed case sub-directory of parent created through wsl
- IIS reports “404 Not Found” error for files in directories created in WLS Bash
- per directory case sensitivity breaks Windows builds
15.実行中のディストリビューションを終了可能に
「wslconfig.exe」に実行中のディストリビューションを終了する新しい「/t」「/terminate」オプションが追加されました。
C:\>wslconfig /h
Linux 用 Windows サブシステムの管理操作を実行します
使用法:
/l, /list [/all]
登録されたディストリビューションを一覧表示します。
/all - すべてのディストリビューションを一覧表示します (オプション)。
現在インストールまたはアンインストール中のものも含まれます。
/s, /setdefault <ディストリビューション名>
ディストリビューションを既定として設定します。
/t, /terminate <ディストリビューション名>
ディストリビューションを終了します。
/u, /unregister <ディストリビューション名>
ディストリビューションの登録を解除します。
/upgrade <ディストリビューション名>
ディストリビューションを WslFs ファイル システム形式にアップグレードします。
Linux 用 Windows サブシステムの管理操作を実行します
使用法:
/l, /list [/all]
登録されたディストリビューションを一覧表示します。
/all - すべてのディストリビューションを一覧表示します (オプション)。
現在インストールまたはアンインストール中のものも含まれます。
/s, /setdefault <ディストリビューション名>
ディストリビューションを既定として設定します。
/t, /terminate <ディストリビューション名>
ディストリビューションを終了します。
/u, /unregister <ディストリビューション名>
ディストリビューションの登録を解除します。
/upgrade <ディストリビューション名>
ディストリビューションを WslFs ファイル システム形式にアップグレードします。
16.大文字・小文字区別の拡張属性
ディレクトリーごとの大文字・小文字区別のフラグが拡張属性として提供されるようになりました。17.文字のアンエスケープ
私用領域にある文字の内、エスケープされた文字に対応した文字のみアンエスケープするようになりました。これは「DrvFs」が対象です。
18.新規に作成されたリパースポイントの列挙
親ディレクトリー内等に新規に作成されたリパースポイントが確実に列挙されるようになりました。19.DrvFS内でディレクトリーの作成処理がアトミック操作になった
「DrvFS」内で大文字・小文字の区別を行うディレクトリーを作成する時、その処理がアトミック操作で行われるようになりました。20.エクスプローラーからWSLの起動が可能に
エクスプローラーのコンテキストメニューから「WSL」を起動できるようになりました。エクスプローラーで「Shift」キーを押しながら右クリックすれば、「WSL」を起動するメニュー項目が表示されます。
「WSL」を起動し、選択されたフォルダーをカレントディレクトリ―にします。
これにより改善する問題は、以下を参照してください。
- `Open on Bash` context menu item.
- "Bash Here" Context Menu in Windows Explorer
- Starting bash in folder issue
相互運用時の使い勝手が大きく改善します。
21.mount propagationフラグのサポート
スレーブなど「mount propagation」フラグがサポートされました。22.シェルなしに単一バイナリーを実行するオプションのサポート
「wsl.exe」がシェルなしに単一バイナリーを実行するオプション(--exec)をサポートしました。23.ディストリビューションを選択するオプションのサポート
「wsl.exe」がシェルなしにディストリビューションを選択するオプション(--distribution)をサポートしました。24.dmesgの限定的なサポート
「dmesg」の限定的なサポートが行われました。ソフトウェアは「dmesg」にログを出力できるようになり、「WSL」ドライバーが一部の情報を出力するようになりました。
将来的により多くの情報やドライバーからの診断情報を出力できるようになる予定です。
現在の実装では、以下の制約があります。
- 「dmesg」は「/dev/kmsg」を通じてのみ利用可能です。
- 「syslog」システムコールはまだサポートされていません。
- 「dmesg」コマンドの「-S」や「-C」オプションなど、一部のオプションは動作しません。
25.DrvFSが拡張ファイル属性をサポート
「DrvFS」が拡張ファイル属性をサポートしました。ただし以下の制約があります。
使用できない文字
拡張属性の名称に、「/」や「'」、「*」といった文字は使用できません。大文字・小文字を区別しない
拡張属性の名称は、大文字・小文字を区別しません。WSLの不具合修正
「WSL」に関する不具合の修正です。1.パーミッションチェックの緩和
「setpriority」システムコールでスレッドの優先度を変更する際、パーミッションチェックが厳密すぎる問題が改善されました。これにより改善する問題は、以下を参照してください。
2.clock_gettimeが負の値を返す不具合の修正
「clock_gettime」が負の値を返さないようにするため、起動時間に適正な割り込み時間を確実に使用するように修正されました。これにより改善する問題は、以下を参照してください。
3.システムコールから不正な値を返す原因の修正
「ptrace」のアタッチがシステムコールから不正な値を返す原因になりうる問題が修正されました。これにより改善する問題は、以下を参照してください。
4.AF_UNIXに関連する問題の修正
「AF_UNIX」に関連する問題が修正されました。これにより改善する問題は、以下を参照してください。
5.相互運用が動作しない不具合の修正
現在のワーキングディレクトリーが5文字未満だった場合、相互運用が正常に動作しない問題が修正されました。これにより改善する問題は、以下を参照してください。
6.存在していないポートへの接続に関する問題の修正
ループバックが存在していないポートに接続しようとして失敗した時に、1秒間の待ちを行わないように修正されました。これにより改善する問題は、以下を参照してください。
7.不用意にepollイベントをクリアする問題の修正
PIPEファイルシステムが不用意に「edge-triggered epoll」イベントをクリアする問題が修正されました。これにより改善する問題は、以下を参照してください。
8.シンボリック名に従わない問題の修正
NTFSのシンボリック経由で起動されたWin32実行可能ファイルが、シンボリック名に従わない問題が修正されました。9.getsocknameの修正
「getsockname」がUNIXソケットのファミリータイプを返さない不具合が修正されました。これにより改善する問題は、以下を参照してください。
10.非ブロックソケットの修正
非ブロックソケットの書き込みに対し「EAGAIN」を返すように修正されました。これにより改善する問題は、以下を参照してください。
11.パーミッションチェックの修正
ルートフォルダーのパーミッションチェックに関する不具合が修正されました。これにより改善する問題は、以下を参照してください。
12.高速起動が有効な環境で起動に失敗する不具合の修正
高速起動が有効な環境で「WSL」を起動しようとすると、「Error: 0x800703fa」エラーが発生し「WSL」の起動に失敗する不具合が修正されました。これにより改善する問題は、以下を参照してください。
13.UNIXドメインソケットに関する不具合の修正
切断されたUNIXドメインソケットのピア情報を保持するように修正されました。これにより改善する問題は、以下を参照してください。
ブロッキングしないUNIXドメインソケットで永遠に「EAGAIN」エラーが発生する不具合が修正されました。
これにより改善する問題は、以下を参照してください。
14.スペースを含むパスの扱い修正
エクスプローラーのコンテキストメニューから「WSL/Linux」を起動する際、ディレクトリーのパスにスペースが含まれていても正常に動作するようになりました。15.キャッシュメンテナンス操作のエミュレーション(ARM64)
キャッシュメンテナンス操作のエミュレーションにより、「dotnet」で発生していた問題が解消されました。これにより改善する問題は、以下を参照してください。
16.ELFバイナリーが実行できない不具合の修正
一部のELFバイナリーが実行できない不具合が修正されました。これにより改善する問題は、以下を参照してください。
17.過去の絶対時間を指定するとタイマーが発動しない不具合の修正
過去の絶対時間を指定するとタイマーが発動しない不具合が修正されました。これにより改善する問題は、以下を参照してください。
18.マルチスレッド操作時の不具合修正
マルチスレッド操作時、ファイルが存在しているにも関わらず「ENOENT」が返ってくる問題が追加修正されました。これにより改善する問題は、以下を参照してください。
19.UMCI有効時WSLの起動に失敗する問題の修正
「UMCI(User Mode Code Integrity)」有効時、「WSL」の起動に失敗する問題が修正されました。これにより改善する問題は、以下を参照してください。
「UMCI」については、以下を参照してください。
20.SOCK_NONBLOCK指定時の不具合修正
「SOCK_NONBLOCK」指定時のUNIXソケットの不具合が修正されました。これにより改善する問題は、以下を参照してください。
- Calling shutdown(fd, SHUT_WR) for one end of a non-blocking socket pair (AF_UNIX) does not lead to reading EOF at the other end.
- socketpair() syscall ignores non-blocking request (SOCK_NONBLOCK, O_NONBLOCK)
21.NETLINK利用時にハングアップする不具合の修正
「NETLINK」利用時にハングアップする不具合が修正されました。これにより改善する問題は、以下を参照してください。
22.ftruncateでinotifyイベントが発生しない問題の修正
「ftruncate」で「inotify」イベントが発生しない問題が修正されました。これにより改善する問題は、以下を参照してください。
23.マルチスレッド時、ENOENTが返される不具合の修正
マルチスレッドで処理を行っている箇所で、ファイルが存在するにも関わらず「ENOENT」が返される不具合が修正されました。これにより改善する問題は、以下を参照してください。
24.シリアルデバイスのグループID及びパーミッションの修正
シリアルデバイスのデバイスファイルのグループIDとパーミッションが修正されました。これにより改善する問題は、以下を参照してください。