🐧

Windows 11 で WSL2 (Windows Subsystem for Linux) を設定

に公開

この記事は、WSL (Windows Subsystem for Linux) でディストリビューションを実行可能にするまでの手順となる。その後のディストリビューションの設定には触れていない。

ディストリビューションとは

本記事における「ディストリビューション」とは、Linux ディストリビューションのことを指す。具体的には Debian、Ubuntu、Arch Linux などが該当する。

WSL で利用するディストリビューションは利用者の好みや用途によって異なるため、本文中では Debian や Ubuntu といった固有名詞は極力用いず、単に「ディストリビューション」と表記している。自身が利用している、あるいは想定しているディストリビューションに適宜読み替えてほしい。

WSL を有効にする

管理者権限でコマンドプロンプトまたはターミナル、PowerShell を立ち上げ、以下のコマンドを実行する。

Linux 用 Windows サブシステムを有効化する:

PS C:\Users\hoge> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

続いて仮想マシンの機能を有効化する:

PS C:\Users\hoge> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

WSL 2 を既定のバージョンとして設定する:

PS C:\Users\hoge> wsl --set-default-version 2

WSL をアップデートする:

PS C:\Users\hoge> wsl --update
更新プログラムを確認しています。
Linux 用 Windows サブシステムの最新バージョンは既にインストールされています。

wsl コマンドがない場合は install the Windows Subsystem for Linux からインストールしたあとに再度実行する。

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

インストール可能なディストリビューションを確認する:

PS C:\Users\hoge> wsl -l -o
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
OracleLinux_8_5                        Oracle Linux 8.5
OracleLinux_7_9                        Oracle Linux 7.9
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
openSUSE-Leap-15.4                     openSUSE Leap 15.4
openSUSE-Tumbleweed                    openSUSE Tumbleweed

好きなディストリビューションをインストールする:

PS C:\Users\hoge> wsl --install Debian

ディストリビューションのインストールが完了すると自動でディストリビューションが実行され、初期ユーザーの設定となる。

インストールされているディストリビューションを確認する

PS C:\Users\hoge> wsl -l -v
  NAME      STATE           VERSION
* Debian    Running         2

ディストリビューションの boot 設定

WSL にインストールしたディストリビューションの初期状態では、sytemctl などのコマンドが実行できない。sytemctl なら service コマンドを使用すればいいが、その他にも使用できないコマンドがあるので、boot 設定を変更する。

ディストリビューションにログインする:

PS C:\Users\hoge> wsl

ディストリビューション名を指定する場合:

PS C:\Users\hoge> wsl -d Debian

ここからは、ディストリビューション側になるので注意。
ディストリビューションを実行したら /etc/wsl.conf を書き換える。
user-name の部分はディストリビューションをインストールした時に設定したユーザーネームに置き換える。

/etc/wsl.conf で変更している内容は以下の通り。

  • systemctl コマンドを使えるようにする
  • デフォルトのログインユーザーを指定
  • Windows のパスを $PATH 環境変数に追加しないようにする
hoge@hostname:~$ sudo cat << EOF > /etc/wsl.conf
[boot]
systemd=true
[user]
default=user-name
[interop]
appendWindowsPath=false
EOF

完了したらディストリビューションからログアウトする。

hoge@hostname:~$ exit

Windows に戻ったら WSL を再起動させる。

PS C:\Users\hoge> wsl --shutdown

WSL の再起動

基本的には wsl --shutdown を実行してから wsl を再度実行すればよいが、net コマンドでも同じことができる

PS C:\Users\hoge> net stop LxssManager
PS C:\Users\hoge> net start LxssManager

エクスプローラーやエディターでディストリビューションにアクセス

エクスプローラーでディストリビューションにアクセスしたい場合は、左ペインの「🐧Linux」をクリックすればよい。
VS Code、PhpStorm などのエディターでディストリビューション内にアクセスしたいときは、\\wsl$\Debian という Path にアクセスする。Path でのアクセスは、エクスプローラーでも可能。

VS Code の結合

WSL は、VS Code から直接使用できる。
VS Code をインストールしたら、Windows Terminal から拡張機能をインストールする。

PS C:\Users\hoge> code -install-extension ms-vacode-remote.remote-wsl

WSL を C ドライブから移行する

PS C:\Users\hoge> wsl --export Debian debian.tar
PS C:\Users\hoge> wsl --unregister Debian
PS C:\Users\hoge> cd D:
PS C:\Users\hoge> mkdir WindowsSubsystemForLinux
PS C:\Users\hoge> wsl --import Debian WindowsSubsystemForLinux C:\Users\KQL\debian.tar --version 2

参考サイト一覧

Discussion