logologo
WSL2とは?Linuxが完全動作する仕組みと特長を紹介!
thumb_wsl2_01

WSL2とは?Linuxが完全動作する仕組みと特長を紹介!

アンドエンジニア編集部
2022.06.07
この記事でわかること
WSL2は「Windows Subsystem for Linux」の新バージョンです
最新の仮想化テクノロジーを使用し、WSL1の操作性を変えずに機能拡張しました
導入も簡単で、ウェブアプリケーション開発にも注目されています

WSL2とは

img_wsl2_01

WSL2はWSLの新バージョン・アーキテクチャで、WSL1の操作性を変えることなく最新の仮想化テクノロジーを使用することで機能を強化したものです。特徴はELF64 Linuxのバイナリが実行可能で、Linuxシステムコールの完全互換性を確保していることです。 【参考】:Windows Subsystem for Linuxに関するドキュメント 【参考】:WSL 2 とは

そもそもWSLとは

WSLは、マイクロソフト社によって提供されているサブシステムで「Windows Subsystem for Linux」の略です。Windows上でLinuxのコマンド・ツール・アプリケーション等を直接実行可能です。GNU/Linux 環境のほとんどのコマンド ライン ツール・ユーティリティ・アプリケーションがそのまま実行できます。 【参考】:Linux 用 Windows サブシステムとは

Windows環境のDockerとWSLの活用方法・手順を解説

WSL1とWSL2の違いと特長

WSL1の動作の仕組みですが、Linux実行環境にLinuxカーネルを使用していません。LXCoreというWSL1のサブシステムが担当します。LXCoreがLinuxの関数呼び出しをWindowsの関数呼び出しに変更します。このためシステムコール互換性に難点がありました。

WSL2では、軽量のユーティリティ仮想マシン(Light Weight utility Virtual Machine)がハイパーバイザー上で実行されます。Linuxカーネルには必要とされるWSL2が適用され、正規のLinuxとして動作します。これにより完全互換性と高速性を実現しました。

上記のアーキテクチャ変更によりWSL2はWSL1と比較し、次のような違いと特長があります。 ・WSL2のメリット  マネージドVM実装による、Linuxカーネルの実装とシステムコール互換機能が提供されます。 ・WSL2のデメリット  OSファイルシステム間のアクセスパフォーマンスがWSL1に劣ります(遅くなります)。

WSL2のデメリットとなるOSファイルシステム間のアクセスパフォーマンス機能は、仮想マシンを使っているため実装上やむを得ない部分です。マイクロソフト社はそれを認識し、対処策・緩和策について自社サイトで公表しています。 【参考】:例外的に WSL 2 ではなく WSL 1 を使用する場合

WSL2の使い方

img_wsl2_02

最初にWSL2のサポート構成について説明します。

これまでのHyper-V構成ではWindows10 Proが必要でしたが、WSL2はHome Editionにもインストール可能でメリットが大きいです。導入前の準備としてBIOS(UEFI)でVirtualization Technology(仮想化機能)をチェックしWindowsを起動しておきます。タスクマネージャーのCPU表示で「仮想化: 有効」となっていればインストール可能です。

WSLは、PowerShellまたはコマンドプロンプトからwsl.exeを実行します。wsl.exeの具体的な使い方やオプションですが、最初にディストリビューションを一覧表示するケースを見てみます。

・ディストリビューションを一覧表示  wsl --list、あるいはwsl  -l

・使用できるディストリビューションをオンライン取得し表示  wsl --list --online、あるいはwsl --list -o、wsl -l -o

操作例:インストール可能なディストリビューションを表示する例です。 C:\WINDOWS\system32>wsl --list --online

実行結果: C:\WINDOWS\system32>wsl --list --online インストールできる有効なディストリビューションの一覧を次に示します。  既定の分布は ' * ' で表されます。   'wsl --install -d <Distro>'を使用してインストールします。    NAME            FRIENDLY NAME  * Ubuntu          Ubuntu    Debian          Debian GNU/Linux    kali-linux      Kali Linux Rolling    openSUSE-42     openSUSE Leap 42    SLES-12         SUSE Linux Enterprise Server v12    Ubuntu-16.04    Ubuntu 16.04 LTS    Ubuntu-18.04    Ubuntu 18.04 LTS    Ubuntu-20.04    Ubuntu 20.04 LTS  C:\WINDOWS\system32>

Windows11のコマンドプロンプトはどこにある?ない時の出し方

WSL2のインストール

実行環境が準備できたら、WSLのインストール作業を進めます。PowerShellまたはコマンドプロンプトからwsl.exeを実行し、”--install”オプションを指定します。 【参考】:WSL のインストール

オプションなし”wsl --install”コマンドでは、デフォルト設定のUbuntuディストリビューションがインストールされます。その他のインストールオプションは次の通りです。

・デフォルトのディストリビューションをインストール  wsl --install

・ディストリビューションを指定してインストール  wsl --install --distribution、またはwsl --install -d [引数]

