やりたいこと
何かの開発環境などを構築する際、既存の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(管理者権限)への追加を実施している。
$ 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(※編集には管理者権限が必要)。
[user]
default = wsl-user
[interop]
appendWindowsPath = false
起動時の初期ディレクトリをホームディレクトリにする。
$ echo 'cd ~' >> ~/.bashrc
WindowsのPATHを反映しないようにしたが、ディレクトリをエクスプローラで開くexplorer.exe .
などは使いたいので、それは個別に設定する。また、vscodeを用いるため、そのパスも通す。
> where code <-- vscodeのパス確認
WSL側でパスを通す。vscodeのパスは上記で確認したものに置き換える。
$ 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
これで下記コマンドが使用可能になる。
$ explorer.exe [ディレクトリ] <---- ディレクトリをWindowsのエクスプローラで開く
$ code [ディレクトリ] <---- ディレクトリをvscodeで開く
ここまで来たら一旦WSLを再起動する。
> wsl -t dev-env-u2204
> wsl -d dev-env-u2204
あとはパッケージの最新化などをすれば完了。(※オブション-q
は詳細を省略しメッセージ量を減らす。-y
はYES/NOの回答を省略する)
$ sudo apt update -q && sudo apt upgrade -yq
3.おまけ
毎度explorer.exe .
と入力するのは面倒くさいので、エイリアスを設定する。
$ echo alias ee=\'explorer.exe .\' >> ~/.bashrc
$ source ~/.bashrc <---- 有効にするためシェルを再読み込み
こうすると、ee
と入力するだけでexplorer.exe .
が実行される。そのほか、よく使うオプションを省略できるよう設定したりもできるので、エイリアスは覚えておくと少し幸せになる。
★ここまでの設定を毎度実行するのはまあまあめんどくさいので、シェルスクリプトなどを用いて一発で済むようにしておくのがおすすめ。
->(追記)この記事でスクリプト例を公開しました。