🐧

【WSL2】Microsoft Storeが使えない環境でもWSL2を使いたい!

2023/11/24に公開

力を抜いて、ゆっくりと息を吸って~はいて~…体も頭もダラ~っとしてリフレッシュ♪
こんにちは、$@(ダラ~っと)です(๑Ò﹃ Ó๑)ゝ

はじめに

Windows Subsystem for Linux2(WSL2)といえば、Windows 10/11で利用可能なLinux環境です。
検証環境やビルド等で、Linuxが欲しい時に気軽に使えて重宝しています。
https://learn.microsoft.com/ja-jp/windows/wsl/about

Microsoft Store以外からインストールする方法が一般的だと思いますが、諸事情によりMicrosoft Storeが使えない場合のインストール方法をメモします。
また、同じバージョンのLinux ディストリビューションを使用できるようにします。
(社内的にDockerが気軽に使えないので苦労します。。。)

何がわかる?

  • Microsoft Storeを使わないwsl2のインストール方法

環境

  • Windows 10
    • 必要環境要件
      • x64システムの場合: バージョン 1903 以降 (ビルド 18362.1049 以降)
      • ARM64システムの場合: バージョン 2004 以降 (ビルド 19041 以降)
  • Windows 11
    • 手順5からでOK
    通常の手順はこちら

    Windows11ではPowerShell(コマンドプロンプトでも可)を起動して、下記のコマンドを実行するだけで、UbuntuがインストールされたWSL2環境が使えるようになります。

    wsl --install
    

    上記のコマンドで、下記の4つが実行されます。

    1. 手順 > 1. Windows の機能の有効化または無効化の設定
    2. 手順 > 2. WSL2用Linuxカーネルをインストールする
    3. 手順 > 3. WSL2を既定のバージョンに設定する
    4. Ubuntuディストリビューションをダウンロード・インストールする

私は、Windows10環境で調査して、手順をまとめるのにWindows11を使用しました。

手順

BIOSの設定

- `Virtualization Technology` を `Enabled` に変更する。
	- 機種によりますが、起動中にF2、F10、DELを押して入れなかったらgoogle先生に聞くスタイル

Windows の機能の有効化または無効化の設定

  1. 管理者権限でPowerShell(コマンドプロンプトでも可)で起動して、下記コマンドを実行する。
    • Windowsキー + Rpowershell または cmdを入力して Ctrl + Shift + Enter
# `Hyper-V` または `Windows ハイパーバイザー プラットフォーム`を有効
dism.exe /online /enable-feature /featurename:HypervisorPlatform /all /norestart

# `Linux用Windowsサブシステム` または `Windows Subsystem for Linux` を有効
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# `仮想マシンプラットフォーム`を有効
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
メモ:dism.exeのfeaturename(Windowsの機能)の一覧取得コマンド
dism /online /get-features
GUIで設定する場合はこちら
  1. Windows の機能の有効化または無効化 を開く。

    • Windowsキー + ROptionalFeatures を入力してEnter
      Windows の機能の有効化または無効化の設定の起動
  2. 下記にチェックを入れ「OK」をクリックする。

    • Hyper-V または Windows ハイパーバイザー プラットフォーム
    • Linux用Windowsサブシステム または Windows Subsystem for Linux
    • 仮想マシンプラットフォーム
      Windows の機能の有効化または無効化の設定

WSL2用Linuxカーネルをインストールする

  1. x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ[1]をダウンロードして実行する。
  2. 下記の画面が表示されればOK
    WSL2 Linux カーネル更新完了

WSL2を既定のバージョンに設定する

  1. 管理者権限でPowerShell(コマンドプロンプトでも可)で起動して、下記コマンドを実行する。
    • Windowsキー + Rpowershell または cmdを入力して Ctrl + Shift + Enter
wsl --set-default-version 2

WSLのコンポーネントを更新する

  1. 管理者権限でPowerShell(コマンドプロンプトでも可)で起動して、下記コマンドを実行する。
    • Windowsキー + Rpowershell または cmdを入力して Ctrl + Shift + Enter
wsl --update

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

  1. ディストリビューションのダウンロードから、任意のLinux ディストリビューションをダウンロードする。
  1. 以降の作業で解凍フォルダ名を指定したいため、管理者権限でPowerShellで起動する。
    • Windowsキー + Rpowershellを入力して Enter
  2. 作業フォルダを作成して、上記1でダウンロードしたファイルをコピーする。
mkdir C:\wsl2\work
cd C:\wsl2\work
mv $env:USERPROFILE\Downloads\CanonicalGroupLimited.UbuntuonWindows_2004.2021.825.0.AppxBundle .\
  1. AppBundleを解凍して移動する。
    • Microsoft Storeが使用可能なら実行してインストールできる。
Rename-Item .\CanonicalGroupLimited.UbuntuonWindows_2004.2021.825.0.AppxBundle .\ubuntu2004.zip
Expand-Archive .\ubuntu2004.zip .\ubuntu2004
cd ubuntu2004
  1. ディストリビューションをインストールする
    下記コマンドを実行して、Linux ディストリビューションのユーザー名とパスワードを設定する。
Rename-Item .\Ubuntu_2004.2021.825.0_x64.appx .\ubuntu2004x64.zip
Expand-Archive .\ubuntu2004x64.zip .\ubuntu2004x64
.\ubuntu2004x64\ubuntu.exe
実行結果
> .\ubuntu2004x64\ubuntu.exe
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: xxxxx
New password: xxxxx
Retype new password: xxxxx
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Fri Nov 24 06:50:04 JST 2023

  System load:  0.22                Processes:             9
  Usage of /:   0.1% of 1006.85GB   Users logged in:       0
  Memory usage: 4%                  IPv4 address for eth0: 172.29.168.176
  Swap usage:   0%

1 update can be applied immediately.
To see these additional updates run: apt list --upgradable


The list of available updates is more than a week old.
To check for new updates run: sudo apt update


This message is shown once a day. To disable it please create the
/home/user/.hushlogin file.
user@hoge:~$
wslコマンドを用いたインストール
  1. コマンドプロンプトを起動して、下記コマンドを実行する。
    • Windowsキー + Rcmd を入力して Enter
# インストールできる有効なディストリビューションの一覧表示
wsl --list --online

# インストール
# wsl --install -d <NAME>
# Ubuntu-22.04なら下記
wsl --install -d Ubuntu-22.04
Microsoft Storeを用いたインストール

Microsoft Storeが使用可能なら、希望するLinuxディストリビューションを検索してインストールします。
詳細は、公式の手順 6 - 選択した Linux ディストリビューションをインストールするを参照してください。

  1. Linux ディストリビューションから抜ける
user@hoge:~$ exit
  1. (任意)作業フォルダを削除する
cd C:\wsl2
rmdir /s /q .\work

同一バージョンのLinux ディストリビューションを複数起動できるようにする

Dockerのように同一バージョンのLinuxを用途毎に分けたい時があります。
その場合は、WSL2のExport/Import機能を使用して実現します。

  • 準備
# 作業フォルダ(export:BaseのLinuxのtarファイル、instance:各用途のLinux)
mkdir C:\wsl2\export
mkdir C:\wsl2\instance
  1. WSLディストリビューションの一覧表示
    インストールされているディストリビューション名を確認する
wsl -l -v

実行結果:

NAME            STATE           VERSION
* Ubuntu          Running         2
  1. WSLディストリビューションのエクスポート
    上記1で確認したNAMEを指定してエクスポートする。
    ※コピー元になるため、最低限のアプリや.bashrc等を整備してからエクスポートしておくと環境を作った後、二度手間にならなくて良いかなと思います。
# wsl --export <WSL_NAME> <EXPORT_TAR_PAHT>
wsl --export Ubuntu "C:\wsl2\export\Ubuntu2004.tar"
  1. WSLインスタンスのインポート
    インポート後の名称と格納先、エクスポートしておいたディストリビューションを指定してインポートする。
# wsl --import <WSL_NAME> <IMPORT_DIR_PAHT> <IMPORT_TAR_PAHT>
wsl --import Ubuntu2004_foo "C:\wsl2\instance\Ubuntu2004_foo" "C:\wsl2\export\Ubuntu2004.tar"
  1. 指定したWSLディストリビューションにユーザーとしてログイン
    ディストリビューション名を指定してログインする。
    ユーザーは、エクスポートしたディストリビューションと同一です。
# wsl -d <WSL_NAME> -u <USER_NAME>
wsl -d Ubuntu2004_foo -u user
  1. WSLインスタンスの削除
    WSL上から削除します。
    ディストリビューションのファイルが残ってしまうため、一緒に削除しておくと無駄な容量を食うことがないです。
# wsl --unregister <WSL_NAME>
# 上記でインポートした場合は、インポートしたファイルも削除する
wsl --unregister Ubuntu
rmdir /s /q C:\wsl2\instance\Ubuntu

簡単なバッチファイルですが、上記の操作を行うgithubに格納しました。
cmdフォルダのパスを環境変数に設定しておくといつでも呼べて便利(になるかもしれない)
https://github.com/spluslat/wsl/blob/main

おわりに

これで気軽にLinuxが使えるようになったはず。
(こんな特殊な環境の方がいるのかわかりませんが・・・)

参考

https://learn.microsoft.com/ja-jp/windows/wsl/install
https://learn.microsoft.com/ja-jp/windows/wsl/install-manual

脚注
  1. 手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする ↩︎

Discussion