WSL2の手動インストール(2021年睦月)


初めに

いつもお読みいただき、ありがとうございます。あと少しですので頑張ります。

WSL2を使えるようにする

PowerShell (Core) を使って作業
- WindowsTerminalからPowerShellを開いて実行する。

準備

sudo を使うので確認

管理者権限でのスクリプト時に便利なので、Scoopで入れておくとよい。

scoop info sudo

インストールされていない場合は追加する。
powershell
scoop install sudo

インストール

1)WSL機能を有効にする

Windows機能として「Linux 用 Windows サブシステム」オプション機能を有効化することで、WSL1/WSL2が使用可能となる。

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

2)仮想マシン機能を有効にする

WSLの実行には「仮想マシン機能」が有効であることが必要。そもそもCPUやファームウェア自体が対応してないと有効化できない。もしうまくいかないときは、自分のマシンスのペックやCPUを調べてみること。

# Windows10のバージョンが新しい(2004)場合は以下のコマンド:
sudo dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# Windows10のバージョンが古い(1903, 1909)場合は以下のコマンド:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart

3)マシン再起動

sudo shutdown /r

4)WSL2 を既定のバージョンとして設定

新しい Linux ディストリビューションをインストールする際の既定バージョンとして WSL2 を設定する。

sudo wsl --set-default-version 2

指定された https://aka.ms/wsl2kernel に行くと、Linux カーネルコンポーネントの更新が必要とのこと。x64用の更新プログラム1をダウンロードし、インストールする。もし、ARM64 マシンを使用している場合は、代わりに ARM64 パッケージ2をダウンロードして使う。

curl https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi --output c:\home\seeds\wsl_update_x64.msi

c:\home\seeds\wsl_update_x64.msi


再設定してみると、警告はでなくなった。

sudo wsl --set-default-version 2

Linux をインストール

まずはbash(Ubuntu)を使えるようにする

最近のwindows10には、標準でbash.exeというコマンドが入っているが、動かそうとすると以下のように表示される。

bash


指定のURLを見ると「Microsoft Store」のLinuxのページ。

「Ubuntu」を選択すると、現時点では20.04が取得できる。

インストール完了。

起動すると、Linuxでのユーザ名と、パスワードの入力を促される。

完了するとubutuのターミナルとなる。

「sudo」は可能だが、パスワードが必要。

動作

状況確認

PowerShell (Core) にて実行。

wsl -l -v

コンソールから使用

PowerShell (Core) のコンソールからbashを起動。

bash

現在のディレクトリにてbashが起動する。


bashにて、ファイルをリスト表示する。LANGはC.UTF-8となっており、そのままでも日本語ファイルパスを表示できる。

ls -l /mnt/c/Users/${USER}/
echo $LANG

ツールを使ってインストール先を選択

LxRunOfflineを利用する。

インストール

scoop search LxRunOffline
scoop install LxRunOffline


Distroファイルを取得する

curl -L https://lxrunoffline.apphb.com/download/Alpine/v3.13 --output c:\home\seeds\alpine-v3.13-root.tar

wsl に導入

# 作成
LxRunOffline install -n Alpine_v3.13 -d C:\opt\wsl2\alpine_v3.13 -f c:\home\seeds\alpine-v3.13-root.tar -r .
# 確認:リスト表示
LxRunOffline list

wsl から確認

wsl -l -v

wsl2 に変換

wsl --set-version Alpine_v3.13 2
wsl -l -v


実行

wsl -d Alpine_v3.13

確認

別のPowerShellを開いて実行。

wsl -l -v

停止

wsl -t Alpine_v3.13
wsl -l -v

トラブル

少し使っていると、トラブルも発生する。特に「マシンのメモリーを使い果たしてしまって、WSL2以外のアプリが動かなくなる」のは深刻。対処法は別記事3に書いたので、参考にして設定変更するとよい。

終りに

あともう少しでDockerが動く。

親記事:WSL2とVSCで作るWindowsでのDocker内開発環境(2021年睦月)