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 updatepi@raspberrypi:~ $ sudo apt upgradepi@raspberrypi:~ $ sudo reboot
Prüfen ob ein Update vorhanden ist.
pi@raspberrypi:~ $ sudo rpi-eeprom-updateBCM2711 detectedVL805 firmware in bootloader EEPROM*** UPDATE AVAILABLE ***BOOTLOADER: update availableCURRENT: 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/criticalVL805: up-to-dateCURRENT: 000137ad LATEST: 000137ad
Wenn ja, updaten.
pi@raspberrypi:~ $ sudo rpi-eeprom-update -aBCM2711 detectedVL805 firmware in bootloader EEPROM*** INSTALLING EEPROM UPDATES ***BOOTLOADER: update availableCURRENT: 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/criticalVL805: up-to-dateCURRENT: 000137ad LATEST: 000137adBOOTFS /bootEEPROM updates pending. Please reboot to apply the update.pi@raspberrypi:~ $ sudo reboot
Nach dem reboot.
pi@raspberrypi:~ $ sudo rpi-eeprom-updateBCM2711 detectedVL805 firmware in bootloader EEPROMBOOTLOADER: up-to-dateCURRENT: 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/criticalVL805: up-to-dateCURRENT: 000138a1 LATEST: 000138a1
Die schnelle Variante für ein EEPROM Update:
- Das aktuelle rpi-boot-eeprom-recoveryRelease von GitHub downloaden.
- microSD-Karte mit FAT formatieren und den Inhalt derrpi-boot-eeprom-recovery-2020-09-03-vl805-000138a1.zipeinfach 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 derfirmware-master.zip den Inhalt des Ordnersboot aber ohne die 4 kernel* Dateien auf die microSD-Karte entpacken.
Aus derRPi4_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.
- VMware Tools for Debian 10 arm64 on ESXi-Arm
- VMware Tools for Ubuntu 20.04 LTS arm64 on ESXi-Arm
- VMware Tools for Fedora 32 aarch64 on ESXi-Arm
- VMware Tools for CentOS 8 aarch64 on ESXi-Arm
- VMware Tools for openSUSE aarch64 on ESXi-Arm
- VMware Tools for Alpine 3 aarch64 on ESXi-Arm
- VMware Tools for Photon OS 4 aarch64 on ESXi-Arm
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 VMwareDocumentation=http://github.com/vmware/open-vm-toolsAfter=network-online.target[Service]ExecStart=/usr/local/bin/vmtoolsdRestart=alwaysTimeoutStopSec=5[Install]WantedBy=multi-user.targetEOF### 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.pyTraceback (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__.pyPIMON_DEVICE_PATH = '/dev/vmgfx32'
Script ausführen.
& ./thpimon-main/pyUtil/pimon_util.pyFirmware Revision: 0x5f440c10Board Model: 0Board Revision: 0xd03114Board MAC Address: 12:34:56:78:90:abBoard Serial: 0x0000001111v222Temp: 47.0 (deg. C)