VMware ESXi auf dem Raspberry Pi 4 installieren

Am 6. Oktober wurde die ESXi-Arm Fling Version veröffentlicht. Infos und Downloads zur ESXi Arm Edition gibts auf VMware Flings.
Damit ist es jetzt möglich den VMware ESXi (vSphere 7) auf einem Raspberry Pi 4 zu installieren! :-]

benötigte Hardware

  • Raspberry Pi 4 mit 8GB RAM und ausreichender Kühlung (4GB geht auch, wird dann aber mit mehreren VMs schnell eng werden.)
  • microSD-Karte für das EEPROM Update und die UEFI Firmware (8GB völlig ausreichend)
  • USB Stick für den ESXi Installer
  • USB 3.0 Stick für das System und den DataStore. (ich nehme dafür aber eine SSD mit einem USB 3.0 auf SATA Adapter)

ESXi-Arm ISO downloaden

Für den download des ISO Images verlangt VMware allerdings eine kostenlose Registrierung.
Das Fling-on-Raspberry-Pi.pdf ist eine sehr ausführliche Anleitung zur Installation und Konfiguration. Sollte man sich mal durchlesen.

Die ESXi-Arm Installation ist für 180 Tage uneingeschränkt nutzbar. Danach muss neu installiert werden!

EEPROM updaten

Dafür wird ein Raspberry Pi OS Lite auf die microSD-Karte installiert. (Wird nur einmalig für das Update benötigt.)
Zuerst das installierte Pi OS updaten um ein aktuelles rpi-eeprom Paket zu erhalten.

pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt upgrade
pi@raspberrypi:~ $ sudo reboot

Prüfen ob ein Update vorhanden ist.

