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