Nested virtualization for Azure IoT Edge for Linux on Windows

Applies to: IoT Edge 1.4 checkmark IoT Edge 1.4

Important

IoT Edge 1.4 is the supported release. If you are on an earlier release, see Update IoT Edge.

There are three forms of nested virtualization compatible with Azure IoT Edge for Linux on Windows. Users can choose to deploy through a local virtual machine (using Hyper-V hypervisor), VMware Windows virtual machine or Azure Virtual Machine. This article will provide users clarity on which option is best for their scenario and provide insight into configuration requirements.

Note

Ensure to enable one networking option for nested virtualization. Failing to do so will result in EFLOW installation errors.

Deployment on local VM

This is the baseline approach for any Windows VM that hosts Azure IoT Edge for Linux on Windows. For this case, nested virtualization needs to be enabled before starting the deployment. Read Run Hyper-V in a Virtual Machine with Nested Virtualization for more information on how to configure this scenario.

If you're using Windows Server or Azure Stack HCI, make sure you install the Hyper-V role.

Deployment on Windows VM on VMware ESXi

Intel-based VMware ESXi 6.7 and 7.0 versions can host Azure IoT Edge for Linux on Windows on top of a Windows virtual machine. Read VMware KB2009916 for more information on VMware ESXi nested virtualization support.

To set up an Azure IoT Edge for Linux on Windows on a VMware ESXi Windows virtual machine, use the following steps:

  1. Create a Windows virtual machine on the VMware ESXi host. For more information about VMware VM deployment, see VMware - Deploying Virtual Machines.

Note

If you're creating a Windows 11 virtual machine, ensure to meet the minimum requirements by Microsoft to run Windows 11. For more information about Windows 11 VM VMware support, see Installing Windows 11 as a guest OS on VMware.

  1. Turn off the virtual machine created in previous step.
  2. Select the Windows virtual machine and then Edit settings.
  3. Search for Hardware virtualization and turn on Expose hardware assisted virtualization to the guest OS.
  4. Select Save and start the virtual machine.
  5. Install Hyper-V hypervisor. If you're using Windows client, make sure you Install Hyper-V on Windows 10. If you're using Windows Server, make sure you install the Hyper-V role.

Note

For VMware Windows virtual machines, if you plan to use an external virtual switch for the EFLOW virtual machine networking, make sure you enable Promiscious mode. For more information, see Configuring promiscuous mode on a virtual switch or portgroup. Failing to do so will result in EFLOW installation errors.

Deployment on Azure VMs

Azure IoT Edge for Linux on Windows isn't compatible on an Azure VM running the Server SKU unless a script is executed that brings up a default switch. For more information on how to bring up a default switch, see Create virtual switch for Linux on Windows.

Note

Any Azure VMs that is supposed to host EFLOW must be a VM that supports nested virtualization. Also, Azure VMs do not support using an external virtual switch.