This document supports download and install of EVE OS on edge nodes with the any of the following architectures:
- x86
- ARM
Note: If you already have a USB or a microSD card with the appropriate version of EVE-OS, proceed to section 4.
A quick overview of How to Download and Install EVE-OS
Download the latest EVE-OS image
x86 Architecture
Hardware Requirements
Edge node, Monitor/TV, USB keyboard, USB stick (minimum recommended storage of 1 GB), VGA/HDMI cable connected to the monitor, and a system to perform the download transfer.
Note: EVE-OS is packaged and delivered on Docker Hub. It follows the 'Ifedge/eve: version' convention, where version: specific version like 6.3.0 or 'latest.' Supports all x86-based architecture.
- Step 1 > Pull the desired EVE-OS image you want to run on the Edge Node, using the command: docker pull lfedge/eve:latest
$ docker pull lfedge/eve:latest
latest: Pulling from lfedge/eve
Digest: sha256:384e0ecbf8bed9e72533800e0e313b0c937a77a85b6bcfbefa76eb6146ab5336
Status: Image is up to date for lfedge/eve:latest
docker.io/lfedge/eve:latest
$
- Step 2 > Using the docker run lfedge/eve:latest installer_raw > installer.raw command, generate the raw file:
$ docker run lfedge/eve:latest -f raw installer_raw > installer.raw
...
367001600 bytes (367 MB, 350 MiB) copied, 21.9529 s, 16.7 MB/s
$
Note: The command used in step 2 need to have one of the usage options from[version|rootfs|live|installer_raw|installer_iso|installer_net].
ARM (RPi) Architecture
Hardware Requirements
- Raspberry Pi 4 Model B with 4G or 8G RAM
- MicroSD card (16GB or larger recommended)
Note: The basic difference between x86 and RPi is all x86 devices have a hard disk, whereas RPi has a micro SD card in place of the hard disk. There is a difference between the EVE-OS installation process for x86 and ARM devices. For x86 devices, we must create an installable USB stick (with flashed EVE-OS image) that must be plugged into the device to boot and install EVE-OS. In contrast, RPi-based devices have to flash the EVE-OS directly on the micro SD card (using a USB SD card adapter).
- Step 1 > Pull the desired EVE-OS image you want to run on the Edge Node, using the command: docker pull lfedge/eve:latest-arm64
$ docker pull lfedge/eve:latest-arm64
6.2.0-arm64: Pulling from lfedge/eve
Digest: sha256:505126d11dd3fe898aa3ebbb0c25ae1d755ea39b36e602a7dc7399f88db72f08
Status: Image is up to date for lfedge/eve:latest-arm64
docker.io/lfedge/eve:latetst-arm64
$
- Step 2 > Run the EVE-OS image and save as <live.img>, using the docker run lfedge/eve:latest-arm64 live > live.img command:
$ docker run lfedge/eve:latest-arm64 live > live.img
...
681cc64f-6633-49f3-988c-b0afde4a25fc
$
Note: Copy the unique string '681cc64f-6633-49f3-988c-b0afde4a25fc' that was output at the end of the docker run command. You will need to enter it into the 'Serial Number' field when you
onboard the RPi4 to your ZEDEDA account.
Flash EVE-OS Image
There are two ways to flash the EVE-OS image on a USB or microSD card:
- using balenaEtcher
- using the dd command
Using the Etcher tool
You can access Etcher by clicking here.
- Step 1 > Click the Etcher icon to open the tool.
- Step 2 > Click on one of three available options. We use the 'Flash from file' option here to navigate to the EVE-OS image folder and select the downloaded image.
- Step 3 > Plugin the USB (In case of EVE-OS for x86 device) or microSD card (In case of EVE-OS for RPi device) to the laptop/system. The 'Select target' button will show the connected USB.
- Step 4 > Click 'Flash' **and provide credentials.
- Step 5 > EVE-OS image file will be flashed on the USB or microSD card. There are two volumes on the USB–'EVE' and 'INVENTORY.' the 'INVENTORY' **file must be empty at this step.
- Step 6 > Plug out the USB from the laptop/system.
- Step 7 > Close Etcher.
Note: In the case of x86, you will have to select the installer.raw image that you have already downloaded. In the case of RPi, you will have to select live.img image that you have downloaded. When you click the flash button if you are an admin of your machine, nothing will happen, else depending on the setup, either name/password or just a popup to confirm will appear. Please proceed accordingly.
Using the dd command
To convert the ISO image into a bootable USB installer drive using a USB flash drive or USB key, copy or 'burn' the ISO to that target USB volume by turning to the command prompt of Macintosh.
- Step 1 > Launch the terminal after the USB drive is attached to your computer/laptop.
- Step 2 > To view the list of attached disks on the computer/laptop, use the command: diskutil list
$ diskutil list
/dev/disk0 (internal):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme 1.0 TB disk0
1: EFI EFI 314.6 MB disk0s1
2: Apple_APFS Container disk1 1.0 TB disk0s2
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +1.0 TB disk1
Physical Store disk0s2
1: APFS Volume Macintosh HD 75.9 GB disk1s1
2: APFS Volume Preboot 46.9 MB disk1s2
3: APFS Volume Recovery 510.4 MB disk1s3
4: APFS Volume VM 4.3 GB disk1s4
/dev/disk2 (disk image):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme +8.3 GB disk2
1: EFI EFI 209.7 MB disk2s1
2: Apple_HFS InstallESD 8.0 GB disk2s2
/dev/disk3 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *2.1 GB disk3
1: DOS_FAT_32 PKBACK# 001 2.1 GB disk3s1
$
Warning: The list of attached disks may vary depending on the machine.
- Step 3 > Locate the USB name of the target drive and note the identifier (in the above illustration, disk3). Make sure to replace 'IDENTIFIER' with the correct name as appropriate.
- Step 4 > Unmount the target disk using the command: sudo diskutil umount /dev/(IDENTIFIER)
$ sudo diskutil umount /dev/disk3
Volume PKBACK# 001 on disk3 unmounted
$
Warning: The burn process erases all the target USB drive data, replacing it with the ISO. This cannot be undone.
- Step 5 > To burn the ISO to the USB drive, use the command: sudo dd if=$INSTALLER_FILE_PATH of=$DISK_DRIVE bs=64m and enter the required credentials. The burn process will begin immediately.
$ sudo dd if=/Users/xyz/installer.raw of=/dev/disk3 bs=64m
Password:
5+1 records in
5+1 records out
367001600 bytes transferred in 761.077337 secs (482213 bytes/sec)
$
Note: There is no progress bar so wait it out. How long the ISO copy process takes depends on various things, including the speed of your computer/laptop, the target volume, and the size of the ISO file being copied or burned to the destination. Usually, it takes 2 to 5 minutes. Sometimes, it takes up to 10 minutes.
- Step 6 > After the ISO is burnt/flashed to the USB, you can eject it using the following command:diskutil eject /dev/(IDENTIFIER)
$ diskutil eject /dev/disk3
Disk /dev/disk3 ejected
$
Note: Installer.raw file is now flashed on the USB. There are two volumes on the USB–'EVE' and 'INVENTORY.' The 'INVENTORY' directory must be empty at this point.
Bootstrapping Use Cases
If the requirement is to install EVE-OS on the Edge Node with a static IP Address, or LTE network, WIFI adapter, Edge Node inside the proxy network, you can create a JSON file (override.json) with Edge Node port config info as shown in the examples below. Put the 'override.json' file in a directory 'DevicePortConfig' and copy it to the USB under the EVE partition.
Static IP
Following is an example file with eth0 being static and eth1 using DHCP is:
{
"Version": 1,
"TimePriority": "2021-05-20T22:13:31.07683525Z",
"Ports": [
{
"AddrSubnet": "38.108.181.238/24",
"Dhcp": 1,
"DnsServers": [
"8.8.8.8"
],
"DomainName": "example.com",
"Cost": 0,
"Gateway": "38.108.181.254",
"IfName": "eth0",
"Name": "Management1",
"IsMgmt": true,
"NtpServer": "38.108.181.254",
"NetworkProxyEnable": false,
"NetworkProxyURL": "",
"NtpServer": "",
"Pacfile": "",
"Proxies": null
},
{
"Dhcp": 4,
"Cost": 0,
"IfName": "eth1",
"Name": "Management2",
"IsMgmt": true
}
]
}
Proxy Configuration with a Certificate and the Remote Hostname
If your device is inside the proxy network, here is an example for override.json. Proxy server's certificate in PEM format with base64 encoding. To specify a particular set of HTTP and HTTPS proxies with the MITM proxy server using here is an example:
{
"Version": 1,
"timePriority": "2000-01-01T00:00:00Z",
"Ports": [
{
"AddrSubnet": "192.168.1.12/24",
"Dhcp": 1,
"DnsServers": [
"192.168.1.1"
],
"DomainName": "",
"Free": true,
"Gateway": "192.168.1.1",
"IfName": "eth0",
"Name": "Management1",
"IsMgmt": true,
"NtpServer": "",
"Proxies": [
{
"Server": "proxy.example.com",
"Port":3129,
"Type":1
},
{
"Server": "proxy.example.com",
"Port":3129,
"Type":0
}
],
"NetworkProxyEnable": false,
"NetworkProxyURL": "",
"ProxyCertPEM": [
"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR1VENDQXFHZ0F3SUJBZ0lVTERkQnJoVXh6MlNUejJKMTFXTTdoWmdFMXFjd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2JERUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWxST01SQXdEZ1lEVlFRSERBZE5ZV1IxY21GcApNUTh3RFFZRFZRUUtEQVo2WldSbFpHRXhFakFRQmdOVkJBc01DWE52YkhWMGFXOXVjekVaTUJjR0ExVUVBd3dRCmVtVmtaV1JoTFhOdmJIVjBhVzl1Y3pBZUZ3MHlNVEExTVRZeE56UTNNelJhRncweU1qQTFNVFl4TnpRM016UmEKTUd3eEN6QUpCZ05WQkFZVEFrbE9NUXN3Q1FZRFZRUUlEQUpVVGpFUU1BNEdBMVVFQnd3SFRXRmtkWEpoYVRFUApNQTBHQTFVRUNnd0dlbVZrWldSaE1SSXdFQVlEVlFRTERBbHpiMngxZEdsdmJuTXhHVEFYQmdOVkJBTU1FSHBsClpHVmtZUzF6YjJ4MWRHbHZibk13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3oKOFV1YmZnZGU1TFg3N1VOSHQzRm1ZR1dLWTBNOVBqK3FYbHpiNGdjWjNPTXdsd096QjBhRTZhc2k2NmpLVHFtLwpJMWkrbDA3R2Q5UUpraUpwWlZuSVNwNGs3cEt5WHlvSmdiMGF1MW1vdEhHcHZVSDRJNmlFZkFxZTBERExsN0UzCi9RaUhjY05yU0Irb0NubVZNejNSSTNvL1hJR3lxYVRRdmJiNkhrK0V0SFRKb0QwYUtRMlpoOWhEcEhSc21tUDgKZ3NCSGtJbG02ZDBWNGQyOFVDSmZXVzc3K0JlQmhPNkJ5VVZvODNvK1NjR0dUeHl4c0dBcUd5V0JuUnFmNXRubwpHNmRjc3dDU040NG44RUlvbkJHdWpNaURScWsvbC9ISEpNMXFyMTRuOVc5dExZU2dJMTN0cWtCUjgzeXlDSVMrCk1ObFBtd2F5TlQxQk95UDVGNkszQWdNQkFBR2pVekJSTUIwR0ExVWREZ1FXQkJTZ0xMdTc1K0ZmNXlHVVIxbjUKUGJDeDRYTE0wekFmQmdOVkhTTUVHREFXZ0JTZ0xMdTc1K0ZmNXlHVVIxbjVQYkN4NFhMTTB6QVBCZ05WSFJNQgpBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJtVnIzNVg1STg3TmkrYzh2ZUZVWkl5YXpKCm4vY2c4WWdFdnpqNGorVGRvbEppTDRndVdaME5lVnhncXEvbjZjZndmQ0p5RldaUDdNTDdFNG1oaTNja1M0Zk4KYU9xMnRMdWRITkQ5OUhVSGpKMjFVaktsZlhSZEdvOXhGbkZFQ3dlb1lLL1V0di8wcEhLQ1h3OFIvU2JZNFJFdgo0NTRGQmNGZTBublN0R1pTdDEzMXNWZFZ0cUdKcnZNK0FIS0lySmQ3ODNNQlZvVUpNemZhYTJkTG1maHFUVE5ECnhwVGxDY3FYd2IyMm9nUis3Tkt5U0pOeVhhMWtKTXhUSnpTclBqUE5YUFJ3WTZtdWw5SlBKTjlPMjFBSmxpNlgKeHYxSWZYbjY2bmZhMlZiSzBLK2pXVTdWOHdqN3BQUzExMXY2ZVI2ck5WY3Mrd3ErVENnUVZhYWZSc2VQCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0="
],
"NtpServer": "",
"Pacfile": ""
},
{
"Dhcp": 4,
"Free": true,
"IfName": "eth1",
"Name": "Management2",
"IsMgmt": false
}
]
}
Proxy Configuration with only a Certificate
If a proxy certificate only is needed, here is an example:
{
"Version": 1,
"timePriority": "2000-01-01T00:00:00Z",
"Ports": [
{
"AddrSubnet": "192.168.1.12/24",
"Dhcp": 1,
"DnsServers": [
"192.168.1.1"
],
"DomainName": "",
"Free": true,
"Gateway": "192.168.1.1",
"IfName": "eth0",
"Name": "Management1",
"IsMgmt": true,
"NtpServer": "",
"Proxies": [],
"NetworkProxyEnable": false,
"NetworkProxyURL": "",
"ProxyCertPEM": [
"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR1VENDQXFHZ0F3SUJBZ0lVTERkQnJoVXh6MlNUejJKMTFXTTdoWmdFMXFjd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2JERUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWxST01SQXdEZ1lEVlFRSERBZE5ZV1IxY21GcApNUTh3RFFZRFZRUUtEQVo2WldSbFpHRXhFakFRQmdOVkJBc01DWE52YkhWMGFXOXVjekVaTUJjR0ExVUVBd3dRCmVtVmtaV1JoTFhOdmJIVjBhVzl1Y3pBZUZ3MHlNVEExTVRZeE56UTNNelJhRncweU1qQTFNVFl4TnpRM016UmEKTUd3eEN6QUpCZ05WQkFZVEFrbE9NUXN3Q1FZRFZRUUlEQUpVVGpFUU1BNEdBMVVFQnd3SFRXRmtkWEpoYVRFUApNQTBHQTFVRUNnd0dlbVZrWldSaE1SSXdFQVlEVlFRTERBbHpiMngxZEdsdmJuTXhHVEFYQmdOVkJBTU1FSHBsClpHVmtZUzF6YjJ4MWRHbHZibk13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3oKOFV1YmZnZGU1TFg3N1VOSHQzRm1ZR1dLWTBNOVBqK3FYbHpiNGdjWjNPTXdsd096QjBhRTZhc2k2NmpLVHFtLwpJMWkrbDA3R2Q5UUpraUpwWlZuSVNwNGs3cEt5WHlvSmdiMGF1MW1vdEhHcHZVSDRJNmlFZkFxZTBERExsN0UzCi9RaUhjY05yU0Irb0NubVZNejNSSTNvL1hJR3lxYVRRdmJiNkhrK0V0SFRKb0QwYUtRMlpoOWhEcEhSc21tUDgKZ3NCSGtJbG02ZDBWNGQyOFVDSmZXVzc3K0JlQmhPNkJ5VVZvODNvK1NjR0dUeHl4c0dBcUd5V0JuUnFmNXRubwpHNmRjc3dDU040NG44RUlvbkJHdWpNaURScWsvbC9ISEpNMXFyMTRuOVc5dExZU2dJMTN0cWtCUjgzeXlDSVMrCk1ObFBtd2F5TlQxQk95UDVGNkszQWdNQkFBR2pVekJSTUIwR0ExVWREZ1FXQkJTZ0xMdTc1K0ZmNXlHVVIxbjUKUGJDeDRYTE0wekFmQmdOVkhTTUVHREFXZ0JTZ0xMdTc1K0ZmNXlHVVIxbjVQYkN4NFhMTTB6QVBCZ05WSFJNQgpBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJtVnIzNVg1STg3TmkrYzh2ZUZVWkl5YXpKCm4vY2c4WWdFdnpqNGorVGRvbEppTDRndVdaME5lVnhncXEvbjZjZndmQ0p5RldaUDdNTDdFNG1oaTNja1M0Zk4KYU9xMnRMdWRITkQ5OUhVSGpKMjFVaktsZlhSZEdvOXhGbkZFQ3dlb1lLL1V0di8wcEhLQ1h3OFIvU2JZNFJFdgo0NTRGQmNGZTBublN0R1pTdDEzMXNWZFZ0cUdKcnZNK0FIS0lySmQ3ODNNQlZvVUpNemZhYTJkTG1maHFUVE5ECnhwVGxDY3FYd2IyMm9nUis3Tkt5U0pOeVhhMWtKTXhUSnpTclBqUE5YUFJ3WTZtdWw5SlBKTjlPMjFBSmxpNlgKeHYxSWZYbjY2bmZhMlZiSzBLK2pXVTdWOHdqN3BQUzExMXY2ZVI2ck5WY3Mrd3ErVENnUVZhYWZSc2VQCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0="
],
"NtpServer": "",
"Pacfile": ""
},
{
"Dhcp": 4,
"Free": true,
"IfName": "eth1",
"Name": "Management2",
"IsMgmt": false
}
]
}
LTE-WWAN
An example of LTE configuration is shown on the following screen.

