WSL2 所感


Windows 10 May 2020 Update(バージョン2004)がついにGAされて、待望のWSL2が使えるようになったので、さっそく入れてみたので、よかったところ、悪かったところなどのメモ。
今のところBSODやBT機器が使えないといった巷に出ている不具合は踏んでない。

WSL2の導入

https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
にしたがって実行していくだけなので割愛。

wsl --set-version Ubuntu 2

が数分で終わります、って表示されてるのに1時間ぐらい終わらず、ちょっとあせった。

Xの利用方法が変わった

WSL1では、X410をはじめとするXserverを使うのに、

export DISPLAY=localhost:0.0

とやっていたが、それではXサーバが見つかならなくなってしまった。

仮想マシン方式になったため、WSLからはlocalhostでホストが見れなくなってしまったのが原因らしい。
https://x410.dev/cookbook/wsl/using-x410-with-wsl2/

上のX410の記事にあるとおり、

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0

で解決。上記記事には確認コマンドも乗っていて、これでわかったIPアドレスに対してnetcatするとよいようだ。

nc -v 172.30.32.1 6000

実際、自分の環境もファイアウォールにブロックされていて、はじめ設定したのにXが見つからず、切り分けに便利だった。

Docker for Windwosが便利になった

以前から、Docker for WindowsがWSL2とうまくインテグレーションできることは聞いていたが、実際便利になりましたね。
すでに、Docker for Windowsを導入済であれば、Windows 10 May 2020 Update(バージョン2004)にバージョンアップ後の起動時に、「WSL2使えるけど変更する?」的なことを聞かれるので、それでおしまい。簡単。

今のところ見えてる良くなったところは以下の3点

  • tcp://localhost:2375をexposeしなくてもWSLから使える
  • WSL内のディレクトリもボリュームマウントできる
  • WSLの一般ユーザでdockerコマンドが使える

最後は、純粋なLinuxなら、どうせ sudo docker してるし、そこまで大きな良いポイントではないけれど、前半ふたつは良いですね。

これまで、https://qiita.com/gentaro/items/7dec88e663f59b472de6 にあるように、一旦ホスト側にもってきてから、docker run -v /c/path/to/data:dataみたいにしなくてはならず、補完も効かず不便だったので。 docker run -v `pwd`:data だけでマウントできるの捗る。
TCP2375ポートを不用意にexposeしておくのも、やっぱり心配だったし。

ネットワーク系のコマンド類が実行できるようになった

tcpdumpとかWSL1では実行できないコマンドも使えるようになってます。
あとは、WSL1のころはPhantomJSとかも動かず、electronいじったときにつらかった覚えがありますが、最近electron触ってないので、そこはよくわからない。PhantomJSも終わっちゃったはずだし。。

まとめ

まだ使って数時間なので、他にも気付いたら追記していきます。