What is Yocto?¶
In the ever-expanding landscape of embedded systems, the demand for customizable, efficient, and secure Linux distributions has given rise to powerful tools and frameworks. Among them, the Yocto Project stands out as a robust solution for creating custom Linux distributions tailored to the specific needs of embedded devices. Qbee is an official Yocto Project Partner and committed to maintain the agent integrations and meta layers for the project. You can also build the qbee agent from source now since the open source packages are available here.
How to integrate the agent with Yocto?¶
Integrating the qbee-agent with Yocto Project involves a series of steps to ensure that the qbee-agent is incorporated into the custom Linux distribution generated by Yocto. Below is a guide on how to achieve this integration:
-  Set up the Yocto environment. We are using Yocto project name kirkstone in this example as it is the latest LTS release.: git clone -b kirkstone https://git.yoctoproject.org/poky layers/poky git clone -b kirkstone https://github.com/openembedded/meta-openembedded layers/meta-openembedded git clone -b master https://github.com/qbee-io/meta-qbee layers/meta-qbee
-  Set up the build environment: source layers/poky/oe-init-build-envThen add the needed layers to your build bitbake-layers add-layer ../layers/poky/meta bitbake-layers add-layer ../layers/poky/meta-poky bitbake-layers add-layer ../layers/poky/meta-yocto-bsp bitbake-layers add-layer ../layers/meta-openembedded/meta-oe bitbake-layers add-layer ../layers/meta-qbee/meta-qbeeApply qbee-agent configuration to build environment: CONF_VERSION = "2" INIT_MANAGER = "systemd" EXTRA_IMAGE_FEATURES += "ssh-server-openssh" QBEE_BOOTSTRAP_KEY="<bootstrap_key>" QBEE_DEVICE_NAME_TYPE="mac-address"Qbee device name type By default qbee uses the device host name as the identifier in the UI. However, in the seed configuration you can specify a variable DEVICE_NAME_TYPEwhich can either have valuesmac-addressormachine-id. The qbee-agent will then use either the machine-id (/etc/machine-id) or the mac-address of the default network device when bootstrapping.
-  Build the image target. This example builds the target core-image-minimalfor aqemux86-64machine.MACHINE="qemux86-64" bitbake core-image-minimal
-  Run the qemu image and check that the device appears in the qbee UI MACHINE="qemux86-64" runqemu slirp nographic core-image-minimalNow the device will be visible in the Qbee UI. Qbee configuration and state directory The qbee-agent will put all it's configuration and state under respectively /data/qbee/etcand/data/qbee/var. The reason for this is that qbee-agent for Yocto is designed to run in a A/B partition update scenario, which has become popular way to do OTA updates in IoT. In such a setup the/datapartition will serve as storage for non-volatile data (like qbee-agent configuration and state).