brand new note

ジャズお兄さんの技術メモ

Windows Subsystem for Linuxを使ってみる

かつてbash on ubuntu on windowsと呼ばれたWindows Subsystem for Linuxをインストールしてみました。

WindowsLinuxが使える??

Windowsの中でLinuxを使えたらもっと手軽にいろいろ試せるのに、、と思った途端、そういえばなんかあったなあと思い出したのでインストール。まあ特にこれといってやりたいことはないんですが。動作したはいいものの、どういう仕組みで動いているのか気になったので調べました。

仮想化とは違うのか

f:id:frazz:20180407230506p:plain

/mntディレクトリを見てみると、CドライブやDドライブがあるのを確認できます。仮想化とは違って本当にWindowsとシステムが共存しているようです。IPアドレスも確認しましたが、Windowsで使っているいつものアドレスと同じ値が使われていました。VMWare Network Adapter VMnetのアドレスもそのまま使われていました。

調べたところ、現在のwindowsマイクロカーネル(UNIXのようなモノリシックカーネルと違い、カーネル部を最小にしてその他多くの機能をモジュールとして読み込む考え方)で動作しており、その上に複数のサブシステムを共存させることができるようです。いつものGUIwindowsサブシステムと呼ばれるもので、これに沿ってLinuxもサブシステム化して動作させることは可能というわけです。

Windows Subsystem for Linux(WSL)はPicoプロバイダードライバという2つのカーネルドライバで実装されており、Windows側でlinuxセッションマネージャサービスがWSLのセッションを呼び出し、その先でbashをforkするという流れになっているようです。下図はmicrosoftのブログから引用しています。

f:id:frazz:20180407232252p:plain

何が便利なのか

まず仮想化に比べると、ファイルの転送がとても楽です。一応Cドライブの中身は/mntに入っていますがそれ以外はまっさらなので、/homeなんかには何も入ってません。なのでその中でlinuxでやりやすい作業をして、その後作ったファイルを/mnt配下に持っていくことで簡単にデータの共存ができます。

加えてネットワーク構成がwindowsとほぼ同じなので、デスクトップ環境でターミナルソフトを立ち上げるところを、sshコマンド一発で入りたいサーバに入れます。それらのサーバとファイル転送をしたいときもwinscpとかいちいち立ち上げなくて済みます。これほどちょうどよくwindowslinuxの使いやすいところのいいとこ取りができる技術があったなんて。。。

今のところ自分が見つけたのはそのくらいですが、特にプログラムを書く人にとってはこの恩恵を大きく受けることができるのではないかと思います。officeで資料作りながらコマンドラインで開発できるわけなので。

はじめの一歩に使えるリンク

インストールのしかたと概念はこのへん読めばいけます。

root取れない問題

一瞬詰まる方も多いので参考までに。WSLでルートが取れない問題に関しては、こちらの情報が有効です。

bash on Windows の root のパスワードは | Windows 10

初期パスワードは不明とのことですがsudo は効くので、次のコマンドによってrootパスワードは自分で変更できます。

sudo passwd root