今日はWindowsのPCからLinuxが使えるWSL2(Windows Subsystem for Linux)を紹介します。この機能により、GNU/Linuxを再現し、コマンドラインツール、ユーティリティ、アプリケーションがそのまま使えるようになります。他に似たようなアプローチでは下記の方法があります。
- VirtualBoxやVMWareを使ってLinuxの仮想マシンをWindows上で起動する。
- デュアルブートでBois起動時にOSを選択する。
WSL2はWindowsのシステムをそのまま残したまま使えるので状況によっては有利になる場合もあります。しかし、100%のLinuxがそのまま使えるというわけではないので何ができないのか注意しておくことが必要ですね。
WSL2の特徴
WSL2の特徴はこのようになります。
- マイクロソフトストアから好きなLinuxディストロを選択できる(Ubuntuとか)
grep
,sed
,awk
などの使用頻度の多いコマンドが使える- Bash Shellを実行して下記のコマンドラインアプリケーションが使用できる。
- ツール: vim, emacs, tmux
- 言語: NodeJS, Javascript, Python, Ruby, C/C++, C# & F#, Rust, Go, など
- サービス: SSHD, MySQL, Apache, lighttpd, MongoDB, PostgreSQL.
- Linuxディストロのパッケージマネージャー(apt、dnf、yum)を使ってソフトウェアを追加できる。
- Linuxに近いのコマンドでWindowsのアプリケーションを実行できる。
- GNU/LinuアプリケーションをWindowsで実行できる。
- GNU/LinuxのUIアプリケーション(X11 と Wayland)をWindows上で起動できる。
- GPUアクセラレーションでマシーンラーニングやデータ分析ができる。
WSL1とWSL2の違い
下記に前バージョンとの違いを比較しました。
特徴 | WSL 1 | WSL 2 |
---|---|---|
バーチャルマシンに比較して使用する容量が少ない | ✅ | ✅ |
最新版のVMwareとVirtualBoxで起動できる | ✅ | ✅ |
VM(バーチャルマシン)の管理 | ❌ | ✅ |
Linux Kernel(カーネル)をそのまま使用 | ❌ | ✅ |
すべてのシステムがそのまま使える(OSのアップデート、Dockerなど) | ❌ | ✅ |
このようにWSL2で機能的にかなり向上できたことが理解できますね。
WSL2インストールの下準備
WSL2を使用するためには下記のシステム条件をクリアしていることが前提になります。
WSL2の使用条件: Windows 10 のバージョン2004かそれより新しいもの(ビルド 19041以降) もしくは、 Windows 11
ではWindows10を使っている人は下記の手順でバージョンを確認してください。
WindowsボタンとRを同時に押します。

ここにwinverを入力しOKを押します。
これでWindowsのバージョンが確認できますね。

WSL2の機能をオンにする
次にWindowsの検索ツールから『役割と機能の追加ウィザード』を起動して、バーチャルマシンとWSLの二つにチェックを入れてOKを押します。Hyper-Vは関係ないので触らないでください。

PCを再起動するように言われるので一旦、再起動して戻ってきましょう。
MicrosoftストアからUbuntuをインストール
ではWindowsにあるマイクロソフトストアからUbuntuを検索してインストールしましょう。

では、インストールが完了し、Ubuntuアプリを起動すると、コマンドプロントが起動され下記の様にユーザー名を設定することになります。

- ユーザー名はWindowsと一致する必要はありません。
- このユーザーにアドミン権限がつきsudoのコマンドが実行できるようになります。
- パスワードはブラインド入力になります。入力してもカーソルは動かず何も表示されません。でも入力されているのでそのままパスワードを設定してください。
インストールが完了したら、下記のコマンドでUbuntuのバージョンを確認してみましょう。
lsb_release -a
これでUbuntuが起動できたことが確認できました。

今更気づいたのですが、UbuntuサーバーがインストールされたのでデスクトップのようなUIがないですね。でも、同じことがすべてコマンドラインからできるので問題ないです。
簡単に中身を見ていきましょう。
pwd #/home/dan cd ../.. #2階層上に上がります。 ls #ディレクトリ内を確認します。 dan@PoPo-PC:/$ ls bin dev home lib lib64 lost+found mnt proc run snap sys usr boot etc init lib32 libx32 media opt root sbin srv tmp var #Ubuntuそのままのファイルシステムができています。
素晴らしいですね。
では、WindowsからUbuntuサーバーのディレクトリをファイルエクスプローラーで開くにはどうすればよいでしょうか?
下記のネットワークパスをファイルエクスプローラーのパスに入力してください。
\\wsl$\
そうすると先ほどpwdで見た、Ubuntuのディレクトリにたどり着きました。
これでプログラムを置いてあげればデプロイ時に使えそうですね。

では今日はここまで。
次にコマンドラインからWSL2をインストールする方法を紹介します。
これで問題なくインストールできた人はスキップしてください。
お疲れ様でした。
コマンドラインからWSL2をインストール
ではWindowsでコマンドプロンプトかパワーシェルを開きます。どちらも管理者(アドミン)の権限で開いてください。
では下記のコマンドを入力してエンターを押します。これでWSL2のインストールが始まります。
※デフォルトでWSL2がインストールされるのでご安心ください。
※LinuxのOSの指定がない場合はUbuntuがデフォルトでインストールされます。今回はUbuntuをインストールしていきます。もしどれにしてよいかわからない方はコミュニティの規模が多くて安定しているUbuntuを使うことをお勧めします。
wsl --install #インストール可能なディストロをみたい場合 wsl --list --online Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling SLES-12 SUSE Linux Enterprise Server v12 SLES-15 SUSE Linux Enterprise Server v15 Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS OracleLinux_8_5 Oracle Linux 8.5 OracleLinux_7_9 Oracle Linux 7.9 #もしディストロを指定したい場合は下記のコマンドでLinuxのOSを指定してください。 wsl --install -d <DistroName>
もしコマンドラインを使ったことがない人はLinux/サーバーを操作するうえでほぼコマンドラインからの操作だけになるので慣れておくようにしましょう。

インストールが始まりました。
色々インストールが始まり、Windowsがシステム変更の許可を求めるのでYesを押します。
もし、Ubuntuのインストールの途中37%くらいでとまったままの場合はCtl(コントール)+Cを同時に押してください。
下記の様にインストール完了のメッセージが出るはずです。

では、下記のコマンドでインストールされたことを確認します。
wsl -l -v PS C:\WINDOWS\system32> wsl -l -v Windows Subsystem for Linux has no installed distributions. Use 'wsl.exe --list --online' to list available distributions and 'wsl.exe --install <Distro>' to install. Distributions can also be installed by visiting the Microsoft Store: https://aka.ms/wslstore Error code: Wsl/WSL_E_DEFAULT_DISTRO_NOT_FOUND
まだディストロがインストールされていないというメッセージが出たのでLinuxのOSを指定してコマンドを実行します。さっき、WSL2のインストールが途中で止まったことが原因かもしれません。
では、こちらのコマンドを実行します。
wsl --install Ubuntu
もしエラーが出た場合はコメントに残してください。
お疲れ様でした。