【WSL2】Microsoft Storeが使えない環境でもWSL2を使いたい!
力を抜いて、ゆっくりと息を吸って~はいて~…体も頭もダラ~っとしてリフレッシュ♪
こんにちは、$@(ダラ~っと)です(๑Ò﹃ Ó๑)ゝ
はじめに
Windows Subsystem for Linux2(WSL2)といえば、Windows 10/11で利用可能なLinux環境です。
検証環境やビルド等で、Linuxが欲しい時に気軽に使えて重宝しています。
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. Windows の機能の有効化または無効化の設定
- 手順 > 2. WSL2用Linuxカーネルをインストールする
- 手順 > 3. WSL2を既定のバージョンに設定する
- Ubuntuディストリビューションをダウンロード・インストールする
私は、Windows10環境で調査して、手順をまとめるのにWindows11を使用しました。
手順
BIOSの設定
- `Virtualization Technology` を `Enabled` に変更する。
- 機種によりますが、起動中にF2、F10、DELを押して入れなかったらgoogle先生に聞くスタイル
Windows の機能の有効化または無効化の設定
- 管理者権限でPowerShell(コマンドプロンプトでも可)で起動して、下記コマンドを実行する。
-
Windowsキー + R
→powershell
または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で設定する場合はこちら
-
Windows の機能の有効化または無効化
を開く。-
Windowsキー + R
→OptionalFeatures
を入力してEnter
-
-
下記にチェックを入れ「OK」をクリックする。
-
Hyper-V
またはWindows ハイパーバイザー プラットフォーム
-
Linux用Windowsサブシステム
またはWindows Subsystem for Linux
-
仮想マシンプラットフォーム
-
WSL2用Linuxカーネルをインストールする
- x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ[1]をダウンロードして実行する。
- 下記の画面が表示されればOK
WSL2を既定のバージョンに設定する
- 管理者権限でPowerShell(コマンドプロンプトでも可)で起動して、下記コマンドを実行する。
-
Windowsキー + R
→powershell
またはcmd
を入力して Ctrl + Shift + Enter
-
wsl --set-default-version 2
WSLのコンポーネントを更新する
- 管理者権限でPowerShell(コマンドプロンプトでも可)で起動して、下記コマンドを実行する。
-
Windowsキー + R
→powershell
またはcmd
を入力して Ctrl + Shift + Enter
-
wsl --update
Linuxディストリビューションをインストールする
- ディストリビューションのダウンロードから、任意のLinux ディストリビューションをダウンロードする。
- 以降の作業で解凍フォルダ名を指定したいため、管理者権限でPowerShellで起動する。
-
Windowsキー + R
→powershell
を入力して Enter
-
- 作業フォルダを作成して、上記1でダウンロードしたファイルをコピーする。
mkdir C:\wsl2\work
cd C:\wsl2\work
mv $env:USERPROFILE\Downloads\CanonicalGroupLimited.UbuntuonWindows_2004.2021.825.0.AppxBundle .\
- AppBundleを解凍して移動する。
- Microsoft Storeが使用可能なら実行してインストールできる。
Rename-Item .\CanonicalGroupLimited.UbuntuonWindows_2004.2021.825.0.AppxBundle .\ubuntu2004.zip
Expand-Archive .\ubuntu2004.zip .\ubuntu2004
cd ubuntu2004
- ディストリビューションをインストールする
下記コマンドを実行して、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コマンドを用いたインストール
- コマンドプロンプトを起動して、下記コマンドを実行する。
-
Windowsキー + R
→cmd
を入力して Enter
-
# インストールできる有効なディストリビューションの一覧表示
wsl --list --online
# インストール
# wsl --install -d <NAME>
# Ubuntu-22.04なら下記
wsl --install -d Ubuntu-22.04
Microsoft Storeを用いたインストール
Microsoft Storeが使用可能なら、希望するLinuxディストリビューションを検索してインストールします。
詳細は、公式の手順 6 - 選択した Linux ディストリビューションをインストールするを参照してください。
- Linux ディストリビューションから抜ける
user@hoge:~$ exit
- (任意)作業フォルダを削除する
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
- WSLディストリビューションの一覧表示
インストールされているディストリビューション名を確認する
wsl -l -v
実行結果:
NAME STATE VERSION
* Ubuntu Running 2
- WSLディストリビューションのエクスポート
上記1で確認したNAMEを指定してエクスポートする。
※コピー元になるため、最低限のアプリや.bashrc等を整備してからエクスポートしておくと環境を作った後、二度手間にならなくて良いかなと思います。
# wsl --export <WSL_NAME> <EXPORT_TAR_PAHT>
wsl --export Ubuntu "C:\wsl2\export\Ubuntu2004.tar"
- 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"
- 指定したWSLディストリビューションにユーザーとしてログイン
ディストリビューション名を指定してログインする。
ユーザーは、エクスポートしたディストリビューションと同一です。
# wsl -d <WSL_NAME> -u <USER_NAME>
wsl -d Ubuntu2004_foo -u user
- WSLインスタンスの削除
WSL上から削除します。
ディストリビューションのファイルが残ってしまうため、一緒に削除しておくと無駄な容量を食うことがないです。
# wsl --unregister <WSL_NAME>
# 上記でインポートした場合は、インポートしたファイルも削除する
wsl --unregister Ubuntu
rmdir /s /q C:\wsl2\instance\Ubuntu
簡単なバッチファイルですが、上記の操作を行うgithubに格納しました。
cmdフォルダのパスを環境変数に設定しておくといつでも呼べて便利(になるかもしれない)
おわりに
これで気軽にLinuxが使えるようになったはず。
(こんな特殊な環境の方がいるのかわかりませんが・・・)
参考
Discussion