ESXi for ARM 1.15

官方文档页面已从 Flings 迁移到 ESXi-Arm Fling 1.15 Refresh – VMware Technology Network VMTN

下载地址为 https://customerconnect.vmware.com/downloads/get-download?downloadGroup=ESXI-ARM

需要VMware Customer Connect 账号登录。

更新如下:

Changes in this release

  • Support Virtual CPU Performance Counters.
  • Fix Virtual UEFI for the Arm Architecture Compliance Suite.
  • Update EQOS driver:
    • Fix byte-swapped MAC address (important note below!)
    • Add IEEE 802.3x flow control support
  • Support for PCIe devices on Raspberry Pi Compute Module 4 (important note below!)
  • Report Arm DEN0028 defined SoC version and revision (as returned by the SMCCC_ARCH_SOC_ID SMC call) via telemetry.

其中有一点是对树莓派CM4的 PCIe 支持(只测试过 NVMe)。 ​

ESXi for ARM 最新下载地址

由于VMware决定关闭 flings.vmware.com 网站,内容被迁移到不同的地方,网站跳转到 https://developer.vmware.com/samples

ESXi for ARM的下载地址迁移到了 https://customerconnect.vmware.com/downloads/get-download?downloadGroup=ESXI-ARM,需要使用VMware Customer Connect账号登录。

相关文档迁移到了 https://communities.vmware.com/t5/ESXi-Arm-Fling-Documents/VMware-ESXi-Arm-Documentation/ta-p/2993062

目前最新版还是20230901的1.14版本。

ESXi Arm Edition version 1.11更新,及安装Win11 Arm版

根据ESXi Arm Edition | VMware Flings,带来了一些bug fix,支持vTPM, virtual Secure Boot和加密虚拟机等,并且增加了Windows的VMware Tools。

Oct 26, 2022 – v1.11

Note: Upgrade is NOW supported from earlier ESXi-Arm 1.x Fling releases

  • Support CPU accelerated crypto (e.g. NEON, Armv8 Cryptographic Extensions) for built-in ESX services
  • Fixed ESXi xterm-256color terminfo. Terminal.app in macOS (or any modern terminal, on any OS) now properly renders esxtop
  • Updated the virtual UEFI ROM to match the version used by VMware Fusion for Apple silicon
  • Support for virtual HTTP boot
  • Support for virtual TPM, virtual Secure Boot, and encrypted VMs
  • Support for physical GICv4 systems
  • Added VMware Tools for Windows
  • Fixed issue with ixgben driver

Known Issues:

  • Ampere Altra-based systems may PSOD when AHCI disks are used
  • Ubuntu 22.04 LTS installer graphics do not work. Please use Ubuntu 22.10
  • Windows SVGA driver does not work and must not be installed (or use safe mode to uninstall the svga device)

Build 20693597
VMware-VMvisor-Installer-7.0.0-20693597.aarch64.iso

因为1.x版本之后可以更新,所以我就通过更新安装升级到了1.11。

Win11 Arm版ISO可以通过UUP dump这个网站去抓取。

对于安装Win11 Arm版 VM,有几个问题要解决:

  1. vTPM,这个需要使用vCenter中的Configure->Security->Key Providers 添加一个Standard Key Provider. 而这个Provider本身可以通过一些开源的KIMP项目实现。这里不详细说明,感兴趣的可以github里搜索些KIMP相关的repos。
  2. Windows 11安装过程中,可能会提示找不到网络而无法继续(这个在X64下也会遇到),这里需要Shift+F10进入命令行,使用OOBE\BYPASSNRO命令来增加无网络安装。
  3. Windows 11 Arm版没有内置VMXNET3驱动,ESXi Arm Edition里所谓的Windows版VMware Tools,再mount到VM后,里面就内置了一个VMXNet3驱动。
  4. ESXi Arm Edition上面更新日志里提到了SVGA driver不支持,奇怪的是上面提到的VMware Tools里就有SVGA driver,我就没有安装。

最终,Windows 11 Arm版就在ESXi Arm Edition上安装成功了。(由于我的ESXi Arm Edition是装在树莓派4上的,所以性能还是有些吃紧的。)

ESXi Arm Edition version 1.10更新

2022.07.20,VMware Flings上,ESXi Arm Edition 又更新了,此次1.10版本有以下更新:

