The Edge Node Infrastructure Blueprint creates a comprehensive edge computing platform that enables hardware acceleration capabilities including GPU, NPU, SR-IOV, and other features for modern applications, allowing containerized and cloud-native applications to be deployed seamlessly on edge nodes.
This repository helps you:
- Build bootable installation artifacts.
- Prepare USB media for target node provisioning.
- Bring up core software components after first boot.
- Validate platform readiness for cloud-native edge workloads.
The solution bridges the gap between edge hardware capabilities and application requirements, providing a standardized platform for deploying latency-sensitive workloads, AI and machine learning inference, IoT processing, and real-time applications at the network edge.
- Developer system: The host machine used to generate installation artifacts.
- Target system: The edge machine used for application deployment.
For Windows Subsystem for Linux (WSL), follow the steps in the windows-wsl-guide.
Docker Engine is required because the build workflow uses Docker images and containers.
Install Docker Engine for your Linux distribution using the official Docker documentation:
- Linux install overview: https://docs.docker.com/engine/install/
- Debian: https://docs.docker.com/engine/install/debian/
- Ubuntu: https://docs.docker.com/engine/install/ubuntu/
- RHEL: https://docs.docker.com/engine/install/rhel/
- Fedora: https://docs.docker.com/engine/install/fedora/
Configure Docker for non-root usage and service startup after installation:
If you are behind a proxy, configure Docker daemon proxy settings:
Install GNU Make on your development system:
# Ubuntu/Debian
sudo apt-get install make
# RHEL/Fedora
sudo dnf install make- Keep
HTTP_PROXY,HTTPS_PROXY, andNO_PROXYconsistent across all proxy configuration files. - Build flow has been verified on Ubuntu 22.04 and 24.04.
git clone https://github.com/open-edge-platform/edge-node-infrastructure-blueprint.git -b main
cd edge-node-infrastructure-blueprintFrom the repository root, run one of the following build modes.
Note:If your development environment is behind a firewall, add proxy configuration to the
proxy.envfile in theedge-node-infrastructure-blueprintdirectory. To skip the proxy settings, passskip-proxy=trueto the make command.
Build the Ubuntu image, including the required tools and packages, from an Ubuntu minimal desktop image:
Note: Default credentials are
user/user. For production, replace the SHA-512 hash ininfrastructure/host-os/Dockerfilewith your new password using:openssl passwd -6 'your-new-password' # or mkpasswd --method=sha-512 'your-new-password'
make buildOr explicitly specify the standard mode:
make build MODE=standard-imageSee infrastructure/host-os/ict/README.md to generate an image using Image Composer Tool.
Use the image-from-tool mode when you already have an image generated by Image Composer Tool. This mode skips host image creation and packages the provided Image Composer Tool image into the USB artifacts:
make build MODE=image-from-tool ICT_IMG=/absolute/path/to/minimal-desktop-ubuntu-24.04.raw.gzThe following are the supported Image Composer Tool image extensions:
.raw.gz.raw.img.gz
Example:
make build MODE=image-from-tool ICT_IMG=/home/user/images/minimal-desktop-ubuntu-24.04.raw.gzBuild output:
usb-installation-files.tar.gzininfrastructure/build-artifacts/out
Use the reuse-image mode to skip base image regeneration and reduce build time:
make build MODE=reuse-imageThis reuses a prebuilt image. You can also manually copy an existing image to USB partition 5 when required by your process.
For reusable ICT images, use MODE=image-from-tool with ICT_IMG instead of MODE=reuse-image.
sudo tar -xzf usb-installation-files.tar.gzThe extracted files include:
usb-bootable-files.tar.gzconfig-filebootable-usb-prepare.shven-deployment.sh
Required inputs:
- USB Device Path (usb): The target USB device identifier (for example,
/dev/sdX). Use thelsblkcommand to locate the correct device. - Bootable Package (
usb-bootable-files.tar.gz): The compressed archive containing bootable system files. - Configuration File (
config-file): User-customizable settings that include the following:- Proxy configurations
- SSH public key (
id_rsa.pub) - Workload orchestration preference (host_type)
- Single Root I/O Virtualization (SRIOV) toggle
- Additional system parameters
- Installation Mode (Attended or Unattended)
Installation mode is optional and defaults to the Unattended Mode, which means a fully automated installation without user interaction. If you require interactive debugging, set installation_mode=true in the config-file to enable the Attended Mode with prompts for user input during the boot process.
If installation fails or you need to troubleshoot, run the installer in interactive debug mode on the Alpine OS terminal:
/usr/local/bin/os-install.sh -iThis launches the installer in interactive debug mode for troubleshooting and manual configuration.
Note: Proxy configuration is optional in unrestricted network environments.
Run the following command:
sudo ./bootable-usb-prepare.sh /dev/sdX usb-bootable-files.tar.gz config-fileTo reuse a prebuilt image:
sudo ./bootable-usb-prepare.sh /dev/sdX usb-bootable-files.tar.gz config-file image.raw.gzAfter the USB preparation completes:
- Safely disconnect the USB from the developer system.
- Connect it to the target system.
- Enter the BIOS boot menu and boot from the USB.
After installation, log in using the credentials specified in the configuration file during the Ubuntu desktop image preparation.
For the Kubernetes cluster:
# Kubernetes nodes and plugin pods
sudo kubectl get nodes
sudo kubectl get pods -AExpected healthy output includes the running Intel and Node Feature Discovery components, for example:
intel-device-plugins intel-gpu-plugin-xxxxx 1/1 Running
intel-device-plugins intel-npu-plugin-xxxxx 1/1 Running
node-feature-discovery nfd-master-xxxxx 1/1 Running
node-feature-discovery nfd-worker-xxxxx 1/1 Running
kube-system coredns-xxxxx 1/1 Running
kube-system metrics-server-xxxxx 1/1 Running
Verify the SR-IOV status:
sudo cat /sys/kernel/debug/dri/0000:00:02.1/sriov_infoExpected indicators:
supported: yes
enabled: yes
mode: SR-IOV VF
Verify the GPU and NPU driver bring-up:
sudo dmesg | grep xe
sudo dmesg | grep vpuFor containers:
docker info
docker ps- Docker build fails: Recheck the Docker daemon and CLI proxy settings, then restart the Docker daemon.
- USB preparation fails: Verify the device path and available USB capacity.
kubectlissues: Confirm that the Kubernetes installation has completed and the node status isReady.- GPU or NPU not detected: Re-run the Best-Known Configuration (BKC) installation and inspect
dmesgfor driver load failures.