You can build images with yocto in docker.
- Build image in docker with yocto, no need to install yocto (and all dependencies) on your host
- Multiple layers (In submodules)
- Easy to use (Makefile)
| Software | Minimum | Recommended |
|---|---|---|
| Linux | Any | Any |
| Docker | 19.x | 20.x |
| Make | 4.x | 4.x |
| Time | x hours | x hours |
| Hardware | Minimum | Recommended |
|---|---|---|
| CPU | 2 cores | 8 cores |
| GPU | - | - |
| Disk space | HDD 50 GB | SSD 300 GB |
| Internet | 10 Mbps | 100 Mbps |
With this configuration, you can build a core-image-full-cmdline for intel-corei7-64 in 1h30-2h00.
- AMD Ryzen 7 5800H (8 cores/16 threads at 3.2 GHz/4.4 GHz)
- 32 GB RAM
- 1 TB SSD NVMe Samsung 980 Pro
- 100 Mbps internet
- Manjaro Linux
- Yocto 4.2 beta (02/2023)
Clone this repository
git clone https://github.com/bensuperpc/docker-yocto.gitIf you want to use submodules, you can clone with submodules.
git clone --recurse-submodules --remote-submodules https://github.com/bensuperpc/docker-yocto.gitmake buildNow you can start the container, it will mount the current directory in the container.
make bookworm.runThe table below shows the available debian versions. buster bullseye bookworm:
| Debian | Makefile target |
|---|---|
| Bookworm | bookworm |
| bullseye | bullseye |
| buster | buster |
Now you are in the container, you can build image with yocto. You can use cooker to build image, it easy to use. We target base-raspberrypi4-64 build from raspberrypi4-64.json file.
cooker cook raspberrypi4-64.json base-raspberrypi4-64You can use some options with cooker:
| Option | Description |
|---|---|
| --download | Only download the sources and not build the image |
| --sdk | Build the SDK after the image |
| --keepgoing | Continue as much as possible after an error |
| --version | Show the version of cooker |
If you want to use bitbake, you can use it. (You need submodules)
Checkout the branch you want (For each submodules/layers). All branches must be the same version on poky/openembedded-core and other submodules/layers.
git branch -a # show all branches on submodules/layers or poky/openembedded-core
git checkout -t origin/kirkstone -b my-kirkstone # checkout the branch and create a new branchWith openembedded-core :
source layers/openembedded-core/oe-init-build-env base-raspberrypi4-64Or with poky :
source layers/poky/oe-init-build-env base-raspberrypi4-64 Add meta layer :
bitbake-layers add-layer ../metaAdd meta-poky layer :
bitbake-layers add-layer ../meta-pokyAdd meta-oe layer :
bitbake-layers add-layer ../openembedded-core/meta-oeAdd meta-raspberrypi layer :
bitbake-layers add-layer ../layers/meta-raspberrypiShow layers if you want :
bitbake-layers show-layersChange the MACHINE in conf/local.conf :
MACHINE = "raspberrypi4-64"Change the DISTRO in conf/local.conf :
DISTRO = "poky"Now you can build the image :
bitbake core-image-baseNow you can exit the container when the build is finished.
exitAll the build is in the "builds" directory.
make updateMIT