Software Packages Management
In this article, you will learn how to manage software packages for Applications, TorizonCore OS images and Bootloader with the Torizon Platform Services.
It is important to know that Torizon Platform Services works with different types of packages:
- OS Packages: TorizonCore Operating System with all the pieces needed to host and run your Torizon Application Packages - kernel, filesystem, drivers, hardware configurations, your customizations, utilities, and services, such as update client, device monitoring client, container daemon, and more.
- Application Packages: every software that is needed by your application, including libraries and other services, packaged in one or multiple containers.
- Bootloader Packages: whenever needed to perform a major upgrade in the TorizonCore OS version, Toradex provides fully-validated bootloader packages in the Torizon Platform so you can securely update your device's bootloader.
- A registered account in the Torizon Platform Services
- Optional: A host machine with TorizonCore Builder installed if you plan to create a customized TorizonCore image.
Application Updates: Containers Packages
The update of containers is available in the basic plan of the Torizon Platform Services. In other words, when you update the containers you are updating your application.
To create a package for containers update on the Torizon Platform Services, you can either:
- Use our Visual Studio Code Extension for Torizon to upload a package.
- Manually create a Docker Compose file (
Docker Compose is a tool for defining and running multi-container Docker applications. Learn more about it and how to generate one in:
- Visual Studio Code Extension for Torizon if you are developing with VS Code. Note that, while VS Code allows you to export a Docker Compose file, it also allows you to transparently upload it to the Torizon Platform Services, which is easier.
- Using Multiple Containers with TorizonCore for a conceptual overview, or if you are using the command-line.
OS Updates: Vanilla TorizonCore Packages
Toradex maintains its BSPs with updated software for bootloader and Linux kernel. The developers can follow the TorizonCore Issue Tracker and the BSP Layers and Reference Images for Yocto Project Issue Tracker pages to get updated information about known issues, scheduled bug fixes, and feature improvements for every TorizonCore and BSP release. Remember that TorizonCore is built on top of the Toradex BSP.
With the Torizon Platform Services, you can update the TorizonCore version of the boards remotely with the latest periodical releases. To do that, when adding a new package, select the option "Custom Package" and then select the desired release type (LTS, quarterly, monthly or nightly) for the same base image that is currently installed.
Custom OS Updates: Custom TorizonCore Packages
In some cases, when you need to customize the base TorizonCore image, the Torizon Platform Services can receive your custom image and send its updates to your fleet of devices. Some examples where image customization is required include, but are not limited to:
- Adding new Hardware by customizing the system's device tree
- Changing the System's Splash Screen
- Capturing Changes in the Configuration of a Board In this situation, a developer will use TorizonCore Builder Tool to generate a custom image.
Also, in some corner cases, the image re-building and customization are inevitable. TorizonCore is open-source, and Toradex provides instructions to build TorizonCore with Yocto.
After generating a custom image, the developer will need to sign and upload it to the Torizon Platform Services to be available as a package. Learn how to do that, in the Signing and Pushing TorizonCore Images to the Torizon Platform Services article.
OS and Application: Synchronous Updates
In the context of Torizon Platform Services and offline updates, the simultaneous update of the OS and application packages on a TorizonCore device is called "synchronous update". It is more than just updating 2 components at once. It’s truly synchronous, in the sense that both OS and application must update successfully or they will fail together as if they were a single component.
The main motivation behind synchronous updates is for cases where the OS and application are intertwined. For example, when you have a new application that relies on a new driver, and it is only available in a new version of the OS. Given the dependency, it would be ideal to update both OS and application at the same time.
Due to the design of synchronous updates, it’s guaranteed that you’ll end up with a system that either failed to update or successfully updated both components. This way the system prevents awkward scenarios, where only one component is updated successfully leaving you with a halfway updated system with mismatched components.
The above example is not the only situation that would warrant synchronous updates. Whenever you need to tie the failure and success states of both an OS and application updates, use synchronous updates. Otherwise, if it is acceptable for the OS and application update to fail or succeed independently, then two non-synchronous updates are sufficient.
The update procedure in this case has additional checks to ensure integrity of the process. Learn more at the Torizon Updates Technical Overview.
In some cases, Toradex explicitly recomends you to update your bootloader. Toradex maintains and publish the correct bootloader package for your devices. Learn more in the Bootloader Updates Documentation