デフォルトインストールされるUbuntuディストリビューションは、”wsl --install -d Ubuntu”のように明示することもできます。インストール済みのLinux ディストリビューションとWSL設定バージョンは、”wsl -l -v”で確認できます。使い方の詳細ヘルプは、”wsl --help”で表示されますので適宜ご確認ください。

実行結果: C:\WINDOWS\system32>wsl --install インストール中: 仮想マシン プラットフォーム 仮想マシン プラットフォーム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 ダウンロード中: WSL カーネル インストール中: WSL カーネル WSL カーネル はインストールされました。 ダウンロード中: Ubuntu 要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。 C:\WINDOWS\system32>

再起動後、残りのインストール作業が行われて終了します。2022年1月時点のデフォルトディストリビューションは、Ubuntu 20.04 LTSがインストールされます。

WSL自体のステータスを確認するには、”wsl --status”を使用します。 C:\WINDOWS\system32>wsl --status 既定の配布: Ubuntu 既定のバージョン: 2 Linux 用 Windows サブシステムの最終更新日: 2022/01/25 WSL の自動更新が有効になっています。 カーネル バージョン: 5.10.16 C:\WINDOWS\system32>

WSL2の環境設定

WSL2のインストールが完了したら、ガイドに従い開発環境を設定します。デフォルトはUbuntuです。初回ユーザ名とパスワードの作成がWSL2のLinuxディストリビューションインストール時に求められますので、指示に従い作成します。 【参考】:WSL の開発環境を設定する

インストール時の設定例: 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: user New password: Retype new password: passwd: password updated successfully Installation successful! To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details.

以降はスタートメニューからインストールしたディストリビューションをクリックし、起動します。

初回作成したユーザアカウントがデフォルトのユーザとして登録されます。また、Linux管理者としてsudoコマンドを実行可能となります。パスワード変更は、Linuxの”passwd”コマンドにより変更可能です。Linux管理者が設定できたら、必要に応じてディストリビューションのパッケージマネージャでパッケージ更新を行います。 sudo apt update && sudo apt upgrade このパッケージ更新は定期的な更新が求められます。

Linux管理はコマンドラインインターフェースで実施します。そのため、WSLではWindows Terminalを用いたアプリケーション実行と管理が適しています。マイクロソフトストアからインストールしたり、GitHubからダウンロードしたりすることで入手できます。 【参考】:Install and get started setting up Windows Terminal

WSL1からWSL2へのバージョンアップ

インストール済みLinuxディストリビューションのWSLを、WSL1からWSL2にアップグレードする場合は、”wsl --set-version 2”を実行します。これはインストール済みLinuxディストリビューションの名称を指定します。

インストール済みのディストリビューション表示は”wsl --list”、WSLバージョンを表示するには”wsl --list --verbose”を使います。指定オプションの"--list"は"-l"、"--verbose"は"-v"でも構いません。 実行結果: C:\WINDOWS\system32>wsl -l Linux 用 Windows サブシステム ディストリビューション: Ubuntu (既定) C:\WINDOWS\system32>

C:\WINDOWS\system32>wsl -l -v   NAME      STATE           VERSION * Ubuntu    Stopped         2 C:\WINDOWS\system32>

Dockerコンテナを利用するには

Dockerコンテナを利用するには、Linuxを稼働させる環境としてWSL2を使います。従来WSL1ではアーキテクチャの違いにより、Docker EngineをWSL内で実行することはできず、Hyper-V仮想マシンとLinuxKitが必要でした。

WSL2はLinuxのシステムコール完全互換となり、Docker LinuxコンテナをWSL2でそのまま利用することができます。 【参考】:WSL 2 での Docker リモート コンテナーの概要

WSL2を用いることで、Docker Desktop for WindowsおよびDocker Engineいずれも動作させることができます。Docker DesktopはDocker操作をGUIダッシュボードで一元管理できるソリューションで、Docker Engineはそのコアとなるエンジンコード部分です。Docker CLIというコマンドラインインターフェイスから操作することもできます。 【参考】:Docker Desktop for Windows

エンジニア初心者でも分かる!Dockerコンテナの超入門!

WSL2導入で手軽にLinux環境を手に入れましょう

img_wsl2_03

WSL2は、軽量のユーティリティ仮想マシンでLinuxが稼働します。専用のハードウェアを用意せずにLinuxディストリビューションをインストールできます。

ちょっとしたLinuxの処理や構築確認で利用できるため、DockerやVisual Studio Codeバックエンドサーバーとしてウェブアプリケーション開発にも適しています。このお手軽環境を試してみてはいかがでしょうか。

Visual Studio 2022の新機能がIDEで歴代最高な理由
気になる人のXをフォローしよう!
公式LINE
公式YouTube
マイナビITエージェント

編集部オススメコンテンツ

thumb_gptowten_01
ChatGPTの面白い使い方15選!ビジネスや遊び相手になる事例
アンドエンジニア編集部
2024.02.19

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供

カテゴリー

編集部おすすめコンテンツ

アンドエンジニアへの取材依頼、情報提供などはこちらから

logologo
Powered by マイナビ AGENT