パソコンのOSは普段何を使っていますか?
大体の人はWindowsかmacosを使っているでしょう。
ですが、開発現場などでは意外とLinuxを使いたい時が多くあります。
ということで、今回はWindows環境で簡単にLinuxを動かすための機能「Windows Subsystem for Linux」(WSL)を構築してみました!
Windows Subsystem for Linuxとは
Windows Subsystem for Linux、通称「WSL」はWindowsでLinuxを動かすための機能です。
今まではWindowsでLinux環境を使うには仮想マシンを構築するか、Cygwinなどを使って擬似的にLinuxのような環境を触るというのが主流でした。
ですが、Windows 10 version 1709で追加された「Windows Subsystem for Linux」を使うことでネイティブにLinuxカーネルが動作します。
つまり、Windows上で簡単にLinuxが動くということです。
開発って意外とLinuxを使う
筆者はITエンジニアとして社畜していますが、開発をしていると意外と感じるのは「Linux結構使うな・・・」ですね。
開発環境の構築なんかは大体の場合Windowsで行うことが多いですが、サーバーの構築なんかに関してはLinuxが圧倒的に多いのが現状です。
「現状です」というか、今後もLinuxが使われると思います。
Windowsで開発したものをサーバーにアップして動かして、エラーをWindowsで直して・・・という感じにすると面倒で仕方ありません。
かと言って、常時仮想マシンを立てておいたりするのは嫌だし・・・。
という時に便利なのがWSLですね。
WSLを構築してみる
Windowsの機能を有効にする
まずはスタートメニューから「Windows 機能」と検索して「Windows の機能の有効化または無効化」画面を開きます。
「Windows Subsystem for Linux」にチェックを付け、Windowsを再起動します
ちなみにWindows10 バージョン2004からはWindowsの機能欄から削除され、デフォルトで利用可能になっています。
Windowsの機能を開いてみて「Windows Projected File System」と「Windows TIFF IFilter」の間に「Windows Subsystem for Linux」がなければこの手順を飛ばしてください。
Microsoft StoreからLinuxをインストールする
Microsoft Storeアプリを起動して好きなディストリビューションをインストールします。
今回はUbuntuで進めていきます。
Ubuntu を入手 – Microsoft Store ja-JP
会社のネットワークやアカウント設定等でMicrosoft Storeアプリを利用できない場合は以下のページから手動でダウンロードすることも出来ます。
Windows Subsystem for Linux (WSL) ディストリビューションを手動でダウンロードする | Microsoft Docs
curlを使ってダウンロードすることも出来ますが、実行形式(exe)としてダウンロードもすることも出来ます。
インストールが完了すると「Ubuntu」というショートカットがスタートメニューに並んでいるはずです。
初回起動時は少し時間が掛かる
Ubuntuをインストールして初めて起動する時点でLinux本体のインストールが始まるので、少し時間がかかります。
インストール先はWindowsが格納されているドライブなので、HDDしか搭載していないパソコンだと結構かかります。
遅くても15分程度でインストールが完了するかと思います。
しばらくするとユーザー名やパスワードの入力などの初期設定を求められ、初期設定が終われば準備完了です。
まずはパッケージのアップデートから
インストールしたらまずは、デフォルトでインストールされているパッケージをアップデートするのがいいでしょう。
sudo apt update
でパッケージ情報を更新、sudo apt upgrade -y
でアップデート可能なパッケージをすべてアップデートします。
パッケージの更新が結構多く、初回のアップデートには結構時間がかかります。
ディストリビューションも選べる
ディストリビューション、つまりLinux OSの種類を数種類から選ぶことが出来ます。
- Ubuntu
- Debian GNU/Linux
- openSUSE Leap 42
- SUSE Linux Enterprise Server
- Kali Linux
- Pengwin
- Pengwin Enterprise
- Fedora Remix for WSL
- Alpine WSL
- WSL Arch Linux
UbuntuやDebianなどのメジャーなものから、WSLに最適化されたものまで様々なOSから選ぶことができるので、困ることはまずなさそうです。
ディストリビューションは複数インストールして使うこともできるので、環境ごとにアプリを試すなんてことも出来ます。
ただし、同じディストリビューションを2つ以上同時に使うことは出来ません。(厳密には色々弄れば出来るようですが、環境が複雑になるのであまりおすすめはしません。)
「Ubuntuを2つ以上同時にインストールして使う」と言った使い方は出来ないので、アプリを実際に動かす本番環境というよりかはあくまでも開発環境といった感じです。
ちなみにUbuntuに関してはUbuntu、Ubuntu 16.04、Ubuntu 18.04の3つがストアにあり、UbuntuはUbuntu LTSを追従、他2つはバージョンを固定して使える様なので、Ubuntuに限っていえば3つの環境を1つのWindowsマシン上に構築できます。
参考ページ:ストアにある3つの「Ubuntu」の違いは? ~WLSの「Ubuntu」をアップグレードする方法 – やじうまの杜 – 窓の杜
WSL直下のフォルダーもエクスプローラーから見れる
Windowsのエクスプローラーから\\wsl$
にアクセスすることで、WSL直下のフォルダーを簡単に見ることができるのも特徴です。
具体的には\\wsl$/Ubuntu/home...
といった具合にディストリビューションごとに分けて表示されるので、複数のディストリビューションをインストールしている場合でも間違えることはなさそうです。
WSL上のファイルは読み書き自由なので、生成したファイルをWindowsに持ってきたり、WSLにファイルを持っていったりも出来ます。
WSL上からWindowsのストレージにアクセスするのも簡単
さっきはWindowsからWSL上のディレクトリを見る方法でしたが、逆にWSL上からWindowsのストレージにアクセスするのも簡単です。
WSL上の/mnt/[ドライブ名]
でWindowsで認識しているストレージにアクセスすることが出来ます。
Cドライブにアクセスしたい場合は/mnt/c/
でアクセスできます。
もちろん読み書き自由なので、WSLからファイルを吐いたり、Windowsで作ったコードをWSLから実行したりも出来ます。
当たり前にLinuxのパッケージが動く
当たり前のようにLinuxパッケージが動くのも魅力ですね。
Cygwinとかだとパッケージをインストールするだけでも面倒だった気がしますが、WSLはLinuxがWindowsで動いてる状態なので、Linuxで使えるコマンドは当たり前に動きます。
もちろんapt
も動くので、パッケージの追加もらくらく行えます。
今の所Linuxとして使っていてWSLの環境依存で動かなかったコマンドはほぼありません。
動画や音声を取り扱うffmpeg
や、AI分野で有名なPython
、Pythonのパッケージ管理を行うpip
といったパッケージも問題なく動いています。
特にPython系なんかはWindowsだと面倒なイメージしかないので、Windows環境を汚さずに使えるのはかなり便利ですね。
一部動かないコマンドはある
とはいえ、一部動かないコマンドもあったりします。
例えばマシンの電源管理に関わるreboot
やpoweroff
といったコマンドは使えませんでした。
LinuxはWSLのウィンドウを開いた時に起動するのではなく、常時バックグラウンドで動作している様なので、再起動が必要な場合はWindowsのコマンドプロンプトからwsl -t [ディストリビューション名]
で再起動可能でした。
今の所、電源関連以外で困った場面はありませんが、他にも動かないコマンドは一部ありそうですね。
タイムラグなくすぐ立ち上がる
WSLはバックグラウンドで常に動作してるので、「起動」といった動作は必要ありません。
Windowsの起動と同時に起動されているようなので、使いたい時は普通にアプリを使うときと同じ様にディストリビューションのショートカットを開くだけです。
その特性から、ある程度メモリやCPUに余裕のあるマシンじゃないと起動後にWSLにリソースを取られてしまって、重くなるかも知れません。
SSHサービスは動かせるみたいなので、設定をちょっといじってあげればTeratermとかからでもログインできるらしいです。
参考ページ:Windows Subsystem for Linuxにssh接続する – Qiita
とりあえず動かす時はWSL、出来たものはLinuxサーバー
筆者はアプリを作ってみてとりあえず動かしたいときはWSLを使い、ある程度機能が動いて使う段階になった時点でLinuxサーバーに移して使うような感じにしています。
何度も言いますがWSLは「サーバー」ではなく「開発環境」なので、Linuxが必要だけど用意するのが面倒な時にサクッと使える手段として使うのが良いと思います。
あとは、ローカルでしか動かさないアプリを作る時とか、Pythonとかを勉強するときにサクッと環境を構築するときとかですかね。
マイクロソフトはWSLに積極的、今後にも期待できそう!
過去にはWindows7でWindows XPを動かす仮想環境「Windows XP mode」というのがありましたが、ついにWindowsで簡単にLinuxが動く時代が来てしまいましたね!
マイクロソフトはWSLに結構力を入れているようで、WSLの後継となるWSL2を発表しています。
WSL 2 のインストール | Microsoft Docs
よりネイティブな環境でLinuxが動くようになるとのことで、起動に数秒を要する代わりにバックグラウンドで実行しておく必要がなくなるとかどうとか・・・。
WSLがあれば手元に仮想マシンを立てて開発している人がよりCPUやメモリを有効に使え、仮想マシンの起動時間も必要無くなるので、ストレスフリーに開発できそうですね!
Linuxの勉強をしたいけど専用マシンを用意するのは難しいという人にもおすすめです。
今後もWSLが改良されていくのを期待しています!
Linux学習のハードルもグッと下がる
Linuxを触ってみたいと思っている人は多いと思いますが、物理的なマシンを用意するか、仮想マシンを構築することが前提みたいなところがあるので、ハードルが高いのが現実です。
ですが、WSLを使うことで簡単にLinux環境を作ることが出来るので、Linux学習のハードルがかなり低くなるのではないでしょうか?
Linuxの勉強をしたいけど面倒くさそうという理由で挫折した人はWSLを使ってみてはどうでしょうか?
コメント