Additionally, there is community support for RISC-V boards, in particular the Freedom U540.
We also historically supported the Renesas Porter board.
If your board isn’t supported yet, you can add board integration code yourself. The main purpose of this code is to provide a bootloader that will be able to use OSTree’s boot directory. In the meta-updater integration layers we have written so far, the basic steps are:
Make the board boot into U-Boot
Make U-boot import variables from /boot/loader/uEnv.txt and load the kernel with initramfs and kernel command line arguments according to what is set in this file.
If you want our developers to add support for your board, contact us at firstname.lastname@example.org and we can discuss a potential NRE (Non-recurring Engineering) agreement.
Although we have focused on U-Boot and GRUB so far, other bootloaders can be configured to work with OSTree as well. If you want to use a different bootloader, contact us at email@example.com.
Your images will also need network connectivity to be able to reach an actual OTA backend. Our 'poky-sota' distribution does not mandate or install a default network manager but our supported platforms use the
virtual/network-configuration recipe, which can be used as a starting example.
The aktualizr binary is a lightweight C++ application between 2-5 MB in size. It uses around 20 MB RAM, although some of that comes from shared libraries. It uses a minimum amount of other resources when idle.
The following hardware is required for your primary ECU:
At a minimum, the board or device aktualizr is running on will need 64 MB of RAM and 128 MB of storage.
We recommend using a board with slightly higher specs, however. 256 MB of RAM and 512 MB storage are reasonable targets, especially if you plan to process large, complex software updates. The aktualizr process itself won’t consume significantly more RAM with larger updates, but the filesystem cache memory usage might increase.
If you plan to send updates to secondary, low-performance ECUs, you can also use a more minimal implementaton called