{"id":13829991,"url":"https://github.com/YoeDistro/yoe-distro","last_synced_at":"2025-07-09T10:32:17.426Z","repository":{"id":33441507,"uuid":"149803623","full_name":"YoeDistro/yoe-distro","owner":"YoeDistro","description":"Embedded Linux distribution optimized for product development (based on OE/Yocto)","archived":false,"fork":false,"pushed_at":"2025-07-06T06:07:47.000Z","size":7284,"stargazers_count":221,"open_issues_count":33,"forks_count":46,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-07-06T07:23:55.311Z","etag":null,"topics":["linux-distribution","openembedded","yocto-layer","yocto-project"],"latest_commit_sha":null,"homepage":null,"language":"BitBake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YoeDistro.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"COPYING.MIT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"kraj"}},"created_at":"2018-09-21T18:39:45.000Z","updated_at":"2025-07-01T20:42:54.000Z","dependencies_parsed_at":"2023-09-22T05:37:16.676Z","dependency_job_id":"87df6691-dc25-4760-af16-798f1655f402","html_url":"https://github.com/YoeDistro/yoe-distro","commit_stats":{"total_commits":3172,"total_committers":16,"mean_commits":198.25,"dds":"0.11885245901639341","last_synced_commit":"a87dee7498a5792311b584078a28be541f71253f"},"previous_names":[],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/YoeDistro/yoe-distro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoeDistro%2Fyoe-distro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoeDistro%2Fyoe-distro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoeDistro%2Fyoe-distro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoeDistro%2Fyoe-distro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YoeDistro","download_url":"https://codeload.github.com/YoeDistro/yoe-distro/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoeDistro%2Fyoe-distro/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264440242,"owners_count":23608678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linux-distribution","openembedded","yocto-layer","yocto-project"],"created_at":"2024-08-04T10:00:52.328Z","updated_at":"2025-07-09T10:32:15.458Z","avatar_url":"https://github.com/YoeDistro.png","language":"BitBake","funding_links":["https://github.com/sponsors/kraj"],"categories":["BitBake"],"sub_categories":[],"readme":"\u003cimg src=\"docs/yoe-logo.png?raw=true\" width=\"180\"\u003e\n\n[![Yoe Distro CI](https://github.com/YoeDistro/yoe-distro/workflows/Yoe%20Distro%20CI/badge.svg?branch=master)](https://github.com/YoeDistro/yoe-distro/actions/workflows/yoe.yml?query=workflow%3AYoe+branch%3Amaster)\n[![](https://tokei.rs/b1/github/YoeDistro/yoe-distro?category=code)](https://github.com/XAMPPRocky/tokei)\n\n# Yoe Embedded Linux Distribution  🐑\n\nYoe is an Embedded Linux Distribution optimized for product development. It is\nbuilt on **Y**octo and **O**pen**E**mbedded with a focus on simplicity. This\ndistribution does not end at demo images but rather begins there.\n\n## Example 👀\n\nThis following is example of building and installing a linux system from scratch\non a Raspberry PI 3:\n\n## Install Pre-requisites 💻\n\nInstall `docker` on host distribution\n\n- debian-like systems - `sudo apt install docker`\n- RPM based systems - `sudo dnf install docker`\n- Archlinux based systems - `sudo pacman -S docker`\n\nAdd yourself to the `docker` group:\n\n- `sudo gpasswd -a $USER docker`\n- log out and log back in\n\nInstall nftable version of iptables on host distribution this is needed for VNC\nport forwarding to work on docker\n\n- Archlinux based sytems - `sudo pacman -S iptables-nft`\n\n- On host systems with 8G RAM or less it will be necessary to ensure a swap file\n  of 8G.\n\n## Workspace Setup 👷\n\n1. `git clone --recurse-submodules -j8 -b master https://github.com/YoeDistro/yoe-distro.git yoe`\n1. `cd yoe`\n1. `. ./envsetup.sh rpi4-64`\n1. `yoe_setup`\n1. `bitbake yoe-simple-image`\n1. insert SD card\n1. `lsblk` (note sd card device, and substitute for /dev/sdX below)\n1. `yoe_install_image /dev/sdX yoe-simple-image` (Note,\n   [Etcher](https://www.balena.io/etcher/) can also be used to write images to\n   SD cards).\n1. optional: [configure console for serial port](docs/raspberrypi.md)\n1. `sudo eject /dev/sdX`\n1. Install SD card in a Raspberry PI and enjoy your new image\n\n[Detailed documentation](docs/README.md)\n\n## Vision 🔭 \n\nThere are many Embedded Linux distribution built on top of OpenEmbedded/Yocto.\nThere is the Poky reference distribution. Most SOC and SOM vendors provide a\nYocto variant that supports their products (often put together with repo). While\nthese all provide good ways to build demo images, we feel something slightly\ndifferent is needed for product development. Thus, the following goals:\n\n1. **simple**: directory layout is logical so it is easy to find things, and\n   tooling is as simple as possible. Emphasis is on logical organization,\n   minimal magic, and good tooling where it makes sense. We try to minimize\n   uneeded indirection or abstraction unless it really adds value.\n1. **modern**: generate a modern Linux root filesystem using the latest\n   technologies.\n1. **broad platform support**: support a range of single board computers (SBC),\n   system on chips (SoC), and system on modules (SOM). You should not have to\n   use a different build system for every SBC/SOC/SOM you might choose to use in\n   your products. Rather, one build system should easily support building images\n   for a number of different targets in one build tree. Most companies support\n   multiple products with SOCs from multiple vendors, thus the build system\n   should be centered around the user's products and software.\n1. **repeatable**: easy to lock down subprojects (layers) to known versions for\n   repeatable builds\n1. **extendable**: simple to modify and add your own custom software, scripts\n   and tooling. The focus is not on hiding or abstracting Yocto functionality,\n   but rather provider simpler and clearer ways to use it.\n1. **maintainable**: product lifecycles run for many years, so we need a\n   solution where we can build images on a number of different hosts as time\n   marches on. We achieve this through a simple and transparent\n   [docker wrapper](docs/docker.md) that contains all the host dependencies\n   needed. This wrapper is invisible (the file system still lives on the host),\n   and is optional if you choose not to use it.\n1. **transparent**: we try to use industry standard tools (git, bitbake, etc)\n   where possible and not invent a lot of new tooling that needs to be learned\n   to use the system. As an example, much of the tooling (envsetup.sh) are\n   simple bash functions and are easy to learn from. Using Yoe will teach you\n   about Yocto.\n1. **minimal**: Embedded Linux images can quickly become bloated so we support\n   technologies like musl libc, opkg package manager, etc. where appropriate.\n\n## Supported Machines\n\nSee the output of `./envsetup.sh` for examples of projects we regularly test\nwith.\n\nThere is also\n[machine specific documentation](docs/README.md#machine-documentation)\navailable.\n\nAdditional machines can be added by including appropriate BSP layers.\n\n## Using ⚙️\n\n### envsetup.sh\n\nThis is where all the magic happens. In general, this build system must be run\nin a bash shell. To set up the environment, source the following file:\n\n`. ./envsetup.sh \u003cproject\u003e`\n\nOr, you can export a PROJECT environment variable, and then source envsetup.sh.\n\nThis file will create a bunch of functions in the environment prefixed with\nyoe\\_ that can be executed. Type yoe\\_ \u003ctab\u003e\u003ctab\u003e to see them.\n\n### directories and key files\n\n- _build_: temporary directory where build actually takes place\n- _conf_: configuration files for the build\n- _sources_: various sources used for the build. The entries in this directory\n  are git submodules. Note, by default, submodules are shallow clones. If you\n  need the the full git history of a submodule, then run `git fetch --unshallow`\n  in the submodule directory.\n- _downloads_: contains files that are downloaded by various recipes during\n  builds.\n- _tools_: utility scripts\n- _localconfig.sh_: file created by envsetup.sh that contains directory specific\n  variables based on the build system location.\n- _local.sh_: can be used to customize MACHINE, and other variables\n\n### building for another machine\n\n- `export MACHINE=[my machine]`\n- `bitbake [recipe name]`\n\n### Layer management\n\nAdding rocko branch of meta-altera layer to layer mix:\n\n`yoe_add_layer https://github.com/kraj/meta-altera rocko`\n\nRemove meta-altera:\n\n`yoe_remove_layer meta-altera`\n\n### Customizing the distribution\n\n`conf/site.conf` contains settings that are common for the project. The\n[YOE_PROFILE](docs/yoe-profile.md) templates make it easy to select common\noptions.\n\n### customizing settings for your build machine\n\n`conf/local.conf` contains settings that are commonly modified such as parallel\nbuild options.\n\n### starting a local feed server\n\nSometimes you want to install packages you build on the target system without\nbuilding and re-installing the entire rootfs. This can be done using a\n[feed server](docs/packages.md).\n\nThis advantage of a feed server versus scp'ing opkg files to the target and\ninstalling manually is that dependencies will automatically get installed. This\nmechanism is very useful for packages that are only needed occasionally during\ndevelopment (gdb, screen, strace, iperf, etc).\n\n### updating the submodules to the latest\n\nAssuming you have a recent version of git, you can make use of the branch values\nspecified in .gitmodules to update each submodule branch to the HEAD of the\nspecified branch:\n\n`git submodule update --remote`\n\n### Support and Contributing\n\nPull requests are welcome.\n\nFor support or to discuss this project, use one of the following options:\n\n- [Yoe community forum](https://community.tmpdir.org/c/yoe-distro/6) 💬 \n- [Open a github issue](https://github.com/YoeDistro/yoe-distro/issues/new) #️⃣\n- [Yoe Videos](https://www.youtube.com/@yoedistro)  🎬\n\n## License\n\nThis build system is licensed under the MIT license which is the same license as\noe-core, etc. See COPYING.MIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYoeDistro%2Fyoe-distro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FYoeDistro%2Fyoe-distro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYoeDistro%2Fyoe-distro/lists"}