Aktualizr is configured via .toml
config files. One or more files or directories can be passed to the application via the --config
flag (one per file or directory). If --config
is not specified on the command line, aktualizr searches /usr/lib/sota/conf.d
and /etc/sota/conf.d/
for files with a .toml
extension. Aktualizr searches for and processes these config files in systemd style, meaning that if multiple files are found with the same name, the last one found overrules and hides the others. Files are then processed in alphabetical order, so if a config option is specified in multiple files, the last entry found overrules the others. If an option is left unspecified in a file processed after another file in which it was specified, it is not overruled.
Example config files used by unit tests, continuous integration tests, and meta-updater recipes can be found in ../config/, ../tests/config/, and https://github.com/advancedtelematic/meta-updater/tree/rocko/recipes-sota/config/files.
All fields are optional, and most have reasonable defaults that should be used unless you have a particular need to do otherwise.
Some options can also be set on the command line. The command line input always takes precedence over the config files. See ../src/aktualizr_primary/main.cc (or run aktualizr --help
) for the available command line options.
Configuration for the logger.
Name | Default | Description |
---|---|---|
|
|
Log level, 0-5 (trace, debug, info, warning, error, fatal). |
Config options for networking and secondary device detection by the primary.
Name | Default | Description |
---|---|---|
|
|
Subnetmask for primary to broadcast for secondary discovery. |
|
|
Port for primary to broadcast for secondary discovery. |
|
|
Seconds to wait for secondaries to respond to discovery broadcast message. |
|
|
Port to listen on for incoming messages |
Options for using a PKCS#11 compliant device for storing cryptographic keys.
Note
|
The key ID options require the corresponding options in the tls or uptane section to be set to pkcs11 .
|
Name | Default | Description |
---|---|---|
|
Path to the shared object HSM driver. |
|
|
Password for accessing the HSM. |
|
|
Key ID of the Uptane key in the HSM. |
|
|
Key ID of the TLS root CA certificate for authenticating the server. |
|
|
Key ID of the client’s TLS private key. |
|
|
Key ID of the client’s TLS certificate. |
Configuration for client-server TLS connections.
Name | Default | Description |
---|---|---|
|
Server URL. |
|
|
Path to a file that contains the server URL. |
|
|
|
Where to read the TLS root CA certificate from. Options: |
|
|
Where to read the client’s TLS private key from. Options: |
|
|
Where to read the client’s TLS certificate from. Options: |
Note that server_url_path
is only used if server
is empty. If both are empty, the server URL will be read from provision.provisioning_path
if it is set and contains a file named autoprov.url
.
Options for how the device is provisioned with the backend.
Name | Default | Description |
---|---|---|
|
Server provisioning URL. If empty, set to |
|
|
The hardware ID of the primary ECU (e.g., |
|
|
Path to an archive containing provisioning data. See ../docs/credentials.adoc for the specification of the contents of this file. |
|
|
Password for PKCS#12 encryption. |
|
|
|
Provided in the |
|
Device ID of the primary ECU. If left empty, a random name will be generated. |
|
|
Serial number of the primary ECU. If left empty, a random serial will be generated. |
|
|
Ecu provisioning URL. If empty, set to |
If you intend to provision with a server by using meta-updater, you will probably want to set provision.provision_path = "/var/sota/sota_provisioning_credentials.zip"
.
Options for Uptane.
Name | Default | Description |
---|---|---|
|
|
Continuously poll the server ( |
|
|
Interval between polls (in seconds). |
|
Director server URL. If empty, set to |
|
|
Image repository server URL. If empty, set to |
|
|
|
Where to read the device’s private key from. Options: |
|
|
Type of cryptographic keys to use. Options: |
|
|
Directory containing individual secondary json configuration files. Example here: ../config/secondary/virtualsec.json |
Config options for how secondary devices are detected by the primary.
Name | Default | Description |
---|---|---|
|
|
Enable UDP multicast for secondary discovery. |
Options for package management and update installation. Note that this only coincidentally shares the name with the ArchLinux pacman
tool.
Name | Default | Description |
---|---|---|
|
|
Which package manager to use. Options: |
|
OSTree operating system group. Only used with |
|
|
Path to an OSTree sysroot. Only used with |
|
|
OSTree server URL. Only used with |
|
|
|
Path to a file for storing package manifest information. Only used with |
Options for how Aktualizr stores data locally.
Name | Default | Description |
---|---|---|
|
|
What type of storage driver to use. Options: |
|
|
Directory for storage |
|
|
Path to the uptane metadata store, for migration from |
|
|
Relative path to the Uptane specific private key, for migration from |
|
|
Relative path to the Uptane specific public key, for migration from |
|
|
Relative path to the TLS root CA certificate, for migration from |
|
|
Relative path to the client’s TLS private key, for migration from |
|
|
Relative path to the client’s TLS certificate, for migration from |
|
|
Relative path to the database file. |
The only supported storage option is now sqlite
.
Old systems configured with filesystem
can be migrated by changing the type
field to sqlite
and keeping all the other fields as-is.
At the next Aktualizr run, the migration procedure will then run automatically and move existing data inside the database.
Options for importing data from the filesystem into the storage.
Name | Default | Description |
---|---|---|
|
Path to a common root directory to the subsequent files |
|
|
Path to the device’s private key. |
|
|
Path to the device’s public key. |
|
|
Path to the TLS root CA certificate. |
|
|
Path to the TLS private key. |
|
|
Path to the TLS client certificate. |