Releases: nerves-project/nerves_runtime
v0.13.12
v0.13.11
This change adds a simple firmware validator for Nerves devices that validate
their firmware the first time it's run. It's optional and the default is to not
use it. This is useful for all Nerves systems that require validation on boot
and is intended to ease the change on the Raspberry Pi "2.0" Nerves systems.
The simple firmware validator only checks that all OTP applications have started
up successfully. If you already have a firmware validator, you can just ignore
this.
If you don't know if you need a firmware validator, you likely don't since your
device boots with the assumption that the firmware will work. If you need to run
fw_validate or Nerves.Runtime.validate_firmware/0 every time you load new
firmware, then you'll want some code to do it automatically and this is an
option.
See the main README.md and Nerves.Runtime.StartupGuard for integration with
your project.
- Changes
- Add
Nerves.Runtime.StartupGuard - Fix new Elixir 1.20 warnings
- Add
v0.13.10
- Changes
- Support overriding or disabling data partition initialization. See the
:init_moduleoption documentation. - Support passing extra options to
fwupto enablefwupto run third party
programs. See the:fwup_extra_optionsoption documentation. - Defer Nerves KV loading until actually needed. This removes many unnecessary
loads, but most importantly defers work that could potentially fail from
early initialization. This allows it to fail in places that are easier to
debug. - Support passing arguments to
rngdandhavegedif you're using them. See
rngd_argsandhaveged_argsin the application config. This is a rare
use case especially since Linux kernels have improved their support for
early entropy.
- Support overriding or disabling data partition initialization. See the
v0.13.9
- Changes
-
Document application config keys. These are now official. If you had been
modifying the application config for regression tests, note that the:env
key is now:fwup_envand:revert_fw_pathis nowops_fw_path. -
Add
Nerves.Runtime.firmware_slots/0to return a map indicating the
currently running slot and the one that will be run on next boot. Please
update any calls to get"nerves_fw_active"directly from
Nerves.Runtime.KVsince the newfirmware_slots/0is more accurate and
handles more scenarios on Nerves devices. -
Add
firmware_validation_status/0to allow callers to know whether the
status is really unknown. This isn't possible withfirmware_valid?/0which
is problematic since unknown could mean that the U-Boot environment is
unreadable and a fix is needed. Insteadfirmware_valid?/0returnstrue
in that case since this could be an old Nerves device without validation. -
Replace call to Busybox
mountto determine filesystem read-only status
with a module that reads/proc/self/mountinfo. -
Expose mount information via
Nerves.Runtime.MountInfo. If you had been
usingMountParser, please update your calls.MountParserwas not
intended to be public API (@moduledoc false) and was removed. -
Serialize calls to
fwupto reduce chance of accidental eMMC/MicroSD
corruption -
Bulletproof many functions to return errors if the
:nerves_runtime
application stops. This can happen when the device is not in a good state
and raising in NervesRuntime KV and FwupOps functions made things worse.
This should be a rare case.
-
v0.13.8
This release has many updates, but none of them are expected to be noticeable to
most Nerves users. Most are in support of the Raspberry Pi's TRYBOOT feature
which is not supported in official Nerves systems.
- Changes
- Update licensing and copyright for REUSE compliance
- Add
Nerves.Runtime.FwopOps.status/1to report the currently running slot
and the one that will run on the next boot - Improve active (current) firmware slot detection when
ops.fwis available.
While nothing has changed in official Nerves systems, more documentation has
been added here to make theops.fwtasks use official. - Support reloading KV cache and reload it automatically on firmware
operations that may affect it. - Return error and warning details from
fwupcalls to avoid losing failure
reasons - Reduce Dialyzer warnings when calling
Nerves.Runtime.mix_target/0at
runtime
v0.13.7
- Changes
- Add
Nerves.Runtime.Heart.guarded_immediate_reboot/0to ungracefully reboot. - Modify
Nerves.Runtime.FwupOps.factory_reset/1to immediately reboot to
avoid a graceful shutdown unintentionally partially undoing the factory
reset work. - Default EXT4 application partitions to remount read-only when formatted.
This changes the behavior from file I/O returning file system corruption
errors to file I/O returning read-only filesystem errors. The change was
made for consistency with F2FS and to lock things down as soon as corruption
was detected.
- Add
v0.13.6
v0.13.5
- Changes
- Add
Nerves.Runtime.FwupOpsto make it easier to run commands from the
revert.fw(older) andops.fw(newer) files. The firmware revert logic
had always used this, and this makes getting to factory reset and preventing
reverts easier. Some operations aren't available on all Nerves systems. - Various documentation and syntactical updates instigated by Elixir 1.15.
- Add
v0.13.4
- Changes
- Fixed new compiler warnings with Elixir 1.15
- Support the Nerves Heart v2.2 snooze feature.
Nerves.Runtime.Heart.snooze/0will request thatheartcontinues to pet
the hardware watchdog and ignore lack of updates from Erlang for a short
amount of time to allow debug of conditions that would otherwise be
interrupted by a watchdog timeout. - Report errors from Heart functions rather than hang forever when Erlang
:heartis unresponsive. - Support additional status from Nerves Heart v2.2 to report the initial
bootup grace period timeout and snooze timeout remaining.