Note: Upgrade is NOW supported from earlier ESXi-Arm 1.x Fling releases

  • Upgrade from earlier ESXi-Arm 1.x Fling is now supported
  • Support for Arm DEN0115 (PCIe config space access via firmware interface, tested with Raspberry Pi)
  • Report L3 cache info for Ampere eMAG
  • Minor improvements to non-cache coherent DMA support
  • Raspberry Pi NIC (genet) statistics
  • GOS: use VNXNET3 and PVSCSI as default for freebsd12
  • Support for RK3566 SBCs (e.g. Quartz64)
    • PCIe support (NVMe not supported at this time)
    • EQOS (onboard) NIC support
  • Fix missing barriers for Intel igbn NIC driver, improving stability
  • Return zero for unknown sys_reg(3, 0, 0, x, y) accesses from VMs
  • Telemetry reporting – Collect statistics on what kind of systems the Fling is being run on, to best gauge interest
    • No PII is collected. Here are items collected:
      • CPU info: core count, NUMA, manufacturer, etc.
      • Firmware info: vendor, version
      • Platform info: vendor, product, UUID, PCI device list
      • ESXi-Arm info: version, patch level, product build
      • The /bin/telemetry script runs on every boot and at 00:00 every Saturday


      Build 20133114
      VMware-VMvisor-Installer-7.0.0-20133114.aarch64.iso 

其中最重要的就是,从这个版本开始,支持从旧版本更新安装了。(此前只能全新安装新版本。)本人把两个树莓派从旧版本直接更新安装到1.10. 

另外changelog 中提到了此版本会对系统的统计数据进行收集

  • Telemetry reporting – Collect statistics on what kind of systems the Fling is being run on, to best gauge interest
    • No PII is collected. Here are items collected:
      • CPU info: core count, NUMA, manufacturer, etc.
      • Firmware info: vendor, version
      • Platform info: vendor, product, UUID, PCI device list
      • ESXi-Arm info: version, patch level, product build
      • The /bin/telemetry script runs on every boot and at 00:00 every Saturday

虽然提到了 No PII (Personal Identifiable Information) is collected. 但如果对此数据收集有担心的话,可以去crontabs里禁用此计划任务。

也可以去/bin/telemetry.py 进行修改,或者把发送数据的方法调用注释掉,不被main执行就可以了。查看此python脚本我们也间接的学会了一些系统统计数据的查看办法。

ESXi on ARM v1.2 (2020年11月更新)

还是不支持更新,只能全新安装选择保留VMFS,然后重新注册虚拟机。我暂时先不更新了,changelog如下:

November 30, 2020 – v1.2 

Note: Upgrade is NOT possible, only fresh installation is supported. If you select “Preserve VMFS” option, you can re-register your existing Virtual Machines.

UI: Disable datastore browsing when no datastores are present

PSCI: Fix missing context_id argument for CPU_ON calls

GICv2: Always enable SGIs, as GIC-500

arm64: Support for big-endian guests

Remove requirements/restrictions on initrd for UEFI-less VMs

监控安装ESXi on Arm的树莓派4b的CPU温度

在传统的x86服务器上,ESXi可以监控该服务器的cpu温度,如图:

cpu温度显示

我们平时玩树莓派时,是可以获取到cpu温度,并且可以通过程序来联动启停风扇的。(网络上教程很多)

当ESXi on Arm安装在树莓派4b以后,默认肯定是获取不到这个温度的。

前几天一位网友在https://github.com/thebel1/thpimon中提供了thpimon-0.1.0-1OEM.701.1.0.40650718.aarch64.vib 这一驱动,在ESXi on Arm上安装这一vib驱动以后,就可以通过python脚本来获取相应数据了。具体步骤在上述项目的说明中已经包含了。这里就不演示步骤了。看下python脚本的显示结果:

运行结果

这里虽然解决了数据的采集问题,但是还不能形成时间序列数据,那么就需要接着改造python脚本来实现,恰好有另一个https://github.com/fgrehl/esxi-raspi,在前者基础上实现了时间序列数据的生成。

设定interval抓取:

运行结果:

运行结果

仅仅是在Console里打印时间序列数据,显然达不到“监控”级别,于是又加入了将数据发送至Graphite主机的CARBON端口,这样就可以在Graphite前端来图形化显示时间序列数据了。

设定发送主机:

参数设置

