Nerves.Runtime.FwupOps (nerves_runtime v0.13.8)
View SourceConvenience functions for /usr/share/fwup/ops.fw
The /usr/share/fwup/ops.fw
is provided by the Nerves system for handling
some eMMC/MicroSD card operations. Look for fwup-ops.conf
in the Nerves
system source tree for more details. It used to be called
revert.fw
/fwup-revert.conf
when it only handled reverting which firmware
image was active.
Summary
Functions
Reset the application data partition to its original state
Make it impossible to revert to the other partition
Revert to the previous firmware
Return boot status
Validate the current partition
Types
@type options() :: [ devpath: String.t(), env: %{required(String.t()) => String.t()}, fwup_path: String.t(), ops_fw_path: String.t(), reboot: boolean() ]
General options for utilities
:devpath
- The location of the storage device (defaults to"/dev/rootdisk0"
):env
- Additional environment variables to pass tofwup
:fwup_path
- The path to thefwup
utility:ops_fw_path
- The path to theops.fw
file (defaults to"/usr/share/fwup/ops.fw"
):reboot
- CallNerves.Runtime.reboot/0
after running (defaults totrue
on destructive operations)
Functions
Reset the application data partition to its original state
This clears out the application data partition at a low level so that it will be reformatted on the next boot. If all application settings are stored on the partition, then this will be like a factory reset. Be aware that many settings are stored on the application data partition including network settings like WiFi SSIDs and passwords. Factory reset devices may not connect to the network afterwards.
Make it impossible to revert to the other partition
This wipes the opposite firmware partition and clears out metadata for it. Attempts to revert will fail. This is useful if loading a special firmware temporarily that shouldn't be used again even accidentally.
Revert to the previous firmware
This invokes the "revert" task in the ops.fw
and then reboots (unless told
otherwise). The revert task switches the active firmware partition to the
opposite one so that future reboots use the previous firmware.
@spec status(options()) :: {:ok, %{current: String.t(), next: String.t()}} | {:error, reason :: any()}
Return boot status
This invokes the "status" task in the ops.fw
to report the current
firmware slot and what slot will be tried on the next reboot. The ops.fw
is expected to print the slot name or two slot names separated by "->".
Validate the current partition
For Nerves systems that support automatic rollback of firmware versions, this marks the partition as good so that it will continue to be used on future boots.
Call Nerves.Runtime.validate_firmware/0
instead.