WSL2 に複数の Ubuntu 環境を構築する手順
WSL2 (Windows Subsystem for Linux 2) 上で複数の Ubuntu バージョンを動作させる方法について説明します。Docker を利用して別の Ubuntu バージョンのコンテナを作成し、それを WSL2 にインポートする方法を紹介します。
1. Docker イメージの準備
まず、Docker を利用して目的の Ubuntu バージョンを取得します。以下のように build.sh スクリプトを作成して、Docker リポジトリを設定します。
# build.sh
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
スクリプトを実行します。
sudo sh ./build.sh
2. Docker のインストールと起動
Docker をインストールします。
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
インストールが完了したら、動作確認として hello-world を実行します。
sudo docker run hello-world
3. 目的の Ubuntu コンテナの作成
例として、Ubuntu 16.04 のコンテナを取得して作成します。
sudo docker pull ubuntu:16.04
コンテナを起動します。
sudo docker run -it ubuntu:16.04 /bin/bash
作成したコンテナの一覧を確認するには以下のコマンドを使用します。
docker ps -a
4. コンテナを tar ファイルとしてエクスポート
コンテナを WSL2 にインポートするために、tar ファイルとしてエクスポートします。
container_id=$(docker container ls -a | grep ubuntu:16.04 | awk '{print $1}')
sudo docker export $container_id > /mnt/c/temp/ubuntu1604.tar
※事前に Windows 側に C:\temp フォルダを作成しておく必要があります。
5. tar ファイルを WSL2 にインポート
PowerShell を使用して WSL2 に tar ファイルをインポートします。
cd C:\temp
mkdir E:\wslDistroStorage\ubuntu1604
wsl --import Ubuntu-16.04 E:\wslDistroStorage\ubuntu1604 .\ubuntu1604.tar
インポート後、以下のコマンドで結果を確認します。
wsl -l -v
6. デフォルトユーザーの設定
新規ユーザーを作成し、WSL2 起動時のデフォルトユーザーを変更します。
NEW_USER=ztl
useradd -m -G sudo -s /bin/bash "$NEW_USER"
passwd "$NEW_USER"
/etc/wsl.conf に以下の内容を追加してデフォルトユーザーを設定します。
tee /etc/wsl.conf <<EOF
[user]
default=${NEW_USER}
EOF
WSL2 を再起動して、新規ユーザーでログインします。
7. sudo 権限の設定
ユーザーに管理者権限を付与するには、sudo グループに追加するか、visudo コマンドで設定ファイルを編集します。
sudo visudo
以下の行を追加してください。
username ALL=(ALL) ALL