Build 15002の変更点
2017年1月9日にリリースされた「Build 15002」の「WSL」に関する変更点です。リリースノート
変更点の詳細は、リリースノートを参照してください。機能の追加や改善
「Build 15002」で行われた機能の追加や改善です。リリースノートに記述されていない機能の改善も行われています。
1.bashセッションの権限の統一
今まで「bash」は、管理者権限及びユーザー権限の両方で同時に複数起動することができました。しかし最初に起動した「bash」セッションの権限のみ存在するように変更されました。
つまり異なる権限を持つ「bash」セッションを同時に存在させることができません。
「bash」セッションは、初めて「bash.exe」を起動したときに生成されます。
またすべての「bash.exe」が終了したときに「bash」セッションは破棄されます。
bashセッションの例
「bash」セッションの例を紹介します。最初にユーザー権限で「bash」を起動します。
この時「bash」セッションはユーザーの権限で動作します。
この状態で新たに管理者としてコマンドプロンプトを起動し、「bash」を起動しようとすると、既存の「bash」セッションと権限が異なるため、以下のように「bash」は起動せずエラーになります。
ここで一旦すべての「bash(.exe)」を終了し(セッションの破棄)、今度は新たに管理者として起動したコマンドプロンプトから「bash」を起動すると、「bash」セッションは管理者権限として動作します。
そのためユーザー権限で起動したコマンドプロンプトから「bash」を起動しようとすると、既存の「bash」セッションと権限が異なるため、同様に「bash」は起動せずエラーになります。
rootとは無関係
この動作の変更は、「bash(Ubuntu)」内の「root」とは無関係です。「root(sudo)」はいずれの場合でも利用可能です。
2.NETLINK_ROUTEメッセージのサポート改善
以下のメッセージの実装が行われ、「NETLINK_ROUTE」メッセージのサポートが改善されました。- RTM_NEWADDR
- RTM_NEWROUTE
- RTM_DELADDR
- RTM_DELROUTE
これにより、以下のコマンドがサポートされます。
ip addr add
ip route add
ip addr del
ip route del
ip route add
ip addr del
ip route del
3.パッケージのアップデートチェックの動作改善
従量課金のネットワークに接続している時、パッケージのアップデートチェックを行わないように変更されました。これにより改善する問題は、以下を参照してください。
4.TCP_KEEPCNTのサポート
「TCP_KEEPCNT」ソケットオプションが実装されました。これにより改善する問題は、以下を参照してください。
5.IP_MTU_DISCOVER INETのサポート
「IP_MTU_DISCOVER INET」ソケットオプションが実装されました。これにより改善する問題は、以下を参照してください。
- Issues with ifconfig, sockets, nmap, ping, nslookup, dig and others not working
- setsockopt(fd, IPPROTO_IP, IP_MTU_DISCOVER, ...) fails
- MTR / tracepath don't work
- Network. sockets are broken. (Dublicate)
6.古い機能の削除
intiからNTバイナリーを起動する時に使用される古い機能が削除されました。これにより改善する問題は、以下を参照してください。
7./dev/kmsgのパーミッション修正
「/dev/kmsg」のパーミッションが変更され、グループ及びその他のユーザーに読み込み権限が与えられました。(0644)これにより改善する問題は、以下を参照してください。
8./proc/sys/kernel/random/uuidの実装
「/proc/sys/kernel/random/uuid」が実装されました。これにより改善する問題は、以下を参照してください。
9.TERM環境変数の変更
デフォルトの「TERM」環境変数が「xterm-256color」に変更されました。これにより改善する問題は、以下を参照してください。
10.プロセスコミット計算処理の変更
プロセスをフォークしている間計算されるプロセスコミットの処理方法が変更されました。これにより改善する問題は、以下を参照してください。
11./proc/sys/vm/overcommit_memoryの実装
「/proc/sys/vm/overcommit_memory」が実装されました。これにより改善する問題は、以下を参照してください。
12./proc/net/routeの実装
「/proc/net/route」が実装されました。これにより改善する問題は、以下を参照してください。
13.statfsのコールバックサポート改善
「statfs」のコールバックに、以下がサポートされました。- procfs
- sysfs
- cgroupfs
- binfmtfs
これにより改善する問題は、以下を参照してください。
14.ADDR_NO_RANDOMIZE
「ADDR_NO_RANDOMIZE」がサポートされました。これにより改善する問題は、以下を参照してください。
- Please support disabling address space load randomization for individual processes.
- None of the common-lisp distros working
15.PTRACE_GETSIGINFO及びSIGSEGVの改善
「PTRACE_GETSIGINFO」及び「SIGSEGV」の実装が改善されました。これにより改善する問題は、以下を参照してください。
16.ELF解析処理の改善
「ELF」の解析処理が改善され、「PatchELF」が動作するようになりました。これにより改善する問題は、以下を参照してください。
17.VPN DNSの設定反映
VPN DNSの設定が「/etc/resolv.conf」に反映されるようになりました。これにより改善する問題は、以下を参照してください。
18.TCP closeの改善
TCP closeが改善されました。これにより改善する問題は、以下を参照してください。
- Incomplete socket send with fast writer and slow reader
- Intermittent, but more repeatable, hang sending/receiving a large buffer over TCP
- write to socket blocks even select returns 1
- Truncated large responses from node server
19.Windowsの監査ログの改善
Windowsの監査ログにプロセス内のイメージ名が出力されるように改善されました。20.Bash.exeの起動制限
「Ubuntu」の「bash」内から「Bash.exe」が起動できないように変更されました。21.相互運用に関するエラーメッセージの追加
相互運用利用時、「LxFs」下で作業ディレクトリーにアクセスできない場合、専用のエラーメッセーを表示するように改善されました。例えば以下のようなコマンドはエラーになります。
notepad.exe .bashrc
不具合の修正
「Build 15002」で行われた機能の追加や改善です。リリースノートに記述されていない不具合の修正も行われています。
1.パイプの不具合修正
以下のようなコマンド実行時、パイプ処理が停止する問題が修正されました。
bash -c "ls -alR /" | bash -c "cat"
これにより改善する問題は、以下を参照してください。
2.プロセス開始時間のエラー修正
プロセス開始時間に2432年が表示されるエラーが修正されました。これにより改善する問題は、以下を参照してください。
3.ショートカット名の修正
「Bash on Ubuntu on Windows」のショートカット名が正しく翻訳されていない問題が修正されました。これにより改善する問題は、以下を参照してください。
4.ELF解析処理の修正
ELF解析処理処理において、プログラムのヘッダーの検証処理にあった誤った処理が修正されました。これにより改善する問題は、以下を参照してください。
5.AptPackageIndexUpdateウィンドウが閉じれない不具合の修正
AptPackageIndexUpdateウィンドウが閉じれない不具合が修正されました。これにより改善する問題は、以下を参照してください。
本件に関する議論は、以下を参照してください。
6.大量にファイルを開いた時に返すエラーコードを修正
大量にファイルを開いた時に、正しいエラーコードを返すように修正されました。これにより改善する問題は、以下を参照してください。
7.パス解析の不具合修正
「WSL」内で省略されたWindowsのパスの扱いに関する問題が修正されました。システムコール
「Build 15002」で行われたシステムコールに関する変更です。以下のシステムコールが新たにサポートされました。
- shmctl
- shmget
- shmdt
- shmat
すべてのパラメーターとの組み合わせが現時点でサポートされているとは限りません。
「WSL」がサポートしているSyscallの一覧は、以下を参考にしてください。
既知の問題
既知の問題です。1.Ctrl+Cが動作しない
「Ctrl+C」が動作しません。「Ctrl+C」キーを押すと、「C」キーが押されたのと同じ動作を行います。
回避策
「Ctrl+K」キーを「Ctrl+C」にマップします。以下のコマンドを実行すれば、「Ctrl+K」を押したときに「Ctrl+C」の動作を行わせることができます。
stty intr \^k
これは一時的な変更です。
永続的に変更したい場合は、「.bashrc」に上記のコマンドを記述してください。
2.CPUコアの使用率が100%になる
WSLがシステムスレッドを走らせている間、CPUコアの使用率が100%になります。Linux Test Projectのテスト結果
「Linux Test Project(LTP)」は、「Linux Kernel」やカーネルに関連した機能の信頼性、頑健性、安定性のテストを行うテストスイートを開発しているプロジェクトです。「WSL」は「Linux Kernel」相当の機能を提供するソフトウェアであり、「Linux Test Project」で「WSL」のテストを行った結果が公開されています。
- テストに合格した項目数:690(前回:669)
- テストに失敗した項目数:274(前回:258)