WSL 2 に Amazon Linux 2023 を導入しよう！

こんにちは。
今回は、2025年5月19日にオープンソースとして公開された WSL 2（[Windows Subsystem for Linux](https://learn.microsoft.com/ja-jp/windows/wsl/about)) に Amazon Linux 2023 を導入する方法についてお伝えします。動作確認環境は、Vaio にインストールされている、Windows 11 Pro です。

WSL 2 で Amazon Linux 2023 を動かすことで簡単な操作や運用作業をする際、AWS 上で実稼働しているリソースにログインすることなく動作確認をすることが可能になります。

## Amazon Linux 2023 のイメージを取得する

Amazon Linux 2023 のイメージは、 Amazon Elastic Container Registry(Amazon ECR)もしくは Docker Hub で公開されています。WSL 2 は Docker コンテナ用のイメージを利用することが可能なので、これを利用します。

[こちら](https://cdn.amazonlinux.com/al2023/os-images/latest/)にも公開されていますので、Docker 環境からエクスポートする手間を省きたい方は、こちらにアクセスし、container ディレクトリ内にある拡張子が tar.xz ファイルをダウンロードしてください(その場合は、「WSL 2 に Amazon Linux 2023 イメージをインポートする」までスキップできます）。

### Amazon Linux 2023 コンテナを起動する

手元に Docker の実行環境があれば、以下を実行する。なければ、AWS CloudShell などで実行します。

```shell:shell
docker run amazonlinux:2023
```

これで Docker 上で Amazon Linux 2023 が起動しました。

次に、この起動したコンテナをファイルとして扱えるようにエクスポートします。

### コンテナイメージをエクスポートする

コンテナイメージをエクスポートするには、稼働しているコンテナのIDを取得し、エクスポートを実行します。

```shell:shell
docker ps -l
CONTAINER ID   IMAGE              COMMAND       CREATED          STATUS                      PORTS     NAMES
************   amazonlinux:2023   "/bin/bash"   32 seconds ago   Exited (0) 29 seconds ago             silly_williams
```

CONTAINER ID の列に表示されている値（この例では、08324491ce7b)がエクスポートに必要な情報です。
以下のように、出力ファイル名、CONTAINER ID の順で指定してエクスポートを行います。実行環境の値に置き換えて実行してください。

```shell:shell
# コマンドの形式
# docker export -o 出力イメージファイル名 CONTAINER_ID

docker export -o alami2023.tar ************
```

これで準備は整いました。
AWS CloudShell で実行している方は、 WSL 2 を実行する環境に取得したイメージ ファイルをダウンロードしておきます。

## WSL 2 に Amazon Linux 2023 イメージをインポートする

:::note warn
WSL 2 を実行する環境で以下の設定を事前に完了させておきます。
* 「Windows の機能の有効化または無効化」で「Windows Subsystem for Linux」にチェックを入れて有効化する
* WSL 2 をインストールする
* 任意の場所（例：C:¥WSL 2¥AmazonLinux2023）にイメージ ファイルを格納する
:::

### イメージ ファイルをコマンドでインポートする

以下のコマンドを PowerShell で実行して、イメージ ファイルをインポートします。

```powershell:PowerShell
# コマンドの形式
# wsl --import <登録するディストリビューション名> <仮想ディスク(vhdxファイル)を作成するフォルダ> <WSLにインポートするイメージ ファイルのパス>

# 実行例
wsl --import amazonlinux2023 c:\WSL\AmazonLinux2023 c:\WSL\AmazonLinux2023\alami2023.tar

```

これでインポートが完了します。

## WSL 2 で Amazon Linux 2023 を起動する！

標準で用意されている Ubuntu などと同じように wsl コマンドをディストリビューションを指定して実行するだけで、 Amazon Linux 2023 が起動します。

```powershell:PowerShell
wsl -d amazonlinux2023
```

本当に Amazon Linux 2023 か確認します。
以下のコマンドを WSL 2 上の Amazon Linux 2023 で実行します。

```sh:shell
ls /etc/*-release
/etc/amazon-linux-release  /etc/os-release  /etc/system-release

cat /etc/amazon-linux-release

Amazon Linux release 2023.7.20250512 (Amazon Linux)

cat /etc/os-release

NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023.7.20250512"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/"
DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
VENDOR_NAME="AWS"
VENDOR_URL="https://aws.amazon.com/"
SUPPORT_END="2029-06-30"

cat /etc/system-release
Amazon Linux release 2023.7.20250512 (Amazon Linux)
```

ばっちり、Amazon Linux 2023 が動いていますね！

しかし、元がコンテナ用のイメージなので最低限の環境のため、必要に応じて追加の設定を行っていきます。

## Amazon EC2 で動いている Amazon Linux 2023 に近づけていく

イメージをインポートして起動させただけでは、AWS CLI すら実行できません（インストールされていません）。そのほかにも、vim などのテキストエディタも入っていないようです。

そのため、必要なアプリケーションや設定を行って、実用的な環境にしていきます。

本記事の最後に一気に設定する Shell Script を載せておきますので、注意事項をご確認の上、ご参考になさってください。

### プロキシの設定（オプション）

プロキシ環境下ではプロキシの設定が必要です。
わたしの環境では以下の設定ファイルに入れています。使うコマンドなどに応じて、追加してください。

* /etc/profile もしくは ~/.bashrc など
* /etc/dnf/dnf.conf
* /etc/wgetrc
* /root/.curlrc、 ~/.curlrc

この段階ではテキストエディタを設定していないので、リダイレクトで入力することになります。
※テキストエディタを設定後であれば、cat << EOF >> ～ EOF の間の内容を直接入力しても構いません

#### /etc/profile もしくは ~/.bashrc など

環境変数を参照してくれる HTTP(s)通信をするプログラム向けの設定をします。
以下は、 /etc/profile での例です。リダイレクト先のファイルパスを変更して、 ec2-user などのユーザー作成後にログイン時の読み込みファイルに個別設定することも可能です

```sh:shell

cat << EOF >> /etc/profile
PROXYURL=<プロキシ URL>

export http_proxy=${PROXYURL}
export https_proxy=${PROXYURL}
export no_proxy=localhost,127.0.0.1

export HTTP_PROXY=${PROXYURL}
export HTTPS_PROXY=${PROXYURL}
export NO_PROXY=localhost,127.0.0.1

unset PROXYURL

EOF
```

設定完了したら、```source /etc/profile``` や ```source ~/.bashrc``` などを実行して再読み込みをして有効化してください。

その後、```curl``` コマンドがエラー無く実行できることを確認します。

#### /etc/dnf/dnf.conf

Amazon Linux 2023 はパッケージマネージャーが dnf になっているので、 dnf.conf に設定します。

```sh:shell
cat << EOF >> /etc/dnf/dnf.conf

proxy=<プロキシ URL>
no_proxy=localhost,127.0.0.1

EOF
```

#### /etc/wgetrc、 ~/.wgetrc

wget を使う場合に設定します。wget インストール後に設定します。
/etc/profile や ~/.bashrc などに設定があれば通常は不要ですが、動作しない場合に設定します。

```sh:shell
cat << EOF >> /etc/wgetrc

http_proxy=<プロキシ URL>
https_proxy=<プロキシ URL>
no_proxy=localhost,127.0.0.1

EOF
```

#### /root/.curlrc、 ~/.curlrc

curl コマンドを実行する場合に念のため設定します。
/etc/profile や ~/.bashrc などに設定があれば通常は不要ですが、動作しない場合に設定します。

```sh:shell
cat << EOF >> /root/.curlrc

proxy=<プロキシ URL>
no_proxy=localhost,127.0.0.1

EOF
```
### Amazon Linux 2023 のアップデート

念のため、Amazon Linux 2023 の最新版へアップデートを行います。

```sh:shell
dnf update --releasever=latest

Last metadata expiration check: 0:00:15 ago on Tue May 20 19:17:09 2025.
Dependencies resolved.
Nothing to do.
Complete!
```

上記のように、```Nothing to do``` と表示されていれば、最新版です。


### ec2-user の作成

手元で使う分には不要かもしれませんが、Amazon Linux といったら ec2-user ということで、ec2-user を作っていきます。

まずは ```shadow-utils``` と ```sudo``` をインストールしてユーザー作成と ```sudo``` が実行できるようにします。

```sh:shell
dnf install shadow-utils sudo
```

次に、 ```ec2-user``` を作成します。

```sh:shell
adduser ec2-user
```

作成した ```ec2-user``` が ```sudo``` を実行できるように設定します。

[推奨] ```sudo``` をインストールしたことで ```visudo``` がインストールされているので、```visudo```
 で設定します。

```sh:shell
visudo

# ファイルの末尾に以下を追記

ec2-user ALL=(ALL) NOPASSWD: ALL

# Ctrl + x で保存して終了します。
# その際、ファイル名が /etc/sudoers.tmp となっていますが、そのまま Enter キー押下で保存します。
# visudo がファイル内の情報をチェックして問題なければ /etc/sudoers ファイルを更新してくれます。

```

ただし、```nano``` での操作になるため、慣れていない方は以下のリダイレクトでの設定でも構いません。
構文チェックｗしてくれないので、指定ミスすると ```sudo``` が出来なくなり、最悪のケースでは Amazon Linux 2023 イメージの再インポートが必要になりますので、ご注意ください。

```sh:shell
echo "ec2-user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
```

WSL 2 で Amazon Linux 2023 にログインした際のデフォルトのユーザーを指定します。

```sh:shell
cat << EOF >> /etc/wsl.conf
[user]
default=ec2-user
EOF
```

ここまで設定できたら、```ec2-user``` でログインしなおします。

まずは、Amazon Linux 2023 からログアウトします。

```sh:shell
exit
```

そして、WSL 2 を一旦、停止します。

```powershell:PowerShell
wsl --shutdown
```

改めて、WSL 2 にログインします

```powershell:PowerShell
wsl -d amazonlinux2023
```

成功していると、以下のように```ec2-user@ホスト名 カレントディレクトリ名``` が表示されます。

```sh:shell
[ec2-user@hostname currentdir]$
```

```ec2-user``` の　```id``` の内容 や ```sudo``` が行えるか確認します。

```sh:shell
id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user)

sudo -i
[root@hostname ~]#
```

これで ```ec2-user``` で操作できるようになりました。


### テキストエディタ（vimなど)のインストール

```sudo``` をインストールした段階で、 ```nano``` がインストールされますが、わたしは ```vim``` を使うので ```vim``` のインストールを行います。

```sh:shell
sudo dnf install vim
```

vim を vi と入力して起動したい方は、以下のように適宜 alias の設定をします。

```sh:shell
alias vi='vim'
```

### wget のインストール

```wget``` コマンドでパッケージを取得することもあるので ```wget``` コマンドをインストールします。
その後、前述のとおり、必要に応じて設定します。

```sh:shell
sudo dnf install wget
```

### bash の強化

```bash``` の補完や色付けをして使いやすく強化します。

```sh:shell
sudo dnf install bash-completion coreutils-common
```

これで最低限、使いやすい環境に整いました。
あとは都度、必要なパッケージを入れていけばよいと思います。

### AWS 関係のツールのインストール

次に、AWS 関係のツールをインストールしていきます。

#### AWS CLI

これは外せませんね。個人的には必須ツールです。
コマンド補完もあわせて有効にしておきます。

```sh:shell
sudo dnf install awscli-2

echo "complete -C '/usr/bin/aws_completer' aws" >> ~/.bashrc
source ~/.bashrc
```

```aws configure``` コマンドで設定を行い、AWS 上のリソースへアクセスできるようにします。

#### Amazon Q CLI

日本語対応もなされた Amazon Q の CLI をインストールして、WSL 2 上から Q を使えるようにします。

```sh:shell
curl --proto '=https' --tlsv1.2 -sSf "https://desktop-release.q.us-east-1.amazonaws.com/latest/q-x86_64-linux.zip" -o "q.zip"

unzip q.zip

./q/install.sh

```

インストール完了後、 ```q``` コマンドを実行すると、以下のような画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/6e4e58b3-b6a3-4865-97d8-9eca0bb9d7a0.png)


## まとめ

手元のラップトップなどで起動できる Amazon Linux 2023 は素早く検証したい場合に効果てきめんです。

また、別の観点で言えば、Windows 側の環境を汚すことなく AWS の操作環境や開発環境を用意することができるので、必要なパッケージを全部入りにしたイメージを配布し、WSL 2 で起動させればローカルでの開発が捗ります。

ーーー
記載されている会社名、製品名、サービス名、ロゴ等は各社の商標または登録商標です。