ESXi-Arm Fling v2.0 にしてみた

この投稿は [vExperts Advent Calendar 2024](https://adventar.org/calendars/10310) の 3 日目の記事です。  
10 月末くらいに ESXi-Arm がアップデートしましたので、ちょっと遅いですが試してみました。  
ちょっと触ってみたくらいなので検証はそれほど進んでいません。とりあえず ESXi-Arm Fling v2.0 を試したくらいにとどまっています。
なお、 Japan VMUG Christmas Meeting 2024 でも話をする予定です。こちらは実機を添えて話をしたいと思っています。

# ESXi-Arm Fling とは
Arm な CPU で動作する ESXi です。  
身近なところだと [Raspberry Pi](https://www.raspberrypi.com/) で動作します。
サーバだと HPE 社の [ProLiant RL300](https://www.hpe.com/jp/ja/servers/proliant-rl-300.html) シリーズで使えるようですが、試す環境がありません。

省電力が売りの Arm ですので、 Raspberry Pi のように小型な機器で稼働して Near Edge で使用する、データセンタで RL300 シリーズのようなサーバで高効率なコンピューティングに使用する、というような用途が想定できます。

2020 年 10 月くらいに Flings で提供が始まって、昨年 12 月に [1.15](https://blogs.vmware.com/arm/2023/12/15/esxi-arm-fling-1-15-refresh/) が提供されていました。

# バージョンが上がって変わったところ
ESXi-Arm Fling v2.0 になって vSphere 8.0 Update 3b ベースになりました。([New ESXi-Arm Fling based on 8.0 Update 3b](https://williamlam.com/2024/10/new-esxi-arm-fling-based-on-8-0-update-3b.html))
今まで (v1.x とします) は、 vSphere 7.0 ベース (Update なし) であり、だいぶ古い感じになっていましたが、念願の 8.0 系になりました。
ホームラボだととりあえず Windows を動かしてみようとなることがありますが、 v1.x は Native Key Provider が利用できないため vTPM の対応に手間がかかっていましたが、これが解消しています。

# Easter Egg?
[Easter Egg](https://williamlam.com/2024/11/esxi-arm-v2-easter-egg.html#more-187466) があるらしいのですが、良く分かっていません...ネストできる事自体? ネストして何かすると何か出るのか...  
ネストするのが条件だとそんな環境を用意することは難しそうなので、なかなかハードルが高そうです。

# さっそく v2.0 にしてみる
前置きが長くなったので、さっそく v2.0 にしてみます。

## 新規インストールかアップグレードか
新規インストールができることは確実そうなので、ちょっと検索しただけでは手順が見当たらなかったアップグレードをしてみました。

## 環境
機器は Raspberry Pi 4 Model B 8GB です。USB 接続の NVMe から起動しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/fbbc0df2-b59d-7912-7997-3e6f4d431f3a.png)

アップグレード前はこのような状態で、たぶん v1.12 くらいです (しばらく触れてなくて覚えていない...)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/48638803-ee22-8507-918a-e8423d7205ce.png)

## バックアップ
念のためバックアップします。USB 接続の NVMe なので、ホストを止めてから Raspberry Pi から外してきて PC に接続して dd します。この環境は運用していないので容赦なく止めます。
```
sudo dd if=/dev/da0 bs=16m | pv | pigz -9 > labarmesxi01_v1.img.gz
```
バックアップサイズを節約したかったので入っていた VM を vMotion して共有ストレージに移動して 128GB の容量をほぼ空にしたのに 99GB にしかなりませんでした。全然圧縮できないのは VMFS の特性なのでしょうか。何かランダムデータが入っている?

## オフラインバンドルを持ってくる
バックアップをしている間に [Filings](https://community.broadcom.com/flings) から ESXi Arm Edition のオフラインバンドルを持ってきます。サイトには新規インストールに使う ISO イメージやインストール方法が記載された PDF もあります。ESXi-Arm-Offline-Depot-2.00-dl.zip がオフラインバンドルになるようです。

## ローカルの DataStore にオフラインバンドルをアップロードする
バックアップが終わったら再び Raspberry Pi に NVMe を接続して起動します。起動したらローカルの DataStore にダウンロードしたオフラインバンドルをアップロードします。vCenter からは外さないであえて登録したまま進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/637eff6b-75ac-858e-b755-3684d7b1f193.png)
*バックアップ中に撮ったから応答なしになっている...*

## アップグレードする
手順が見当たらないので、定石通りやってみます。
- 内容の確認  
  ```
  [root@labarmesxi01:~] esxcli software sources profile list -d /vmfs/volumes/labarmesxi01-local01/vib/ESXi-Arm-Offline-Depot-2_00-dl.zip 
  Name                           Vendor        Acceptance Level  Creation Time        Modification Time
   -----------------------------  ------------  ----------------  -------------------  -----------------
   ESXi-8.0U3b-24364478-no-tools  VMware, Inc.  PartnerSupported  2024-06-25T00:00:00  2024-06-25T00:00:00
   ESXi-8.0U3b-24364478-standard  VMware, Inc.  PartnerSupported  2024-06-25T00:00:00  2024-06-25T00:00:00
   ```
- アップグレード  
  ```
  [root@labarmesxi01:~] esxcli software profile update -d /vmfs/volumes/labarmesxi01-local01/vib/ESXi-Arm-Offline-Depot-2_00-dl.zip -p ESXi-8.0U3b-24364478-standard
   Update Result
      Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
      Reboot Required: true
      VIBs Installed: VMW_bootbank_atlantic_1.0.3.0-13vmw.803.0.40.24364478, VMW_bootbank_bcm-mpi3_8.8.1.0.0.0-1vmw.803.0.40.24364478,
    ...
      VMware_bootbank_vsanhealth_7.0.0-1.11.20693597, VMware_locker_tools-light_12.1.0.20219665-20693597
   VIBs Skipped: 
    ```
- 成功したようなので、再起動する
  ```
  [root@labarmesxi01:~] reboot
  ```

# アップグレードできた
無事に起動してきてアップグレードできました。特別な手順は不要なようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/ec8a5bcd-2fff-d18e-b166-919b2979f3aa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/379cc459-e094-4aec-d551-940916be3556.png)
*vCenter 側のスクリーンショットは後日撮っています*

## Native Key Provider は利用できるか
無事に利用できました。これを利用して vTPM を構成して Windows11 のインストールができたことを確認しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/8edf0d9c-272d-9a0c-d5ee-3fd9b1625a48.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/1dbabfc0-5a50-58d9-27dd-6f593756ec4e.png)

# v1.x で作った VM はそのまま起動できるか
v1.x で VM を作成すると仮想マシンバージョン 17 になります。v2.0 で作成するとバージョン 21 になるのですが、バージョン 17 のままでは v2.0 のホストで起動できません。ドキュメントに記載がありますが、手動で vmx ファイルを編集する必要あるようです。Arm 向けは OS の書式が変わったようです。

# やり残していること
とりあえず ESX-Arm Fling v2.0 が無事に動作することが確認できました。
まだ全部手をつけきれていないので、残りは Japan VMUG Christmas Meeting 2024 で話をしたあと、こちらにも反映したいと思います。

- 他に Quartz64 Model A もあるので、こちらもアップグレードする
- ESX-Arm Fling v2.0 の新規インストールも試す
- v1.x で作った VM を v2.0 環境で稼働する
- Windows 以外の VM も作って稼働させる
- NanoPi R5S で動かしてみる (メモリが 4GB しかないしそもそも動作対象外)

以上、[vExperts Advent Calendar 2024](https://adventar.org/calendars/10310) の 3 日目の投稿でした。