Building Embedded Linux system is a complex task, you need to choose a toolchain, configure and build bootloader, kernel, file system and applications. It becomes more complex to maintain the process over more many products.
To build a system, you can use some tools like buildroot, crosstool, busybox and more
Yocto project helps to solve the problem
downloading the sources:
# git clone http://git.yoctoproject.org/git/poky
Setup
# cd poky # source ./oe-init-build-env # bitbake core-image-minimal
Test your system
# runqemu qemux86
Configuring the kernel
# bitbake -c menuconfig virtual/kernel # bitbake virtual/kernel
Building Packages
To see a list of available tasks for recipe run:
# bitbake -c listtasks virtual/kernel
Adding a new packages to the images
Edit the poky/build/conf/local.conf and add the following:
IMAGE_INSTALL_append = " dropbear python"
To see the available packages run:
# bitbake -s
Creating a new recipe
Create a new directory in /meta/recipes-extended
Add files folder and put source file hello.c in that folder
Create a file hello_1.0.bb with the following content
DESCRIPTION = "Hello world program"
HOMEPAGE = "http://example.net/helloworld/"
PRIORITY = "optional"
SECTION = "examples"
LICENSE = "GPLv2"
SRC_URI = "file://hello.c"
LIC_FILES_CHKSUM = \
"file://hello.c;md5=a36bbae7c27df6a9531031eda450cbd7"
do_compile() {
${CC} ${CFLAGS} ${LDFLAGS} -o hello ${WORKDIR}/hello.c
}
do_install() {
install -d ${D}${bindir}
install -m 0755 hello ${D}${bindir}
}
To see the available images run:
# find ./meta*/recipes*/images -name "*.bb"
create a standalone toolchain
# bitbake meta-toolchain
after the build is finished find it in [build dir]/tmp/deploy/sdk
run the script: poky-glibc-x86_64-meta-toolchain-aarch64-toolchain-2.3.sh to install the toolchain