Device-type template¶
The device-type template is a jinja2 template that will be extended by device dictionaries. The resulting file is the device configuration file.
This yaml file is used by lava-dispatcher
to know how to flash, boot
and communicate with a specific device.
Configuration file¶
The device-type templates that are supported and provided by LAVA are stored
in /usr/share/lava-server/device-types/
.
Admins could also provide their own device-type template using lavacli:
lavacli device-types template set qemu qemu.jinja2
Device-types provided by admins will be stored in
/etc/lava-server/dispatcher-config/device-types/<name>.jinja2
.
LAVA will always look first in /etc/lava-server/dispatcher-config/device-types/
and fallback to /usr/share/lava-server/device-types/
.
This mean that admins can override every device-type templates, including the ones provided by LAVA.
Base templates¶
Every device-type template should inherit from base.jinja2
which contains
many default structures.
For simplicity multiple base templates are provided for the most common bootloaders:
base-barebox.jinja2
base-depthcharge.jinja2
base-edk2.jinja2
base-fastboot.jinja2
base-grub.jinja2
base-uboot.jinja2
Examples¶
For most device-types, extending a base template should be enough.
Raspberry Pi 4b¶
For the Raspberry Pi 4b, the device-type could look like the following. This will only define some memory address and prompts that are specific to the board.
{% extends 'base-uboot.jinja2' %}
{% set interrupt_ctrl_list = ['c'] %}
{% set action_timeout_bootloader_interrupt = '60' %}
{% set booti_kernel_addr = booti_kernel_addr|default('0x00080000') %}
{% set booti_ramdisk_addr = booti_ramdisk_addr|default('0x02700000') %}
{% set booti_dtb_addr = booti_dtb_addr|default('0x02400000') %}
{% set bootm_kernel_addr = bootm_kernel_addr|default('0x00080000') %}
{% set bootm_ramdisk_addr = bootm_ramdisk_addr|default('0x02700000') %}
{% set bootm_dtb_addr = bootm_dtb_addr|default('0x02400000') %}
{% set uboot_mkimage_arch = 'arm64' %}
{% set bootloader_prompt = bootloader_prompt|default('U-Boot>') %}
{% set console_device = console_device|default('ttyS1') %}