WindowsでLinux環境を構築!WSLの導入と基本的な使い方


WindowsでLinux環境を構築!WSLの導入と基本的な使い方

はじめに:WindowsとLinux、そしてWSLの登場

現代のコンピューティング環境において、オペレーティングシステム(OS)は私たちのデジタルライフの基盤を形成しています。中でも、Microsoft Windowsは世界中の多くのデスクトップおよびノートPCで利用されており、その使いやすさ、幅広いソフトウェア互換性、そして豊富なゲームタイトルなどが大きな魅力です。

一方で、Linuxはオープンソースの強力なOSとして、サーバー、組み込みシステム、そして開発者のワークステーションなどで広く使われています。その柔軟性、高いカスタマイズ性、そしてコマンドラインインターフェース(CLI)を通じた強力なツール群は、特にソフトウェア開発者やシステム管理者に重宝されています。

これまで、Windows上でLinux環境を利用するためには、仮想マシンソフトウェア(VirtualBox, VMwareなど)を導入したり、デュアルブート構成にしたり、あるいはCygwinのような互換レイヤーを利用するなどの方法が一般的でした。しかし、これらの方法はそれぞれに課題を抱えていました。仮想マシンはOS全体をエミュレートするためリソース消費が大きく、WindowsとLinux間の連携も煩雑になりがちです。デュアルブートはOSを切り替える手間が発生します。Cygwinは完全なLinux互換ではありませんでした。

そんな中、Microsoftが開発・提供を開始したのが「Windows Subsystem for Linux (WSL)」です。WSLは、Windows上で改変されていないLinuxバイナリを実行できるようにする互換レイヤーであり、後に軽量仮想マシン技術へと進化しました。これにより、WindowsユーザーはWindows環境から離れることなく、Linuxの強力なツールやディストリビューションを手軽に利用できるようになりました。

この記事では、この画期的な技術であるWSLに焦点を当て、その導入方法から基本的な使い方、さらには応用的な活用法までを、初心者の方にも分かりやすく詳細に解説していきます。この記事を読み終える頃には、あなたもWindows上でLinuxを自在に操り、開発や学習、システム管理の効率を飛躍的に向上させることができるようになるでしょう。

WSLとは何か?その仕組みと進化

WSLとは、Windows 10およびWindows 11上で動作する、Linux互換レイヤーまたは仮想化機能のことです。これにより、ユーザーはUbuntu, Debian, Fedora, Kali Linuxなど、様々なLinuxディストリビューションをWindows上で直接実行できるようになります。WindowsアプリケーションとLinuxアプリケーションを同時に実行し、WindowsのファイルシステムとLinuxのファイルシステムの間でシームレスにやり取りすることが可能です。

WSLには、技術的な仕組みが異なる二つのバージョンが存在します。WSL1とWSL2です。

WSL1:互換レイヤーとしての仕組み

WSL1は、Windows NTカーネルの上に、LinuxシステムコールをWindows NTシステムコールに変換する互換レイヤーとして実装されました。これは、Wine (Linux上でWindowsアプリを動かす互換レイヤー) の逆のようなものだと考えると分かりやすいかもしれません。

  • 仕組み: Linuxのバイナリ(ELF形式)が実行されると、WSL1がその中で発行されるLinuxのシステムコール(例えば open, read, write, fork など)を捕捉し、対応するWindows NTのシステムコールに変換してカーネルに処理させます。Linuxファイルシステムは、WindowsのNTFSファイルシステム上に特別に構築されます。
  • メリット: 仮想マシンを使用しないため、起動が非常に速く、リソース消費も比較的少ないという利点がありました。また、Windowsファイルシステムへのアクセスが非常に高速でした。
  • デメリット: Linuxのシステムコールすべてを完全に変換できるわけではないため、互換性に限界がありました。特に、Linuxカーネルに密接に関連する機能(例: Docker、特定のファイルシステム操作、ネットワークインターフェースの低レベル操作)はうまく動作しないか、全く動作しませんでした。また、ファイルI/Oパフォーマンスが、Linuxネイティブ環境と比較して遅いという問題がありました。

WSL2:軽量仮想マシンとしての仕組み

