Key concepts
Update Bundle
An update bundle contains several binary files, a manifest.json and a signatures.json file.
The signatures.json contains signatures of each file in the bundle and a signature over all signatures (entry: “signatures.json”). This ensures that the composition of the bundle cannot be tampered with.
manifest.json
The manifest.json file contains:
- An overall bundle version
- Several components, which each have separate versions.
- A user section that can store any key/value pairs, to allow the application to check e.g. if an update is suitable for a specific device.
{
"version": "v3.2.2",
"components": {
"os": {
"version": "Some Build #v2.1.2-derivate@2023-08-17 12:42:33@aded8b40-e3c2-4240-783d-360c5841f223 - (C) 2020-2023 idastroem",
"files": ["zImage:zImage.stm32", "dtb:device.dtb.stm32", "rootfs:rootfs.squashfs"]
},
"app": {
"version": "v3.1.19",
"files": ["app:cc"]
},
"mc": {
"version": "v3.1.25",
"files": ["m4:m4.bin.encrypted"]
}
},
"user": {
"product": "my_product",
"change_log": "public release"
}
}
Components
Each component consists of:
- a distinct version string
- a list of files.
...
"os": {
"version": "Some Build #v2.1.2-derivate@2023-08-17 12:42:33@aded8b40-e3c2-4240-783d-360c5841f223 - (C) 2020-2023 idastroem",
"files": ["zImage:zImage.stm32", "dtb:device.dtb.stm32", "rootfs:rootfs.squashfs"]
},
...
Component updates as needed
If the component version differs from the installed version all files listed in the component are updated and the installed version is updated.
This ensures:
- Only outdated components are updated.
- After a successful update all components are identical to those in the bundle.