VMware Flingsで公開されているESXi Arm EddtionをRaspberry Pi 4で使ってみました。
タイトルのICMはVMware研修から🤣
デバイス選定
私はESXi on armがVMware Flingsで公開された少し後(2020年末)にRaspberry Pi 4 8GBを買っていたので、こちらを使います。(最近半導体不足とかでRasberry Piどうなっているのかな~と調べてみると、在庫不足と価格高騰で大変なことになっているんですね😅)
今ESXi on Armを試すなら以下が良さそうです。
- Raspberry Pi 4B (4GB and 8GB only)
- 定番中の定番だが、今入手性、価格がつらい
- Raspberry Pi 400
- RAM 4GBなのでそこだけ注意です。キーボード付きでお得🤣
- PINE64 Quartz64 Model A
- VMwareのESXi-Arm Fling DocにSupported platformsに載っていたデバイス。8GBモデルでもそこそこ安い。
- 動作事例は一応ある ESXi Arm Edition on the Quartz64 SBC
- Ampere Computing Altra-based servers
- OCIで使える可能性🤔
ちなみにRaspberry Pi 400については公式ブログで紹介されています。
という事で以下自分がRaspberry Pi 4 8GBでインストールしてハマったところ、気になった点合わせて書いておきます。
install方法
Raspberry Pi 4へのESXi on armのinstall方法は調べてみると割とたくさん情報があるのですが、とりあえず以下を参照すると良いです。
- ESXi Arm Edition | VMware Flings
- 公式ドキュメント。
Fling-on-Raspberry-Pi.pdf
を参照すればRaspberry Piへの一連のinstall方法が書いてあります。
- 公式ドキュメント。
- VMware ESXi お料理教室 〜 Raspberry Pi を添えて〜 | VMworld 2021 Japan
- VMworld Japan 2021でのsession。動画付きで分かりやすいのと、面白い😆
EEPROMのアップデート
まずはRaspberry Pi 4のEEPROMをアップデートします。EEPROMは何かというといわゆるPCで言うBIOS. 公式ドキュメント通りにRaspberry Pi Imagerで更新します。出荷時のEEPROMのバージョンが古いとmicroSDからしか焼けないので、とりあえすmicroSDカードにRaspberry Pi Imagerで書き込みdiskを用意し、EEPROMの更新を行いましょう。 ちなみに更新されるバージョンはこちらから確認するか、書き込み後のRaspberry Piの画面出力から確認出来ます。
後述するBootデバイス一本化では、USBメモリから起動させるために最新のEEPROM書き込みとして、私はRaspberry Pi OS(32bit)からEEPROMの更新を行いました。
UEFIのイメージ作成
EEPROMの更新ののち、UEFIが起動出来るようにイメージを作成します。kernel*.img
を消してその他ファイルをコピーするなど、ドキュメント通りファイルを準備してFAT32でmicroSDなどに保存し、Raspberry Piを起動させましょう。これも最新のEEPROMであればUSBメモリから起動出来ると思いますが、確実に行くならEEPROMの更新で利用したmicroSDを流用するのが良いです。
UEFI起動後の設定
UEFIが起動したら3GiB Memory limitなどの設定を変更しましょう。変更しないとESXi on Armの起動に失敗します。
ESXi-Armのinstall
UEFIの起動および設定変更が終われば次にESXi-Armのinstallです。これは通常のx86のESXiのinstallと同様で、ISOイメージのUSBメモリにインストール先として上書きinstallが可能です。UEFIからUSBメモリのISOでinstallerを実行する流れなので、この辺りは通常のx86のESXi installと同じです。
ESXi on Armの起動
ESXi on Armのinstallが完了すれば、あとはUSBメモリからいつも通りESXiが起動し、画面上にはDCUI、host clientでブラウザアクセスが可能になります。公式ドキュメントにも記載されていますが、起動後vCenterにESXi on Armを追加する場合にはNTPの設定が必要です。設定を忘れずに。
ESXi on Armの起動ディスクを1本化したい
ここまでの手順を踏めばESXi on Armが無事起動出来るわけなのですが、UEFI用にmicroSD、ESXi on Armのboot deviceとしてUSBメモリを用意するなど、起動に必要なディスクが無駄に2つになります。
これを1つにまとめられないのかな~と思い調べると、ありました。
俺のやりたいことが書いてあった。さすがlam氏
— spg (@spg_games) April 30, 2022
How to copy the Raspberry Pi UEFI files and boot ESXi-Arm using just USB device? https://t.co/2GLJmXmA4D
やっている事としてはEEPROMでUSB bootを可能にするためにBOOT_ORDER
を変更したEEPROMを焼いたりしているのですが、自分が焼いた最新のpieeprom-2022-04-26.binではBOOT_ORDER
は特になく、デフォルトでUSBメモリ、microSDを起動デバイスとして参照しているようでした。このため上記リンク先のEEPROMのBOOT_ORDER
の変更などは特に必要ないです。
以下はRaspberry Pi OS(32bit)
からEEPROMを更新した作業ログです。
webprog@raspberrypi:~ $ PI_EEPROM_VERSION=pieeprom-2022-04-26
webprog@raspberrypi:~ $ wget https://github.com/raspberrypi/rpi-eeprom/raw/master/firmware/stable/${PI_EEPROM_VERSION}.bin
--2022-04-30 16:45:13-- https://github.com/raspberrypi/rpi-eeprom/raw/master/firmware/stable/pieeprom-2022-04-26.bin
github.com (github.com) をDNSに問いあわせています... 52.69.186.44
github.com (github.com)|52.69.186.44|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://raw.githubusercontent.com/raspberrypi/rpi-eeprom/master/firmware/stable/pieeprom-2022-04-26.bin [続く]
--2022-04-30 16:45:14-- https://raw.githubusercontent.com/raspberrypi/rpi-eeprom/master/firmware/stable/pieeprom-2022-04-26.bin
raw.githubusercontent.com (raw.githubusercontent.com) をDNSに問いあわせています... 2606:50c0:8003::154, 2606:50c0:8000::154, 2606:50c0:8001::154, ...
raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8003::154|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 524288 (512K) [application/octet-stream]
`pieeprom-2022-04-26.bin' に保存中
pieeprom-2022-04-26.bin 100%[===========================================================>] 512.00K --.-KB/s 時間 0.06s
2022-04-30 16:45:15 (8.34 MB/s) - `pieeprom-2022-04-26.bin' へ保存完了 [524288/524288]
webprog@raspberrypi:~ $ sudo rpi-eeprom-config ${PI_EEPROM_VERSION}.bin > bootconf.txt
webprog@raspberrypi:~ $ grep BOOT bootconf.txt
BOOT_UART=0
webprog@raspberrypi:~ $ cat bootconf.txt
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
webprog@raspberrypi:~ $ sed -i 's/BOOT_ORDER=.*/BOOT_ORDER=0xf241/g' bootconf.txt
webprog@raspberrypi:~ $ cat bootconf.txt
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
webprog@raspberrypi:~ $ sudo rpi-eeprom-update -d -f ./pieeprom-2022-04-26.bin
*** INSTALLING ./pieeprom-2022-04-26.bin ***
CURRENT: 2021年 4月 29日 木曜日 16:11:25 UTC (1619712685)
UPDATE: 2022年 4月 26日 火曜日 10:24:28 UTC (1650968668)
BOOTFS: /boot
EEPROM updates pending. Please reboot to apply the update.
To cancel a pending update run "sudo rpi-eeprom-update -r".
で、UEFIに保存しているfirmwareなどをESXi bootディスクであるUSBメモリのパーティション1(UEFI)にデータをコピーさせればUSBメモリ1つでESXi on Armが起動します。
※ISOの更新などで上書きされた場合、UEFIのデータコピーは再度必要になりそうです。
上手くbootしない時はESXi on ArmのUSBメモリをubuntuなどでマウントして1番目のパーティションにファイルが配置されているか確認しましょう。自分は/uefi/
配下にファームウェアがコピーされていたのでハマりました😅
MicroSDに入れてるUEFIのusbメモリの統合、はまったと思ったらなんかディレクトリ階層がおかしくなっていただけだった😂
— spg (@spg_games) April 30, 2022
とりあえずVMRCでUSBメモリubuntuとかでマウントしてあげればすぐ分かった話だった。
まとめ
今回ESXi on Armのインストール、初期設定周りについて紹介しました。ESXi on ArmはvSAN witnessとして2 Node vSANを組もうかなと思っていたので、次回そのあたりの設定などが出来ればと思います。性能的には断然x86の方が良いと思うのですが、消費電力の面からArmはやっぱり気になりますね。ただ最近の半導体不足、流通的にもRaspberry Pi 4の入手性が悪いのと価格も上がっているので、若干メリットが抑えられているのかなとも思います😓 今後に注目ですね。