October 3, 2024

macOSのUTMでAmazon Linux 2023を起動する

Amazon EC2でAmazon Linux 2023を起動すると、当然お金がかかる。

ちょっと試したいならAWS CloudShell(2024/10/03現在はAmazon Linux 2023.5.20240708)という手もあるけど、どうせならオンプレで好き勝手したい。

公式手順↓を参考に、手元のMacbookで試してみた。
Using Amazon Linux 2023 outside of Amazon EC2 - Amazon Linux 2023

手元のMacbookはApple SiliconなのでARMアーキテクチャ、つまりx86_64ではなくaarch64(arm64)。
仮想化にはUTMを使った。

試した環境

  • Apple Macbook Air
    • CPU: Apple M2
    • Mem: 16 GB
    • OS: Sequoia 15.0
      • UTM Version 4.5.4

手順

VMイメージダウンロード

公式手順にあるとおり、cdn.amazonlinux.com からダウンロードする。
kvm-arm64/の下にあるqcow2、今回は al2023-kvm-2023.5.20240916.0-kernel-6.1-arm64.xfs.gpt.qcow2 をダウンロードした。

seed.iso 作成

デフォルトでは初期ユーザーのec2-userは作られているけどパスワードもSSH鍵も未設定、起動してもログインできない…
cloud-init に初期ユーザーを作らせるための seed.iso を作る。

公式手順ではこの部分
Amazon Linux 2023 Set up and cloud-init configuration when used outside Amazon EC2 - Amazon Linux 2023

  1. macでターミナルを開く

  2. ディレクトリ作成

    % mkdir ~/seedconfig
    
  3. ファイル作成

    • ~/seedconfig/meta-data
      ホスト名を書くだけ
      vm-hostname は会社の命名規則とか自分の好みに従って書き換える
      local-hostname: vm-hostname
      
    • ~/seedconfig/user-data
      #cloud-config
      #vim:syntax=yaml
      users:
        - default
        - name: USER-HOGE
          lock_passwd: false
          groups: wheel
          passwd: HOGEFUGA
          ssh_authorized_keys:
            - ssh-ed25519 FUGAFUGA fuga.pem
      

      VMイメージにはec2-userというデフォルトのユーザーが作られているけど、~/.ssh/authorized_keys は空だしパスワードも設定されていない。
      オンプレで使うなら、ec2-userにパスワードや公開鍵を設定するより、個人のユーザーを作れば良いと思う。
      passwd: にはパスワードを直接書くのではなく、mkpasswdコマンドで生成したソルト付きのハッシュ値を書く。
      macOSには標準ではmkpasswdは入っていないけど、Google CloudのCloud Shellならインストール済み。
      AWSのCloudShellには入っていないけどsudo dnf install mkpasswd -yでインストール可能。
      どちらかで以下のコマンドを実行し、出力されたものを貼り付ければいい。

      $ mkpasswd --method=SHA-512 --rounds=4096
      

      user-dataの書き方は以下を参考にした。
      Module Reference — cloud-init 22.2 documentation
      Cloud config examples — cloud-init 22.2 documentation

  4. seed.iso作成

    % hdiutil makehybrid -o seed.iso -hfs -joliet -iso -default-volume-name cidata seedconfig/
    

UTM でVM作成

  1. UTM起動
  2. 「新規仮想マシンを作成」
  3. 「仮想化」を選択
  4. 「オペレーティングシステム」は「Linux」を選択
  5. 起動ISOイメージは前項で作成したseed.isoを選択
  6. メモリ要件は512MB以上だけど、制約があるっぽいから1GB以上にしておけば間違いなさそう
    CPUコア数は空白のまま、ハードウェアOpenGLアクセラレーションはチェック付けず
  7. 「ストレージ」は後で削除するのでいくつでもいい
  8. 「共有ディレクトリ」は設定しない
  9. 最後の「概要」は、Amazon Linux 2023とか分かりやすい名前を付ければいい

ドライブ差し替え

  1. 作成したVMを右クリックし「編集」
  2. ドライブのVirtIOドライブを右クリックして「削除」
  3. ドライブの「新規」をクリックし「読み込む」をクリック
  4. ダウンロードしたqcow2ファイルを「開く」
  5. 「保存」をクリックしてVMの編集を閉じる

あとは起動するだけ

© 2020 nissy-lab.com