ゆめと指向

tech blog

Windows 10にWSL 2をインストールしてUbuntuを動かすまで

WSL 2の一般提供が開始

Windows 10 May 2020 Updateによって、WSL 2の一般提供が始まりました。
www.publickey1.jp
今後、開発環境の用意において第一の選択肢になることが考えられます。
GPUのサポートも表明していることから、CUDAを用いる機械学習系の分野への影響も大きくなるでしょう。

WSL 2のインストール

今回のアップデートに合わせて私のWindows 10をクリーンインストールしたので、その状態からWSLの環境を整備するために行ったことを記録します。

Windowsの機能の有効化

まずはWSL 2を動かすために必要なWindowsの機能を有効化する必要があります。

管理者権限で実行されたPowershellで以下のコマンドを実行します(以下は1行のコマンドです)。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux,VirtualMachinePlatform

実行ができたら再起動します。

Powershellでwslと実行し、以下のように表示されれば成功です。

Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。
ディストリビューションは Microsoft Store にアクセスしてインストールすることができます:
https://aka.ms/wslstore

Ubuntuのインストール

これでWSLの環境は整ったわけですが、OSを入れなければ意味がありません。今回はUbuntuをインストールします。

Microsoft Storeを起動し、「Ubuntu」と検索します。すると以下のような結果が出ると思います。
Microsoft Storeで「Ubuntu」と検索した結果

無印のUbuntuは最新のLTSで、20.04 LTSと18.04 LTSはそれぞれ特定のバージョンです。
今回は20.04 LTSを選択しました。画面に従ってインストールを行います。

以下のような画面になればインストール成功です。「起動」を押して初期設定に進みます。
Microsoft StoreからUbuntuをインストールした後の画面

Ubuntuの初期設定

「起動」を押してしばらく待つと以下のような画面が現れるのでユーザ名とパスワードを入力します。なおパスワードの入力時、打った文字が表示されませんが、気にせず入力してEnterを押します。

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: (Ubuntuで新しく作成するユーザのユーザ名を入れる)
New password:(上のユーザに設定するパスワードを入れる)
Retype new password:(上と同じパスワードを再度入れる)

入力後、最後の行が以下のような感じになっていれば成功です。

ユーザ名@デバイス名:~$ _

次回以降の起動は、Powershellでwslと実行するか、スタートメニューからUbuntu 20.04 LTSを選択することでできます。

WSLからWSL 2へ

これでUbuntuを動かす環境ができたわけですが、実はこれだけではWSL 2ではなく、従来のWSLが動いています。
それではUbuntuのウインドウを閉じて、試しにPowershellで以下のコマンドを実行してみましょう。

wsl -l -v

以下のような出力が返ってくるはずです。

  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1

Ubuntu 20.04のVERSIONが1になっています。これはWSL 2ではなく従来のWSLで動作していることを表しています。
そのためこれが2になるようにする必要があります。

WSL 2を利用するには、Linux カーネルを手動で更新する必要があります。Linux カーネルを以下でダウンロードします。
aka.ms
.msiなファイルがダウンロードできたら、画面の指示に従ってインストールを行います。

インストールができたら、Powershellで以下のコマンドを実行し、WSL 2に切り替えます。私の環境で3分ぐらいかかったのでお茶を汲みに行きましょう。

wsl --set-version Ubuntu-20.04 2

再度バージョンを確認し、以下のようになっていれば成功です。

> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

インストール済みパッケージの更新

上までの状態で、WSL 2上でUbuntuが使える状態になりました。ただしセキュリティ等の観点からパッケージを更新しておく方が良いでしょう。
デフォルトではパッケージを取得するサーバーは *.ubuntu.com となっていますが、海外なので(日本からだと)時間がかかります。
そのため早いサーバーが自動で選択されるように設定を変更しましょう。

まずはUbuntuにログインし、 /etc/apt/sources.list にある既存の設定ファイルのバックアップを取ります。パスワードが求められるので、先ほど設定したものを入力しましょう。

sudo mv /etc/apt/sources.list /etc/apt/sources.list.org

次に以下のコマンドで、サーバーを自動選択する設定を /etc/apt/sources.list に書き込みます。

echo deb mirror://mirrors.ubuntu.com/mirrors.txt focal main restricted universe multiverse | sudo tee -a /etc/apt/sources.list
echo deb mirror://mirrors.ubuntu.com/mirrors.txt focal-updates main restricted universe multiverse | sudo tee -a /etc/apt/sources.list
echo deb mirror://mirrors.ubuntu.com/mirrors.txt focal-backports main restricted universe multiverse | sudo tee -a /etc/apt/sources.list
echo deb mirror://mirrors.ubuntu.com/mirrors.txt focal-security main restricted universe multiverse | sudo tee -a /etc/apt/sources.list

これでサーバーの設定は完了です。以下のコマンドでパッケージを更新しましょう。時間がかかるのでお茶を汲みに行きましょう。

sudo apt update
sudo apt upgrade -y

おわりに

これでUbuntu on WSL 2の環境が整いました。あとは煮るなり焼くなりです。

私のおすすめは Windows Terminal の導入です。タブが使えるのと、カスタマイズが豊富なのが大きなメリットです。
www.microsoft.com

楽しくUbuntuライフを送りましょう!