【開発環境 #2】WSL2、Ubuntuのアクセス方法とインストール場所変更

前回でWSL2の有効化とUbuntuのインストールが済みました。今回はUbuntuのインストールフォルダや設定を見ていきます。

環境
Windows
10 home (20H2)
WSL
2
Ubuntu
20.04 LTS

Ubuntuのディレクトリにファイルエクスプローラーでアクセスする

Ubuntuが起動されている状態で、Windowsのエクスプローラーのアドレス欄に\\wsl$\Ubuntu-20.04と入力することで、WSL2のUbuntuのディレクトリにアクセスができます。今後、アクセスの度にアドレスを入力するのは手間なので、\\wsl$をエクスプローラーのクイックアクセスに登録しておきます。

その、\\wsl$\Ubuntu-20.04にアクセスすると、おなじみのディレクトリ構成が展開されました。

Ubuntu-20.04/
|-- boot/
|-- dev/
|-- .../
|-- bin
|-- init
|-- ...
`-- sbin

Ubuntuにターミナルでアクセスする

WindowsスタートメニューからUbuntu-20.04をクリックでUbuntu上のターミナルが起動しますが、今回はWindows Terminalを使います。

  1. スタートメニューからWindows Terminalを起動
  2. ツールバー右端の「∨」をクリック
  3. Ubuntu-20.04をクリック

以上で、ターミナルでアクセスできました。

初期ディレクトリがおかしい?

Windows Terminalでアクセスすると、Ubuntu起動時の初期ディレクトリパスが/mnt/c/Users/nameとなっています。ファイルエクスプローラーでは\\wsl$\Ubuntu-20.04でしたので、アドレスに違いがあるようです。どうやら、ディレクトリのマウントが原因のようです。cdによる\\wsl$\Ubuntu-20.04への移動で直接アクセスすることは可能ですが、毎回は面倒なのと、マウントでのアクセスはパフォーマンス的にも微妙なようなので対処します。

初期ディレクトリパスの変更

Windows Terminalでの起動時の初期ディレクトリを変更します。

  1. スタートメニューからWindows Terminalを起動
  2. ツールバー右端の「∨」をクリック
  3. 設定をクリック
  4. 左サイドメニュー最下部の「JSONファイルを開く」をクリック
  5. settings.jsonが既定エディタで開かれる
  6. profiles > list のUbuntu部分に以下のコードを追加
settings.json
{
    "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
    "hidden": false,
    "name": "Ubuntu-20.04",
    "source": "Windows.Terminal.Wsl",
+   "startingDirectory": "\\\\wsl$\\Ubuntu-20.04\\home\\name"
}

以上で、Windows TerminalでUbuntuを起動した際の初期ディレクトリが//wsl$/Ubuntu-20.04/home/nameになりました。今回はsettings.jsonを直接編集しましたが、以下の方法でも変更は可能です。

  1. スタートメニューからWindows Terminalを起動
  2. ツールバー右端の「∨」をクリック
  3. 設定をクリック
  4. 左サイドメニューから「Ubuntu-20.04」をクリック
    1. 右に表示された画面の「開始ディレクトリ」を編集

Ubuntuがインストールされた場所は?

\\wsl$\Ubuntu-20.04のファイルはC:\Users\<name>\AppData\Local\Packages\以下にあるようです。

Ubuntuを別ドライブへ移動させる

あまりCドライブを使用したくないので、D:\wslへ移動させることにします。以下、Windows TerminalでPowerShellを起動して実行。

WSLを終了させる

> wsl --shutdown

状態確認

STATEがStoppedになっていることを確認する。

> wsl -l -v

  NAME                   STATE           VERSION
* Ubuntu-20.04           Stopped         2

Ubuntu-20.04をエクスポートする

エクスポート先はD:\Tempとします。

# wsl <コマンド> <ディストリビューション名> <エクスポート先>
> wsl --export Ubuntu-20.04 D:\Temp\Ubuntu-20.04.tar

現ディストリビューション(Ubuntu-20.04)を解除する

# wsl <コマンド> <ディストリビューション名>
> wsl --unregister Ubuntu-20.04

ディストリビューションをインポートする

先ほど、エクスポートしたものをインポートします。

# wsl <コマンド> <ディストリビューション名> <インポート場所> <ファイル名> <オプション>
> wsl --import Ubuntu-20.04 D:\wsl\Ubuntu-20.04 D:\Temp\Ubuntu-20.04.tar

D:\Temp\Ubuntu-20.04.tarはもう必要が無いので削除しておきます。

Ubuntu起動時のユーザーがrootになる

場所を移動した影響からか、起動時ユーザーがrootになってしまったので、再設定をします。

> Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };
> WSL-SetDefaultUser Ubuntu-20.04 <UserName>

おわりに

WSL2とUbuntuの設定が完了しました。次回はDockerをインストールしていきます。