因为涉及到从ESXi向外(CARBON)发送数据,可以尝试关闭防火墙:esxcli network firewall set –enabled false,在重要环境中,请单独为此行为设定防火墙规则,不要整体关掉。

看下运行时Console的显示:

发送数据
可以看到格式为指标,数据,时间

Graphite主机的搭建不详细说明了,可以参照https://graphite.readthedocs.io/en/latest/install.html通过Docker安装并运行,我就是在一台虚拟机Photon OS中运行的此Docker,这里顺便安利下Photon OS,很适合玩Docker。

访问Graphite webui:

树形结构

可以从树形结构的Metrics下找到我们发送过来的数据。

双击cputemp即可在右侧显示图形,并可自定义图形的一些属性。

除此之外,我们还可以在Dashboard中添加该指标,如果有多台机器或者多项指标,就可以定义出我们自己想要的Dashboard:

保存后,该访问地址http://192.168.1.235/dashboard/ESXi-pi2%20cputemp%20Dashboard可以之后随时访问查看。

从图中看,这段时间该ESXi on Arm所运行的树莓派4b的cpu温度基本在46-48.5度之间。

树莓派4b安装Android TV 10

TechFigure的视频

How to Install Full Android TV 10 on Raspberry Pi 4 with Hardware Acceleration! 看到树莓派4b可以安装安卓TV10系统了,就按照视频体验了下。整个过程大概需要20分钟。

以下为简单步骤:

1. 下载所需要的文件

https://konstakang.com/devices/rpi4/网站中,打开LineageOS 17.1 Android TV – KonstaKANG (Android 10)页面,下载其中的lineage-17.1-20200815-UNOFFICIAL-KonstaKANG-rpi4-atv.ziprecovery2boot,再去https://sourceforge.net/projects/opengapps/files/arm/20200927/中下载open_gapps-arm-10.0-tvstock-20200927.zip

2. 写sd卡和U盘。

macOS下使用balenaEtcher将atv.zip写入sd卡(工具会自动解压img文件)。

写入sd卡

将其它两个文件放入U盘。

3. 将写好的SD卡和U盘插入树莓派4b,连接键盘鼠标,开机。

开机界面

开机后基本都是常规的设置。

熟悉的Android TV界面

此时是没有Google Play的。

设置完成后,点击设备偏好设置,可以先修改语言。

关于-》最下面的内部版本号,一直点到提示已开启开发者模式。

退到上一层菜单(我连接的USB键盘是F2键后退,F1为Home),进入新增加的开发者选项。开启Root access。并开启本地终端。

回到主屏幕,点击左侧Apps,从右侧菜单选择本地终端。

su

rpi4-recovery.sh   //需要一点时间完成

reboot

4. 重启进入recovery。

选择右下角的”Swipe to Allow modifications”。

选择Install。

选择右下角的”Select Storage”,选择U盘。

选择”open_gapps-arm-10.0-tvstock-20200927.zip”, “Swipe to confirm Flash”。此处需要一点时间来完成。

安装完毕后,选择”Wipe Dalvik”,”Swipe to Wipe”。

点击屏幕左上角的上下箭头标志,返回主菜单。

选择”Wipe”,”Swipe to Factory Reset”。

再次点击上下箭头标志,返回主菜单。

选择Mount。

勾选上Boot和System,继续保留Data和USB-OTG。

再次点击上下箭头标志,返回主菜单。

选择Install。

选择”lineage-17.1-rpi-recovery2boot.zip”,”Swipe to confirm Flash”。

Reboot。

5. 重启后,系统需要重新设置(因为我们上面进行了Factory Reset)。

此时的设置步骤和其它国际版Android TV盒子基本一致,比如Shield TV等。请保证网络畅通。可以从左侧Apps调出Google Play,安装更多的应用。

设置完毕
添加Youtube

6. 装好以后才发现,可以和Xbox One X的一个旧游戏手柄连上,控制起来方便多了。其它支持的蓝牙遥控器应该也是可以的,但我手里只有Shield TV Pro 2019的遥控器,不想给树莓派用。

7. 可能因为设备为非认证设备,在Google Play里是搜索不到Netflix的。不过可以从Apkmirror下载一些旧版本(比如6.26.1),通过adb从电脑安装到树莓派4上(树莓派Android TV里重新开启开发者选项,勾选USB调试,USB连接电脑和树莓派4)。经测试该Netflix应用可以使用键盘鼠标控制,因为是非原生应用,需要从系统右上角的设置齿轮点开,选择应用,从所有应用中找到后启动。如果想为此类非适配应用添加Android TV的图标和Launcher可以搜索网上已有的各种教程。

