自然の赴くままに・そのときの 気分次第で・なんとなく

興味を持ったことを、なんとなく気の向くまま書いています。

Raspberry Pi で初めてみない? vSphere 7 USB ブートで始める ARM版 vSphere 7 ESXi

vSphere は 20年の歴史

VMware のサーバー用ハイパーバイザー ESX 1.0 が世の中に登場したのが 2001年、その後 2003年に ESX Server 2.0、Virtual Center Server (今の vCenter Server) で複数のハイパーバイザーをまとめて管理できるようになった 2004年の ESX Server 2.5、そして64ビット OS 対応になった 2005 年の VMware infrastructure 3.0、バイナリートランスレーションを廃止して性能改善した 2007年登場の VMware infrastructure 3.5、そのあともいろいろな機能の改善や拡張を経て今の vSphere 7 に至っています。でも、そのすべてが AMD の CPU が加わったとしても、Intel x86 アーキテクチャの上で成り立っていました。

f:id:imaisato:20211222103508p:plain

vSphere の歴史

ほかのアーキテクチャの vSphere が登場!

2018年の VMworld 2018 で急に発表されたのが Edge 用途の ESXi ARM Edition でした。この時は VMware も IoT に力を入れようといろいろなことを始めていました。その中の一つとして VMware Cloud on AWS で培った技術やノウハウを活用したサービスとして Project Dimension を進めていき、コンピュートエッジの部分でこの ESXi ARM Edition を活用しようと考えていたようです。
でも実際には夢破れてコンピュートエッジの部分になる Pulse IoT Center は提供終了され、VMware が 2018年に考えていたエッジコンピューティングから脱却することになっています。

しかし、当時はまだまだ夢大きくだったので、この ESXi ARM Edition の発表は一部の人には非常に興味を惹かれるものであったことは間違いありません。私もその中の一人でした。

f:id:imaisato:20211222110237p:plain

デモされた Raspberry Pi 3 上の ESXi(当時の vForum 2018 Europe での資料の画像を引用)

そして実際に Raspberry Pi 3 の上で ESXi ARM Edition を動かしたくて、当時 vSphere の障害を vRealize log insight で通知するデモシステムを作ったときに使った Raspberry Pi 3 を転用していじるぞ!と待っていたのですが、結局バイナリー公開がないまま 2年という時が流れ、仕事では一切 vSphere を触らなくなりRaspberry Pi で動く ESXi のことは過去のこととしてほぼ忘れかけていました。

f:id:imaisato:20211222110441p:plain

転用するつもりだった Raspberry Pi 3 で作った通知システム

突然やってきた ESXi ARM Edition!! VMware Frings で公開開始

2020年、寝耳に水、忘れたころに突然やってきました ESXi ARM Edition!!。家ラボを作るときに ESXi のオリジナルイメージには含まれないドライバー類を VMware flings からダウンロードしていたのですが、そこで突然目に入ったのが、この画面。

f:id:imaisato:20211222110955p:plain

ESXi Arm Edition v1.0

おー、待ちに待った(というか、忘れていたじゃない。。。。)ARM で動く ESXi です。で、早速ダウンロードして Raspberry Pi 3 で使おうとしたら無慈悲にも Raspberry Pi 4 以降しか対応していないことが判明。この時点では Raspberry Pi 3 しか持っていなかったのでイメージのダウンロードだけで終わり。。

f:id:imaisato:20211222111155p:plain

Raspberry Pi 4 が必要

Raspberry Pi 4 を買って挑戦!

そのままでは何も進まないので、とりあえず Raspberry Pi 4 を 1台ポチりました。でも、当時はまだ 4GB までのが多く、8GB モデルがまだ出始めで品薄&高め、なのでとりあえず 1台購入してスタートです。このあたりの経緯は過去の私のブログにあるので、そちらを参照ください。カテゴリーの「ARM」で見ることができます。

imaisato.hatenablog.jp

その1年後 ESXi Arm Edition の USB ブートに挑戦

Raspberry Pi 4 での vSphere 7 沼は、カテゴリーの「ARM 」で見ていただくとわかりますが結構いろいろ拡張していってしまい、最後には 8台の Raspberry Pi 4 上に ESXi Arm Edition 環境を構築、vCenter Server 管理下に入れていろいろといじくりまわしていました。しかし、この環境の唯一の弱点は MicroSD で起動しなければならないということと、その MicroSD がやたら壊れるということでした。これに関しては ESXi Arm Edition では USB ブートはできないとなっているのですが、Pi OS は Raspberry Pi 4 のBootloader のアップグレードがあって USB ブートができるようになっています。なので、同じように ESXi Arm Edition でもできないかなと挑戦してみました。結果は以下の手順でUSB ブートメディアを作ることで、USB ブートの ESXi Arm Edition 環境を作ることができました。

