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.
- 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 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 example16.0.1-lts-kvm-amd64. Do not use thelatesttag. 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.
Set the Edge Infrastructure Services endpoint
Write your cluster hostname to a file namedserver.
> 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):
> 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: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)
- Attach the image.
/Volumes/EVE: the config partition. Edit files here./Volumes/INVENTORY: system partition. Do not modify.
-
Edit the files in
/Volumes/EVE:server: replace the existing hostname with your cluster hostname.DevicePortConfig/override.json: add network configuration if needed. See Advanced: Static IP, VLAN, and WiFi.grub.cfg: modify only for multi-disk setups. See Configure GRUB for Multi-Disk Setups.- Do not modify
root-certificate.pemorv2tlsbaseroot-certificates.pem.
-
Unmount the image. Replace
diskXwith the disk identifier shown in thehdiutil attachoutput.
Mount and edit (Linux)
- Identify the start sector of the config partition.
- Mount the partition. Replace
<offset>with the start sector multiplied by the sector size (typically 512 bytes).
-
Edit the config files under
/mnt. See step 2 in the macOS section above for the list of files to modify. - Unmount.
Advanced: Static IP, VLAN, and WiFi
To configure static IP, VLAN tagging, or WiFi at install time, create aDevicePortConfig/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
ThePassword field in WirelessCfg must be a pre-hashed PSK, not a plain-text passphrase. Use wpa_passphrase to generate the hash:
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.
Reference Links
- EVE-OS NETWORKING.md: EVE-OS network configuration documentation.
- zedroutertypes.go: authoritative field reference for
DevicePortConfig. - EVE-OS example DevicePortConfig: example
override.jsonin the LF Edge repository.