Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 30 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,78 +2,54 @@

[![License](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)

The Edge Microvisor Toolkit is a streamlined container host that
showcases the Intel silicon optimizations. Built on Azure Linux, it features a
Linux Kernel maintained by Intel, incorporating all the latest kernel and user
patches.
Edge Microvisor Toolkit is a reference Linux operating system that demonstrates
the full capabilities of Intel processors for Edge AI workloads through
Linux patches from Intel that are yet to be upstreamed. Built on Azure Linux,
it incorporates all the latest kernel and user patches from a Linux
Kernel maintained by Intel.

It is published in several versions, both immutable and mutable. Use them to
quickly deploy and run your solutions for multiple scenarios, like benchmarking
and validation of edge AI computing workloads, including real-time processing,
or build your own system, using the existing infrastructure.
Edge Microvisor Toolkit is published in several versions, both immutable and mutable, for quickly deploying, validating, and benchmarking edge AI workloads, including those requiring real-time processing. You can also use the toolkit's flexible build infrastructure to create custom images from a large set of pre-provisioned packages.

The currently published versions are:
Here are the published versions:

* [Edge Microvisor Toolkit Standalone Node (immutable)](https://github.com/open-edge-platform/edge-microvisor-toolkit-standalone-node)
* [Edge Microvisor Toolkit Developer Node with or without real time extensions (mutable)](./docs/developer-guide/emt-architecture-overview.md#developer-node-mutable-iso-image)
* [Edge Microvisor Toolkit (immutable) - deployable in Edge Manageability Framework](./docs/developer-guide/emt-deployment-edge-orchestrator.md)
* [Edge Microvisor Toolkit with real time extensions (immutable) - deployable in Edge Manageability Framework](./docs/developer-guide/emt-deployment-edge-orchestrator.md)
* [Edge Microvisor Toolkit Developer Node with or without real-time extensions (mutable)](./docs/developer-guide/emt-architecture-overview.md#developer-node-mutable-iso-image)
* [Edge Microvisor Toolkit (mutuable or immutable) for use with Edge Manageability Framework](./docs/developer-guide/emt-deployment-edge-orchestrator.md)
* [Edge Microvisor Bootkit](./docs/developer-guide/emt-bootkit.md)

The Edge Microvisor Toolkit has undergone extensive validation across all Intel
platforms such as Xeon®, Intel® Core Ultra™, Intel Core™ and Intel® Atom®. It
provides robust support for integrated NPU, as well as a
Edge Microvisor Toolkit has undergone extensive validation across the Intel Xeon®, Intel® Core Ultra™, Intel Core™, and Intel® Atom® processor families. It provides robust support for integrated NPU as well as a
[selection of discrete GPU cards](./docs/developer-guide/emt-system-requirements.md#hardware-requirements).


You can either build the Edge Microvisor Toolkit by following step-by-step
instructions or download it directly. Both the Build system and the Edge Microvisor
Toolkit are available as Open-Source.
You can either build Edge Microvisor Toolkit by following step-by-step
instructions or download it directly. Both the build system and Edge Microvisor
Toolkit are available as open source.

## Get Started

All articles required to quickly learn how to work with Edge Microvisor Toolkit can be found [here](./docs/developer-guide/emt-get-started.md).

**Demos**
* [Standalone Edge Microvisor Toolkit (EMT-S) integration with Edge Microvisor Bootkit](https://www.youtube.com/watch?v=rmgmWYi6OpE):
This demo includes the USB Device Preparation, Provisioning Process, System Readiness, and Final Boot with the cluster starting successfully.
* [Edge Microvisor Toolkit Standalone Node 3.0](https://www.youtube.com/watch?v=j_4EX_wggSI):
This demo provides a brief walkthrough of Edge Microvisor Toolkit Standalone Node for the 3.0 release, covering various use cases.

**Demos**
* [Standalone Edge Microvisor Toolkit (EMT-S) integration with EMT-Micro OS](https://www.youtube.com/watch?v=rmgmWYi6OpE):
This demo includes: USB Device Preparation, Provisioning Process, System Readiness, and Final Boot with the cluster starting successfully.

## Getting Help
To find out how to deploy and work with Edge Microvisor Toolkit, see [Get Started](./docs/developer-guide/emt-get-started.md), check out the video demonstrations on [YouTube](https://www.youtube.com/playlist?list=PLg-UKERBljNxIMUUPWHpA8ZJ_YUU5tPP9), or [view the documentation website](https://docs.openedgeplatform.intel.com/2025.1/edge-microvisor-toolkit/index.html).

If you encounter bugs, have feature requests, or need assistance,
[file a GitHub Issue](https://github.com/open-edge-platform/edge-microvisor-toolkit/issues).
## Get Help or Contribute

Before submitting a new report, check the existing issues to see if a similar one has not
been filed already. If no matching issue is found, feel free to file the issue as described
in the [contribution guide](./docs/developer-guide/emt-contribution.md).
Vendors, developers, and technology partners can take part in the GitHub
community for Edge Microvisor Toolkit in various ways: contributing code, proposing
a design, downloading and trying out a release, opening an issue,
benchmarking application performance, and participating in [Discussions](https://github.com/open-edge-platform/edge-microvisor-toolkit/discussions). To get help with Edge Microvisor Toolkit, contribute to its
development, or learn more, see the following resources:

For security-related concerns, please refer to [security considerations](./docs/developer-guide/emt-security-considerations.md).

[Azure Linux Documentation](toolkit/docs/), may also be useful, if you encounter
problems when using Edge Microvisor Toolkit. Its copy is part of the Edge
Microvisor Toolkit repository, for easier access.

## Contributing

As an open-source project, Edge Microvisor Toolkit always looks for community-driven
improvements. If you are interested in making the product even better, see how you can
help in the [contribution guide](./docs/developer-guide/emt-contribution.md).
- [Open an issue](https://github.com/open-edge-platform/edge-microvisor-toolkit/issues)
- [Submit a pull request](https://github.com/open-edge-platform/edge-microvisor-toolkit/pulls)
- [Read the Contribution Guide](https://github.com/open-edge-platform/edge-microvisor-toolkit/blob/3.0-dev/docs/developer-guide/emt-contribution.md)
- [View the Azure Linux documentation](toolkit/docs/), a copy of which is included in the Edge Microvisor Toolkit repository for ease of access.
- [Report a security vulnerability](https://github.com/open-edge-platform/edge-microvisor-toolkit/blob/3.0-dev/SECURITY.md)
- [Read and respond to blog posts](https://medium.com/open-edge-platform/subpage/5f0ac5579c60)
- [Download the latest weekly release](https://github.com/open-edge-platform/edge-microvisor-toolkit/discussions/categories/announcements?discussions_q=is%3Aopen+category%3AAnnouncements)
- [Participate in discussions](https://github.com/open-edge-platform/edge-microvisor-toolkit/discussions)

## License Information

Edge Microvisor Toolkit is based on [Azure Linux](https://github.com/microsoft/azurelinux),
sharing its permissive open-source license:
[MIT](https://github.com/microsoft/azurelinux/blob/3.0/LICENSE).

For more details, see the [LICENSE](./LICENSE) document.
Based on [Azure Linux](https://github.com/microsoft/azurelinux), Edge Microvisor Toolkit shares its permissive open-source license: [MIT](https://github.com/microsoft/azurelinux/blob/3.0-dev/LICENSE). For more information, see the [LICENSE](./LICENSE) document.

### Attribution

We acknowledge Microsoft's contributions to the open-source community and thank
them for providing the secure and efficient Linux distribution.
them for providing a secure and efficient Linux distribution.
102 changes: 57 additions & 45 deletions docs/developer-guide/emt-architecture-overview.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,37 @@
# Architecture Overview

Edge Microvisor Toolkit is an OS build pipeline based on
Azure Linux (as an RPM-based OS), designed to produce Linux OS images optimized for Intel®
platforms. This article provides an overview of the build infrastructure, as well as
Edge Microvisor Toolkit is a reference Linux operating system that demonstrates the full capabilities of Intel processors for Edge AI workloads through Linux patches from Intel that are yet to be upstreamed. With an OS build pipeline based on
Azure Linux, which uses the RPM Package Manager system, Edge Microvisor Toolkit is designed to produce Linux images optimized for Intel®
platforms. This article provides an overview of the build infrastructure as well as
architectural details of the OS itself.

## Edge Microvisor Toolkit

Edge Microvisor Toolkit is produced and maintained in several editions, in both immutable and
mutable images. It enables users to quickly deploy and run their workloads on Intel®
platforms, offering quick solutions to multiple scenarios. Currently, it is deployed as:
mutable images. It enables you to quickly deploy and validate workloads on Intel®
platforms in order to demonstrate the full capabilities of Intel silicon for various scenarios. There are several options for deploying the toolkit:

- ISO installer with a mutable image using GRUB as the second-stage bootloader.
- ISO installer with an immutable image, systemd-boot as the second-stage bootloader with Kubernetes.
- RAW and VHD/X - immutable image, systemd-boot as the second-stage bootloader.
- RAW and VHD/X - immutable image, systemd-boot as the second-stage bootloader, with
real-time support.
- ISO installer with an immutable image using systemd-boot as the second-stage bootloader with Kubernetes.
- RAW and VHD/X: immutable image using systemd-boot as the second-stage bootloader.
- RAW and VHD/X: immutable image using systemd-boot as the second-stage bootloader, with the Preempt_RT kernel patches to support real-time computing.

The two immutable image microvisor versions integrate the Intel® kernel and
enable the software and features offered by Intel® Open Edge Platform. Check out the
overview of key software components:
The two immutable image versions integrate the Intel® kernel and
enable the software and features offered by [Edge Manageability Framework](https://github.com/open-edge-platform/edge-manageability-framework). Here's an overview of key software components:

![overview of key software components](./assets/emt-architecture-key-components.drawio.svg)

## Edge Microvisor Toolkit Image Versions

The toolkit comes pre-configured to produce different images, the table below
outlines the key differences between those.
The toolkit comes pre-configured to produce different images; the following table outlines the key differences between them.

| Feature | Edge Microvisor Toolkit Developer Node | Edge Microvisor Toolkit Standalone Node & Orchestrated |
| -----------------| -------------------- | ------------------------------------------------- |
| Capabilities | <ul><li>Easy to install, bootable ISO image with precompiled packages for developer evaluation.</li> <li> Includes installable rpms with TDNF for extending baseline functionality.</li> <li>Complete with toolkit to build image with an opt-in data integrity and security features.</li></ul> | <ul><li>Designed for Open Edge Platforms and can be used to onboard and provision edge nodes at scale.</li><li>Can be used independently on bare-metal and as guest OS.</li><li>Fast atomic updates & rollback support with small image footprint and short boot time.|
| Capabilities | <ul><li>Easy to install, bootable ISO image with precompiled packages for developer evaluation.</li> <li> Includes installable rpms with TDNF for extending baseline functionality.</li> <li>Complete with a toolkit to build an image with opt-in data integrity and security features.</li></ul> | <ul><li>Designed for [Open Edge Platform](https://github.com/open-edge-platform) and can be used to onboard and provision edge nodes at scale.</li><li>Can be used independently on bare metal or as a guest OS.</li><li>Fast atomic updates and rollback support with a small image footprint and short boot time.|
| Image Type | Mutable ISO | Immutable RAW + VHD |
| Update Mechanism | RPM package updates with TDNF | Image based A/B updates + Rollback |
| Linux Kernel | Intel® Kernel 6.12 | Intel® Kernel 6.12 |
| Real time | Available for opt-in | Image variants with standard and RT Kernel provided |
| Real time | Available for opt-in | Image variants with standard and RT kernel provided |
| Desktop Virtualization | Available | Dedicated non-RT image variant provided |
| Add-on packages | Available for opt-in: Docker + K3s | Downloaded during installation: K3s and extensions |
| OS Bootloader | GRUB | systemd-boot |
Expand All @@ -45,17 +42,17 @@ outlines the key differences between those.

### Developer Node mutable ISO image

Mutable Developer node in an ISO format allows you to add packages and
The mutable developer node in an ISO format allows you to add packages and
[customize the system after deployment](./emt-tutorials.md).
During setup you can select one of four versions:

- Standard kernel
- Standard kernel - Docker and K3S provisioned during installation
- Standard kernel with Docker and K3s provisioned during installation
- [Kernel with real-time extensions](#preempt-rt-kernel)
- [Kernel with real-time extensions](#preempt-rt-kernel) - Docker and K3S provisioned during installation
- [Kernel with real-time extensions](#preempt-rt-kernel) and Docker and K3s provisioned during installation

This image is a customizable developer version that includes only essential pre-installed
packages, providing a basic ready-to-use environment:
As a customizable developer version that includes only essential pre-installed
packages, it provides a basic ready-to-use environment:

| Item | Details |
| ------------------| ----------------------------------------------- |
Expand All @@ -68,35 +65,31 @@ packages, providing a basic ready-to-use environment:
| Filesystem | e2fsprogs, mount |
| Included in kernel | iGPU, dGPU (Intel® Arc&trade;), SR-IOV, WiFi, Ethernet, Bluetooth, GPIO, UART, I2C, CAN, USB, PCIe, PWM, SATA, NVMe, MMC/SD, TPM, Manageability Engine, Power Management, Watchdog, RAS |

You can install additional RPM packages, using DNF to tailor the OS to your specific needs.
The supported package repository offers additional `rpm` for tailoring the image
to specific needs of container runtime, virtualization, orchestration software,
monitoring tools, standard cloud-edge (CNCF) software, and more.
You can install additional RPM packages, using DNF to tailor the operating system to your needs.
The supported package repository enables you to tailor the image with a container runtime, orchestration software,
monitoring tools, cloud-native software, and other edge software.

Use [kernel with real-time extensions](#preempt-rt-kernel) for enhanced real-time performance
compared to the standard kernel, if quick responses to critical events are crucial for
your use case.
If quick responses to critical events are crucial for
your use case, you can use the [kernel with real-time extensions](#preempt-rt-kernel).

### Standalone Node immutable RAW images

Intel® ready-made solution for Edge AI applications. Immutable Standalone Node uses Secure
The Standalone Node is an immutable, ready-made solution for deploying and validating Edge AI applications. It uses Secure
Boot technology to protect against injecting malicious software, both at rest and during
runtime. This image cannot be modified after deployment, providing the best security for
your Edge Node.
runtime. This image cannot be modified after deployment.

Download the Edge Microvisor Toolkit Standalone Node installer to your device, run it to
create a bootable USB stick, and use that USB stick to install the EMT Standalone OS.
You can download the Edge Microvisor Toolkit Standalone Node installer to your device, run it to
create a bootable USB stick, and use the USB stick to install the Standalone Node.

#### Standard kernel with integrated Docker and K3S
#### Standard kernel with integrated Docker and K3s

This image has integrated Docker and K3S for deploying and managing applications. The image
uses the standard linux kernel.
This image has integrated Docker and K3s for deploying and managing applications.

#### Kernel with real-time extensions, and integrated Docker and K3S
#### Kernel with real-time extensions and integrated Docker and K3s

This image has integrated Docker and K3S for deploying and managing applications. The image
uses [kernel with real-time extensions](#preempt-rt-kernel), offering enhanced real-time
performance compared to the standard kernel. Use this image if quick responses to critical
This image has integrated Docker and K3s for deploying and managing applications. The image
uses [kernel with real-time extensions](#preempt-rt-kernel) to enhance real-time
performance. Use this image if quick responses to critical
events are crucial for your use case.

#### Desktop Virtualization - standard Kernel without real-time extensions
Expand Down Expand Up @@ -188,6 +181,9 @@ The kernel command line for the RT kernel can be customized specifically for cus
workloads. Currently, `idle` is the only configured command-line argument that affects
real-time performance.

To configure kernel command line arguments, add them in the `"ExtraCommandLine"` parameter
inside the imageconfig file, as shown in [edge-image](https://github.com/open-edge-platform/edge-microvisor-toolkit/blob/e22a8f4e72d0edc652f1aacd514d0b5bf5de8b80/toolkit/imageconfigs/edge-image.json#L107).

- **idle=poll**
Forces the CPU to actively poll for work when idle, rather than entering low-power idle
states. In RT systems, this can reduce latency by ensuring the CPU is always ready to
Expand All @@ -202,7 +198,26 @@ handle high-priority tasks immediately, at the cost of higher power consumption.
- **isolcpus=<list>**
Isolates specific CPU cores from the general scheduler, preventing non-RT tasks from
being scheduled on those cores. This ensures that designated cores are available solely
for RT tasks.
for RT tasks. This way, for example, the workloads can be shifted between efficient
and performance cores. The parameter takes lists as values:

- isolcpus=\<cpu core number>,...,\<cpu core number>

```bash
isolcpus=1,2,3
```

- isolcpus=\<cpu core number>-\<cpu core number>

```bash
isolcpus=1-3
```

- isolcpus=\<cpu core number>,...,\<cpu core number>-\<cpu number>

```bash
isolcpus=1,4-5
```

- **nohz_full=<list>**
Enables full tickless (nohz) mode on specified cores, reducing periodic timer interrupts
Expand Down Expand Up @@ -507,8 +522,5 @@ overall update flow and state transitions.
The Edge Microvisor Toolkit may also be updated as a standalone solution, through a manual
update procedure, without the automation offered by Open Edge Platform. You can download the
new version of the microvisor and run the update by invoking the `os-update-script` and
providing the path to the downloaded image.

> **Note:**
Future versions of Edge Microvisor Toolkit will implement automatic image validation,
providing the path to the downloaded image. Plans for future versions of Edge Microvisor Toolkit may include implementing automatic image validation,
update checks, and releases.
Loading
Loading