Vagrant arm64 image manifests are not specified as arm64 (VMWare and VirtualBox confirmed)

Hello,

I’m writing this hoping it would be a quicker way to contact Release Engineering.

I encountered a error message while trying to use Rocky Linux on Vagrant with VMWare desktop.

   An error occurred causing VMware to cancel the current operation. Details
of the error causing the cancelation:

    This virtual machine cannot be powered on because it requires the X86 machine architecture, which is incompatible with this Arm machine architecture host. See KB-84273.

As Rocky provides arm64 images with VMWare provider, I decided to dive deeper and found that the VMX file (which is like a manifest file of a VMWare VM) is malformed.

$ curl -Ls https://dl.rockylinux.org/vault/rocky/9.5/images/aarch64/Rocky-9-Vagrant-VMware.latest.aarch64.box | bsdtar -xO '*.vmx' | grep guestOS
guestOS = "rhel7-64"

If you have a copy of a VMWare Workstation/Fusion, creating an ARM64 Rocky VM would give you this guestOS property instead:

guestOS = "arm-rockyLinux-64"

Although rockyLinux-64 seems to be a rather new addition to VMWare, I’m assuming the lack of arm- prefix prevented ARM-based hosts to run the Vagrant box. While I wasn’t able to confirm the .vmdk contained a valid ARM64 image as well, I believe the guestOS section is incorrect as of now.

The VirtualBox situation is similar, where the <Platform> node is missing to indicate the VM should be run on an ARM64 platform.

$ curl -Ls https://dl.rockylinux.org/vault/rocky/9.5/images/aarch64/Rocky-9-Vagrant-Vbox-9.5-20241118.0.aarch64.box | bsdtar -xO box.ovf | xpath -q -e Envelope/VirtualSystem/vbox:Machine/Platform
(The output is empty)

If you create a VM on ARM64 platform using VirtualBox you should get a <Platform> node like this:

<Platform architecture="ARM">
    <Chipset type="ARMv8Virtual" />
    <CPU />
</Platform>

I think these manifest issues are blocking the ARM64 users from using the Vagrant images provided by Rocky Linux.

Please forward this to SIG/Cloud if you know where to contact them. I’ll be happy to provide further information if needed.

Hi @Basix !

I remember that we had the issue that we couldn’t put 2 different vmx files a long time ago, which means back then we put a section in the template Vagrant file, which should actually live inside of the image. (think it was a compatibility thing to make sure we can support Vagrant Rocky 8 or so)
This has the following section:

      # If you are on Apple aarch64 hardware (Mx) make sure you enable these:
      #vmware.vmx["virtualHW.version"] = "19" # or higher
      #vmware.vmx["guestOS"] = "arm-rhel7-64"
      #vmware.vmx["ethernet0.virtualdev"] = "vmxnet3"
      #vmware.vmx["ethernet1.virtualdev"] = "vmxnet3" # if you connect more than 1 NIC
      # Switching from SCSI to SATA disk
      #vmware.vmx["sata0.present"] = "TRUE"
      #vmware.vmx["sata0:0.present"] = "TRUE"
      #vmware.vmx["scsi0.present"] = "FALSE"
      #vmware.vmx["scsi0:0.present"] = "FALSE"

This means, you have to put these variables in your Vagrantfile which you are using to init the VM, then it should work :+1:

Thanks for bringing this up though, maybe this behavior has changed and we can actually differentiate now, we will give that another look and see if we can fix that for a soon release of the image.

Cheers, lumarel

1 Like

A short btw!
I remember more of that whole thing, before any of the final ESXi (on ARM), Workstation, Fusion versions with ARM support came out it actually worked that way, that there were no arm- variants, it was literally just the same. Because of that it also worked with rhel7-64
That change got introduced with vmxHW version 21 :+1:

@Basix for the 2nd topic about VBox, could you send me a more complete output of the ovf file?
I unfortunately failed up to now to get a system that shows me this section (and don’t want to install VBox on my only AS Mac)
I can’t find out where in the xml tree the Platform node is located.

PR for the VMware part is already in the box, so this should be in the next image build which should come with the 9.6 release :+1: