Skip to content

Architecture Overview

Guillaume Tucker edited this page Aug 3, 2021 · 3 revisions

Status: moving to kernelci.org/docs


The following diagram provides a global overview of the kernelci.org service.

KernelCI overview

KernelCI.org Dashboard

The dashboard itself has two components: a front-end and a back-end.

Front-end

Stateless web application that users typically interact with.

KernelCI front-end

Dashboard quick links

The top bar menu has access to the build, boots and test reports. You can use ? for filtering results:

  • Filtering the platforms that are failing to boot: http://kernelci.org/boot/?fail

  • Filtering which builds have failures: http://kernelci.org/build/?fail

Back-end

Provides the REST API and token based authentication.

KernelCI back-end

Read the documentation of the API at https://api.kernelci.org/

KernelCI.org Build System

The build system is provided by a Jenkins instance that uses several builders. The configuration used by the builders is managed by ansible playbook at https://github.com/kernelci/builder-config2

Build scripts

The build script and Jenkins Pipelines used by Jenkins are in the kernelci-core repository. This repository also contains all the script to create, submit and report LAVA jobs to and from the labs.

KernelCI.org Storage

All the artifacts produced by Jenkins: kernel images, rootfs, build logs, etc. and all the logs from LAVA are uploaded to the storage server https://storage.kernelci.org/ with the upload API.

Directory structure - rootfs

The rootfs are stored under https://storage.kernelci.org/images/

Directory structure - kernel build and logs

The kernel builds and logs are stored following a strict directory structure: https://storage.kernelci.org/_kernel tree_/_git describe_/_architecture_/_defconfig+Fragment=y_/

  • Kernel Tree: mainline, next, arm-soc, lsk, etc...

  • Git Describe: v3.19-rc4-23-g971780b70194, v3.19-rc4, etc..

  • Architecture: arm, arm64, mips, x86

  • Defconfig+Fragment=y: defconfig, allmodconfig, defconfig+CONFIG_RANDOMIZE_BASE=y/

For example: https://storage.kernelci.org/mainline/master/v4.19-rc8/arm64/defconfig/

The files found under this last directory are:

  • Kernel: Image, bzImage, vmlinux

  • modules.tar.xz: Tarball of modules from the specific build configuration. When extracted, the results should be a directory tree of the form /lib/modules//.

  • System.map: Symbol table from the specific build configuration.

  • kernel.config: The configuration used to build a specific configuration.

  • build.log: This is the log produce by the specific build configuration, only contains errors and warnings.

  • build.json: This is a file encoded using JSON to describe to a kernel build to the dashboard. A detailed schema is available here.

  • Device Trees: Typically, this is a folder called dtbs which contains all of the device tree blobs for a specific build configuration.

  • Lab Name: This is a directory that corresponds to a lab-id. It contains the platform logs in both .txt and .html format.

KernelCI.org Labs

Labs are independent and administrated by the company or contributor that's providing it. Labs run LAVA v2.