## Overview¶

Kubos Linux upgrades are distributed as kpack-{YYYY.MM.DD}.itb files. ITB stands for ‘Image Tree Blob’ and allows Kubos to utilize the existing DFU utility currently available in U-Boot.

Within each file will be a new version of the kernel image and root filesystem.

To upgrade a board currently running Kubos Linux, an upgrade package will be loaded into the upgrade partition of the board. For now, this can be done through the Kubos SDK or by manually copying the package into the upgrade partition.

Once the board is rebooted, U-Boot will take the package and then install each component into the appropriate partition (kernel/rootfs). If installation completes successfully, then the board will be rebooted and then boot into the new version of Kubos Linux.

The overall flow looks like this:

Note

User files should not be impacted by upgrade installation as long as they remain under the /home directory. This directory maps to the user space partition.

However, some future releases may cause the Kubos libraries to undergo significant changes. In this case, backwards compatilibity is not guaranteed and user applications may need to be rebuilt.

### Pre-requisites¶

The SD card should have been formatted with the correct partitions. If not, refer to the Install the SD Card Files instructions.

The host computer should be connected to the target board, which should be on and running Kubos Linux.

A Kubos SDK Vagrant box should be installed on your host computer and at least one shared folder should be set up. Installation instructions can be found here.

### Installation¶

Acquire an upgrade package from https://github.com/kubos/kubos-linux-build/releases.

Note

Not all releases can be installed via upgrade. Some releases contain changes which massively alter the system, causing a full install to be required instead.

Transfer the package to the target system using scp:

$scp kpack-{version}.itb kubos@{target_ip}:/upgrade/ Once the transfer has completed successfully, trigger a reboot of the board. This can be done with the Linux reboot command. Once job scheduling has been implemented, you will be able to schedule the desired reboot time. When the board boots into U-Boot, the new package will be detected and loaded. If the loading is successful, the board will reboot into the newly installed Kubos Linux. The U-Boot console messages will look similar to this: Processing upgrade 'kernel@1' :crc32+ sha1+ ###writing kernel 1154936 bytes written Processing upgrade 'rootfs@1' :crc32+ sha1+ ##########################Un-Protected 1 sectors Erasing Flash... . done Erased 1 sectors Writing to Flash... done Protected 1 sectors resetting ... reset_cpu ## Upgrade Rollback¶ If for some reason you need to rollback to a previous version of Kubos Linux, you don’t need to reflash the board with the correct upgrade package. Previous packages are not deleted once they have been loaded. As a result, you can simply specify which package you would like to boot into and then restart your system. From the Kubos Linux shell:$ fw_setenv kubos_updatefile kpack-{desired version}.itb

### Distribute the Package¶

There isn’t currently a central storage location or procedure for non-release upgrade packages. This section should be upgraded once something has been implemented.