LoginSignup
19
25

More than 3 years have passed since last update.

WSL2(Windows Subsystem for Linux2)の概要と導入

Posted at

はじめに

WSL(Windows Subsystem for Linux)の概要と導入にて、WindowsでUbuntuのコマンドラインを利用できる様になりましたが、完全なLinuxの互換性はありませんでした。そこで、システムコールの完全な互換性をサポートした、WSL2を利用してみます。

環境

  • OS: Windows10 Pro 64bit
    • Version: 1909
    • OS build: 18363.1256

WSL2の要件

  • x64 システム
    • Version: 1903 以降
    • OS build: 18362 以上
  • ARM64 システム
    • Version: 2004 以降
    • OS build: 19041 以上

WSL1からの変更点

WSL1からWSL2にバージョンアップしましたが、大きな変更点は

  • ファイル システム パフォーマンスの向上
  • システム コールの完全な互換性のサポート

この2点です。
image.png
参照:WSL 2 と WSL 1 の比較 | Microsoft Docs

ただし、WindowsファイルシステムとWSL2ファイルシステム間でのファイル共有速度は遅いようです。

WSL2の構成

アーキテクチャ自体も大きく変わっています。
image.png
参照:完全なLinuxがWindows 10上で稼働する? 「WSL 2」とは:Windows 10 The Latest - @IT
WLS1では、Linuxカーネルは存在せずエミュレートしていましたが、WSL2では「軽量LinuxユーティリティVM」という仮想マシン上で動作します。仮想マシン上で動作するものの、

  • 使い勝手はWSL1と同等
  • WSL1よりも少ないメモリ使用量
  • WSL1より高速なファイルIO

Microsoftによってチューニング、ビルドされたLinuxカーネルで、通常の仮想マシンに比べて高速に動作します。

インストール手順

参照:Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

WSLの機能を有効化

PowerShellを管理者権限で開き、WSLの機能を有効化します。

powershell
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.18362.1139

イメージのバージョン: 10.0.18363.1256

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

仮想マシン機能を有効化

すでに要件を満たしたWindowsバージョンなので、仮想マシン機能の有効化を実施します。

powershell
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.18362.1139

イメージのバージョン: 10.0.18363.1256

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

Linuxカーネル更新プログラムパッケージのインストールと設定

x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ
上記リンクからパッケージをダウンロードし、インストールを実行します。
その後、PowerShell上でWSL2を規定バージョンとして設定します。

> wsl --set-default-version 2

Linuxディストリビューションのインストール

今回はUbuntu20.04をWSL2用にインストールします。
Ubuntu 20.04 LTS を入手 - Microsoft Store
上記リンクを開き「入手」ボタンを押すと、Microsoft Storeが開きます。その画面でもう一度「入手」ボタンを押します。ダウンロード完了後、Ubuntuを起動を選択するとshellが起動します。

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: username
New password:
Retype new password:
passwd: password updated successfully

username/passwordを設定すると完了です。PowerShellでディストリビューションを確認します。

powershell
> wsl -l -v                                                                                           NAME            STATE           VERSION
* Ubuntu-18.04    Running         1
  Ubuntu-20.04    Installing      2

あと便利なのでWindows Terminalもインストールしておきましょう。
参照:Windows ターミナルのインストール | Microsoft Docs

また、デフォルトで起動するディストリビューションをUbuntu20.04に変更します。

powershell
> wsl -s Ubuntu-20.04
> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2
  Ubuntu-18.04    Running         1

挙動確認

Ubuntu20.04にログインして操作を実施してみます。

powershell
> wsl
username@DESKTOP-V2VK678:/mnt/c/Users/xxx $ sudo apt update && sudo apt upgrade
[sudo] password for xxx:

デフォルトではWSL2にマウントされたWindows側のファイルシステムディレクトリにログインするようです。
Windows Terminalの設定を変えてみます。Windows Terminalを起動し「▽」->「設定」を選択し、settings.jsonを開きます。

settings.json
            {
                "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
                "hidden": false,
                "name": "Ubuntu-20.04",
                "source": "Windows.Terminal.Wsl",
                "startingDirectory": "//wsl$/Ubuntu-20.04/home/username" # 追加
            }

この設定は//wsl$/イメージ名/パスという構成です。
保存後、再度Ubuntu20.04をWindows Terminalで開くと設定が反映されています。

まとめ

WSL2と聞くと、WSLのバージョンアップのように聞こえますが、アーキテクチャを見るとほとんど別物になりました。
特に「システム コールの完全な互換性のサポート」は良いですね!
WSL1とWSL2は棲み分けされているため、しばらくは両方ともサポートが続くようですが、特殊な用途でない限りはWSL2を利用するのが無難そうです。

19
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
25