Build 17110のWSLに関する変更点
2018年2月28日にリリースされた「Build 17110」の「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をインストールするには
リリースノート
変更点の詳細は、リリースノートを参照してください。今回コンソールに関する変更点はありません。
WSLの機能の改善や変更
「WSL」に関する機能の改善や変更です。1.Windowsから/initを終了可能に
「Windows」から「/init」を終了できるようになりました。これにより改善する問題は、以下を参照してください。
2.ファイル名の大文字・小文字の区別
「DrvFS」ボリュームがディレクトリーごとに、ファイル名の大文字・小文字を区別するようになりました。この機能自体は「Build 17093」で実装された機能です。
今までデフォルトのマウントプションに「case=force」が指定されていましたが、「Build 17110」以降は「case=dir」が指定されます。
case=forceが使用不可に
「Build 17110」では、デフォルトで「case=force」が使用できなくなりました。以前の動作である「case=force」を使用するには、レジストリーの設定を変更する必要があります。
以下のコマンドを実行すれば、「case=force」を使用できるようになります。
reg add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1
WSLの不具合修正
「WSL」に関する不具合の修正です。1.unameから返される文字列がNULL終端文字列に
「uname」システムコールから返される文字列が、NULL終端文字列になりました。ディレクトリーに大文字・小文字の区別のフラグを設定するには
上記で紹介したように「DrvFS」ボリュームでは、ディレクトリーごとにファイル名の大文字・小文字を区別するフラグを指定できるようになりました。このフラグが指定されたディレクトリー内に対するすべての操作は、大文字・小文字の区別が行われるようになります。
逆にフラグが指定されていないディレクトリー内に対するすべての操作は、大文字・小文字の区別が行われません。
このフラグは、「WSL(Linux)」からディレクトリーを作成した時に自動的に設定されますが、この機能が導入される前のビルドでディレクトリーを作成した場合は、このフラグが設定されません。
大文字・小文字のフラグを制御するには
後から特定のディレクトリーに対し、大文字・小文字のフラグを変更することができます。大文字・小文字のフラグ制御するには、「fsutil.exe」を使用します。
使用法 : fsutil file setCaseSensitiveInfo <ディレクトリ名> [フラグ]
フラグ : enable - <ディレクトリ名> の大文字と小文字を区別する属性を有効にする (既定値)
: disable - <ディレクトリ名> の大文字と小文字を区別する属性を無効にす る
例 : fsutil file setCaseSensitiveInfo C:\TempFolder enable
fsutil file setCaseSensitiveInfo C:\TempFolder disable
フラグ : enable - <ディレクトリ名> の大文字と小文字を区別する属性を有効にする (既定値)
: disable - <ディレクトリ名> の大文字と小文字を区別する属性を無効にす る
例 : fsutil file setCaseSensitiveInfo C:\TempFolder enable
fsutil file setCaseSensitiveInfo C:\TempFolder disable
注意事項
既存ディレクトリーのフラグの設定を切り替える前に、「WSL(Linux)」がそのディレクトリーを参照していないことを確認してください。カレントディレクトリーになっていたり、そのディレクトリー内の(サブディレクトリー含む)ファイルを開いていないか確認しましょう。
さもないと予期しない結果になります。
フラグの設定例
「Case」ディレクトリーに大文字・小文字のフラグを設定する例です。
fsutil.exe file setCaseSensitiveInfo .\Case
以下のように、大文字・小文字を区別するようになります。
フラグの解除例
「Case」ディレクトリーの大文字・小文字のフラグを解除する例です。
fsutil.exe file setCaseSensitiveInfo .\Case disable
以下のように、大文字・小文字を区別しないようになります。
大文字・小文字のフラグの設定状況を確認するには
大文字・小文字のフラグの設定状況を確認するには、同様に「fsutil.exe」を使用します。
使用法 : fsutil file queryCaseSensitiveInfo <ディレクトリ名>
例 : fsutil file queryCaseSensitiveInfo C:\TempFolder
例 : fsutil file queryCaseSensitiveInfo C:\TempFolder