WSL2は、WSL1の互換性の限界を克服するために開発されました。WSL2は、Windowsが持つHyper-V仮想化技術を基盤とした、軽量な仮想マシン上で実際のLinuxカーネルを実行します。

  • 仕組み: WSL2は、最適化された軽量な仮想マシン内で、実際のLinuxカーネルとLinuxディストリビューションのファイルシステム全体を実行します。この仮想マシンは、WindowsホストOSと非常に緊密に連携しており、メモリフットプリントが小さく、起動時間も従来の仮想マシンより大幅に高速です。Linuxファイルシステムは、専用のExt4ファイルシステムボリュームとして仮想ハードディスクイメージ(VHD)内に格納されます。Windowsとの連携は、Plan 9ファイルシステムプロトコルとVirtioブロックデバイスを介して行われます。
  • メリット:
    • 高い互換性: 実際のLinuxカーネルが動作するため、ほぼすべてのLinuxシステムコールがネイティブに処理されます。これにより、DockerのようなLinuxカーネルに依存するツールも完全に動作するようになります。
    • 高速なファイルI/O: 特にLinuxファイルシステム内でのファイル操作がWSL1より劇的に高速化されました。
    • パフォーマンス: 全体的なパフォーマンスが向上し、多くの開発タスクに適しています。
  • デメリット:
    • Windowsファイルシステムへのアクセス: WSL2からWindowsファイルシステム(/mnt/c など)へのアクセスは、ネットワークファイルシステム経由となるため、WSL1より遅くなる場合があります。
    • メモリ消費: WSL1より多くのメモリを消費する可能性がありますが、WSL2は動的にメモリを解放・割り当てするため、アイドル時のリソース消費は抑えられています。

WSL1からWSL2への移行

WSL2はWSL1の上位互換と位置づけられており、MicrosoftもWSL2の利用を強く推奨しています。現在、WSLを新規にインストールすると、デフォルトでWSL2がインストールされるようになっています。もし古いWSL1環境が残っている場合でも、簡単なコマンドでWSL2へアップグレードすることが可能です。

WSLを使うメリット

WindowsユーザーがWSLを使うことには、多くのメリットがあります。

  1. 開発環境の構築: Web開発、システムプログラミング、データサイエンスなど、多くの分野で開発ツールやライブラリがLinux環境を前提としています。WSLを使えば、複雑な設定なしにこれらの環境をWindows上に手軽に構築できます。
  2. 強力なCLIツールの利用: grep, sed, awk, ssh, gitなど、Linuxで広く使われている強力なコマンドラインツールをWindows上で直接利用できます。PowerShellやCommand Promptよりも柔軟で高機能な場合が多いです。
  3. 学習コストの低減: Linuxの学習を始めたい人にとって、既存のWindows環境を壊すことなくLinux環境に触れられるのは大きなメリットです。
  4. Windowsとの連携: WindowsアプリケーションとLinuxアプリケーション間で、ファイルシステムやネットワークを介してシームレスに連携できます。例えば、Windows上のVS Codeでコードを編集し、WSL上のNode.jsで実行するといったことが容易に実現できます。
  5. Dockerとの親和性: WSL2はDocker Desktop for Windowsのバックエンドとして非常に効率的に動作します。Linuxコンテナをネイティブに近いパフォーマンスで実行可能です。
  6. GUIアプリケーションのサポート (WSLg): Windows 11以降(またはWindows 10の一部のバージョン)では、WSLgという機能により、Linux上のGUIアプリケーションもWindows上で実行できるようになりました。

これらのメリットから、WSLは特にソフトウェア開発者やシステム管理者に人気のツールとなっています。

WSLの導入準備

WSLをインストールする前に、いくつか確認しておくべき点と準備が必要です。

1. Windowsのバージョン確認

WSL、特にWSL2を利用するには、特定のバージョンのWindowsが必要です。

  • WSL2を利用する場合:
    • Windows 11 (Pro, Home, Education, Enterprise)
    • Windows 10 Version 2004 以降 (Build 19041 以降) (Pro, Home, Education, Enterprise)
  • WSL1を利用する場合:
    • Windows 10 Version 1607 以降 (Anniversary Update)

最新のWSL機能(特にWSLgなど)を利用するには、Windows 11またはWindows 10の最新版が推奨されます。Windowsのバージョンは、「設定」アプリを開き、「システム」>「バージョン情報」で確認できます。「Windowsの仕様」セクションの「エディション」と「バージョン」を確認してください。

もしバージョンが古い場合は、Windows Updateを実行して最新の状態に更新してください。

2. 仮想化機能の有効化

WSL2は仮想マシン技術を使用するため、PCのCPUが仮想化支援機能に対応しており、かつBIOS/UEFI設定でその機能が有効になっている必要があります。

  • Intel VT-x (Intel製CPU)
  • AMD-V (AMD製CPU)

ほとんどのモダンなPCではこれらの機能が搭載されていますが、一部のマシンや設定によっては無効になっていることがあります。確認および有効化は、PCのBIOS/UEFI設定画面で行います。PCの起動時に特定のキー(Del, F2, F10, F12など。メーカーによって異なります)を押すことでBIOS/UEFI設定画面に入れます。設定項目はメーカーやマザーボードによって異なりますが、「Virtualization Technology」「Intel VT」「AMD-V」「SVM Mode」といった名前を探し、”Enabled” に設定してください。設定変更後は、設定を保存してPCを再起動してください。

※多くのPCではデフォルトで有効になっています。もしWSL2のインストールや起動で問題が発生しない限り、この手順はスキップしても構いません。問題が発生した場合に確認・設定変更する箇所となります。

3. PowerShellまたはコマンドプロンプトを管理者権限で実行

