Skip to content

OSSystemsEmbeddedLinux/ossystems-embedded-linux-kas-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

O.S. Systems Embedded Linux — kas Platform

kas build platform for the oel distribution (O.S. Systems Embedded Linux), built on OpenEmbedded-Core and tracking the OpenEmbedded/Yocto Project master branch.

kas checks out the required layers, generates bblayers.conf/local.conf, and drives BitBake, so a full build is a single command. The repository ships one ready-to-build configuration per supported machine.

Contents


Prerequisites

  • kas — install with pip install kas, or run it via the kas-container wrapper, on a host with the usual Yocto/OE build dependencies.

    Nix users can instead enter a ready-made shell that bundles kas and the host tools via the yocto-env.nix flake:

    nix develop github:OSSystems/yocto-env.nix
  • A local.yml — copy the tracked template and edit it with your local paths/preferences. It is gitignored (developer-local, not committed):

    cp local.yml.example local.yml

Quick start

kas build kas/oel-qemux86-64.yml:local.yml --target core-image-base
  • Configs are composed left-to-right with : (later overrides earlier).
  • Pick any machine by choosing the matching kas/oel-<machine>.yml.
  • The image/target is passed by hand with --target; it is deliberately not baked into a YAML file. With no --target, kas falls back to $KAS_TARGET, then a config's target:, then the default core-image-minimal.
  • Checkout only (no build): kas checkout kas/oel-qemux86-64.yml:local.yml
  • Interactive BitBake shell: kas shell kas/oel-qemux86-64.yml:local.yml

Run the built image in QEMU

The machines are QEMU targets, so runqemu can boot the result directly:

kas shell kas/oel-qemux86-64.yml:local.yml -c "runqemu qemux86-64 nographic"

Repository layout

The kas/ configuration and the local.yml.example template are tracked; everything else is generated or developer-local.

├── kas/
│   ├── base.yml            # repos + defaults + the oel distro (shared foundation)
│   └── oel-<machine>.yml   # one per machine; ties oel to that machine
├── local.yml.example       # template for local.yml (tracked)
└── local.yml               # developer-local settings; gitignored (not committed)
Path Tracked? Purpose
kas/ yes The kas configuration
local.yml.example yes Template for local.yml
local.yml no Your local settings (.gitignore)
sources/ no Layers checked out by kas (.gitignore)
build/ no BitBake build directory (.gitignore)

base.yml

The shared foundation: layer repositories, the default branch (master), build_system: oe, and distro: oel. It is included by every machine file and is not built directly.

Repositories: bitbake, openembedded-core (layer meta), meta-ossystems-base (provides the oel distro), and ye — all tracked on master.

oel-<machine>.yml

One product file per machine, each including base.yml and setting machine:. Available machines (all from OE-core):

qemuarm · qemuarm64 · qemuarmv5 · qemuloongarch64 · qemumips · qemumips64 · qemuppc · qemuppc64 · qemuriscv32 · qemuriscv64 · qemux86 · qemux86-64

local.yml

Your personal, machine-local overrides — passed last on the command line. Gitignored and created from local.yml.example; see Developer-local setup.


Developer-local setup

local.yml holds your host-specific settings and is not committed (it differs per developer and machine). Create it from the template:

cp local.yml.example local.yml

The template enables passwordless root login for development, via an upstream OE config fragment:

local_conf_header:
  local: |
    OE_FRAGMENTS += "core/yocto/root-login-with-empty-password"

Add host-specific overrides in the same block — all optional, with BitBake defaults applied when omitted:

Variable Purpose
DL_DIR Download cache, shareable across projects
SSTATE_DIR Shared-state (sstate) cache, shareable too
OE_TERMINAL Terminal for devshell / menuconfig
BB_PRESSURE_MAX_CPU CPU-pressure throttle for BitBake scheduling

Paths such as DL_DIR/SSTATE_DIR must be absolute — kas runs BitBake with HOME pointed at a private temporary directory, so ${HOME} will not resolve to your real home:

DL_DIR = "/home/you/yocto/downloads"
SSTATE_DIR = "/home/you/yocto/sstate-cache"

The oel distro already sets BB_HASHSERVE_DB_DIR ??= "${SSTATE_DIR}", so the hash-equivalence DB follows your sstate cache automatically.


Reproducibility

The repos track their master branches with no pinned commits — convenient for development, but not reproducible. For a release, pin exact commits with a lockfile:

kas dump --lock --inplace kas/oel-qemux86-64.yml

This writes kas/oel-qemux86-64.lock.yml, which kas loads automatically and which overrides only the commit IDs — branches keep floating for day-to-day work.


Maintainer

Maintained by O.S. Systems. Issues and merge requests are welcome on the project repository.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors