WindowsでLinuxサブシステムのファイルをいじってはいけない

Linux
この記事は約2分で読めます。

今年 Windows 10 の一周年記念アップデート (Windows Anniversary Update) が行われ、プレビュー扱いながらも Windows 10 のカーネルに新機能として Windows Subsystem for Linux (以下WSL)が実装された。別途 Linux OS インストールや仮想マシンを用意せずとも Windows 上から Linux ネイティブな環境が手に入りとっても便利。

この WSL 、使用するにあたってマイクロソフトの開発者の一人がブログで注意を呼びかけている。 Windows のアプリ、ツール、スクリプトやコンソールでも Linux ファイルシステム上でファイルを作成、または変更を加えないよう警告している。データの破損や Linux 環境がおかしくなる可能性があるという。

Microsoft Developer – Do not change Linux files using Windows apps and tools

Windows では Linux 関連のファイルは (ユーザ名%AppData%localappdata%\lxss) 下に収められている。

元々隠しフォルダに指定されているため、MS もこのフォルダをいじってほしくないということが考えなくともわかる。

Linux のファイルメタデータ(権限、所有者やタイムスタンプなどのデータ)はWindows のそれと全く違うため、 WSL が編集したファイルを見失い読み込めなくなるそうだ。

更に Windows のアプリは通常、ファイルを更新や改変するとき元のファイルを削除してから新しく作成、もしくは複製してからオリジナルファイルを削除する。

なので Linux ファイルのメタデータが修正されていなければ WSL は迷子になって正しくファイルを開いたり書き込んだりできなくなる。

解決方法

Windows と Linux 、両方の環境でファイルを使うためには、 Windows ファイルシステム上でファイルを作成すれば良い。 WSLのファイルシステム上で作成したファイルはたとえコンソールであっても Windows 側でいじらないこと

WSL は NT ファイルシステム上のファイルを正しく扱うようプログラムされているので Windows ファイルシステム上のファイルならば両方のOS環境で改変しても大丈夫。

いい加減 Windows も Linux のファイルシステムに対応してくれると有り難いんだけどね。

コメント

タイトルとURLをコピーしました