WSL and EFLOW for IoT Edge Development
Published Aug 04 2021 09:00 AM 7,733 Views

Since Microsoft CEO Satya Nadella proclaimed that “Microsoft ♥ Linux” in 2014, Microsoft has accelerated its investment in Linux and Open Source. Now, Linux amounts to a sizable commitment seen across on-premises datacenters, Azure public cloud, and edge devices. We recognize that the world is heterogenous, and aim to meet customers where they are, whether it means running workloads in Windows or Linux.

A result of this investment, Microsoft has released two offerings that make it easier for Windows customers to run Linux workloads: Windows Subsystem for Linux (WSL), and more recently, Azure IoT Edge for Linux on Windows (EFLOW).


The Windows Subsystem for Linux lets developers run a GNU/Linux environment -- including most command-line tools, utilities, and applications -- directly on Windows, unmodified, without the overhead of a traditional virtual machine or dualboot setup. WSL was introduced in 2016 and WSL 2, which introduces a full Linux kernel and additional features, was introduced in 2019.


Similarly, Azure IoT Edge for Linux on Windows allows you to run containerized Linux workloads by running a curated Linux virtual machine on a Windows device. EFLOW was made generally available earlier this year. So what are the key differences between the two? WSL and EFLOW target different audiences and use cases.


In general, WSL is designed to enable Linux tools on Windows. This for developers to run Bash and core Linux command-line tools, which may be used for running short-cycle processes as part of an inner development loop. Developers may, for example, be executing code on a PC using WSL to program something else. EFLOW is meant for running production services, primarily in the context of an IoT deployment. This may include 24/7 processes running on devices with multi-year lifespans.


As a result, WSL and EFLOW provide vastly different approaches to flexibility and supportability. As a flexible and general-purpose tool for developer use, WSL allows users to select their own user-space. In other words, developers can select their favorite GNU/Linux distributions, such as Ubuntu, from the Microsoft Store and customize their OS by adding packages with a package manager. In contrast, the EFLOW Linux environment has a fixed user-space composition provided by Microsoft and uses Azure IoT Edge, exclusively, as its deployment mechanism. This means that software must be containerized as an Azure IoT Edge module to run on EFLOW.


EFLOW's approach prioritizes supportability, especially as a platform for IoT. The EFLOW Linux virtual machine comes pre-installed with the Azure IoT Edge runtime with moby-engine, and is validated as a for Azure IoT Edge workloads. Furthermore, because EFLOW’s Linux VM is based on Microsoft’s first party CBL-Mariner operating system, Microsoft is able to keep both the Linux environment and the Azure IoT Edge up-to-date for you through Windows Update and aligns the maintenance of the OS with the cadence of Azure IoT Edge for curated compatibility. Lastly, EFLOW is supported on , with industry-leading long-term servicing. Thus, with EFLOW the entire solution stack is supported by Microsoft.


WSL may be used in early development where greater flexibility in user-space is needed. A user may, then, transition to EFLOW when deploying Azure IoT Edge modules to devices for commercial or productized purposes. This transition is possible because they both use the same underlying technology and type of containerized workloads.




Overall, WSL and EFLOW give customers greater flexibility to run their Linux workloads, covering the full-range of target audiences and use cases. WSL has proven to be an extremely valuable tool for developers to access Linux tools on a Windows device, while EFLOW is a fully Microsoft supported IoT production solution for Azure IoT Edge Linux Modules.


IoT Show Video


To learn more visit:

What is Windows Subsystem for Linux | Microsoft Docs

What is Azure IoT Edge for Linux on Windows | Microsoft Docs

Version history
Last update:
‎Jul 28 2021 11:30 AM
Updated by: