ARM版 ESXi 7 をインストール

# Raspberry Pi 4 に ESXi をインストールしてみる
前回は [ARM版 ESXi 7](https://qiita.com/inasato/items/6aa951883721abedf553) の入手を書きましたので、今回はインストール前の準備をします。
## Raspberry Pi 4 の準備
再度前回にも書きました、ESXi Arm Edition をインストールする場合の必要要件を書きます。以下は私が用意した環境です。

* Raspberry Pi 4B 8GBモデル：これから用意するのであれば 8GB モデルを買いましょう。そして、ケースを買うのも忘れずに。Raspberry Pi 4 は基盤だけで販売されていますので、本体（の基盤）の他に、ケース、USB-C AC アダプタも必要です。そして、Raspberry Pi 4 は相当熱を持ちますので、できれば冷却ファン月を買ったほうが良いかもしれません。私は忘れて冷却版無しで頑張っていますが、ちょっと不安です。
* Micro SD 2枚：Raspberry Pi 3 までは Micro SD だけでいろいろな OS のブートができていましたが、Raspberry Pi 4 からは UEFI ブートに Micro SD が必要です。私の場合は NUC で ESXi を運用していた時代に買ってあった 32GB のMicro SD が大量に残っているのでそれを転用しています。（NUC では Micro SD からブートはできませんのでお間違いなく）2枚必要なのは後で説明しますが、Raspberry Pi のセットアップ用に 1枚、そして UEFIブート用に 1枚必要になるからです。
* ESXi Arm Edition インストール先の USB メモリー：ブートは Micro SD を使いますが、ESXi 自身は別のディスクにインストールが必要です。そのインストール先として USB 3.x の USB メモリーを使います。私の場合は NUC で ESXi を運用していた時代に買ってあった 16GB の USB 3.0 メモリーが大量に残っているのでそれを転用しています。（NUC では USBメモリーから ESXi を起動できます。）USBメモリーを新規に買う場合は、10GB 以上で高速な USB メモリーを買ってください。理由としては ESXi 7 以降ではブートディスクのパーティション構成が変わっています。そのため、今後のことを考えるのであれば 32GB 以上がおすすめです。
* インストール用の USBメモリー：1GB 程度の iso イメージを書き込む USB メモリーです。そんな小さな容量のものは最近は売っていないと思うので、大きめなのを買って使ってもよいと思います。

## Raspberry Pi の OS 他必要なファイルの入手
[Raspberry Pi OS (previously called Raspbian)]( https://www.raspberrypi.org/downloads/)からダウンロードしておきます。そして Micro SD にコピーしておきます。
次に Raspberry Pi を初期化するのに必要なマイクロコードと最新ファームウエアを入手します。これも上記ドキュメント内にリンクが記載されています。最新のファームウエアはこのリンクで直接行けるようになっているようです。

* [最新ファームウエア：](https://github.com/raspberrypi/firmware/archive/master.zip)　https://github.com/raspberrypi/firmware/archive/master.zip
*  [UEFI：](https://github.com/pftf/RPi4/releases/download/v1.20/RPi4_UEFI_Firmware_v1.20.zip) https://github.com/pftf/RPi4/releases/download/v1.20/RPi4_UEFI_Firmware_v1.20.zip

## ARM版 ESXi の入手
前回の [ARM版 ESXi 7](https://qiita.com/inasato/items/6aa951883721abedf553) を参考にしてダウンロードしてください。この記事執筆時点での最新は VMware-VMvisor-Installer-7.0.0-16966451.aarch64.iso のようです。また、クラスタを構成して VMware vSphere HA のテストなどをしたい場合は、適宜修正パッチの vib が上がりますので、それらもダウンロードしておきます。

# Raspberry Pi 4 の最新版適用
Raspberry Pi 4 自体もどんどん進化しており、不具合なども修正されたり新しい機能が追加されたりしていきます。なので、ARM 版 ESXi 7 の __Fling on Raspberry Pi__ の 4ページにもありますが、まずは Raspberry Pi 4 のEEPROM のアップデートを行います。
```
$ sudo rpi-eeprom-update -a
$ sudo reboot
```
## UEFIブート環境の作成
Raspberry Pi OS を入れていないもう 1枚の Micro SD カードを FAT 32 でフォーマットします。その際ボリュームラベルは「UEFI」にする必要があります。Windows であればエクスプローラーで Micro SD を選び「フォーマット」から簡単にできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/c5640b95-909d-9896-ca5b-2b0d92c26050.png)

## UEFI ブート用 Micro SD に必要なファイルをコピー
先にダウンロードしてある master.zip と RPi4_UEFI_Firmware_v1.20.zip を解凍し、以下のファイルを先ほどフォーマットした UEFI ブート用の Micro SD にコピーします。
1. master.zip からコピーするファイル
解凍した master.zip のフォルダ内にある、boot フォルダ内のファイルの中から、kernel*.img 以外のファイルすべてを Micro SD にコピーします。Micro SD 直下に overlays フォルダ含めて 33個、overlays フォルダ内には 205個のファイルがコピーされます。
<details>
<summary>UEFI の Micro SD カードの直下に置かれるファイル</summary>
fixup4cd.dat
fixup4db.dat
fixup4x.dat
LICENCE.broadcom
start.elf
start_cd.elf
start_db.elf
start_x.elf
start4.elf
start4cd.elf
start4db.elf
start4x.elf
＜DIR＞ overlays
bcm2708-rpi-b.dtb
bcm2708-rpi-b-plus.dtb
bcm2708-rpi-b-rev1.dtb
bcm2708-rpi-cm.dtb
bcm2708-rpi-zero.dtb
bcm2708-rpi-zero-w.dtb
bcm2709-rpi-2-b.dtb
bcm2710-rpi-2-b.dtb
bcm2710-rpi-3-b.dtb
bcm2710-rpi-3-b-plus.dtb
bcm2710-rpi-cm3.dtb
bcm2711-rpi-4-b.dtb
bcm2711-rpi-cm4.dtb
bootcode.bin
COPYING.linux
fixup.dat
fixup_cd.dat
fixup_db.dat
fixup_x.dat
fixup4.dat
</details>
<details>
<summary>overlaysフォルダに置かれるファイル</summary>
act-led.dtbo
adafruit18.dtbo
adau1977-adc.dtbo
adau7002-simple.dtbo
ads1015.dtbo
ads1115.dtbo
ads7846.dtbo
adv7282m.dtbo
adv728x-m.dtbo
akkordion-iqdacplus.dtbo
allo-boss-dac-pcm512x-audio.dtbo
allo-digione.dtbo
allo-katana-dac-audio.dtbo
allo-piano-dac-pcm512x-audio.dtbo
allo-piano-dac-plus-pcm512x-audio.dtbo
anyspi.dtbo
apds9960.dtbo
applepi-dac.dtbo
at86rf233.dtbo
audioinjector-addons.dtbo
audioinjector-isolated-soundcard.dtbo
audioinjector-ultra.dtbo
audioinjector-wm8731-audio.dtbo
audiosense-pi.dtbo
audremap.dtbo
balena-fin.dtbo
cma.dtbo
dht11.dtbo
dionaudio-loco-v2.dtbo
dionaudio-loco.dtbo
disable-bt.dtbo
disable-wifi.dtbo
dpi18.dtbo
dpi24.dtbo
draws.dtbo
dwc-otg.dtbo
dwc2.dtbo
enc28j60-spi2.dtbo
enc28j60.dtbo
exc3000.dtbo
fe-pi-audio.dtbo
goodix.dtbo
googlevoicehat-soundcard.dtbo
gpio-fan.dtbo
gpio-ir-tx.dtbo
gpio-ir.dtbo
gpio-key.dtbo
gpio-no-bank0-irq.dtbo
gpio-no-irq.dtbo
gpio-poweroff.dtbo
gpio-shutdown.dtbo
hd44780-lcd.dtbo
hdmi-backlight-hwhack-gpio.dtbo
hifiberry-amp.dtbo
hifiberry-dac.dtbo
hifiberry-dacplus.dtbo
hifiberry-dacplusadc.dtbo
hifiberry-dacplusadcpro.dtbo
hifiberry-dacplusdsp.dtbo
hifiberry-dacplushd.dtbo
hifiberry-digi-pro.dtbo
hifiberry-digi.dtbo
highperi.dtbo
hy28a.dtbo
hy28b-2017.dtbo
hy28b.dtbo
i-sabre-q2m.dtbo
i2c-bcm2708.dtbo
i2c-gpio.dtbo
i2c-mux.dtbo
i2c-pwm-pca9685a.dtbo
i2c-rtc-gpio.dtbo
i2c-rtc.dtbo
i2c-sensor.dtbo
i2c0.dtbo
i2c1.dtbo
i2c3.dtbo
i2c4.dtbo
i2c5.dtbo
i2c6.dtbo
i2s-gpio28-31.dtbo
ilitek251x.dtbo
imx219.dtbo
imx290.dtbo
imx477.dtbo
iqaudio-codec.dtbo
iqaudio-dac.dtbo
iqaudio-dacplus.dtbo
iqaudio-digi-wm8804-audio.dtbo
irs1125.dtbo
jedec-spi-nor.dtbo
justboom-both.dtbo
justboom-dac.dtbo
justboom-digi.dtbo
ltc294x.dtbo
max98357a.dtbo
maxtherm.dtbo
mbed-dac.dtbo
mcp23017.dtbo
mcp23s17.dtbo
mcp2515-can0.dtbo
mcp2515-can1.dtbo
mcp3008.dtbo
mcp3202.dtbo
mcp342x.dtbo
media-center.dtbo
merus-amp.dtbo
midi-uart0.dtbo
midi-uart1.dtbo
miniuart-bt.dtbo
mmc.dtbo
mpu6050.dtbo
mz61581.dtbo
ov5647.dtbo
ov7251.dtbo
ov9281.dtbo
overlay_map.dtb
papirus.dtbo
pca953x.dtbo
pibell.dtbo
pifacedigital.dtbo
piglow.dtbo
piscreen.dtbo
piscreen2r.dtbo
pisound.dtbo
pitft22.dtbo
pitft28-capacitive.dtbo
pitft28-resistive.dtbo
pitft35-resistive.dtbo
pps-gpio.dtbo
pwm-2chan.dtbo
pwm-ir-tx.dtbo
pwm.dtbo
qca7000.dtbo
README
rotary-encoder.dtbo
rpi-backlight.dtbo
rpi-cirrus-wm5102.dtbo
rpi-dac.dtbo
rpi-display.dtbo
rpi-ft5406.dtbo
rpi-poe.dtbo
rpi-proto.dtbo
rpi-sense.dtbo
rpi-tv.dtbo
rpivid-v4l2.dtbo
rra-digidac1-wm8741-audio.dtbo
sainsmart18.dtbo
sc16is750-i2c.dtbo
sc16is752-i2c.dtbo
sc16is752-spi0.dtbo
sc16is752-spi1.dtbo
sdhost.dtbo
sdio.dtbo
sdtweak.dtbo
sh1106-spi.dtbo
smi-dev.dtbo
smi-nand.dtbo
smi.dtbo
spi-gpio35-39.dtbo
spi-gpio40-45.dtbo
spi-rtc.dtbo
spi0-1cs.dtbo
spi0-2cs.dtbo
spi1-1cs.dtbo
spi1-2cs.dtbo
spi1-3cs.dtbo
spi2-1cs.dtbo
spi2-2cs.dtbo
spi2-3cs.dtbo
spi3-1cs.dtbo
spi3-2cs.dtbo
spi4-1cs.dtbo
spi4-2cs.dtbo
spi5-1cs.dtbo
spi5-2cs.dtbo
spi6-1cs.dtbo
spi6-2cs.dtbo
ssd1306-spi.dtbo
ssd1306.dtbo
ssd1351-spi.dtbo
superaudioboard.dtbo
sx150x.dtbo
tc358743-audio.dtbo
tc358743.dtbo
tinylcd35.dtbo
tpm-slb9670.dtbo
uart0.dtbo
uart1.dtbo
uart2.dtbo
uart3.dtbo
uart4.dtbo
uart5.dtbo
udrc.dtbo
upstream-pi4.dtbo
upstream.dtbo
vc4-fkms-v3d.dtbo
vc4-kms-kippah-7inch.dtbo
vc4-kms-v3d-pi4.dtbo
vc4-kms-v3d.dtbo
vga666.dtbo
w1-gpio-pullup.dtbo
w1-gpio.dtbo
w5500.dtbo
wittypi.dtbo
</details>

次に RPi4_UEFI_Firmware_v1.20.zip を解凍したフォルダの中身を全て Micro SD にコピーします。同じ名前の overlays フォルダがありますが、オリジナルのファームウエアに対しての追加（または更新）になるので、そのままコピーして構いません。
<details>
<summary>UEFI の Micro SD カードの直下に置かれるファイル</summary>
bcm2711-rpi-4-b.dtb
config.txt
fixup4.dat
＜DIR＞ overlays ※既存のディレクトリと結合されます（入替えではありません）
Readme.md
RPI_EFI.fd
start4.elf
</details>
<details>
<summary>overlaysフォルダに置かれるファイル</summary>
miniuart-bt.dtbo
</details>
ここまでできると UEFI ブート用の Micro SD 直下には 35ファイルと 1フォルダ、Overlays フォルダ内には 205個のフォルダがあるはずです。※overlays フォルダのファイルは UEFIファームウエアのファイルに入れ替わるため、数は変わりません。
なお、ドキュメントにも記載がありますが、Raspberry Pi 4 の 4GB 版を使う場合、config.txt ファイルの修正が必要になります。テキストエディタで config.txt ファイルを開き、以下の行を追加します。
__gpu_mem=16__

config.txt への追加前は
----- before -----
arm_64bit=1
enable_uart=1
uart_2ndstage=1
enable_gic=1
armstub=RPI_EFI.fd
disable_commandline_tags=1
disable_overscan=1
device_tree_address=0x1f0000
device_tree_end=0x200000
dtoverlay=miniuart-bt

追加後は
----- after -----
arm_64bit=1
enable_uart=1
uart_2ndstage=1
enable_gic=1
armstub=RPI_EFI.fd
disable_commandline_tags=1
disable_overscan=1
device_tree_address=0x1f0000
device_tree_end=0x200000
dtoverlay=miniuart-bt
__gpu_mem=16__


となります。

## ESXi をインストールする USBメモリーのフォーマット
先に用意した ARM版 ESXi 7 のインストール用 USB メモリーをフォーマットして、その中に [Flings](https://flings.vmware.com/) からダウンロードした VMware-VMvisor-Installer-7.0.0-16966451.aarch64.iso の中身をすべてコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/b4816083-ce80-acc8-f256-c3b7ae36687b.png)
92このファイルと2つのフォルダがコピーされます。
<details>
<summary>USBメモリー直下に置かれるファイル</summary>
BOOT.CAT
BOOT.CFG
ISOLINUX.CFG
.DISCINFO
BRCMFCOE.V00
ELXNET.V00
ESX_UI.V00
ESXUPDT.V00
I40IWN.V00
IMGDB.TGZ
IMGPAYLD.TGZ
ISER.V00
IXGBEN.V00
LSI_MSGP.V02
LSUV2_LS.V00
LSUV2_OE.V01
LSUV2_OE.V02
NE1000.V00
NHPSA.V00
NMLX4_CO.V00
NMLX5_CO.V00
NMLX5_RD.V00
NVMERDMA.V00
QCNIC.V00
QEDENTV.V00
QFLGE.V00
QLNATIVE.V00
S.V00
SB.V00
SMARTPQI.V00
TOOLS.T00
TPM.V00
TPMESXUP.V00
USEROPTS.GZ
VIM.V00
VMKATA.V00
VMX.V00
WEASELIN.V00
B.B00
BNXTNET.V00
BNXTROCE.V00
BRCMNVME.V00
BTLDR.V00
EFIBOOT.IMG
ELX_ESX_.V00
ELXISCSI.V00
ENA.V00
ESX_DVFI.V00
FEATURES.GZ
I40EN.V00
IAVMD.V00
IGBN.V00
JUMPSTRT.GZ
K.B00
LOADESX.V00
LPFC.V00
LPNIC.V00
LSI_MR3.V00
LSI_MSGP.V00
LSI_MSGP.V01
LSUV2_HP.V00
LSUV2_IN.V00
LSUV2_NV.V00
LSUV2_OE.V00
LSUV2_SM.V00
MTIP32XX.V00
NATIVE_M.V00
NENIC.V00
NFNIC.V00
NMLX4_EN.V00
NMLX4_RD.V00
NTG3.V00
NVME_PCI.V00
NVMXNET3.V00
NVMXNET3.V01
PROCFS.B00
PVSCSI.V00
QEDRNTV.V00
QFLE3.V00
QFLE3F.V00
QFLE3I.V00
RSTE.V00
SFVMK.V00
VMKFCOE.V00
VMKUSB.V00
VMW_AHCI.V00
VMWARE_E.V00
VMWARE-ESX-BASE-OSL.TXT
VMWARE-ESX-BASE-README
VSAN.V00
VSANHEAL.V00
VSANMGMT.V00
＜DIR＞EFI
＜DIR＞UPGRADE

</details>
<details>
<summary>EFI フォルダに置かれるファイル</summary>
＜DIR＞BOOT
　　BOOT フォルダ内に置かれるファイル
　　　BOOT.CFG
　　　BOOTAA64.EFI
　　　SAFEBOOT.EFI
</details>
<details>
<summary>UPGRADE フォルダに置かれるファイル</summary>
ESXIMAGE.ZIP
METADATA.XML
METADATA.ZIP
PRECHECK.PY
PREP.PY
PROFILE.XML

</details>

## UEFI を起動し必要な設定を行う
いよいよ Raspberry Pi 4 の起動です。Micro SD を Micro SD スロットに挿入し、USB 2.0 ポートにキーボード、残りのポートの中からいずれかの 2つに起動用の USBメモリーとインストール先の USBメモリーを挿入します。その後 Raspberry Pi 4 の電源を入れ、ロゴが出たらすぐに [ESC] キーを押して以下の画面を出します。

この画面から Device Manager を選択
![IMG_1440.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/99140820-8a80-60c2-7a5e-c5432be27d58.jpeg)
Raspberry Pi Configuration を選択
![IMG_1441.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/525f8045-fd6f-b88c-de52-aeae72ee0f8a.jpeg)
Advanced Configuration を選択していきます。
![IMG_1442.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/e65c7fb9-56f5-f55c-0864-f11217a2a72c.jpeg)
Advanced Configuration 画面の中、Limit RAM to 3 GB を選択し、Disabled に変更します。これは 32ビット OS であれば 3GB までしか使わないから設定されているのですが、ESXi は 3GB以上のメモリー空間にアクセスするため、設定を Disabled にするわけです。
![IMG_1445.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/9a35e6dc-208a-9649-9765-b1daaffb0b7d.jpeg)
この後は [F10] キーを押して設定を保存。[ESC] キーを 3回押して最初の画面に戻り、Continue を押して次の画面で [ENTER] キーを押すと Raspberry Pi 4 がリセットされ再起動します。その後はおなじみの画面がスタートしますので、今までと同じようにインストールを進めていくだけです。以下の画面キャプチャは、実際のインストール画面です。

* インストーラーの起動
![IMG_1450.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/979bfc8c-dff0-9ad1-b181-14053a9df9f9.jpeg)

* Welcome 画面
![IMG_1452.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/0aae0d21-dd14-4f00-57c0-47557cae1609.jpeg)

* EULA画面
![IMG_1453.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/3e490b08-b4bf-16da-7eab-66074ee93b63.jpeg)

* インストール先の選択
![IMG_1455.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/44aef5db-6de8-1ba0-084b-f40fa127c8cc.jpeg)

* ディスクの初期化確認画面
* keyboardレイアウト設定画面
* インストール開始画面
![IMG_1458.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/7e43eefe-a4b4-90e6-eb24-2f10d36e086a.jpeg)

* インストール中画面
* 再起動確認画面
![IMG_1460.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/b877590b-0c27-83e1-b890-b8594ee94be8.jpeg)

最後にインストール用の ESXi を取り外せば、ARM版 ESXi 7 のインストールは終了です。


* Arm 版 ESXi 7 起動完了画面
![IMG_1461.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/da92e138-8e35-63bc-73a0-4cca27ce9b2f.jpeg)

* Arm 版！！
![IMG_1462.JPEG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/3adea48f-a107-9a12-f734-44c53e77f799.jpeg)

## VMware Host Client でログインをしてみる
Intel / AMD 版の ESXi には VMware Host Client で接続しますが、ESXi Arm Edition も同じものを使いアクセスします。
通常のログイン画面をブラウザで開き、
![スクリーンショット 2020-10-13 222648.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/04feaf41-0954-e178-c049-6d15e8f08b00.jpeg)

ユーザー名とパスワードを入れるだけで ESXi にログインができます。
![スクリーンショット 2020-10-13 222717.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/09111bdc-f985-2145-3da7-02495db6702c.jpeg)

仮想スイッチも以下のような設定ができるようです。
![スクリーンショット 2020-10-13 223822.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/a065b66a-dc50-9b26-9b12-653ca60ce5a5.jpeg)

この部分は vCenter Server 配下になるとまた変わると思いますので、次以降の記事で書いていこうと思います。

ライセンスも他の ESXi 7 のが使えました。
![スクリーンショット 2020-10-13 233923.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/47173e55-309a-ea0e-5169-ffd8ecaeb71e.jpeg)

あとはどこまでできるかが気になるところですが、Raspberry Pi 4 ではネットワークインターフェースが 1つしかなく、そして USB で増設するにしてもドライバが無いため、あくまでも検証用途として使う感じですね。


# ESXi ARM Edition を vCenter Server に登録してみる

今回は ARM 版 ESXi 7 のインストールまで書きました。次回は Arm版 ESXi 7 を vCenter Server Appliance に登録してみます。