Windows 11 でWSL2(Windows Subsystem for Linux)を始めよう

今日はWindowsのPCからLinuxが使えるWSL2(Windows Subsystem for Linux)を紹介します。この機能により、GNU/Linuxを再現し、コマンドラインツール、ユーティリティ、アプリケーションがそのまま使えるようになります。他に似たようなアプローチでは下記の方法があります。

  • VirtualBoxやVMWareを使ってLinuxの仮想マシンをWindows上で起動する。
  • デュアルブートでBois起動時にOSを選択する。

WSL2はWindowsのシステムをそのまま残したまま使えるので状況によっては有利になる場合もあります。しかし、100%のLinuxがそのまま使えるというわけではないので何ができないのか注意しておくことが必要ですね。

WSL2の特徴

WSL2の特徴はこのようになります。

  • マイクロソフトストアから好きなLinuxディストロを選択できる(Ubuntuとか)
  • grepsedawkなどの使用頻度の多いコマンドが使える
  • Bash Shellを実行して下記のコマンドラインアプリケーションが使用できる。
    • ツール: vim, emacs, tmux
    • 言語: NodeJS, Javascript, Python, Ruby, C/C++, C# & F#, Rust, Go, など
    • サービス: SSHD, MySQL, Apache, lighttpd, MongoDBPostgreSQL.
  • Linuxディストロのパッケージマネージャー(apt、dnf、yum)を使ってソフトウェアを追加できる。
  • Linuxに近いのコマンドでWindowsのアプリケーションを実行できる。
  • GNU/LinuアプリケーションをWindowsで実行できる。
  • GNU/LinuxのUIアプリケーション(X11 と Wayland)をWindows上で起動できる。
  • GPUアクセラレーションでマシーンラーニングやデータ分析ができる。

WSL1とWSL2の違い

下記に前バージョンとの違いを比較しました。

特徴WSL 1WSL 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

もしエラーが出た場合はコメントに残してください。

お疲れ様でした。