SysOTA uses requires both immutable system images _and_ a separate boot partition. This naturally raises the question on how are boot assets that live outside of the rootfs updated. This specification defines just that.
## Boot assets
Boot assets include all the files that participate in the boot process with the exception of the platform firmware. This may include the following:
- Kernel image copied to the boot partition
- Device tree files present in the boot partition
- EFI programs or other files loaded by the platform firmware
- Configuration files present in the boot partition read either by the platform firmware or by files loaded by the platform firmware
## Bundling
In order to allow SysOTA to update boot assets they must be available in the rootfs image. During the existing update process the rootfs image is replaced with a new image.
Using platform-specific logic, SysOTA will selectively copy and modify boot assets from the rootfs and put them in the boot partition.
SysOTA expects boot assets to be deposited into the `/usr/lib/sysota/boot-assets` directory.
To make integration easier, the boot assets placed here are expected to match what is copied to the boot partition by the image compositor.
Any adaptations required are performed by SysOTA
### Raspberry Pi
For the Raspberry Pi, the boot assets contain the usual set of files:
-`bootcode.bin` file loaded on some platforms
-`start.elf` and related files (fix-ups, debug, etc) loaded on all platforms