1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

まっさらなWSL2環境を新たに作成する

Last updated at Posted at 2024-05-02

やりたいこと

何かの開発環境などを構築する際、既存のWSL環境で構築してしても良いが、まっさらな環境から作成していく方が何かと都合が良いことが多い。

用途別に新しいWSL環境を作成し、目的に応じて切り替える。

環境

実行環境:Windows 11 23H2
構築する環境:Ubuntu 22.04

手順

0.現在の状況を確認する

コマンドプロンプトで、wsl -l -v を実行することで現在インストールされているディストリビューションを一覧で確認できる。
下記は、 Microsoft Store からインストールした Ubuntu が1つだけある状態。

コマンドプロンプト
> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2

1.環境の名前とインストールするパスを決める

ここでは、環境名は dev-env-u2204 、インストール先は下記にする(フォルダを作成しておく)。

%HOMEPATH%\wsl\env\dev-env-u2204

2.Ubuntu のイメージをダウンロードする

Ubuntu の公式からダウンロードする(目的に合ったバージョンを選ぶ)。

WSL 向けのイメージは *-wsl.rootfs.tar.gz で終わっているものからCPUに合わせて物を選ぶ。x86 系の 64 bit であれば amd64 でOK。これを適当なフォルダにダウンロードする(今回は %HOMEPATH%\Downloads\ )。

3.Ubuntu のイメージをインポートする

コマンドプロンプトで下記コマンドを実行する。

コマンドプロンプト
> wsl --import dev-env-u2204 %HOMEPATH%\wsl\env\dev-env-u2204 %HOMEPATH%\Downloads\ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz --version 2

これは、下記のような内容になっている

コマンドプロンプト
> wsl --import <環境名> <インストール先のパス> <ダウンロードしたイメージのパス> --version <WSLのバージョン>

確認。dev-env-u2204 が追加されているのがわかる。(*が付いているのはデフォルト。wsl --set-default <ディストリビューション名>で変更可能。)

コマンドプロンプト
> wsl -l -v
  NAME             STATE           VERSION
* Ubuntu           Running         2
  dev-env-u2204    Stopped         2

確認出来たら以下のコマンドで起動する(PowerShell でも可)。

コマンドプロンプト
> wsl -d dev-env-u2204

使用に向けた準備

1.一般ユーザーの作成

作成直後はrootユーザーしか存在しないため、一般ユーザーを作成する。ユーザー名は何でも良いが、ここではwsl-userとする。

下記では、ユーザーの作成・パスワードの設定・sudo(管理者権限)への追加を実施している。

WSL
$ useradd -m -s $(which bash) wsl-user
$ passwd wsl-user
$ usermod -G sudo wsl-user

WSL起動時、-uオプションでユーザー指定でログインできる。

コマンドプロンプト
> wsl -d dev-env-u2204 -u wsl-user

2.初期設定

毎回のユーザー指定が面倒なので、デフォルトユーザーを設定する。また、起動時にWindows側のPATH(環境変数)を引き継がないように設定する。
どちらも、/etc/wsl.confを以下のように設定すればOK(※編集には管理者権限が必要)。

/etc/wsl.conf (WSL)
[user]
default = wsl-user
[interop]
appendWindowsPath = false

起動時の初期ディレクトリをホームディレクトリにする。

WSL
$ echo 'cd ~' >> ~/.bashrc

WindowsのPATHを反映しないようにしたが、ディレクトリをエクスプローラで開くexplorer.exe .などは使いたいので、それは個別に設定する。また、vscodeを用いるため、そのパスも通す。

コマンドプロンプト
> where code      <-- vscodeのパス確認

WSL側でパスを通す。vscodeのパスは上記で確認したものに置き換える。

WSL
$ echo export PATH=\$PATH:/mnt/c/WINDOWS/ >> ~/.bashrc
$ echo export PATH=\$PATH:\"/mnt/c/Users/[user_name]/AppData/Local/Programs/Microsoft VS Code/bin\" >> ~/.bashrc

これで下記コマンドが使用可能になる。

WSL
$ explorer.exe [ディレクトリ]    <---- ディレクトリをWindowsのエクスプローラで開く
$ code [ディレクトリ]    <---- ディレクトリをvscodeで開く

ここまで来たら一旦WSLを再起動する。

コマンドプロンプト
> wsl -t dev-env-u2204
> wsl -d dev-env-u2204

あとはパッケージの最新化などをすれば完了。(※オブション-qは詳細を省略しメッセージ量を減らす。-yはYES/NOの回答を省略する)

WSL
$ sudo apt update -q && sudo apt upgrade -yq

3.おまけ

毎度explorer.exe .と入力するのは面倒くさいので、エイリアスを設定する。

WSL
$ echo alias ee=\'explorer.exe .\' >> ~/.bashrc
$ source ~/.bashrc    <---- 有効にするためシェルを再読み込み

こうすると、eeと入力するだけでexplorer.exe .が実行される。そのほか、よく使うオプションを省略できるよう設定したりもできるので、エイリアスは覚えておくと少し幸せになる。


★ここまでの設定を毎度実行するのはまあまあめんどくさいので、シェルスクリプトなどを用いて一発で済むようにしておくのがおすすめ。
->(追記)この記事でスクリプト例を公開しました。

参考サイト

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?