Windowsから使うLinux

Windows 10のWSL(Windows Subsystem for Linux)機能を活用してLinuxを使う場合、Windowsのアプリケーションを使ってLinux環境のほうを扱いたいと考える方も多いだろう。毎日Windowsで使っているエディタや統合開発環境を使ってそのままLinuxの設定ファイルを編集したり、Webアプリを開発できたりすれば便利だ。特にVimの使い方を知らないユーザーなら、そっちのほうが都合がよいと思う。その場合の作業ルーチンは、次のようになるだろう。

  1. Linuxでサーバなどをインストール
  2. WindowsからLinuxサーバの設定ファイルを編集
  3. Linuxでサーバを起動
  4. WindowsからLinuxのWebアプリケーションなどを開発
  5. Windowsから開発したWebアプリケーションの動作チェック


WSLではWindows 10のファイルシステム上にそのままLinuxファイルが展開されているため、Windowsのエディタを使ってLinuxファイルを編集することができる(なお、いろいろ考える必要はあるが、その逆もできる)。Windowsに慣れたユーザーであれば、LinuxのVimを使うよりもWindowsのエディタを使ったほうが作業しやすい方が多いだろう。

では、アプリストア経由でインストールしたLinuxはWindowsのどこに配置されているのかということになるわけだが、例えばLinuxの/etc/に配置されていることが多い「os-release」などのファイル名で検索をかけると、Linuxディストリビューションの中身がどこに展開されているかを調べることができる。筆者の手元の環境の場合、次のパスにUbuntuとopenSUSEが展開されていた。

  • C:\Users\daich\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
  • C:\Users\daich\AppData\Local\Packages\46932SUSE.openSUSELeap42.2_022rs5jcyhyac\LocalState\rootfs

エクスプローラで調べてみると、「rootfs」がLinuxの/に相当する仕組みになっていることがわかる。

Ubuntu on Windows 10のトップフォルダ

openSUSE on Windows 10のトップフォルダ

上記フォルダのパスはそのままでは扱いにくいので、ショートカットを作成するなどしてアクセスしやすくしておくとよいのではないかと思う。

WindowsからLinuxファイルを編集

WindowsからLinuxファイルを編集してみよう。例えば、Nginxの設定ファイルを編集する場合を考えてみる。Linuxだと、Nginxの設定ファイルは/etc/nginx/nginx.confとして用意されることが多いように思う。Windowsのエクスプローラから先ほどのパスにさらに\etc\nginxを追加すると、次のような感じでLinuxの/etc/nginx/と同じ場所が見える。

WindowsからLinuxの設定ファイルをチェック

nginx.confをメモ帳で開くと、次のようになる。

メモ帳だとまともに編集できない

WindowsとLinuxとではテキストデータの改行コードが異なっているので、メモ帳だと思ったように編集できない。このあたりをよきに計らってくれる多機能エディタを使うほうがよい。例えば、「Atom」などだ。

人気のエディタ「Atom」

Atomでnginx.confを編集

Windowsからファイルを編集してLinux側からファイルを確認してみると、次のように編集されていることを確認できる。

Windowsから編集した内容がLinux側から見ても反映されている

ただし、今のところパーミッションの問題が発生する。例えば、編集前または編集後にファイルのパーミッションが次のようになっていたとする。

daichi@DESKTOP-DVVLKV9:~$ ls -al /etc/nginx/nginx.conf
-rw-r--r-- 1 root root 1601 Dec 18 12:47 /etc/nginx/nginx.conf
daichi@DESKTOP-DVVLKV9:~$

Windowsから該当ファイルの中身を編集して保存した後、例えばUbuntuのコンソールを再起動すると、次のようにファイルのパーミッションが書き換わってしまう。

daichi@DESKTOP-DVVLKV9:~$ ls -al /etc/nginx/nginx.conf
---------- 1 root root 1601 Dec 18 12:52 /etc/nginx/nginx.conf
daichi@DESKTOP-DVVLKV9:~$
編集前 編集後 コンソール再起動後
パーミッション rw-r—r— rw-r—r— ————-

これでは使い物にならない。パーミッションを変更すれば元に戻るが、このようにLinuxのファイルをWindows側から編集する行為はあまりうまくいかないようになっている。基本的にはLinuxはLinux、WindowsはWindowsから操作してほしいというスタンスだ。この辺りは、もしかすると今後のアップデートでよりシームレスになっていく可能性もあるが、今のところWSLの中と外を横断的に編集して利用することはそれほどうまくいかないような作りになっている。WindowsからLinuxのファイルを編集して利用する場合には、この辺りの仕組みを把握した上で利用する必要がある。