Yoe is an Embedded Linux Distribution optimized for product development. It is built on Yocto and OpenEmbedded with a focus on simplicity. This distribution does not end at demo images but rather begins there.
This following is example of building and installing a linux system from scratch on a Raspberry PI 3:
Install docker
on host distribution
sudo apt install docker
sudo dnf install docker
sudo pacman -S docker
Add yourself to the docker
group:
sudo gpasswd -a $USER docker
Install nftable version of iptables on host distribution this is needed for VNC port forwarding to work on docker
Archlinux based sytems - sudo pacman -S iptables-nft
On host systems with 8G RAM or less it will be necessary to ensure a swap file of 8G.
git clone --recurse-submodules -j8 -b master https://github.com/YoeDistro/yoe-distro.git yoe
cd yoe
. ./envsetup.sh rpi4-64
yoe_setup
bitbake yoe-simple-image
lsblk
(note sd card device, and substitute for /dev/sdX below)yoe_install_image /dev/sdX yoe-simple-image
(Note,
Etcher can also be used to write images to
SD cards).sudo eject /dev/sdX
There are many Embedded Linux distribution built on top of OpenEmbedded/Yocto. There is the Poky reference distribution. Most SOC and SOM vendors provide a Yocto variant that supports their products (often put together with repo). While these all provide good ways to build demo images, we feel something slightly different is needed for product development. Thus, the following goals:
See the output of ./envsetup.sh
for examples of projects we regularly test
with.
There is also machine specific documentation available.
Additional machines can be added by including appropriate BSP layers.
This is where all the magic happens. In general, this build system must be run in a bash shell. To set up the environment, source the following file:
. ./envsetup.sh <project>
Or, you can export a PROJECT environment variable, and then source envsetup.sh.
This file will create a bunch of functions in the environment prefixed with
yoe_ that can be executed. Type yoe_
git fetch --unshallow
in the submodule directory.export MACHINE=[my machine]
bitbake [recipe name]
Adding rocko branch of meta-altera layer to layer mix:
yoe_add_layer https://github.com/kraj/meta-altera rocko
Remove meta-altera:
yoe_remove_layer meta-altera
conf/site.conf
contains settings that are common for the project. The
YOE_PROFILE templates make it easy to select common
options.
conf/local.conf
contains settings that are commonly modified such as parallel
build options.
Sometimes you want to install packages you build on the target system without building and re-installing the entire rootfs. This can be done using a feed server.
This advantage of a feed server versus scp'ing opkg files to the target and installing manually is that dependencies will automatically get installed. This mechanism is very useful for packages that are only needed occasionally during development (gdb, screen, strace, iperf, etc).
Assuming you have a recent version of git, you can make use of the branch values specified in .gitmodules to update each submodule branch to the HEAD of the specified branch:
git submodule update --remote
Pull requests are welcome.
For support or to discuss this project, use one of the following options:
This build system is licensed under the MIT license which is the same license as oe-core, etc. See COPYING.MIT