WSLのインストールや設定変更のほとんどは、管理者権限で実行されたコマンドプロンプトまたはPowerShellで行います。

  • Windowsのスタートボタンを右クリックします。
  • メニューの中から「Windows PowerShell (管理者)」または「コマンド プロンプト (管理者)」を選択します。
  • ユーザーアカウント制御 (UAC) のダイアログが表示されたら、「はい」をクリックして許可します。

これにより、コマンドウィンドウのタイトルバーに「管理者」と表示されていることを確認してください。

WSLのインストール方法

WSLのインストールは、Windows 10 Version 2004以降またはWindows 11では非常に簡単になりました。wsl --install コマンドを使用するのが最も推奨される方法です。

方法1: 簡易インストール (wsl --install)

このコマンドは、WSLを有効化し、必要な仮想マンプラットフォームコンポーネントをダウンロード・インストールし、WSLカーネルをダウンロードし、デフォルトのLinuxディストリビューション(通常はUbuntu)をインストールする一連の手順を自動で行います。

  1. 管理者権限でPowerShellまたはコマンドプロンプトを開きます。
  2. 以下のコマンドを入力してEnterキーを押します。

    bash
    wsl --install

    3. 処理が開始され、必要なコンポーネントのダウンロードとインストールが行われます。これにはインターネット接続が必要です。
    4. インストールが完了したら、PCの再起動を求められます。指示に従ってPCを再起動します。
    5. PC再起動後、インストールされたLinuxディストリビューション(デフォルトではUbuntu)のセットアップが自動的に開始されます。ユーザー名の入力とパスワードの設定を求められますので、画面の指示に従って設定してください。このユーザー名とパスワードは、Linux環境内でsudoコマンドなどで権限昇格を行う際に使用されます。

これでWSLとデフォルトのLinuxディストリビューションのインストールは完了です。

インストールするディストリビューションを選択する場合

wsl --install コマンドはデフォルトでUbuntuをインストールしますが、他のディストリビューションを選択することも可能です。

  1. インストール可能なディストリビューションの一覧を確認します。

    “`bash
    wsl –list –online

    または wsl -l -o

    このコマンドを実行すると、Microsoft Storeなどで提供されているディストリビューションのリストが表示されます。例:
    The following is a list of valid distributions that can be installed.
    Install using ‘wsl –install -d ‘.

    NAME FRIENDLY NAME

    Ubuntu Ubuntu
    Debian Debian
    kali-linux Kali Linux
    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
    Ubuntu-22.04 Ubuntu 22.04 LTS
    OracleLinux_7_9 Oracle Linux 7.9
    OracleLinux_8_7 Oracle Linux 8.7
    “`
    2. インストールしたいディストリビューションを指定してインストールコマンドを実行します。例えば、Debianをインストールする場合:

    bash
    wsl --install -d Debian

    3. 以降の手順は、デフォルトインストールの場合と同じです(再起動、ユーザー設定)。

方法2: 手動インストール (旧バージョンまたは詳細設定向け)

wsl --install コマンドが利用できない古いWindowsバージョンや、より詳細な設定をしたい場合に手動でインストールすることも可能です。この方法は複数のステップからなります。

  1. WSL有効化: PowerShellを管理者権限で開き、以下のコマンドを実行します。

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

    2. 仮想マンプラットフォーム有効化: PowerShellを管理者権限で開き、以下のコマンドを実行します。WSL2を利用する場合に必須です。

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

    3. PCの再起動: 上記2つのコマンドを実行したら、PCを再起動します。
    4. WSL2 Linuxカーネルのダウンロード: Microsoftのドキュメントページから、最新のWSL2 Linuxカーネル更新パッケージをダウンロードしてインストールします。
    * 通常はこちらのリンクからダウンロードできます: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
    * ダウンロードした wsl_update_x64.msi ファイルを実行し、画面の指示に従ってインストールします。
    5. WSL2をデフォルトバージョンに設定: 今後のWSLインストールがWSL2になるように設定します。PowerShellで以下のコマンドを実行します。

    powershell
    wsl --set-default-version 2

    「WSL 2 と連携するために、仮想マシンプラットフォーム機能を有効にしてください。システム設定で ‘Virtual Machine Platform’ が有効になっていることを確認してください。」のようなメッセージが表示された場合は、手順2が正しく完了しているか確認してください。
    6. Linuxディストリビューションのインストール: Microsoft Storeから任意のLinuxディストリビューションアプリ(例: Ubuntu, Debianなど)を検索してインストールします。
    7. 初期設定: Microsoft Storeアプリからインストールしたディストリビューションを初めて起動すると、セットアップが開始されます。ユーザー名とパスワードを設定してください。

手動インストールの場合でも、最終的にWSLとディストリビューションが利用可能になります。wsl --install コマンドが推奨されるのは、これらの手順を自動化してくれるためです。

基本的なWSLの使い方

WSLがインストールされ、Linuxディストリビューションの初期設定が完了したら、早速使ってみましょう。

