Amazon Linux 2023を手元のHyper-V上で起動してみた

こんなニュースを目にしました。

https://aws.amazon.com/about-aws/whats-new/2023/12/amazon-linux-kvm-vmware-images-al2023-3/

Amazon Linux 2023のKVMとVMWareのイメージをアップデートしたよ　という内容です。

Amazon Linux 2でVMイメージが提供されていることは知っていたのですが、Amazon Linux 2023でも用意されていたのですね。

## いつ使う？

Amazon Linux 2023はコンテナイメージも提供されているので、最近は仮想サーバーの出番は減ってきています。ただ、どうしてもEC2で動かさないといけないアプリもまだまだありますので、検証環境としての活用できると思います。

---

私の普段Windows環境を使っているのですが、Hyper-V向けのイメージは提供されていません。
形式を変換することで起動させることができましたので、方法を紹介します。

## 手順

1. VMイメージをダウンロードする
    
    バージョン2023.3.20240108.0のイメージはこちらで配布されています。
    
    https://cdn.amazonlinux.com/al2023/os-images/2023.3.20240108.0/

1. VMイメージをVHDK形式に変換する

    qemu-imgというツールで変換ができます。私はdevcontainer上のUbuntu 22.04で行いました。

    ```shell:Ubuntu 22.04 on devcontainer
    sudo apt update
    sudo apt install -y qemu-utils
    ```

    `-O`オプションで変換フォーマット「vhdk」を指定します。

    ```shell:Ubuntu 22.04 on WSL2
    qemu-img convert -O vhdx al2023-kvm-2023.3.20240108.0-kernel-6.1-x86_64.xfs.gpt.qcow2 image.vhdx
    ```

1. seed.isoを作成する

    サーバーの初期設定はcloud-initという仕組みで行います。seed.isoというファイルを作成します。

    https://docs.aws.amazon.com/linux/al2023/ug/seed-iso.html

    https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-2-virtual-machine.html

    meta-dataとuser-dataというファイルを作成します。

    ```yaml:meta-data
    local-hostname: amazonlinux2023-onprem
    ```
    
    ```yaml:user-data
    #cloud-config
    #vim:syntax=yaml
    users:
    # A user by the name 'ec2-user' is created in the image by default.
    - default
    - name: ec2-user
    
    chpasswd:
      list: |
        ec2-user:plain_text_password
    ```

    :::note
    ec2-userの初期パスワードを`plain_text_password`に設定しています
   :::

    ```shell:Ubuntu 22.04 on devcontainer
    sudo apt update
    sudo apt install -y genisoimage
    ```

    ```shell
    mkisofs -output seed.iso -volid cidata -joliet -rock user-data meta-data
    ```

1. Hyper-Vの仮想マシンを作成する

    ウィザードに従って作成します。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/ce162a89-7557-b298-0451-e0465b2ea517.png)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/ab0b9184-8fa4-a589-9bf6-9d185b9bdfea.png)

    第１世代を選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/012e1c09-50c7-ff78-a334-0566fba48bcd.png)

    動的メモリのチェックは外しました。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/bf99a5ff-5f5a-71bd-3ec8-72eb35c397f5.png)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/598defcb-222b-84fa-871c-27cbc96512cb.png)

    先程変換したVHDK形式のファイルを選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/c93c7cc3-809f-0435-ad1d-22e895239fb6.png)

    ウイザードを完了させます。

    インストールCDの指定が必要なので設定パネルを表示します。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/b8076a5e-9cba-feb6-79f6-53c51b8f30ce.png)

ここまでできたら、起動します。

## 起動

ログイン画面が出ました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/5c1a046a-10af-0ab1-0f8d-dcd1001615f6.png)

先程指定したパスワードでログインします。

:::note
Hyper-Vの画面内では**英字キーボード**になります。
なので、`_`は **ほ** キー（0の右隣）での入力となりますのでご注意を。
:::

### 鳥を飛ばす！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/0429d8fd-57f2-ad00-1c7a-668fc1d2cdce.png)

---

Hyper-VのDefault SwitchはIPアドレスがころころ変わるようなので使い所が難しいですね。。