Skip to main content

Introduction

Build a custom EVE-OS (Edge Virtualization Engine) image when you need to pre-configure network settings before installation. Common reasons include:
  • Your enterprise is hosted on a cluster other than the default zedcloud.zededa.net.
  • The device network requires static IP, VLAN, or WiFi credentials that must be embedded at install time.
There are two methods:
  • Method A (Docker build, recommended): Use the EVE-OS Docker image to produce a new installer or live image with your settings injected. This works on macOS, Linux, and Windows (via WSL).
  • Method B (Prebuilt image edit): Download a prebuilt EVE-OS image and edit its config partition directly. Use this when Docker is not available. Supported on macOS and Linux.
The file paths used in the examples below are illustrative. Adjust them to match your own file structure.

The EVE-OS Config Partition

EVE-OS reads its initial configuration from a config partition embedded in the image. Understanding the partition helps you know which files to include in your overrides folder (Method A) or edit directly (Method B).

Prerequisites

  • Docker is installed and running on your local machine (required for Method A).
  • You know your cluster hostname, for example zedcloud.gmwtus.zededa.net.
  • You have the Docker Hub EVE-OS image tag for your target version. Tags follow the format <version>-<hypervisor>-<arch>, for example 16.0.1-lts-kvm-amd64. Do not use the latest tag. For the full naming convention, see EVE-OS Image Naming Convention.
  • You have the hardware serial number for your edge device, if you plan to onboard with a hardware serial.
  • For Raspberry Pi (ARM64): Raspberry Pi 4 Model B with at least 4 GB RAM and a 16 GB or larger microSD card.

Method A: Build with Docker

This is the recommended method. Docker merges only the files you include in your overrides folder into the config partition. Files you do not include remain at their EVE-OS defaults.

Create an overrides folder

Create a folder to hold your custom configuration files. The Docker build command mounts this folder at /in inside the container.
Your folder structure will look like this:

Set the Edge Infrastructure Services endpoint

Write your cluster hostname to a file named server.
On Windows, do not use PowerShell’s > redirect. It corrupts binary-adjacent files. Use WSL instead, or write the file with:

Build the image

Choose the image type based on your use case: Run the build command, replacing <tag> with your EVE-OS image tag. For AMD64 devices (installer):
For ARM64 devices such as Raspberry Pi (live):
On Windows, PowerShell’s > redirect corrupts the binary output. Run the build inside WSL, or use an output volume mount so the container writes the file to your machine:

Capture the soft serial (live images only)

For live images, EVE-OS generates a UUID for the device at build time and prints it at the end of the output. This UUID is the node’s soft serial number. Copy and save it. You need to enter it when onboarding the node to Edge Infrastructure Services. Example:
Installer images do not print a soft serial at build time. The installer reads the serial from the device hardware during installation.

Method B: Download and Edit a Prebuilt Image

Use this method when Docker is not available. You download a prebuilt EVE-OS image, mount its config partition, edit the relevant files, and unmount.

Download the image

Download the .raw image for your target architecture and version from the EVE-OS Releases page on GitHub.

Mount and edit (macOS)

  1. Attach the image.
Two volumes mount:
  • /Volumes/EVE: the config partition. Edit files here.
  • /Volumes/INVENTORY: system partition. Do not modify.
  1. Edit the files in /Volumes/EVE:
  2. Unmount the image. Replace diskX with the disk identifier shown in the hdiutil attach output.

Mount and edit (Linux)

  1. Identify the start sector of the config partition.
  1. Mount the partition. Replace <offset> with the start sector multiplied by the sector size (typically 512 bytes).
  1. Edit the config files under /mnt. See step 2 in the macOS section above for the list of files to modify.
  2. Unmount.

Advanced: Static IP, VLAN, and WiFi

To configure static IP, VLAN tagging, or WiFi at install time, create a DevicePortConfig/override.json file. For Method A, place it at $HOME/eve-overrides/DevicePortConfig/override.json. For Method B, place it on the config partition at DevicePortConfig/override.json. The following example configures eth0 on VLAN 100 with DHCP, and wlan0 with a static IP address and WPA-PSK WiFi:

Field reference

The field values below correspond to constants defined in zedroutertypes.go in the LF Edge EVE repository.

WiFi password format

The Password field in WirelessCfg must be a pre-hashed PSK, not a plain-text passphrase. Use wpa_passphrase to generate the hash:
Copy the psk= value from the output. Do not use the #psk= line, which contains the plain-text passphrase.

Next Steps

Flash an EVE-OS Installer or Live Image

Write the image to a USB drive or SD card.

Install EVE-OS

Complete the installation procedure.

Onboard Nodes

Enroll the node in Edge Infrastructure Services.

Onboard Nodes

Generate a node-specific installer for air-gapped or non-DHCP environments.