Skip to main content

Requirements

Preparing the host system

Before starting with Clea OS, choose one of two setup methods:

  • Recommended: use the preconfigured SECO Docker container.
  • Alternative: install all required tools manually on your host system.

Both setups are validated on Ubuntu 22.04 LTS.

Quick Start
  1. Install Docker
  2. Pull the SECO image
  3. Run the container
  4. Proceed to build Clea OS

Ubuntu 22.04

All Clea OS development and build operations are verified on Ubuntu 22.04 LTS.
You can use either:

  • a bare-metal installation, or
  • a virtual machine (e.g., VirtualBox, VMware, etc.).

Download the Ubuntu 22.04 image from the official source: Ubuntu 22.04.5 LTS Desktop iso

SECO Docker Container (Suggested Method)

This is the recommended and simplest way to prepare your Clea OS build environment. The release builds run inside Docker images based on ubuntu-22.04. The official SECO Docker images are available in the SECO Docker Hub repository

Pull the latest container:

$ docker pull secodocker/clea-os-builder:latest

If you prefer not to prefix Docker commands with sudo, follow the Docker post-install guide

Since all the necessary build packages are already inside the SECO container, you only need to have Docker installed locally when using this setup.

Runnig the Docker container

You can start the Clea OS build environment with the following command:

    $ export docker_user="yoctouser" ; 
$ export docker_workdir="workdir" ;

$ docker run --rm -it \
-v "${PWD}":/home/"${docker_user}"/"${docker_workdir}" \
-v "${HOME}"/.gitconfig:/home/"${docker_user}"/.gitconfig:ro \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v "${HOME}"/.Xauthority:/home/"${docker_user}"/.Xauthority:rw \
-v /etc/ssl/certs/:/etc/ssl/certs/:ro \
--workdir=/home/"${docker_user}"/"${docker_workdir}" \
secodocker/clea-os-builder:latest --username="${docker_user}"
info

Mount the .gitconfig file only if there are particular settings to import into the container. Otherwise, configure git settings directly inside the running docker container.

Internal usage with SSH

If you need SSH access to repositories, add the following line to the docker run command:

    -v "${HOME}"/.ssh:/home/"${docker_user}"/.ssh:ro \
Working directory mapping

Run the command inside the folder where you want to work. That directory will be mapped inside the container at:

    /home/${docker_user}/${docker_workdir}

Hosting without Docker container (Alternative Method)

If you want to build Clea OS on your host system without the docker container, you can follow the official Yocto documentation for compatible distributions and prerequisites.

Run the following commands to install the dependencies:

    $ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev xterm python3-subunit mesa-common-dev zstd liblz4-tool curl cmake flex bison pkg-config gettext libncurses-dev

Installing the repo tool

Clea OS uses the Google repo tool to manage multiple Git repositories. If your distribution provides repo via its package manager, you can install it from there, otherwise you can install it manually withe following commands:

    $ mkdir ~/bin     # only once
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo # only once
$ chmod a+x ~/bin/repo # only once
$ echo "export PATH=${PATH}:~/bin" >> ~/.bashrc # only once
$ source ~/.bashrc

More info can be found in the Goolge Repo Gerrit.

Development tools

Whether you use the SECO Docker container or build directly on your host system, the following tools are useful for development and debugging:

    $ sudo apt install git minicom gdb-multiarch crossbuild-essential-armhf meld gedit nano cscope quilt qtcreator

Local Git setup:

Configure your Git identity for proper commit attribution:

    $ git config --global user.name "Forename Name" # use your name instead
$ git config --global user.email "my.name@example.com" # use your email instead