pi@raspberrypi:~ $ sudo rpi-eeprom-update
BCM2711 detected
VL805 firmware in bootloader EEPROM
*** UPDATE AVAILABLE ***
BOOTLOADER: update available
CURRENT: Thu 16 Apr 17:11:26 UTC 2020 (1587057086)
 LATEST: Thu  3 Sep 12:11:43 UTC 2020 (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/critical
VL805: up-to-date
CURRENT: 000137ad
 LATEST: 000137ad

Wenn ja, updaten.

pi@raspberrypi:~ $ sudo rpi-eeprom-update -a
BCM2711 detected
VL805 firmware in bootloader EEPROM
*** INSTALLING EEPROM UPDATES ***
BOOTLOADER: update available
CURRENT: Thu 16 Apr 17:11:26 UTC 2020 (1587057086)
 LATEST: Thu  3 Sep 12:11:43 UTC 2020 (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/critical
VL805: up-to-date
CURRENT: 000137ad
 LATEST: 000137ad
BOOTFS /boot
EEPROM updates pending. Please reboot to apply the update.
pi@raspberrypi:~ $ sudo reboot

Nach dem reboot.

pi@raspberrypi:~ $ sudo rpi-eeprom-update
BCM2711 detected
VL805 firmware in bootloader EEPROM
BOOTLOADER: up-to-date
CURRENT: Thu  3 Sep 12:11:43 UTC 2020 (1599135103)
 LATEST: Thu  3 Sep 12:11:43 UTC 2020 (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/critical
VL805: up-to-date
CURRENT: 000138a1
 LATEST: 000138a1

Die schnelle Variante für ein EEPROM Update:

  • Das aktuelle rpi-boot-eeprom-recovery Release von GitHub downloaden.
  • microSD-Karte mit FAT formatieren und den Inhalt der rpi-boot-eeprom-recovery-2020-09-03-vl805-000138a1.zip einfach auf die Karte kopieren.
  • Die microSD-Karte in den Raspberry Pi und einschalten.
  • Mindestens 10 Sekunden warten!

Wenn der Vorgang erfolgreich war, blinkt die grüne LED schnell (unendlich), ansonsten wird ein Fehlermuster dargestellt.
Mit einem HDMI Monitor am Pi wird der Bildschirm bei Erfolg grün und bei einem Fehler rot.

UEFI Firmware auf die microSD-Karte kopieren

Dafür wird wieder die microSD-Karte Karte vom EEPROM Update genommen. Sie wird jetzt immer und nur für die UEFI Firmware benötigt.
Die zwei Firmware-Archive herunterladen.

Die microSD-Karte formatieren. Dateisystem: Fat32 und Volumebezeichnung: UEFI

Aus der firmware-master.zip den Inhalt des Ordners boot aber ohne die 4 kernel* Dateien auf die microSD-Karte entpacken.

Aus der RPi4_UEFI_Firmware_v1.20.zip alle Dateien auf die microSD-Karte entpacken und vorhandene Dateien dabei überschreiben!

ESXi Installer erstellen

Mit Rufus und dem ISO wird der bootfähige USB-Stick für die Installation erstellt.

UEFI Firmware konfigurieren

Die microSD-Karte mit der Firmware in den Pi und einschalten. Wenn das Pi-Logo erscheint, mehrmals die ESC-Taste drücken um ins UEFI Setup zu kommen.

3GB RAM Limit deaktivieren
Der genutzte Arbeitsspeicher ist vorerst auf 3GB begrenzt. Um die 8GB zu nutzen muss das Limit deaktiviert werden.
Device Manager → Raspberry Pi Configuration → Advanced Configuration → Limit RAM to 3 GB, Disabled (mit F10 speichern)

Display Auflösung anpassen
Für eine bessere Lesbarkeit, kann die Auflösung noch angepasst werden. (abhängig vom eingesetzten Monitor)
Device Manager Raspberry Pi Configuration Display Configuration, 800×600 / 1024×768 (mit F10 speichern)

ESXi installieren

Den USB-Stick und die SSD jetzt zusätzlich anschließen, Pi einschalten und mit ESC wieder ins Setup um vom Stick zu booten.
Boot Manager UEFI USB-Stick auswählen, Enter

Sobald der ESXi Installer anfängt zu laden mit SHIFT + O den Vorgang unterbrechen, um noch einen zusätzlichen Bootparameter mit anzugeben.

> runweasel cdromBoot autoPartitionOSDataSize=8192
Damit wird eine 8GB VMFS-L Partition für das ESXi System erstellt und der restliche Speicherplatz automatisch als DataStore genutzt.

Den Installer jetzt weiter ausführen und für die Installation die SSD auswählen.

Bootreihenfolge ändern

Nach der Installation nochmal ins Setup und die SSD als erstes Bootdevice setzen.
Boot Maintenance Manager Boot Options Change Boot Order Change the order, die SSD nach oben

Startet jetzt direkt von der SSD den installierten ESXi.

Webinterface

Der Web Client für die Verwaltung ist über https://<ip-addresse> erreichbar.

Zuerst sollte man jetzt ein paar NTP Server eintragen, die Startrichtlinie ändern und den ntpd Dienst starten damit Datum und Uhzeit stimmen.

Virtuelle Maschinen

Der Pi schlägt sich auch mit ein paar kleinen ARM VMs recht gut. (x86/x64 Gastsysteme können nicht installiert werden!)

VMware Tools installieren

Die open-vm-tools sind leider für viele arm64 Gastbetriebssysteme nicht verfügbar. Können aus den VMware Repositories aber selbst kompiliert werden.

Debian 10 / Ubuntu 20.04

Muss kompiliert werden.

### Abhängigkeiten installieren.
$ apt install -y git automake make gobjc++ libtool pkg-config libmspack-dev libglib2.0-dev libpam0g-dev libssl-dev libxml2-dev libxmlsec1-dev libx11-dev libxext-dev libxinerama-dev libxi-dev libxrender-dev libxrandr-dev libxtst-dev libgdk-pixbuf2.0-dev libgtk-3-dev libgtkmm-3.0-dev

### Das open-vm-tools Repository von GitHub klonen.
$ git clone https://github.com/vmware/open-vm-tools.git
$ cd open-vm-tools/open-vm-tools/

### open-vm-tools kompilieren.
$ autoreconf -i
$ ./configure --disable-dependency-tracking
$ make
$ make install
$ ldconfig

### Um vmtoolsd als Service mit systemd zu starten muss eine Unit Datei angelegt werden.
$ cat > /etc/systemd/system/vmtoolsd.service << EOF
[Unit]
Description=Service for virtual machines hosted on VMware
Documentation=http://github.com/vmware/open-vm-tools
After=network-online.target

[Service]
ExecStart=/usr/local/bin/vmtoolsd
Restart=always
TimeoutStopSec=5

[Install]
WantedBy=multi-user.target
EOF

### Den Service beim Systemstart aktivieren und jetzt starten.
$ systemctl enable vmtoolsd.service
$ systemctl start vmtoolsd.service

### Prüfen ob der Service läuft.
$ systemctl status vmtoolsd.service
● vmtoolsd.service - Service for virtual machines hosted on VMware
   Loaded: loaded (/etc/systemd/system/vmtoolsd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-11-08 14:57:13 CET; 21min ago
   ---SNIP---

CPU Temperatur auf dem ESXi-Arm auslesen

Eine gute Kühlung ist sehr wichtig, wenn man den ESXi auf dem Pi laufen lässt. Mit dem Fling selbst ist es nicht möglich die CPU Temperatur auszulesen.
Auf GitHub gibt es einen Treiber mit Script für das GPIO Interface. (thebel1/thpimon)

Für die dauerhafte Speicherung von Tools und Skripten nutze ich den DataStore.

thpimon installieren

$ cd /vmfs/volumes/[datastore-name]
$ mkdir opt
$ cd opt
$ esxcli software acceptance set --level=CommunitySupported
$ esxcli network firewall ruleset set -e true -r httpClient
$ wget https://github.com/thebel1/thpimon/archive/main.zip
$ esxcli network firewall ruleset set -e false -r httpClient
$ unzip main.zip
$ cp thpimon-main/build/vib/thpimon-0.1.0-1OEM.701.1.0.40650718.aarch64.vib /tmp/
$ esxcli software vib install -v /tmp/thpimon-0.1.0-1OEM.701.1.0.40650718.aarch64.vib
$ reboot

Nach dem reboot hat man ein neues Gerät unter /dev/vmgfxXX

$ ls -la /dev/vmg*
lrwxrwxrwx    1 root    root    22 Sep 1 14:12    /dev/vmgfx32 -> char/vmkdriver/vmgfx32

Script ausführen.

$ cd /vmfs/volumes/[datastore-name]/opt
$ ./thpimon-main/pyUtil/pimon_util.py
Traceback (most recent call last):
  File "./thpimon-main/pyUtil/pimon_util.py", line 4, in <module>
    from pimonLib import *
  File "/opt/thpimon-main/pyUtil/pimonLib/__init__.py", line 73, in <module>
    class PiMon:
  File "/opt/thpimon-main/pyUtil/pimonLib/__init__.py", line 74, in PiMon
    pimonDev = open(PIMON_DEVICE_PATH, 'r+b')
FileNotFoundError: [Errno 2] No such file or directory: '/dev/vmgfx33'

Erhält man die obige Fehlermeldung, muss der PIMON_DEVICE_PATH auf den neuen Devicenamen geändert werden.

$ vi thpimon-main/pyUtil/pimonLib/__init__.py
PIMON_DEVICE_PATH = '/dev/vmgfx32'

Script ausführen.

& ./thpimon-main/pyUtil/pimon_util.py
Firmware Revision:      0x5f440c10
Board Model:            0
Board Revision:         0xd03114
Board MAC Address:      12:34:56:78:90:ab
Board Serial:           0x0000001111v222
Temp:                   47.0 (deg. C)

2 Gedanken zu „VMware ESXi auf dem Raspberry Pi 4 installieren“

  1. Moin,

    sehr interessanter Artikel. Bleibst du denn deinem Proxmox VE treu oder beschäftigst du dich jetzt mehr mit VMware?

    Ich selbst habe ein Homelab Vsphere7 Nuc-Cluster und spiele mit dem Gedanken zu Proxmox zu gehen. Für mich wird Vsphere von Version zu Version dicker und unübersichtlicher.

    Viele Grüße und Danke für deine vielen nützlichen Beiträge!
    Thomas

    Antworten
    • Moin Thomas,

      ich werde Proxmox treu bleiben! Nutze ich schon seit mehreren Jahren im Homelab.
      Vor Proxmox hatte ich auch VMware im Einsatz. Der Raspi mit ESXi ist ideal zum spielen und ausprobieren.

      Gruß, Michael

      Antworten

Schreibe einen Kommentar