f:id:imaisato:20211222145413p:plain

3つのステップ

Step 1 準備

まず、Raspberry Pi Imager を使い Bootloader のアップグレード用の Micro SD を作成して、手持ちの Raspberry Pi 4 のブートローダーをアップグレードします。作成した新しい Bootloader の入った MicroSD をセットして Raspberry Pi 4 を起動すると自動的にブートローダーのアップグレードが始まり、緑の画面と MicroSD の右横の ACT の LED が緑の点滅になればアップグレードが終わります。大体電源を入れて約 5秒くらいでアップグレードは終わりますので、ディスプレイつながなくても LED の状態でアップグレードが終わったことを判断できます。

f:id:imaisato:20211222145856p:plain

アップグレードが終わった状態

次に ESXi Arm Edition を用意します。flings.vmware.com の ESXi Arm Edition のページから、最新のイメージをダウンロードします。この辺りは私のブログのARM版 ESXi 7 の入手方法はを見てください。入手した ESXi Arm Edition は USB メディアにファイルをコピーしておきます。このあたりはARM版 ESXi 7 をインストールに書いてありますので参考にしてください。

最後に UEFI ブートイメージの準備をします。先の参考にと案内したARM版 ESXi 7 をインストールに書かれている URL のリンク先は古いので、以下の URL から最新を入手してください。

そして、最新のファームウエアを展開したフォルダに最新の UEFI ブート用の修正ファイルを上書きすることで、UEFI ブートができるファームウエアにすることができます。このファームウエアが USB ブートのもう一つの重要なものなので、間違えないように作ってください。

ここで重要、展開したファームウエアの boot フォルダ内のファイルの中にある 4つの kernel*.img ファイルはコピーしません。コピーしちゃったら削除してください。そうしないと、ESXi Arm Edition のほうにブートが移りません。ご注意を。

f:id:imaisato:20211222151254p:plain

ファームウエアと UEFI ブート用の修正ファイル

MicroSD のメディアの作り方はARM版 ESXi 7 をインストールを参照してください。

Step 2 ESXi のインストール

この時点では以下の 4つの媒体が用意できているはずです。

  1. Bootloader のアップグレード用の MicroSD => 使用済みでこれ以降は不要
  2. ESXi Arm Edition の USB 媒体
  3. UEFI ブートができるファームウエアの入った MicroSD
  4. ESXi Arm Edition をインストールする先の USB 媒体

ここで 3. の UEFI ブートができるファームウエアの入った MicroSD と ESXi Arm Edition の USB 媒体を Raspberry Pi 4 に挿入し、Raspberry Pi 4 Raspberry Pi 4 の電源を入れます。しばらくしたら Raspberry Pi のロゴが出るので、素早く [ESC] キーを押して UEFI ファームウエアの画面を出します。

f:id:imaisato:20211222152229p:plain

UEFI ファームウエア

そして、いくつかの設定変更を行います。

  • モリー設定の Limit RAM to 3GB を「Disabled」にして、3GB 以上のメモリー領域を使えるようにします。
  • シリアルコンソールを使う場合、Preferred Console 設定を「Serial」にします。

そしてどの媒体から起動するかの設定もここで行います。この設定はこの設定後の 1回限り有効なので、失敗したら毎回この設定だけは行う必要があります。

  • Boot Maintenance Manager -> Boot Options -> Delete Boot Options で、ESXi installer の入った USBメディア以外は [X] をつけ、[F10] キーを押してブートデバイスとして認識されないようにします。

この後に [Continue] をクリック、Raspberry Pi 4 を再起動します。Raspberry Pi 4 が再起動しESXi のブートローダーが出てくれば設定成功、出なければ設定を見直し、媒体も見直して再度 UEFI ファームウエアの Boot Maintenance Manager を変更して起動を繰り返します。

ESXi のおなじみの黄色と黒の画面が出たら、あとは通常の ESXi と同じです。そのままインストールを続けてください。インストール時の設定はARM版 ESXi 7 をインストールを参照してください。そして、インストールが終わったら再起動し、正しくインストールされて起動ができることを確認します。

Step 3 USB ブートの設定

いよいよ最後の作業、ESXi Arm Edition のインストールされた USB 媒体に UEFI ファームウエアを送り込みます。手順は以下の通りになります。

f:id:imaisato:20211222153243p:plain

USBブート

簡単に説明すると、ESXi Arm Edition をインストールした Raspberry Pi 4 に SSH 接続し、UEFI ブートができるファームウエアの入った MicroSD の中身をすべて ESXi Arm Edition がインストールされた USB 媒体の特定フォルダーにそのファイルを配置するだけです。

1. ESXi Arm Edition のインストール先を探します。
 # vdq –q 
 大体 mpx.vmhba32:C0:T0:L0 にあります。
2. 作業用の一時展開フォルダを作成します。
 # mkdir -p /tmp/uefi
3. UEFI ブートができるファームウエアの入った MicroSD の中身を作業用フォルダに転送します。TeraTerm などを使えば SCP で簡単に送ることができます。その際に、ZIP 圧縮してまとめて送ると簡単です。
4. ZIP圧縮しているのであれば、それを一時フォルダに解凍します。
 # unzip uefifarm.zip -d /tmp/uefi/
5. 解凍したファイルを vpq –q で調べた場所にコピーします。
 # mcopy -i "/dev/disks/mpx.vmhba32:C0:T0:L0:1" -vs /tmp/uefi/* ::/
※注意 vdq –q で調べた値の後ろに「:1」を付与してコマンドを実行すること

これで作業は完了です。あとは MicroSD を外して Raspberry Pi 4 を再起動するだけです。ESXi Arm Edition が起動できればすべて完了です。

ESXi Arm Edition 利用時のTips

ESXi Arm Edition を使う際の Tips をいくつかまとめてみました。

  • 起動しない
    • ほとんどが MicroSD の中のファイル破損です(よく壊れます)
    • MicroSD の中身をそっくり作り直すのが楽です
    • USB ブートではほぼ発生しないのですが、念のために MicroSD の中身を PC の中に保存しておき、ブートできなかったら MicroSD をフォーマット後保存したファイルをコピーし復旧するなど用意しておくことをお勧めします
    • UEFI の ZIP イメージは 1つ作れば使いまわし可能です

 

f:id:imaisato:20211222154747p:plain

パソコンに保存した UEFI ファームウエア
  • ESXi Arm Edition の アップグレード
    • ESXi Arm Edition はアップグレードはしないルールになっています
    • 新しいバージョンが出たらこの資料の手間を毎回行う必要があります
    • アップグレード……本当にできないかはやってみてください(実は。。。。)
  • ファンレスはやらないほうが良い
    • 常にCPUが動いているようで相当熱くなるので、冷却のために放熱フィンだらけになる。それでも触るととても熱くなる。

f:id:imaisato:20211222154952p:plain

ファンレスは厳しい
  • Raspberry Pi につながる線を極力減らしたい
    • POE HAT とシリアルコンソールを活用、LAN ケーブルとシリアルケーブルだけの接続にできます。
  • 複数の LAN
    • Realtek の USB LAN アダプタを使えば拡張可能です。謎アダプターでは USB 接続の Realtek 4 ポート NIC などもあるので、そういうものを使うと vSAN とかも楽にできます。
    • LAN の拡張時には 先の Realtek 4 ポート NIC とかでなければ、USB HUB 付きがおすすめです
  • ライセンス
    • インストールから180日の評価ライセンスが有効です
    • 評価ライセンスは更新できないので、インストール後の日数の注意が必要
    • 通常のライセンスを使用することも可能です。
    • この評価ライセンスを付け替えることができないので、新しいバージョンが出たら再インストールなわけなのですが、通常のライセンスを使っていると、実発布グレードできちゃったりします。

x86 の OS やアプリは動かない。でも、ESXi の機能はフルに使えるので、勉強には役に立つ ESXi Arm Edition

このように、高いハードウエアを購入することなく、スペースもさほど必要のない ESXi Arm Edition ですが、中身は vSphere 7.0 そのものです。なので、vSphere 7 の勉強をしたい人はボーナスで NUC 1台買うお金で Raspberry Pi 4 をいくつか買って英ラボを作ってしまうというのもありだと思います。

vCenter Server は vCSA の評価版をダウンロードして、VMware Workstation Player 上に 無償の vSphere Hypervisor ESXi を動かしてその上に vCSA を展開すれば vCenter Server 環境の検証もできます。お金をかけずに vSphere 7 を勉強するのには、ESXi Arm Edition はよい題材だと思います。(本来はエッジコンピューティング目的だったはずですが。。。。(笑))