seri::diary

日常

WSLでLinux環境を構築してから任意のドライブに引っ越すまでの手順

何番煎じだって話だが備忘録として残しておく.

はじめに

WSLでLinux環境を作ると,デフォルトではWindowsがインストールされているドライブ上にLinuxのファイル本体が配置されてしまう.別 のドライブにLinuxのファイルを配置したい場合は,一度Windowsがインストールされているドライブ上にLinuxをインストールした後に,ファイル一式をexportして任意の場所にimportする必要がある.めんどくさいね.

前提条件

Windows 11で動作確認をした.

Windows 10でもWSL自体は動作するのだが,Windows 10の場合WSLのバージョンが古くなってしまうらしく,これが原因で,WSLで構築したUbuntu環境上で nvidia-smiGPUが確認できない問題が発生した.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