WSL2の仕組みをまとめてみる

スポンサーリンク
環境構築
スポンサーリンク

LLM関連を試すのにUbuntuを触らざるを得なくなりそうなので、WSL2のUbuntuの仕組みを勉強しなおしてみました。私自身がほぼ素人なので、初めてWSL2を触る人でも分かりやすいようにまとめていきます。間違った記載があったら教えてください。

WSL2とは何なのか?

WSL2はWindows Subsystem for Linux 2の略で、Windows10やWindows11上でLinuxを動かすことができるシステムです。WSL2を使うことで、WindowsのPCでLinuxのコマンドやアプリケーションを使うことができます。WSL2はWindows11では標準で搭載されていて、Hyper-VというWindowsの機能を通して、ハードウエアとの情報の入出力を行います。

UbuntuはLinuxのOSの一つで、サーバーやクラウド環境で非常に幅広く使われています。WSL2上にUbuntuをインストールすることにより、WindowsでUbuntuの強力なシステムが使えるようになります。Windowsには元々WSL1というシステムがありましたが、WSL1はLinuxのシステムコールをWindowsのシステムコールに変換してから実行していたため、速度が遅く、また、一部で互換性がないという問題点がありました。一方でWSL2ではHyper-V上に直接仮想マシンを作成して実行できるので、軽量でLinuxのフル機能を使えるようになりました。

下にWindows11上でのWSL2の構成概略図を示します。Ubuntuなどはディストリビューションと呼ばれています。Linux OSでLinuxカーネルと追加のソフトウエアがパッケージとなったものをディストリビューションと呼ばれています。WSL2で好きなディストリビューションをインストールして、その上でアプリを動かすことができます。

Windows11上でのWSL2の構成概略図

WSL2でのディストリビューションの管理

WSL2でインストール済みのディストリビューションは以下のコマンドでWindowsターミナルなどから確認できます。ここで、–listは-l、–verboseは-vとしても同じ意味です。

wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         2
  Ubuntu-22.04    Stopped         2

上記でNAMEはディストリビューションの名称、STATEは状態を示します。VERSIONの2はWSL2であることを示しています。Ubuntu-18.04の前のアスタリスク(*)はデフォルトのディストリビューションを示しています。

また、インストール可能なディストリビューション一覧は以下のコマンドで出力できます。ここで–onlineは-oとしても同じです。

wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'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_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
openSUSE-Leap-15.5                     openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed                    openSUSE Tumbleweed

以下にディストリビューションのインストール、デフォルトへの設定、アンインストールのコマンドを示します。なお、<Distro>にはディストリビューションの名前を入力します。

# ディストリビューションのインストール
wsl --install -d <Distro>

# ディストリビューションをデフォルトに設定
wsl --set-default <Distro>

# ディストリビューションのアンインストール
wsl --unregister -d <Distro>

指定したディストリビューションの起動は以下のように行います。ここで、ディストリビューションの名前を省略して単にwslとするとデフォルトが起動します。

wsl -d <Distro>

例えば、Ubuntu22.04を起動するときは以下のようにします。

wsl -d Ubuntu-22.04
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.90.3-microsoft-standard-WSL2 x86_64)

WSL2でのドライブ管理(移動・コピー)

WSL2ではLinuxのファイルやアプリは仮想ハードディスク内に保存されます。デフォルトではそれはWindowsのシステムドライブ内に置かれるので、WSL2上で大規模言語モデル(LLM)のような巨大なライブラリをセットアップしようとすると仮想ハードディスクがCドライブを圧迫してしまうことになります。

今回は、開発で使えるUbuntu仮想環境の物理的な使用するストレージの変更方法とその方法を応用したコピー方法をまとめます。

最初にWSL2のディストリビューションを停止します。

wsl --shutdown

ディストリビューションの名前を確認します。

wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-22.04    Stopped         2
  Ubuntu-18.04    Stopped         2

移動、またはコピーするディストリビューションをtarファイルに書き出します。例えば、今回はUbuntu-22.04をDドライブのUsersのフォルダの中に書き出します。

wsl --export Ubuntu-22.04 D:\Users\backup.tar
エクスポートが進行中です。これには数分かかる場合があります。
この操作を正しく終了しました。

これでバックアップできました。

続いて、このバックアップを元にDドライブの中にUbuntuをインポートします。もし、Cドライブのディストリビューションが不要なら、この段階で、削除します。

# ディストリビューションを削除する場合
wsl --unregister -d Ubuntu-22.04

今回は削除せず、DドライブのUsersのUbuntuフォルダの中に別名でUbuntu22.04のコピーを作ります。

wsl --import Ubuntu-22.04_2 D:\Users\Ubuntu D:\Users\backup.tar
インポート中です。この処理には数分かかることがあります。
この操作を正しく終了しました。

確認してみます。

wsl --list --verbose
  NAME              STATE           VERSION
* Ubuntu-22.04      Stopped         2
  Ubuntu-18.04      Stopped         2
  Ubuntu-22.04_2    Stopped         2

コピーできました。以下のコマンドで起動できます。

wsl -d Ubuntu-22.04_2

新しいディストリビューションができたら移動、コピーに使ったtarファイルは削除して良いです。

コメント