8. https://konstakang.com/devices/rpi4/LineageOS17.1/ 文中提到了硬件编解码不能正常工作,所以都是软件编解码,这样性能就有所吃紧,实际测试中,本地Kodi播放1080P还算流畅,4K播放就已经很卡。就没再测试在线的Netflix和Youtube 4K。Youtube 1080P和Netflix 1080P播放还是比较流畅的。

综上,此版本系统在树莓派4b上,用于体验Android TV 10系统还算可以,但作为日常使用的电视盒子是不合格的。(作者频道里还有安装Android 10 Mobile的视频)

Android 10

PS: 另外不知道是固件问题还是我的HDMI线问题,接到有扬声器的显示器上,声音很小,需要把扬声器音量调到很大。

ESXi on Arm 10/22 更新

前些天在ESXi on Arm — 树莓派4b安装ESXi中体验了在树莓派4b上使用ESXi on Arm。一些Arm64虚拟机用了十几天体验还可以。用Arm虚拟机体验了一些应用,比如Pi-hole,HomeAssistant,OpenMediaVault,AdGuard Home等等。

今天看到ESXi Arm Edition这里在10/22更新了新版本,有了一些Bug修复和新功能。

Changelog中首先声明的就是不能升级安装。但是可以选择Preserve VMFS的方式安装。安装好以后原有的虚拟机的Datastore里的虚拟机文件夹都还在,可以通过注册虚拟机的方式重新添加就可以用了。

下载镜像VMware-VMvisor-Installer-7.0.0-17068872.aarch64.iso,写入一个新的U盘(非之前已安装ESXi的U盘)。macOS下我用balenaEtcher写入。

原有ESXi关闭所有虚拟机,进入维护模式(其实没太大意义,因为我们不是升级),关机。

插入新写好的U盘,接上键盘。开机。(比如说我原有ESXi在三星U盘上,新写好的是金士顿)。

在白色树莓界面,按ESC,进入UEFI启动菜单,选择从新写好的金士顿U盘启动。启动界面还是跟之前一样记得按Shift+O去修改autoPartitionOSDataSize=xxxx。

加载完毕,选择安装在三星U盘后,会弹出如下提示:

在当前安装介质发现了已有VMFS

选择preserve。然后后面安装步骤都一样了。

安装好以后,拔掉安装的金士顿U盘,重启。

启动完毕后,应该默认是DHCP,如果分配到的IP和之前不一样,可以进去修改一下静态地址,设置dns之类的。(ESXi系统本身是全新的,只是虚拟机文件的的VMFS datastore还在。所以其它NTP之类的设置也要重新去设置。)

一切设置完毕后。浏览器访问该VMFS datastore。选择注册虚拟机。

注册虚拟机

选择虚拟机文件夹,选择可选的vmx文件,点击注册。

注册

注册成功。

注册成功

在虚拟机菜单下可以看到该虚拟机。可以选择操作编辑设置去确认是否有丢失的配置。

虚拟机菜单

重复以上步骤注册其它虚拟机,不需要的虚拟机可以按文件夹去删除。

全部注册完毕

检查完设置没问题以后,虚拟机开机检查。

除了我暂时不用的Pi-hole,都开机了。

开机

最后简单过一下更新说明:

Fix for https://flings.vmware.com/esxi-arm-edition/bugs/1098 (PSOD adding to VDS) 修复加入分布式交换机时紫屏的bug,我之前版本也加入VDS了,没遇到bug。

Support for Arm N1 SDP platform 新设备支持。

Support for VMs on Neoverse N1 CPU 没太懂,之前使用这个CPU不支持创建VM吗?和上面一行是相关的吧。

Support for UEFI-less VMs 支持非UEFI的VM,是指DeviceTree么?

Pass-thru stability improvements to LS1046A and LX2160A platforms 对两个平台的直通稳定性的提升。

Fix for vCenter/DRS incorrect CPU usage 对vCenter/DRS中错误显示CPU使用率的修复。

Fix for VM crash when VM storage fills up 修复VM在VM存储占满后崩溃的问题。

Stability fix for non-coherent DMA device support 不太懂,提升该种设备的稳定性。