WSLの起動方法

WSL環境を起動する方法はいくつかあります。

  1. スタートメニューから起動: インストールしたLinuxディストリビューションの名前(例: Ubuntu)がスタートメニューのアプリ一覧に追加されています。それをクリックすると、そのディストリビューションのターミナルウィンドウが開きます。
  2. コマンドプロンプトまたはPowerShellから起動:
    • 単に wsl と入力してEnterキーを押すと、デフォルトに設定されているディストリビューションが起動します。
    • 特定のディストリビューションを起動したい場合は、 wsl -d <DistroName> と入力します。(例: wsl -d Debian
    • WSL内で単一のコマンドだけを実行したい場合は、 wsl <command> と入力します。(例: wsl ls -l)この場合、WSLシェルは起動せず、コマンドの実行結果が表示された後にWindowsのプロンプトに戻ります。
  3. Windows Terminalから起動: Windows Terminalは、コマンドプロンプト、PowerShell、Azure Cloud Shellなど、様々なコマンドライン環境をタブでまとめて管理できる便利なツールです。WSLをインストールすると、Windows Terminalのプルダウンメニューにインストール済みのLinuxディストリビューションが自動的に追加されます。Windows Terminalを使用すると、複数のWSLディストリビューションやWindowsのシェルを同じウィンドウ内で簡単に切り替えられます。Windows TerminalはMicrosoft Storeからインストールできます。

Bashシェル入門

WSLで起動するターミナルは、通常Bash (Bourne Again SHell) というシェル環境です。Linuxでの作業は主にこのシェルにコマンドを入力して行います。いくつか基本的なコマンドを試してみましょう。

  • 現在のディレクトリの表示: pwd (print working directory)
    bash
    pwd
    # /home/your_username

    これは、Linux環境内のホームディレクトリ(~ で表現されることが多い)です。
  • ディレクトリの内容の表示: ls (list)
    “`bash
    ls
    # 現在のディレクトリにあるファイルやフォルダの一覧を表示

    ls -l

    詳細情報を付けて一覧表示 (パーミッション、所有者、サイズ、更新日時など)

    ls -a

    ドット (.) で始まる隠しファイルやフォルダも表示

    ls -lh

    詳細情報をヒューマンリーダブルなサイズ表記 (KB, MB, GB) で表示

    * **ディレクトリの移動**: `cd` (change directory)bash
    cd /

    ルートディレクトリに移動

    cd ~

    ホームディレクトリに移動

    または単に cd と入力しても同じ

    cd ..

    一つ上の階層のディレクトリに移動

    cd myfolder

    現在のディレクトリ内の “myfolder” に移動

    cd /path/to/some/directory

    絶対パスで指定したディレクトリに移動

    * **新しいディレクトリの作成**: `mkdir` (make directory)bash
    mkdir new_directory

    現在のディレクトリに “new_directory” という名前の新しいフォルダを作成

    mkdir -p path/to/nested/directory

    ネストされたフォルダをまとめて作成 (-p オプション)

    * **ファイルの削除**: `rm` (remove)bash
    rm myfile.txt

    myfile.txt というファイルを削除

    rm -r myfolder

    myfolder というフォルダとその中のファイルをすべて削除 (-r オプションは再帰的な削除)

    rm -rf dangerous_folder

    確認なしで強制的にフォルダを削除 (-f オプションは強制削除)

    このコマンドは非常に危険なので、使う際は細心の注意が必要です!

    * **ファイルの作成・更新**: `touch`bash
    touch newfile.txt

    newfile.txt という名前の空のファイルを現在のディレクトリに作成

    ファイルが既に存在する場合は、そのファイルのタイムスタンプを更新

    * **ファイルの内容表示**: `cat` (concatenate - 本来はファイル連結だが、単一ファイル表示にもよく使われる)bash
    cat myfile.txt

    myfile.txt の内容を画面に表示

    * **コマンドのヘルプ表示**: `man` (manual)bash
    man ls

    ls コマンドのマニュアルページを表示

    Qキーで終了

    “`
    これらのコマンドはLinuxの基本中の基本です。WSL環境で実際に手を動かして慣れていくのが良いでしょう。

パッケージ管理(aptコマンド)

Linux環境でソフトウェアをインストール、管理するには、パッケージマネージャーを使います。UbuntuやDebianなどの多くのディストリビューションでは、apt (Advanced Package Tool) というパッケージマネージャーが使われます。

aptコマンドを使うには、通常sudoコマンドで管理者権限が必要になります。これは、システム全体のソフトウェアを操作するためです。WSLインストール時に設定したパスワードがここで必要になります。

  • パッケージリストの更新: インストール可能なパッケージの情報(どのソフトウェアが、どのバージョンで利用可能かなど)を最新の状態に更新します。ソフトウェアをインストールする前には必ず実行しましょう。
    bash
    sudo apt update
  • インストール済みのパッケージのアップグレード: システム上のすべてのソフトウェアを最新の状態にアップグレードします。update の後に実行するのが一般的です。
    bash
    sudo apt upgrade
  • ソフトウェアのインストール: 特定のソフトウェアパッケージをインストールします。例えば、テキストエディタの vim をインストールする場合:
    bash
    sudo apt install vim

    複数のパッケージを同時にインストールすることも可能です。
    bash
    sudo apt install git nano
  • ソフトウェアの削除: インストール済みのソフトウェアパッケージを削除します。
    bash
    sudo apt remove vim
  • 不要になったパッケージの削除: ソフトウェアを削除した後などに残った、依存関係が満たされなくなった不要なパッケージを削除します。
    bash
    sudo apt autoremove
  • 特定のパッケージを検索: ソフトウェア名が分からない場合などに検索できます。
    bash
    apt search <キーワード>

これらのaptコマンドを使いこなすことで、WSL環境に必要なツールや開発環境を簡単に構築できます。

ファイルの扱い方:WindowsとLinux間のアクセス

WSLの便利な点の一つは、WindowsファイルシステムとLinuxファイルシステムの間で容易にアクセスできることです。

  • Windows側からのWSLファイルシステムへのアクセス:
    Windowsのエクスプローラーを開き、アドレスバーに \\wsl$ と入力してEnterキーを押します。
    \\wsl$
    すると、インストールされているWSLディストリビューションの名前が表示されます。例えば、Ubuntuをクリックすると、そのLinux環境のルートファイルシステム (/) にアクセスできます。

    通常、ユーザーのホームディレクトリは /home/<your_username> にあります。エクスプローラーで \\wsl$\Ubuntu\home\your_username のようにたどることで、Linux環境の個人ファイルにアクセスできます。ここでファイルのコピー、貼り付け、削除などをWindowsのGUI操作で行えます。

    注意点: WSL2の場合、LinuxファイルシステムはVHDファイル内に格納されています。Windows側からエクスプローラーでアクセスする場合 (\\wsl$\...) は、ネットワーク経由のアクセスとなるため、特に大量の細かいファイルを操作する際にパフォーマンスが低下することがあります。WSL環境内での開発作業は、原則としてLinuxファイルシステム (~/home 以下) で行うのがパフォーマンスの観点から推奨されます。
    * WSL側からのWindowsファイルシステムへのアクセス:
    WSL環境内では、Windowsの各ドライブが /mnt ディレクトリ以下にマウントされています。例えば、Cドライブは /mnt/c、Dドライブは /mnt/d としてアクセスできます。
    “`bash
    cd /mnt/c/Users/your_windows_username/Documents

    Windowsのドキュメントフォルダに移動

    ls /mnt/c/Windows/System32

    WindowsのSystem32フォルダの内容を表示

    “`
    このように、Linuxコマンドを使ってWindows側のファイルやフォルダを操作できます。

    注意点: WSLからWindowsファイルシステム (/mnt/...) を操作する際は、Linuxのファイル権限システムとWindowsのNTFS権限システムの違いから、パーミッションに関する問題が発生することがあります。特に実行権限の設定などが意図しない挙動を示す可能性があるため、注意が必要です。重要なファイル操作は、それぞれのネイティブ環境で行うか、コピーしてLinuxファイルシステム内で作業するのが安全です。
    * ファイルやフォルダのコピー・移動:
    * WSLファイルシステム内でコピー: cp source_file destination_file
    * WSLファイルシステム内のファイルをWindowsにコピー:
    bash
    cp ~/myfile.txt /mnt/c/Users/your_windows_username/Desktop/

    * WindowsのファイルをWSLファイルシステムにコピー:
    bash
    cp /mnt/c/Users/your_windows_username/Downloads/installer.exe ~/downloads/

    移動は mv コマンドを使います。使い方は cp と似ています。
    bash
    mv ~/old_location/myfile.txt ~/new_location/
    mv /mnt/c/path/to/file /home/your_username/

    これらのファイルアクセス方法を理解しておくと、WindowsとLinuxの両方の環境を跨いだ作業が非常に効率的になります。

ユーザー管理 (sudo)

WSLのLinux環境では、インストール時に設定したユーザーがデフォルトでログインしますが、システム全体の操作には管理者権限が必要です。Linuxでは、sudo (superuser do) コマンドを使って、一時的にrootユーザー(システム管理者)の権限でコマンドを実行します。

“`bash
sudo apt update

パッケージリストの更新 (管理者権限が必要)

sudo nano /etc/hosts

/etc/hosts ファイルを管理者権限で編集 (システムの重要な設定ファイル)

``sudo` コマンドを初めて実行する際や、一定時間経過した後に再度実行する際には、WSLユーザーのパスワードの入力を求められます。パスワードを入力しても画面には何も表示されませんが、正しく入力してEnterキーを押してください。

WSLを終了する方法

WSLのセッション(ターミナルウィンドウ)を終了するには、単純にウィンドウを閉じるか、シェルで exit コマンドを実行します。

bash
exit

しかし、これはそのシェルセッションを終了するだけであり、バックグラウンドでWSLの軽量仮想マシン自体が実行され続けている場合があります。メモリやCPUリソースを完全に解放したい場合は、WSL環境全体をシャットダウンする必要があります。

  • すべてのディストリビューションをシャットダウン: PowerShellまたはコマンドプロンプトで実行します。
    bash
    wsl --shutdown
  • 特定のディストリビューションを停止:
    bash
    wsl --terminate <DistroName>
    # 例: wsl --terminate Ubuntu

    これらのコマンドを実行すると、実行中のすべてのLinuxプロセスが停止し、WSLが使用しているリソースが解放されます。次にWSLを起動した際に、改めて環境が立ち上がります。

WSLの応用的な使い方

WSLは単にLinuxコマンドを実行できるだけでなく、さらに便利な応用的な使い方が多数あります。

WSLのバージョン管理とディストリビューション管理

インストールしたディストリビューションがWSL1とWSL2のどちらで動作しているか確認したり、バージョンを変更したりできます。

  • インストール済みのディストリビューション一覧とバージョン確認:
    PowerShellまたはコマンドプロンプトで実行します。
    bash
    wsl --list --verbose
    # または wsl -l -v

    出力例:
    “`
    NAME STATE VERSION

    • Ubuntu Running 2
      Debian Stopped 2
      legacy Stopped 1
      ``NAMEはディストリビューション名、STATEは現在の状態(Running, Stoppedなど)、VERSIONはWSLのバージョン(1または2)を示します。*` が付いているディストリビューションは、デフォルトとして設定されているものです。
  • ディストリビューションのWSLバージョンを変更: 特定のディストリビューションをWSL1からWSL2、またはその逆に変更できます。例えば、UbuntuをWSL2にしたい場合(既にWSL1でインストールされている場合):
    bash
    wsl --set-version Ubuntu 2

    このコマンドは、変更に時間がかかる場合があります。完了するまで待ちましょう。
  • 今後のインストールでデフォルトで使用するWSLバージョンを設定: 新規にインストールするディストリビューションを常にWSL2で動作させたい場合は、このコマンドを実行します。
    bash
    wsl --set-default-version 2

    通常はインストール準備の手順で一度実行すれば十分です。
  • ディストリビューションのアンインストール: 不要になったディストリビューションを削除します。
    bash
    wsl --unregister <DistroName>
    # 例: wsl --unregister Ubuntu

    注意: このコマンドはディストリビューションとその中のすべてのファイル、設定、アプリケーションを完全に削除します。一度削除すると元には戻せませんので、実行する際は十分注意してください。

複数のLinuxディストリビューションをインストールする

前述のように、wsl --install -d <DistroName> コマンドやMicrosoft Storeを利用して、複数のLinuxディストリビューションを同時にインストールし、使い分けることができます。例えば、Ubuntuで開発作業を行い、Kali Linuxでセキュリティ学習を行う、といったことが一つのWindows環境で実現できます。

起動時は、スタートメニューから目的のディストリビューションを選択するか、wsl -d <DistroName> コマンドを使用します。

WSLとWindowsアプリケーションの連携

WSLの強力な点の1つは、WindowsとLinux間のシームレスな連携です。

  • WSLからWindowsコマンドを実行: WSLのBashシェルの中から、Windowsの実行可能ファイル(.exe ファイル)を直接呼び出すことができます。
    “`bash
    explorer.exe .
    # 現在のLinuxディレクトリをWindowsのエクスプローラーで開く

    notepad.exe /mnt/c/Users/your_windows_username/Desktop/some_file.txt

    Windowsのメモ帳でWindows上のファイルを開く

    cmd.exe /c dir

    Windowsのコマンドプロンプトで dir コマンドを実行

    powershell.exe -Command “Get-Process”

    WindowsのPowerShellで Get-Process コマンドを実行

    Windowsコマンドのパスは、WSL環境の環境変数 `$PATH` に自動的に追加されています。
    * **WindowsからWSLコマンドを実行**: コマンドプロンプトやPowerShellから、`wsl` コマンドを使ってWSL内のコマンドを実行できます。
    cmd
    wsl ls -l /home/your_username

    WSL上のホームディレクトリの内容をリスト表示

    wsl git status

    WSL環境にインストールされたgitを使って、現在のディレクトリ (または指定したディレクトリ) のgitステータスを確認

    wsl apt update

    WSL内のapt updateを実行

    ``
    これは、WindowsのスクリプトからLinuxのツールを使いたい場合などに便利です。
    * **環境変数の共有**: WindowsとWSLの間で環境変数の一部が共有されます。例えば、Windowsで設定した
    PATH`環境変数の一部がWSL環境でも利用できるようになります。

Docker Desktop with WSL2

Dockerは、コンテナ技術を使ってアプリケーションを開発、デプロイ、実行するためのプラットフォームです。DockerはLinuxカーネルに依存する機能であるため、これまではWindowsでDockerを利用するには、Linux VMを構築するか、Hyper-V上のLinuxKit VMを利用する必要がありました。

しかし、Docker Desktop for WindowsはWSL2をバックエンドとして利用できるようになりました。これにより、DockerコンテナをWSL2の軽量VM上で、Linuxネイティブに近いパフォーマンスで実行できます。

  1. WSL2を有効化し、デフォルトバージョンを2に設定しておきます。
  2. Docker Desktop for Windowsを公式サイトからダウンロードしてインストールします。
  3. Docker Desktopの設定画面で「Use the WSL 2 based engine」オプションが有効になっていることを確認します。

これで、Windowsのターミナル(PowerShell, Command Prompt, Windows Terminalなど)からDockerコマンド (docker run, docker build など) を実行すると、その処理がWSL2上で実行されるようになります。WSL環境内からもDockerコマンドを実行可能です。

GUIアプリケーションの実行 (WSLg)

Windows 11のリリースに合わせて、WSLg (Windows Subsystem for Linux GUI) という機能が導入されました。これは、Linux上で動作するGUIアプリケーションを、追加の設定なしにWindowsのデスクトップ上でシームレスに実行できるようにするものです。Windows 10の一部のバージョンにもバックポートされています。

WSLgを利用するには、Windows 11またはWindows 10 Version 21H2以降が必要です。また、wsl --install コマンドでWSLをインストールした場合、WSLgは自動的に含まれます。手動でインストールした場合は、Windows UpdateでOSを最新の状態に保つ必要があります。

WSLgが有効な環境では、WSL内のターミナルからGUIアプリケーションのコマンドを実行するだけで、そのアプリケーションがWindowsの通常のウィンドウとして起動します。

“`bash

例:Linux上のテキストエディタ (gedit) をインストールして起動

sudo apt update
sudo apt install -y gedit
gedit
``gedit`コマンドを実行すると、しばらく待つとWindowsのデスクトップ上にgeditのウィンドウが表示されます。これは、WSLgがバックグラウンドでWayland/Xサーバー、RDPクライアント、PulseAudioサーバーなどを連携させて実現しています。

これにより、GIMPのような画像編集ソフト、VS Code (Linux版)、Chrome (Linux版) といった様々なGUIアプリケーションをWSL上で利用することが可能になり、WindowsとLinuxの境界がさらに曖昧になりました。

VS Codeとの連携 (Remote – WSL拡張機能)

Microsoftが提供する高機能なコードエディタであるVisual Studio Code (VS Code) は、WSLとの連携機能が非常に優れています。Remote – WSL拡張機能を使うことで、Windows上で動作するVS CodeのUIを使いながら、コードのコンパイルや実行といった処理はすべてWSL環境内で行うという開発ワークフローを確立できます。

  1. WindowsにVS Codeをインストールします。
  2. VS Codeを開き、拡張機能ビュー (Ctrl+Shift+X) で「Remote – WSL」と検索し、インストールします。
  3. WSL環境を起動します。
  4. VS Codeの左下にあるリモートインジケーター(><のようなアイコン)をクリックし、「New WSL Window」または「Connect to WSL」を選択します。これにより、WSLに接続された新しいVS Codeウィンドウが開きます。
  5. WSLに接続されたVS Codeウィンドウで、WSL環境内のフォルダを開いて開発作業を行います。開いたフォルダや実行されるターミナルは、すべてWSL環境内のものです。

この連携機能を使うと、Windowsの快適なGUIでコーディングしながら、Linuxの強力な開発ツールチェーンをバックエンドとして利用できるため、非常に効率的な開発環境を構築できます。デバッグなどもWSL環境内でシームレスに行えます。

トラブルシューティング

WSLの導入や使用中に遭遇する可能性のある一般的な問題と、その解決策をいくつか紹介します。

1. インストール時のエラー

  • エラーコード 0x8007019e: 「Windows Subsystem for Linux」機能が有効になっていません。管理者としてPowerShellを開き、dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart を実行してください。
  • エラーコード 0x80070003 または 0x80370102: 仮想マンプラットフォーム機能が有効になっていないか、BIOS/UEFIで仮想化支援機能が無効になっています。管理者としてPowerShellを開き、dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart を実行し、PCを再起動後、BIOS/UEFI設定で仮想化機能が有効になっているか確認してください。
  • エラー: wsl --install に失敗しました: インターネット接続を確認してください。また、Windowsのバージョンが要件を満たしているか確認してください。Windows UpdateでOSを最新の状態にすることも有効です。

2. WSL2が起動しない、または古いバージョンで動作する

  • wsl --list --verbose でバージョンを確認し、wsl --set-version <DistroName> 2 で明示的にWSL2に設定してみてください。
  • WSL2カーネル更新パッケージがインストールされているか確認してください。インストールされていない場合は、手動インストール手順の項目を参照してダウンロード・インストールしてください。
  • BIOS/UEFI設定で仮想化支援機能が有効になっているか再度確認してください。Hyper-Vなどの他の仮想化ソフトウェアが干渉している可能性もゼロではありませんが稀です。

3. ネットワークの問題

  • WSL2はNAT (Network Address Translation) ネットワークモードを使用するため、Windowsホストとは異なるIPアドレスを持ちます。WSL環境からWindows上のサービスにアクセスしたい場合は、Windows側のIPアドレス(ホスト名 hostname.local または localhost)を使用します。逆(WindowsからWSL上のサービスにアクセス)の場合は、WSLディストリビューションのIPアドレスを確認する必要があります (ip addr show eth0 コマンドなどを使用)。ただし、WSLgが有効な環境やDocker DesktopをWSL2で使用している場合は、localhost 経由でアクセスできることが多いです。
  • 特定のポートがファイアウォールでブロックされていないか確認してください。Windows Defenderファイアウォールで、WSLまたは関連プロセス(vmmem)の通信が許可されているか確認が必要な場合があります。
  • wsl --shutdown を実行してからWSLを再起動すると、ネットワーク設定がリフレッシュされることがあります。

4. ファイルアクセスの遅さ

  • WSL2からWindowsファイルシステム (/mnt/c など) へのアクセスが遅い: これはWSL2の設計上の既知の特性です。パフォーマンスが重要なファイル操作(大量のファイルコピー、Git操作など)は、Linux側のファイルシステム (~/home 以下) で行うことを強く推奨します。VS CodeのRemote – WSL拡張機能を使えば、WindowsのUIで編集しながら、コードはWSL側のファイルシステムに置くという理想的なワークフローを実現できます。
  • WindowsからWSL2ファイルシステム (\\wsl$\...) へのアクセスが遅い: こちらも同様に、ネットワークアクセスとなるため遅い場合があります。

5. その他の問題

  • パスワードを忘れた: ディストリビューションによっては、パスワードをリセットする方法が提供されています。例えばUbuntuの場合、Windowsのコマンドプロンプトで ubuntu config --default-user root と実行してrootユーザーでログインし、passwd your_username コマンドで通常のユーザーのパスワードを設定し直す方法があります。設定変更後は ubuntu config --default-user your_username でユーザーを元に戻すのを忘れないでください。
  • WSL環境が破損した: wsl --unregister <DistroName> で一度アンインストールし、再度インストールするのが最も確実な方法です。ただし、これにより環境内のすべてのデータが失われます。重要なデータは事前にバックアップしておきましょう。
  • Windows TerminalでWSLのプロファイルが表示されない: Windows Terminalを再起動するか、Windows Terminalの設定からプロファイルが自動的に検出される設定になっているか確認してください。

これらのトラブルシューティングを試しても解決しない場合は、Microsoftの公式ドキュメントやWSLのリポジトリのIssue、関連コミュニティで情報を探すことをお勧めします。

まとめ:WSLの進化と将来性

Windows Subsystem for Linux (WSL) は、WindowsとLinuxという二つの強力なOSの壁を取り払い、互いの長所を活かせる画期的な技術です。WSL1の互換レイヤーから、WSL2の軽量仮想マシンへと進化し、その機能とパフォーマンスは飛躍的に向上しました。そしてWSLgの登場により、LinuxのGUIアプリケーションさえもWindows上でシームレスに利用できるようになりました。

開発者にとっては、Windowsの優れたデスクトップ環境、Office製品、幅広いハードウェア互換性といったメリットを享受しながら、Linuxの強力な開発ツール、パッケージマネージャー、コンテナ技術などを自由に利用できるという理想的な環境が手に入ります。Web開発、クラウドネイティブ開発、データサイエンス、さらには組み込み開発など、様々な分野でWSLは開発効率を劇的に向上させることができます。

学習者にとっても、WSLは既存のWindows環境を維持したままLinuxに触れ、コマンドライン操作やシステム管理の基礎を学ぶのに最適な環境です。システムを壊す心配が少なく、気軽に試行錯誤できます。

もちろん、WSLは完全なネイティブLinux環境や従来の仮想マシンとは異なる特性も持っています。特にファイルシステムパフォーマンスや、特定のハードウェアへの直接アクセスなどには制約がある場合があります。しかし、一般的な開発や学習タスクにおいては、これらの制約はほとんど問題にならず、むしろWindowsとの連携性の高さというメリットが大きく上回ることが多いでしょう。

Microsoftは現在もWSLの開発を積極的に続けており、さらなる機能改善やパフォーマンス向上が期待されます。Windows上でLinuxを活用することが、これまで以上に当たり前のことになっていくでしょう。

この記事が、あなたがWSLを理解し、自身の環境に導入し、そして活用していくための一助となれば幸いです。ぜひWSLの世界に飛び込み、その可能性を最大限に引き出してみてください。

参考情報


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール