WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud
  • Tanzu
    • Application Modernization
    • Tanzu services
    • Tanzu Community Edition
    • Tanzu Kubernetes Grid
    • vSphere with Tanzu
  • Home Lab
  • Nested Virtualization
  • Apple
You are here: Home / vSphere 8.0 / ACPI motherboard layout requires EFI - Considerations for switching VM firmware in vSphere 8 

ACPI motherboard layout requires EFI - Considerations for switching VM firmware in vSphere 8 

01.11.2023 by William Lam // Leave a Comment

One of the important settings to consider when creating a new Virtual Machine in vSphere is the VM firmware, which can either be BIOS or EFI and can be configured under VM Options->Boot Options->Firmware. After selecting the desired guest operating system (GOS) in vSphere, the system will default to a recommended firmware type and can also be overridden by the user. Ultimately, the selection of the VM firmware should be determined by what your GOS supports.

If you ever need to change the VM firmware, you typically will need to re-install the GOS because it does not understand the new firmware change (just like in a physical server) and more than likely the GOS will also not boot due to this change and this is the existing behavior from GOS point of view.

For a net new VM creation, prior to vSphere 8, if you had configured a VM using EFI firmware and you have not installed a GOS and realized that you had made a mistake and needed to change the VM firmware to BIOS, you could easily do so using the vSphere UI or API and then install your OS. In vSphere 8 and specifically when using the latest Virtual Machine Compatibility (vHW20), you can not just switch the VM firmware after the initial VM creation, especially if you had started with EFI firmware and wish to change it to BIOS.

In doing so, you will come across the following error message:

ACPI motherboard layout requires EFI. Failed to start the virtual machine. Module DevicePowerOnEarly power on failed.

To support the new Virtual NUMA Topology in vSphere 8, a new VM motherboard layout has been introduced for VMs using the new Virtual Machine Compatibility 8.0 (vHW20) configured with EFI firmware. This new motherboard layout setting is available as a new vSphere API property called motherboardLayout and defaults to the existing i440bxHostBridge value for VMs configured with BIOS firmware and acpiHostBridges for VMs configured with EFI firmware.

The important consideration when creating a new Virtual Machine Compatibility 8.0 (vHW20) VM is that the motherboard layout is only set once during the initial VM creation. This means that if you had selected EFI as the firmware and then decided to change it to BIOS for whatever reason, the motherboard layout setting will still be configured for the original firmware setting. The reason for this behavior is that a VM can not be converted from using the new motherboard layout to the old or vice versa, especially for the device slots on the new motherboard that will not exist in the old motherboard and the only proper way to switch is to re-create the VM with the desired VM firmware.

Going back to the error message shown earlier, we can see why the message is being displayed because the motherboard layout is still configured as acpiHostBridges from the original VM firmware configure with EFI, but current VM firmware has been switched to BIOS and this is not supported using the new motherboard layout.

So, how do we go about remediating this issue? As mentioned earlier, if this is a brand new VM that you have not installed a GOS, then you simply just need to re-create the VM with the desired VM firmware and the issue goes away.

If you really do not wish to re-create the VM, you do have a couple of options.

Option 1 - Using the vSphere API, you can update the motherboard layout to go back to the default i440bxHostBridge, assuming you are using the BIOS firmware. The following PowerCLI snippet can be applied to the desired VM and it will automatically update the motherboard layout property based on the configured VM firmware.

$vm = Get-VM "Foo"

if($vm.ExtensionData.Config.Firmware -eq "efi") {
    $motherboardLayout = "acpiHostBridges"
} else {
    $motherboardLayout = "i440bxHostBridge"
}

$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.motherboardLayout = $motherboardLayout
$task = $vm.ExtensionData.ReconfigVM_Task($spec)
$task1 = Get-Task -Id ("Task-$($task.value)")
$task1 | Wait-Task | Out-Null

Option 2 - If you do not want to use vSphere API or if you are using the Free ESXi License, which does not give you write access to the vSphere API, then you will need to update the VMX file manually (which we typically do not recommend) but is your option if you do not have API access.

Step 1 - SSH to ESXi host and change into the datastore where the VM is stored

Step 2 - Ensure the VM is powered off and edit the VMX file and search for the string chipset.motherboardLayout which should have the value "acpi". Update the value to "i440bx"

Note: When creating a VM using BIOS firmware, this setting is not added directly into the VMX file because the default behavior is to use i440bx, however when you use EFI firmware, this entry is added to the VMX file.

Step 3 - For the changes to go into effect, we need to reload the VM and to do so, we need to identify the VM ID (also known as the VM Managed Object Reference ID or MoRef for short) by running the following command then specifying the ID in the following command:

vim-cmd vmsvc/getallvms | grep Foo
vim-cmd vmsvc/reload XXX

If you have existing VMs that have GOS installed and you wish to change the firmware from BIOS to EFI, you should consider re-creating the VM with EFI firmware so you get the full capabilities, especially if you plan to take advantage of the new vNUMA Topology features. If you do not intend to use any of the new vNUMA features, then you can update the firmware and simply reinstall the GOS and the motherboard layout will continue to use the default i440bx.

More from my site

  • Nested ESXi installation using HTTPS boot over VirtualEFI in vSphere 8
  • How to bootstrap vSAN Express Storage Architecture (ESA) on unsupported hardware?
  • USB Network Native Driver for ESXi Fling now supports vSphere 8!
  • Virtual NUMA (vNUMA) and CPU Hot-Add support in vSphere 8
  • Quick Tip - Changes to building custom ESXi images in vSphere 8

Categories // vSphere 8.0 Tags // acpi, bios, efi, ESXi 8.0, i440bx, vNUMA, vSphere 8.0

Thanks for the comment! Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Search

Author

William Lam is a Senior Staff Solution Architect working in the VMware Cloud team within the Cloud Infrastructure Business Group (CIBG) at VMware. He focuses on Cloud Native technologies, Automation, Integration and Operation for the VMware Cloud based Software Defined Datacenters (SDDC)

Connect

  • Email
  • GitHub
  • LinkedIn
  • RSS
  • Twitter
  • Vimeo

Recent

  • Blocking vSphere HTML5 VM Console and allowing only Standalone VM Remote Console (VMRC)? 02/08/2023
  • Quick Tip - Inventory core count for vSphere+, vSAN+ & VCF+ Cloud Service 02/07/2023
  • How to automate adding a license into vCenter Server with custom label?  02/06/2023
  • Automated ESXi Installation with a USB Network Adapter using Kickstart 02/01/2023
  • How to bootstrap ESXi compute only node and connect to vSAN HCI Mesh? 01/31/2023

Advertisment

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy

Copyright WilliamLam.com © 2023

 

Loading Comments...