Raspberry Pi 4 に ESXi をインストールしてみる
前回は ARM版 ESXi 7 の入手を書きましたので、今回はインストール前の準備をします。
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)からダウンロードしておきます。そして Micro SD にコピーしておきます。
次に Raspberry Pi を初期化するのに必要なマイクロコードと最新ファームウエアを入手します。これも上記ドキュメント内にリンクが記載されています。最新のファームウエアはこのリンクで直接行けるようになっているようです。
- 最新ファームウエア: https://github.com/raspberrypi/firmware/archive/master.zip
- UEFI: https://github.com/pftf/RPi4/releases/download/v1.20/RPi4_UEFI_Firmware_v1.20.zip
ARM版 ESXi の入手
前回の ARM版 ESXi 7 を参考にしてダウンロードしてください。この記事執筆時点での最新は 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 を選び「フォーマット」から簡単にできます。
UEFI ブート用 Micro SD に必要なファイルをコピー
先にダウンロードしてある master.zip と RPi4_UEFI_Firmware_v1.20.zip を解凍し、以下のファイルを先ほどフォーマットした UEFI ブート用の Micro SD にコピーします。
- master.zip からコピーするファイル
解凍した master.zip のフォルダ内にある、boot フォルダ内のファイルの中から、kernel*.img 以外のファイルすべてを Micro SD にコピーします。Micro SD 直下に overlays フォルダ含めて 33個、overlays フォルダ内には 205個のファイルがコピーされます。
UEFI の Micro SD カードの直下に置かれるファイル
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.datoverlaysフォルダに置かれるファイル
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次に RPi4_UEFI_Firmware_v1.20.zip を解凍したフォルダの中身を全て Micro SD にコピーします。同じ名前の overlays フォルダがありますが、オリジナルのファームウエアに対しての追加(または更新)になるので、そのままコピーして構いません。
UEFI の Micro SD カードの直下に置かれるファイル
bcm2711-rpi-4-b.dtb config.txt fixup4.dat <DIR> overlays ※既存のディレクトリと結合されます(入替えではありません) Readme.md RPI_EFI.fd start4.elfoverlaysフォルダに置かれるファイル
miniuart-bt.dtboconfig.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 からダウンロードした VMware-VMvisor-Installer-7.0.0-16966451.aarch64.iso の中身をすべてコピーします。
92このファイルと2つのフォルダがコピーされます。
USBメモリー直下に置かれるファイル
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>UPGRADEEFI フォルダに置かれるファイル
<DIR>BOOT BOOT フォルダ内に置かれるファイル BOOT.CFG BOOTAA64.EFI SAFEBOOT.EFIUPGRADE フォルダに置かれるファイル
ESXIMAGE.ZIP METADATA.XML METADATA.ZIP PRECHECK.PY PREP.PY PROFILE.XMLUEFI を起動し必要な設定を行う
いよいよ Raspberry Pi 4 の起動です。Micro SD を Micro SD スロットに挿入し、USB 2.0 ポートにキーボード、残りのポートの中からいずれかの 2つに起動用の USBメモリーとインストール先の USBメモリーを挿入します。その後 Raspberry Pi 4 の電源を入れ、ロゴが出たらすぐに [ESC] キーを押して以下の画面を出します。
この画面から Device Manager を選択
Raspberry Pi Configuration を選択
Advanced Configuration を選択していきます。
Advanced Configuration 画面の中、Limit RAM to 3 GB を選択し、Disabled に変更します。これは 32ビット OS であれば 3GB までしか使わないから設定されているのですが、ESXi は 3GB以上のメモリー空間にアクセスするため、設定を Disabled にするわけです。
この後は [F10] キーを押して設定を保存。[ESC] キーを 3回押して最初の画面に戻り、Continue を押して次の画面で [ENTER] キーを押すと Raspberry Pi 4 がリセットされ再起動します。その後はおなじみの画面がスタートしますので、今までと同じようにインストールを進めていくだけです。以下の画面キャプチャは、実際のインストール画面です。
最後にインストール用の ESXi を取り外せば、ARM版 ESXi 7 のインストールは終了です。
VMware Host Client でログインをしてみる
Intel / AMD 版の ESXi には VMware Host Client で接続しますが、ESXi Arm Edition も同じものを使いアクセスします。
通常のログイン画面をブラウザで開き、
ユーザー名とパスワードを入れるだけで ESXi にログインができます。
この部分は vCenter Server 配下になるとまた変わると思いますので、次以降の記事で書いていこうと思います。
あとはどこまでできるかが気になるところですが、Raspberry Pi 4 ではネットワークインターフェースが 1つしかなく、そして USB で増設するにしてもドライバが無いため、あくまでも検証用途として使う感じですね。
ESXi ARM Edition を vCenter Server に登録してみる
今回は ARM 版 ESXi 7 のインストールまで書きました。次回は Arm版 ESXi 7 を vCenter Server Appliance に登録してみます。