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で好きなディストリビューションをインストールして、その上でアプリを動かすことができます。
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ファイルは削除して良いです。
コメント