Installer: tolerate RAM size within 4% of 4GB instead of 3.125 (for the otherwise unsupported RK3399 boards) 对4GB内存的限制的允许误差修改为在-4%以内,之前为-3.125%。相当于放宽了一点点内存限制,应该是因为RK3399达不到-3.125%之内。

Serial port handling improvements (for unsupported/unknown boards, to be a bit more resilient of firmware configuration errors) 对串口处理的一些改进。

ESXi on ARM中安装Raspios-buster-arm64

看到标题是不是就觉得这是瞎折腾?

没错。如果树莓派4b中安装了ESXi on ARM,在ESXi中再安装Raspios,性能肯定不如直接使用树莓派4b裸装Raspios。

但是如果你使用一台8G版本树莓派4b,单独用一个Raspios又有点浪费了。可以试着在ESXi中多装几个Arm Linux系统,比如CentOS,Raspios,Ubuntu。然后可以在ESXi中随意切换虚拟机开关机。甚至可以同时运行几个Arm Linux系统,榨干它的性能。ESXi是可以超配的。如下图(各个虚拟的Linux空载时)。另外,还可以用到虚拟机的快照,克隆等功能,方便在上面开发测试软件,比如Pi-hole之类的。

同时开启5个Arm Linux虚拟机

Ubuntu,PhotonOS,Debian,CentOS在https://flings.vmware.com/esxi-arm-edition中附带的Pdf文档都说明了是支持并验证过的,方法也就是挂载ISO文件,去安装虚拟机。我就不做演示了。下面演示下装Raspios的过程。

因为官方下载到的2020-05-27-raspios-buster-arm64.img 并不默认支持EFI启动,而ESXi on Arm又只支持EFI启动,所以无法直接使用该镜像,我们要借助Debian的rescue mode来解决这个问题。

1. 下载raspios的img。使用StarWind V2V Converter转成vmdk(2个文件,上传至ESXi的datastore后显示成1个)。

2. 下载debian-10.6.0-arm64-netinst.iso,上传至datastore。

3. 创建虚拟机,类型Linux-Debian 10 x64。删掉原有虚拟的硬盘,添加上面转过的vmdk作为硬盘。光驱里加载Debian的iso文件,记得勾选上已连接,并去虚拟机选项里把引导选项的强行执行EFI设置的下次引导钩上。然后保存。cpu可以分2个核,内存1G或者2G都可以。网卡确保是能连外网的。

记得勾选这个

4. 启动虚拟机,去EFI设置的boot选项里,选择光驱启动 EFI DVD/CDROM。

5. 加载Debian,选择Advanced options,然后Rescue mode。

Advanced options
Rescue mode

6. 语言,国家,键盘都默认即可。

7. 随意设置一个Hostname, Domain name, time zone.

8. Device to use as root file system 选择 /dev/sda2,一定不要选错。然后Mount separate /boot选Yes。在/dev/sda2中运行shell。

/dev/sda2
Yes
/dev/sda2

9. Continue。

Continue

10. 接下来在下方依次输入下面几行命令,注意因为需要联网下载,所以每一步都需要很长时间(根据网络情况而定)。如果某一步没有成功,一定要再执行一遍确保成功了再下一行。如果提示空间不足之类的,那就apt autoremove; apt autoclean之类的试试。

apt update
apt install linux-image-arm64
apt install grub-efi-arm64
grub-install --efi-directory=/boot/
update-grub
exit

整个过程其实就是通过debian的rescue去给raspios加了grub-efi启动选项支持。

11. 关闭虚拟机。 把Debian的ISO虚拟光驱断开连接并且去掉打开电源时连接。

12. 开机,等待第一个启动选项自动加载。完成后就看到熟悉的树莓派系统了。

13. 初始化设置。先不要更新,因为应该会遇到空间不足的问题。

14. 关机。加大硬盘的容量,比如扩大到20G。

扩大硬盘

15. 保存,开机。进入系统后去sudo raspi-config。选择第7项 Advanced Options。

第七项

16. 选择A1 Expand Filesystem。

A1

17. 然后重启检查下硬盘是不是扩大了。

已扩容

18. 可以apt update或upgrade啦。

19. 如果想安装open-vm-tools,可以按照ESXi-Arm-Fling-Doc.pdf文档中的第12步操作编译,该文档是Ubuntu中的步骤,Debian同样适用。

VMware Tools