ubuntu(WSL) の複製

## はじめに

### 本記事の対象となる方

* これから WSL（Windows Subsystem for Linux）上でUbuntuを導入される方
* 既存のUbuntu環境とは別に、同一の環境を複製して使用したいとお考えの方
* 研修・学習用の環境を作成しつつ、本番環境への影響を避けたいとお考えの方

### 導入の経緯

私は現在、大学の学部2年生で、課外活動の一環として情報系の課外活動に所属しております。課外活動内では、新入生（主に1〜2年生）を対象に、Linuxやプログラミングの基礎を学ぶ研修を実施しており、私はそのメンターを担当しております。

この研修では、環境構築から各種ツールのインストールまで、なるべく実践的な形式で進めたいと考えています。しかし、私たちメンターの端末には既に開発環境が整っており、これを初期化してしまうと、現在の業務やプロジェクトに支障を来す恐れがありました。

そこで、「同一のUbuntu環境を複製して使用する」という方法を採用することにしました。本記事では、WSL上でUbuntu環境を新たに構築する手順、既存環境の複製手順、またその中で使用する主要なコマンドの意味についても解説を交えていこうと思います。

### 記事内で出てくる記号について
本記事内では `[]` という記号が出てきます。この記号は、皆さんが任意で決めることができる部分です。例としては、ユーザーネームなどがこれに当てはまります。書きかたは以下のようになっているので、間違えずに変更していただきたいです。

```bash
# これはサンプルコードです。コピーしないでください。
adduser [trainee] # 例： adduser takumi1227
```
この場合、例では takumi1227 という名前を登録しようとしています。
この時に注意すべき点が、 `[]` がついていないということです。 この記事内においては `[]` はあくまで「任意の値であること」を主張している部分であり、変更を前提としています。実際に実行する際は `[]` を消して実行してください。

---

## WSLの確認と導入手順

### 1. WSLのインストール状況を確認する

まずはPowerShellまたはコマンドプロンプトにて、以下のコマンドを実行してください。

```powershell
wsl --list --verbose
```

* エラーが表示された場合、WSLが未インストールですので次の手順へ進んでください
* 既にUbuntuが一つ表示される場合は、その環境の複製を後ほどおこなっていきます

### 2. WSLをインストール（初回のみ）

以下のコマンドをPowerShell（管理者として実行）で入力します。

```powershell
wsl --install
```

再起動が求められた場合は、指示に従ってください。

---

## Ubuntuユーザーの追加と管理者権限の付与

Ubuntu環境が初期化された直後は、`root` ユーザーでログインしている場合があります。このままでは、普段使いとしては不適切なため、一般ユーザーを作成し、必要な権限のみ付与して運用していきます。

### 一般ユーザーの作成

以下のように入力し、任意のユーザー名で新しいユーザーを作成します。

```bash
adduser [trainee] # 例： adduser takumi1227
```

表示される質問に答えてパスワードを設定してください。

※基本的に、 `Enter` を押して進めることができます。
※パスワードの設定時は文字が表示されないので、落ち着いて入力してください。

### 一般ユーザーにsudo権限を付与する

作成したユーザーに、必要なときだけ管理者権限を使えるように設定します。以下のコマンドを実行してください。

```bash
usermod -aG sudo [trainee] # usermod -aG sudo takumi1227
```

#### コマンドの構造と意味

| コマンドの一部   | 説明                                                       |
| --------- | -------------------------------------------------------- |
| `usermod` | 「user modify」 の略で、ユーザー情報を変更するための標準コマンドです。                |
| `-a`      | append（追加）の意味で、グループ追加時に他のグループ情報を保持するために使用します。            |
| `-G sudo` | `sudo` グループに追加することを意味します。このグループに所属すると、管理者権限でコマンドを実行できます。 |
| `trainee` | 対象となるユーザー名です。ここでは「trainee」という名前のユーザーを例にしています。            |

※ `trainee` については、必要に応じて任意の名前に変更してください。

#### なぜこの操作が必要か

WSL環境ではrootユーザーで全ての操作が可能ですが、セキュリティ上の観点から、日常的な操作をrootでおこなうのは推奨されません。
そのため、一般ユーザーに「必要なときだけ管理者権限を使用できる」設定をおこなうことが望ましいとされています。

#### 付与の確認方法

以下のコマンドを実行し、ユーザーが`sudo`グループに属しているかをご確認ください。

```bash
groups [trainee] # groups takumi1227
```

出力に「sudo」が含まれていれば、設定は完了しています。

#### 注意点

`usermod`コマンドにおいて `-a` を付け忘れると、他のグループ情報が上書きされてしまうことがあります。
必ず `-aG` をセットで使用するようにしてください。

---

## ログインユーザーの変更

作成した一般ユーザーで今後Ubuntuにログインできるように、デフォルトユーザーを変更しておきます。

```powershell
ubuntu config --default-user [trainee] # ubuntu config --default-user takumi1227
```

---

## 既存Ubuntu環境の複製

ここからは、「すでに利用しているUbuntu環境をまるごと複製して、新しい用途に活用する方法」をご紹介します。

### 1. 環境のエクスポート

現在利用しているWSL上のUbuntu環境を `.tar` ファイルとしてエクスポートします。

```powershell
wsl --export Ubuntu-20.04 C:\wsl_backup\ubuntu_backup.tar
```

* `Ubuntu-20.04` は、エクスポートしたいディストリビューションの名前です
* `C:\wsl_backup\` は保存先のパスになります（事前にフォルダを作成しておいてください）

### 2. インポートして新しい環境を作成

エクスポートした `.tar` ファイルを基に、新しいUbuntu環境を構築します。

```powershell
wsl --import Ubuntu-Copy C:\wsl_dists\ubuntu-copy C:\wsl_backup\ubuntu_backup.tar
```

* `Ubuntu-Copy` は、新しく作成する環境の名前
* `C:\wsl_dists\ubuntu-copy` は展開先のディレクトリ
* `C:\wsl_backup\ubuntu_backup.tar` は先ほどエクスポートしたファイルのパス

### 3. 複製した環境にログインする

以下のコマンドで新しい環境にログインします。

```powershell
wsl -d Ubuntu-Copy # 今後もこのコマンドでログインできます。
```

---

## 環境を切り替えて使用する方法

複数のUbuntu環境をインストールしている場合、それぞれ以下のように指定して使用できます。

```powershell
wsl -d Ubuntu-20.04
wsl -d Ubuntu-Copy
```

用途に応じて、開発用、テスト用、研修用などに分けて使い分けると便利です。

---

## 最後に
### ご覧いただいた皆様へ
この記事をご覧いただきありがとうございます。ubuntu の導入方法については、実際にはいくつかの方法が存在しているかと思います。今回は、そのなかから、自分が実際に採用した方法を記事としてまとめています。別の方法があれば、ぜひ記事として書いていただき、知見の共有をしていただけたらと思います。
また、この記事においてはなるべく慎重に書いているため、誤字・脱字は無いと思いますが、技術系の観点も含め、何か不明な点や間違えているであろう点などがありましたら、教えていただけると幸いです。

### 更新
【更新日】
2025.06.17

【更新内容】
- [はじめに](#はじめに)
- [最後に](#最後に)