WiFi Adapter-WLAN
An example of WiFi configuration is shown on the following screen.

Install EVE-OS on the Edge Node
For x86 Using USB
Make sure to connect the Edge Node with the following:
- Keyboard and monitor/TV in the appropriate slots.
- USB, which has the EVE-OS installer.raw image file.
Steps to install EVE-OS:
- Step 1 > Power on the Edge Node manually.
- Step 2 > Invoke the BIOS settings to modify the default boot option.
- Step 3 > Select the 'Boot' tab and click on 'UEFI USB Hard Disk, Partition 1'.
- Step 4 > Select the 'Advanced' tab and make sure the following are present:
-
- Step 4.1. > Intel Virtualization Technology and VT-d are enabled.
-
- Step 4.2. > Watchdog Function is enabled (specific to Supermicro Edge Nodes).
-
- Step 4.3. > Security Device Support is enabled.
Note: ** EVE-OS works on a specific version of TPM. Ensure that the Edge Node TPM setting is set to version 2.0
- Step 5 > After completing the steps mentioned above, 'Save & Exit' the BIOS screen.
- Step 6 > The EVE-OS installation automatically begins on the Edge Node.
- Step 7 > The Edge Node automatically powers off after installation.
Note: Remove the USB from the Edge Node once the Edge Node is powered off.
- Step 8 > manually Power ON the Edge Node and invoke the BIOS settings. Change the boot option to the default bootable disk.
For Rpi, using a microSD card
Insert the flashed micro SD card into the SD card slot of RPi. Boot RPi4 and follow the instructions to complete the EVE-OS installation. Ensure your RPi4 is connected to the local network over an Ethernet connection. Once EVE-OS is fully installed and the device is onboarded on the ZEDEDA platform, you can change the management port from eth to WLAN.
Assign Adapter IP Configuration using a USB stick (diag utility)
-
Step 1 > Create a usb.json exactly matching the configuration on the cloud. For example, to construct the usb.json, see the above sections.
-
Step 2 > Create a debug USB:
-
Linux command–tools/makeusbconf.sh -d -i -f ~/usb.json -s 8000 /dev/sdx
-
Mac OS command–tools/makeusbconf.sh -d -i -f ~/usb.json -s 8000 usb.img
-
-
-
Step 3 > Update network parameters.
-
Step 4 > Verify successful connection using the new network parameters.