何番煎じだって話だが備忘録として残しておく.
はじめに
WSLでLinux環境を作ると,デフォルトではWindowsがインストールされているドライブ上にLinuxのファイル本体が配置されてしまう.別 のドライブにLinuxのファイルを配置したい場合は,一度Windowsがインストールされているドライブ上にLinuxをインストールした後に,ファイル一式をexportして任意の場所にimportする必要がある.めんどくさいね.
前提条件
Windows 11で動作確認をした.
Windows 10でもWSL自体は動作するのだが,Windows 10の場合WSLのバージョンが古くなってしまうらしく,これが原因で,WSLで構築したUbuntu環境上で nvidia-smi
でGPUが確認できない問題が発生した.NVIDIAのサイト によれば,CUDA on WSLにはWSL2が必要で,WSL2はWindows 11以降でのサポートになるとのことだったのでWindows 11にアップデートしてから本記事に書いた手順を実行した.
> wsl --version WSL バージョン: 1.1.3.0 カーネル バージョン: 5.15.90.1 WSLg バージョン: 1.0.49 MSRDC バージョン: 1.2.3770 Direct3D バージョン: 1.608.2-61064218 DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windowsバージョン: 10.0.22621.1413
手順
1. 管理者としてTerminalを開く
2. インストールできるディストリビューションの一覧を確認する
> 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_8_5 Oracle Linux 8.5 OracleLinux_7_9 Oracle Linux 7.9 SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4 openSUSE-Leap-15.4 openSUSE Leap 15.4 openSUSE-Tumbleweed openSUSE Tumbleweed
3. 任意のDistributionをInstall
ここでは Ubuntu-22.04
をinstallする.
> wsl --install -d Ubuntu-22.04
4. installできたことを確認
> wsl -l -v NAME STATE VERSION * Ubuntu-22.04 Stopped 2
> wsl uname -r 5.15.90.1-microsoft-standard-WSL2
5. 任意のDriveにexportする
> wsl --export Ubuntu-22.04 {file_name}.tar
6. 一度installしたUbuntu-22.04をuninstallする
> wsl --unregister Ubuntu-22.04
7. 任意のPathにimportする
> wsl --import {distro_name} {import_path} {file_name}.tar
8. (Optional) ログインユーザを変更する
何故かimportするとログインユーザが root
に変更される.これが嫌な場合はログインユーザを変更する.
Ubuntu-22.04上で以下のように /etc/wsl.con
ファイルを作成して何度かログインし直すと変更される. wsl --shutdown
してもすぐには反映されず,一定時間待つ必要があるようだった.謎.
cat << EOF > /etc/wsl.conf [user] default=user-name EOF