WSL2 で複数の Ubuntu ディストリビューションを構築する方法

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

タグ: WSL2 Docker Ubuntu Windows Container

6月20日 22:39 投稿