Boot environment mender utility handling for non u-boot platforms

Hi Everyone!

@madisongh has added some changes to support cboot related boot on NVIDIA related platforms in https://github.com/Trellis-Logic/meta-mender-community/pull/10. A portion of these changes are related to interoperability with non u-boot based platforms, which is implemented by fake stubs of fw_printenv and fw_setenv utilities.

In the cboot case we don’t need any support for bootloader environment configuration from the mender utility, since NVIDIA boot redundancy handles this for us, and nvidia utilities are being invoked from mender update hooks.

I wondered if the fake fw_printenv/fw_setenv approach is the approach we should use for zeus support, or if we should instead propose changes to the mender utility to support externally configured boot environment variables. The main reason to officially support externally configured boot environments would be to avoid issues going forward if anything changes regarding u-boot environment support in the mender utility.

Thanks!
Dan

Just FYI, I used this approach based on how Mender currently handles x86 platforms that use grub with the grub-mender-grubenv scripts. It would be great if the mender utility had a bit more abstraction for interfacing with the bootloader, though.

Lets wait on input from @kacf who has worked on this area in the Mender client.

I wondered if the fake fw_printenv/fw_setenv approach is the approach we should use for zeus support, or if we should instead propose changes to the mender utility to support externally configured boot environment variables.

There are several improvements I’ve been wanting to make in this area:

  • Switch the GRUB/UEFI (grub-mender-grubenv) tools to different names, and have the client use them instead, to prevent clashing with U-Boot tools, in case both are installed
  • Add optional configuration options to mender.conf which configure alternative tools to use for changing and querying variables (the command line API must be the same though)

The latter is something you could consider, if you want to propose a change to the client. If not, then the fake fw_printenv route would also be relatively safe, as long as you make sure that you don’t install the U-Boot tools.