...
Code Block |
---|
sudo apt install curl python tree gawk wget git diffstat unzip texinfo gcc g++ build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool |
...
This section describes steps to create a local build dir and how to use repo
to download all needed files. After that the build directory gets setup for one specific machine (imx6guf
, imx6ullguf
or imx8mguf
seco-mx6, seco-mx6ull, seco-mx8mm or seco-mx8mp) and distribution (gufseconorth-wayland
) and a standard image is built.
...
Code Block |
---|
yocto-seco-ne$ tree -L 2 -a
.
├── .conf
│ ├── bblayers_imx6.conf
│ ├── bblayers_imx8.conf
│ ├── bblayers_imx8_dual-espresso.conf
│ ├── .git -> ../.repo/projects/.conf.git
│ ├── git-describe.inc
│ ├── .gitignore
│ ├── .gitlab-ci
│ ├── .gitlab-ci.yml
│ ├── .gitmodules
│ ├── LICENSE.txt
│ └── setup-environment
├── .repo
│ ├── copy-link-files.json
│ ├── manifests
│ ├── manifests.git
│ ├── manifest.xml
│ ├── project.list
│ ├── project-objects
│ ├── projects
│ ├── repo
│ └── .repo_fetchtimes.json
├── setup-environment -> .conf/setup-environment
└── sources
├── meta-freescale
├── meta-freescale-distro
├── meta-guf-distro
├── meta-guf-machine
├── meta-openembedded
├── meta-python2
├── meta-qt5
├── meta-seconorth-nogplv3
└── poky
|
Build
To get the build environment ready run the environment needs to be set up.
...
For SECO i.MX8MP platform Trizeps VIII Plus:
Code Block |
---|
MACHINE=seco-mx8mmmx8mp DISTRO=seconorth-wayland source ./setup-environment build |
...
After the image was built the files are located under build/tmp/deploy/images/seco-[mx8mp|mx8mm|...]/
. The files needed are installation file fng_install.sh
and the root file system seconorth-image-seco-image6guf[mx6|mx8mm|mx8mp|...].tar.gz
. These files can be used in a Flash-N-Go System installation process.
...
Copy and add the key content to your GitLab Profile User Settings -> SSH keys)
Frequently Asked Question's (FAQ)
What is Yocto and what is it used for?
Yocto is an open-source project that provides a set of tools and meta-data to build custom Linux distributions for embedded systems. Yocto can be used to build a customized Linux distribution for a specific target hardware platform, with specific packages and configurations.
2. What is the difference between Yocto and traditional Linux distributions?
Yocto provides a set of tools and meta-data to build custom Linux distributions, whereas traditional Linux distributions are pre-packaged and ready-to-use operating systems. Yocto allows you to create a custom distribution tailored to your specific needs, while traditional Linux distributions may not include all the packages and configurations you require.
3. How long does it take to build a Yocto image?
The time it takes to build a Yocto image can vary greatly depending on several factors, such as the size of the image, the hardware specifications of the build machine, and the network connectivity. A typical Yocto build on a fast machine with a good internet connection and adequate disk space can take anywhere from 30 minutes to several hours, depending on the size and complexity of the image being built.
4. Can I customize the packages included in a Yocto image?
Yes, you can customize the packages included in a Yocto image by modifying the meta-data used by the Yocto build system. You can add or remove packages, modify configuration files, and make other changes to the image as needed.
5. Can I use Yocto to build an image for a specific hardware platform?
Yes, Yocto can be used to build an image for a specific hardware platform. You need to specify the target hardware in the Yocto build configuration and provide any necessary device-specific meta-data.
6. What are the prerequisites for building a Yocto image?
Please view the prerequisites in the following link at the top of the page.
7. How to find weather the build is failing because of Internet issues?
Yocto builds consist of more than 1,500 components spread around the internet. Invasive man-in-the-middle proxies can prevent the builds from working by interfering with the end-to-end security built into some of the tooling (such as curl
or git
). If you have such an enviroment, please work with your local IT support staff for solutions because these will be specific to the network infrastructure your IT has chosen. We also recommend you read Yocto documentation on working with proxies.
Errors that indicate issues caused by proxies include:
fatal: unable to connect to github.com: github.com[0: 140.82.121.3]: errno=Connection timed out
.do_fetch. Failed to fetch URL.
fatal: unable to connect to git.yoctoproject.org:git.yoctoproject.org[0: 44.225.90.102]: errno=Connection timed out
.
You can also test for this:
Code Block |
---|
curl -L https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz >go1.14.4.tar.gz |
If that fails with curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt
, a proxy is being used.
8. How to clean the Yocto build?
We can use the following command to clean up the build in case of oe_runmake failures.
Code Block |
---|
bitbake -c cleanall seconorth-image |
9. What are the common build errors which could occur in the yocto build?
Hardware resources
Fetching problems
Kernel compile errors
UBI size is too small error
10. How to easily update and upgrade to the latest version of the downloaded packages?
We have two commands by which we can update and upgrade to the latest version of the packages.
...