Skip to content

Releases: peridio/peridiod

v3.0.0-rc.4

23 Sep 19:57
f7591cc
Compare
Choose a tag to compare
v3.0.0-rc.4 Pre-release
Pre-release
  • Bug fixes
    • Prevent release server from applying another release if one is in progress
    • Bump erlexec to latest to fix compilation issues on Apple Silicon

What's Changed

Full Changelog: v3.0.0-rc.3...v3.0.0-rc.4

v3.0.0-rc.3

04 Sep 12:14
bcf2d56
Compare
Choose a tag to compare
v3.0.0-rc.3 Pre-release
Pre-release
  • Bug fixes
    • Allow nil for release version data in device API headers

What's Changed

Full Changelog: v3.0.0-rc.2...v3.0.0-rc.3

v3.0.0-rc.2

01 Sep 15:07
4315608
Compare
Choose a tag to compare
v3.0.0-rc.2 Pre-release
Pre-release
  • Enhancements

    • Added support for deb and rpm package installers
  • Bug fixes

    • Fixed issues in checking for release logic for releases

Full Changelog: v3.0.0-rc.1...v3.0.0-rc.2

v3.0.0-rc.1

30 Aug 01:36
cded092
Compare
Choose a tag to compare
v3.0.0-rc.1 Pre-release
Pre-release
  • Bug fixes
    • Update systemd peridiod.service to point to /usr/lib/peridiod
    • Allow release_poll_interval to be configured from PERIDIO_CONFIG_FILE

What's Changed

Full Changelog: v3.0.0-rc.0...v3.0.0-rc.1

v3.0.0-rc.0

02 Aug 19:26
155a09b
Compare
Choose a tag to compare
v3.0.0-rc.0 Pre-release
Pre-release

This is a major update and this release should be thoroughly tested.

Add support for Peridio Cloud Releases

Peridio Releases allow you greater flexibility in how you manage the content installed on your device.

Config

New peridiod config keys introduced:

  • release_poll_enabled: true | false
  • release_poll_interval: the interval in ms to automatically check for updates
  • cache_dir: a writable path where peridiod can store release metadata
  • targets: A list of string target names for peridiod to install as part of a release update
  • trusted_signing_keys: A list of base64 encoded ed25519 public signing key strings

Installers

Peridiod now has a concept of "Installers", initially supported installer types are file and fwup. When using releases, you will have to use the custom_metadata of a binary, artifact version, or artifact to instruct peridiod how to install the binary content. Here is an example of what custom metadata for installers would look like:

fwup

{
  "installer": "fwup",
  "installer_opts": {
    "devpath": "/dev/mmcblk0",
    "extra_args": [],
    "env": {}
  },
  "reboot_required": true
}

file

{
  "installer": "file",
  "installer_opts": {
    "name": "my_file.txt",
    "path": "/opt/my_app",
  },
  "reboot_required": false
}

The custom metadata will need to configured on a Binary, Artifact Version, or Artifact record. You can add this custom metadata to these records using Peridio CLI v0.22.0 or later.

U-Boot Environment additions

peridiod releases will track and expose release metadata in the uboot environment under the following new keys

  • peridiod_rel_current: the PRN of the current installed release
  • peridiod_rel_previous: the PRN of the previous installed release
  • peridiod_rel_progress: the PRN of the release in progress
  • peridiod_vsn_current: the semantic version of the current installed release
  • peridiod_vsn_previous: the semantic version of the previous installed release
  • peridiod_vsn_progress: the semantic version of the release in progress
  • peridiod_bin_current: an concatenated key / value paired encoded string of <binary_id><custom_metadata_sha256_hash> internally used to diff installed binaries from release to release

Preparing a release

Peridiod will track installed binaries from release to release by updating the peridio_bin_current value in the u-boot-env. When burning in a device firmware for the first time, you can pre-compute this field value with information about the supplied binaries by constructing a concatenated string according to the field specifications. This will prevent peridiod from installing binaries unnecessarily on first boot.

Release Install

The release server will check for an update from Peridio Cloud a the designated interval. When an update is available, the release server will immediately cache the release metadata to the cache_dir and begin processing the release. Currently, the release server is configured to install an update once it is available. This behavior will change before public release and instead be routed through the update client module. The release server will apply an update in the following order:

  • Validate artifact signatures' public key values have been signed by a public key in trusted_signing_keys
  • Filter the Binaries by uninstalled with a target listed in the targets list
  • Install Binaries
    • Initialize a Download with an Installer
    • Begin Download (Download Started Event)
    • Download chunks (Download Progress Events)
    • Finish Download (Download Finished Event)
    • Validate hash (during stream)
    • Installer applied (Binary Applied)
    • Update Binary status to complete
  • Update Release status to complete

When peridiod installs a release, it will accumulate reboot_required and trigger a reboot once all binaries have finished the installation process if any reboot_required is true.

See the Peridio Docs for more information on configuring Releases for your organization.

What's Changed

Full Changelog: v2.5.4...v3.0.0-rc.0

v2.5.4

03 Jul 20:11
2fd74da
Compare
Choose a tag to compare
  • Enhancement
    • Add support for extending tunnels
  • Bug fixes
    • Account for reserved tunnel IPs to prevent a race condition between
      wireguard and subsequent calls to Peridio.RAT.Network.available_cidrs

What's Changed

Full Changelog: v2.5.3...v2.5.4

v2.5.3

11 Jun 02:46
670d914
Compare
Choose a tag to compare
  • Bug fixes
    • Add additional safety around app start so errors can be presented
    • Fix remote_shell to support Alpine Linux

v2.5.2

28 May 17:52
7b60858
Compare
Choose a tag to compare
  • Enhancement
    • Update key_pair_source modules env and uboot to try to decode base64 values

v2.5.1

28 May 17:51
dfc22aa
Compare
Choose a tag to compare
  • Bug fixes
    • Device was unable to call tunnel update api properly.

v2.5.0

21 May 16:34
ad3041b
Compare
Choose a tag to compare
  • Enhancements
    • Add support for choosing between IEx and getty remote shell
      • remote_iex: true | false: Enable / disable the remote console using IEx shell. Useful for Nerves based applications. Setting this to true will take precedence over remote_shell.
      • remote_shell: true | false. Enable / disable the remote console using a terminal Getty. Useful for all other embedded linux based systems. Requires socat to be available on the target.
    • Add support for Remote Access Tunnels. Using this feature will require a Peridio Cloud account with the feature enabled. Contact [email protected] for more information.
    • Added support for configuring peridiod as an elixir dependency. This is useful if you are consuming peridiod as a dependency in a Nerves based application.
    • Configuration will default to reasonable default values if they are unspecified.
    • Added config key fwup_env: {"KEY": "value", "KEY2": "value2"}. These key value pairs will be exported into the environment that fwup is applied in. This is useful if you need to pass extra arguments passed through the environment.
    • Added config key fwup_extra_args: ["--unsafe"]. Useful if you need to pass extra args to fwup such as the --unsafe flag.