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.git
If you want to use submodules, you can clone with submodules.
git clone --recurse-submodules --remote-submodules https://github.com/bensuperpc/docker-yocto.git
make build
Now you can start the container, it will mount the current directory in the container.
make bookworm.run
The 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-64
You 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 branch
With openembedded-core :
source layers/openembedded-core/oe-init-build-env base-raspberrypi4-64
Or with poky :
source layers/poky/oe-init-build-env base-raspberrypi4-64
Add meta layer :
bitbake-layers add-layer ../meta
Add meta-poky layer :
bitbake-layers add-layer ../meta-poky
Add meta-oe layer :
bitbake-layers add-layer ../openembedded-core/meta-oe
Add meta-raspberrypi layer :
bitbake-layers add-layer ../layers/meta-raspberrypi
Show layers if you want :
bitbake-layers show-layers
Change 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-base
Now you can exit the container when the build is finished.
exit
All the build is in the "builds" directory.
make update
MIT