Infrastructure Setup#

Covers building the OS image, flashing it to a bootable USB, and validating the provisioned platform for the Uncrewed Aerial Vehicle Blueprint.

Step 1: Clone the repository#

git clone https://github.com/open-edge-platform/edge-node-infrastructure-blueprint.git -b main
cd edge-node-infrastructure-blueprint

Note: If your development environment is behind a firewall, add proxy settings to proxy.env in the repository root before building. To skip proxy entirely, pass skip-proxy=true to make.

Step 2: Build the OS image#

Export credentials and run the server-oriented UAV build:

export USERNAME='<your-username>'
export PASSWORD="$(openssl passwd -6 '<your-password>')"
make build MODE=server-image

Output: infrastructure/build-artifacts/out/usb-installation-files.tar.gz

For a customized UAV image using the Image Composer Tool, see Advanced Image Customization UAV companion OS template: infrastructure/host-os/ict/work-generic-companion-os-server-template.yml

Step 3: Prepare the bootable USB#

On the developer system, extract the artifacts:

cd infrastructure/build-artifacts/out
sudo tar -xzf usb-installation-files.tar.gz

Extracted files: usb-bootable-files.tar.gz, config-file, bootable-usb-prepare.sh, ven-deployment.sh.

Edit config-file and set:

  • ssh_key — SSH public key for passwordless access to the target

  • host_typecontainer (default) or kubernetes

  • SRIOV — enable or disable Single Root I/O Virtualization (SRIOV)

  • Proxy values — if required on your network

  • Additional system parameters

  • Debug Mode (false)

Identify the USB device with lsblk, then flash:

# Replace /dev/sdX with the correct USB device
sudo ./bootable-usb-prepare.sh /dev/sdX usb-bootable-files.tar.gz config-file

Safely disconnect the USB, attach it to the target system, and boot from USB. The OS installs automatically without any user intervention.

Step 4: Validate post-boot bring-up#

After first-boot provisioning completes, verify services on the target system.

For container mode (host_type=container, default):

docker info
docker ps

For Kubernetes mode (host_type=kubernetes):

sudo kubectl get nodes
sudo kubectl get pods -A

Expected pods include:

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

Verify SR-IOV and driver bring-up:

sudo cat /sys/kernel/debug/dri/0000:00:02.1/sriov_info
sudo dmesg | grep xe
sudo dmesg | grep vpu