The Yocto Project provides an integrated environment to develop and debug custom embedded Linux systems, similar to commercial embedded Linux development environments.
In this talk, we will introduce the different parts and lexicon of the Yocto Project: poky, OpenEmbedded-core, bitbake, layers, recipes, machine, distro, etc. Different “How to” will be detailed: how to configure it, build an image from layers, create recipes and add a custom machine.
Throughout the talk, many good practices will be detailed. Thanks to that, the audience will have a good overview of Yocto Project and will know how to start using it in an effective way.
This talk is intended for developers or technical people who want to work/start with Yocto/Openembedded. Good practices are important when working with Yocto Project and will be detailed in this presentation.
No particular knowledge is required to attend this talk.
Mylène Josserand, Free Electrons
Building your own embedded system with Yoctommeisenzahl
This document provides an overview of building an embedded system using Yocto. It begins with introductions to embedded systems and the Yocto Project. Embedded systems have dedicated functions within larger systems and consist of hardware, firmware, bootloaders, kernels, and userlands. Yocto helps developers create custom Linux distributions for any hardware by using recipes, layers, and the BitBake build tool to resolve dependencies. The document outlines initial setup with QEMU emulation, exploring a basic Yocto build, and provides examples of leaving the comfort zone by modifying builds and recipes.
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedAdrian Huang
This slide deck describes the Linux booting flow for x86_64 processors.
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
This document provides an overview and agenda for a presentation on Yocto, an open source project for embedded Linux development. It discusses Yocto components, layers, recipes, classes, and the build system. It also outlines how Yocto can be used by both system developers and application developers.
Buildroot is a tool that generates embedded Linux systems by automating the configuration, compilation, and packaging of the system. It produces a root filesystem image ready to deploy on the target architecture. The build process compiles packages and a cross-compilation toolchain, then generates images containing the root filesystem, kernel, and other files needed by the target system. The output of Buildroot is organized into subdirectories containing the built images, toolchain, target and host files, and a staging area simulating the target filesystem.
U-boot provides a multistage boot process that initializes the CPU and board resources incrementally at each stage. It begins execution on the CPU in a limited environment and hands off to subsequent stages that gain access to more resources like memory and devices. U-boot supports booting an operating system image from storage like SSD or over the network and offers features like secure boot and hypervisor support.
Embedded Linux is the use of the Linux kernel and operating system components adapted for embedded systems with limited resources. Building an embedded Linux system involves compiling the cross-compiler toolchain, bootloader, Linux kernel, root filesystem, busybox commands, and startup scripts. This can be done from scratch or using automated build tools like Buildroot or Yocto Project, which simplify and standardize the process of building a custom embedded Linux image.
The document discusses process management in Linux, including scheduling, context switching, and real-time systems. It defines process scheduling as determining which ready process moves to the running state, with the goal of keeping the CPU busy and minimizing response times. Context switching is described as storing the state of a process when it stops running so the CPU can restore another process's state when it starts running. CPU scheduling decisions occur when a process changes state, such as from running to waiting. Real-time systems must meet strict deadlines, and the document discusses soft and hard real-time systems as well as differences between general purpose, real-time, and embedded operating systems.
Building your own embedded system with Yoctommeisenzahl
This document provides an overview of building an embedded system using Yocto. It begins with introductions to embedded systems and the Yocto Project. Embedded systems have dedicated functions within larger systems and consist of hardware, firmware, bootloaders, kernels, and userlands. Yocto helps developers create custom Linux distributions for any hardware by using recipes, layers, and the BitBake build tool to resolve dependencies. The document outlines initial setup with QEMU emulation, exploring a basic Yocto build, and provides examples of leaving the comfort zone by modifying builds and recipes.
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedAdrian Huang
This slide deck describes the Linux booting flow for x86_64 processors.
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
This document provides an overview and agenda for a presentation on Yocto, an open source project for embedded Linux development. It discusses Yocto components, layers, recipes, classes, and the build system. It also outlines how Yocto can be used by both system developers and application developers.
Buildroot is a tool that generates embedded Linux systems by automating the configuration, compilation, and packaging of the system. It produces a root filesystem image ready to deploy on the target architecture. The build process compiles packages and a cross-compilation toolchain, then generates images containing the root filesystem, kernel, and other files needed by the target system. The output of Buildroot is organized into subdirectories containing the built images, toolchain, target and host files, and a staging area simulating the target filesystem.
U-boot provides a multistage boot process that initializes the CPU and board resources incrementally at each stage. It begins execution on the CPU in a limited environment and hands off to subsequent stages that gain access to more resources like memory and devices. U-boot supports booting an operating system image from storage like SSD or over the network and offers features like secure boot and hypervisor support.
Embedded Linux is the use of the Linux kernel and operating system components adapted for embedded systems with limited resources. Building an embedded Linux system involves compiling the cross-compiler toolchain, bootloader, Linux kernel, root filesystem, busybox commands, and startup scripts. This can be done from scratch or using automated build tools like Buildroot or Yocto Project, which simplify and standardize the process of building a custom embedded Linux image.
The document discusses process management in Linux, including scheduling, context switching, and real-time systems. It defines process scheduling as determining which ready process moves to the running state, with the goal of keeping the CPU busy and minimizing response times. Context switching is described as storing the state of a process when it stops running so the CPU can restore another process's state when it starts running. CPU scheduling decisions occur when a process changes state, such as from running to waiting. Real-time systems must meet strict deadlines, and the document discusses soft and hard real-time systems as well as differences between general purpose, real-time, and embedded operating systems.
The document provides an introduction to Linux and device drivers. It discusses Linux directory structure, kernel components, kernel modules, character drivers, and registering drivers. Key topics include dynamically loading modules, major and minor numbers, private data, and communicating with hardware via I/O ports and memory mapping.
Yocto Project Open Source Build System and Collaboration InitiativeMarcelo Sanz
The Yocto Project creates a custom embedded Linux distribution for a device by building recipes that define how to obtain, patch, compile and package software, rather than using an existing Linux distribution. It provides a common build environment and tools to configure, build and test embedded systems across different processor architectures.
Arm device tree and linux device driversHoucheng Lin
This document discusses how the Linux kernel supports different ARM boards using a common source code base. It describes how device tree is used to describe hardware in a board-agnostic way. The kernel initializes machine-specific code via the device tree and initializes drivers by matching compatible strings. This allows a single kernel binary to support multiple boards by abstracting low-level hardware details into the device tree rather than the kernel source. The document also contrasts the ARM approach to the x86 approach, where BIOS abstraction and standardized buses allow one kernel to support most x86 hardware.
The document discusses kernel, modules, and drivers in Linux. It provides an introduction to the Linux kernel, explaining what it is and its main functions. It then covers compiling the Linux kernel from source, including downloading the source code, configuring options, and compiling and installing the new kernel. It also discusses working with the GRUB 2 boot loader, including making temporary and persistent changes to the boot menu.
Linux has become integral part of Embedded systems. This three part presentation gives deeper perspective of Linux from system programming perspective. Stating with basics of Linux it goes on till advanced aspects like thread and IPC programming.
Build your own embedded linux distributions by yocto projectYen-Chin Lee
The document discusses the Yocto Project, an open-source collaboration project that provides templates, tools, and methods for creating custom Linux-based systems for embedded products. It provides an overview of the key components of Yocto including Poky, BitBake, and metadata. It also summarizes how to get started with Yocto including downloading Poky, setting up the build environment, and building a minimal image that can be run in QEMU for testing purposes.
The document provides an overview of the UNIX operating system. It discusses the history and development of UNIX from the 1960s onward. It describes the key features of UNIX including its layered architecture, kernel, shell, process management, file system, and security features. It also covers basic UNIX commands for working with files and directories, permissions, and getting help. The objective is to introduce readers to fundamental concepts of the UNIX OS.
This document provides an overview of the steps to port the U-boot bootloader to a new SoC using the NDS32 architecture as an example. It describes the directory structure of U-boot and key files related to the architecture, board, configuration, and device drivers. The document outlines where to define SoC hardware addresses, initialize board-specific peripherals, configure options, and implement device drivers to support the new SoC and board.
Page cache mechanism in Linux kernel.
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Have a quick overview of most of the embedded linux components and their details. How ti build Embedded Linux Hardware & Software, and developing Embedded Products
Linux Kernel Booting Process (1) - For NLKBshimosawa
Describes the bootstrapping part in Linux and some related technologies.
This is the part one of the slides, and the succeeding slides will contain the errata for this slide.
Yocto Project looked over by Linux Foundation is an open source project. Yocto can be summarized in a single - "It is not an embedded Linux distribution, It creates a custom one for you"
My presentation provides an overview of Yocto Project, an easy starters guide.
U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues start with overview, features, efforts created by community and future plans.
The U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues and share development efforts created by the U-Boot community.
In this talk Jagan Teki(Maintainer for Allwinner SoC, SPI, SPI FLASH Subsystems) will introduce U-Boot from scratch with a brief overview of U-Boot history, U-Boot Proper, SPL, TPL, Build process and Startup sequence. He will talk about other preliminaries such as Image booting, Falcon Mode, Secure Boot and U-Boot features like device tree, device overlays, driver model and DFU, etc.
Once giving enough introduction, he will also talk about steps to port U-Boot to new hardware with a demo, along with U-Boot testing process. Finally, he will address and review ongoing development work, issues and future development regarding U-Boot.
The second part of Linux Internals covers system calls, process subsystem and inter process communication mechanisms. Understanding these services provided by Linux are essential for embedded systems engineer.
In this talk, Jason will introduce tmux, the terminal multiplexer. He’ll cover why you’d want to use it, and then teach you how to actually use it with practical examples. He’ll teach you his favorite key bindings, and then go into some incredibly handy plugins that you can use that will make your tmux experience so much better. Once you are done learning tmux, you’ll never understand how you got along without it.
The Yocto Project is an open source project that provides tools and methods for creating custom Linux-based systems for embedded products regardless of CPU architecture. It uses a "layer" approach where components like the build system, core packages, and machine-specific files can be mixed and matched. The speaker demonstrates how to download a Yocto Project release, configure a build, and run the build process to generate root filesystem images and packages for target deployment. Potential applications mentioned include virtualization platforms and specialized subsystems in vehicles.
Stefano Cordibella - An introduction to Yocto Projectlinuxlab_conf
If you heard something about Yocto, bitbake, openembedded, layers, recipes and you want to know more about that, this talk is for you. In this presentation you will be introduced to the Yocto Project build system starting from the basic concepts of metadata up to the use of the build system “tasks” in order to create your own embedded linux distribution. I will start speaking about the pros and cons of the Yocto Project compared to the other embedded linux build systems. Then we go deep into the framework components: poky, openembedded core and bitbake. The practical use of the recipes, packagegroups, images and machines files will be explained by examples. Finally an example on how to integrate an extra layer will be showed demonstrating the ease of use and the modularity of the build system.
The document provides an introduction to the Yocto Project, including what it is, its main components, and workflow. It describes the Yocto Project as being comprised of Poky (the build system), tools, and upstreams. Poky contains BitBake (the build engine) and metadata (task configurations and definitions). It outlines the main components, including sub-projects, and compares the Yocto Project to OpenEmbedded. Finally, it summarizes the Yocto Project workflow, which involves configuring the build using recipes and layers then building packages, images, and cross-development toolchains.
The document discusses the architecture of the Linux kernel. It describes the user space and kernel space components. In user space are the user applications, glibc library, and each process's virtual address space. In kernel space are the system call interface, architecture-independent kernel code, and architecture-dependent code. It then covers several kernel subsystems like process management, memory management, virtual file system, network stack, and device drivers.
Linux Kernel and Driver Development TrainingStephan Cadene
This document provides information about a Linux Kernel and Driver Development training from Free Electrons. It begins with an overview of the course and hardware that will be used. It then discusses Free Electrons as a company and their online resources. The document also provides generic course information and guidelines for participation and the practical labs.
The document provides an overview of Android system development training conducted by Free Electrons. It includes details about the training agenda, hardware used (BeagleBone Black), and guidelines for participants. The training covers topics such as building and customizing Android, the Android kernel and boot process, and application development. Labs accompany each section to provide hands-on experience.
Embedded linux system development (slides)Jaime Barragan
This document provides an introduction to embedded Linux system development. It discusses Free Electrons, an engineering company focused on embedded Linux, the Linux kernel, and Android. It outlines the hardware that will be used in the training session, including Atmel SAMA5D3 Xplained boards. It provides guidelines for participating in lectures and practical labs.
The document provides an introduction to Linux and device drivers. It discusses Linux directory structure, kernel components, kernel modules, character drivers, and registering drivers. Key topics include dynamically loading modules, major and minor numbers, private data, and communicating with hardware via I/O ports and memory mapping.
Yocto Project Open Source Build System and Collaboration InitiativeMarcelo Sanz
The Yocto Project creates a custom embedded Linux distribution for a device by building recipes that define how to obtain, patch, compile and package software, rather than using an existing Linux distribution. It provides a common build environment and tools to configure, build and test embedded systems across different processor architectures.
Arm device tree and linux device driversHoucheng Lin
This document discusses how the Linux kernel supports different ARM boards using a common source code base. It describes how device tree is used to describe hardware in a board-agnostic way. The kernel initializes machine-specific code via the device tree and initializes drivers by matching compatible strings. This allows a single kernel binary to support multiple boards by abstracting low-level hardware details into the device tree rather than the kernel source. The document also contrasts the ARM approach to the x86 approach, where BIOS abstraction and standardized buses allow one kernel to support most x86 hardware.
The document discusses kernel, modules, and drivers in Linux. It provides an introduction to the Linux kernel, explaining what it is and its main functions. It then covers compiling the Linux kernel from source, including downloading the source code, configuring options, and compiling and installing the new kernel. It also discusses working with the GRUB 2 boot loader, including making temporary and persistent changes to the boot menu.
Linux has become integral part of Embedded systems. This three part presentation gives deeper perspective of Linux from system programming perspective. Stating with basics of Linux it goes on till advanced aspects like thread and IPC programming.
Build your own embedded linux distributions by yocto projectYen-Chin Lee
The document discusses the Yocto Project, an open-source collaboration project that provides templates, tools, and methods for creating custom Linux-based systems for embedded products. It provides an overview of the key components of Yocto including Poky, BitBake, and metadata. It also summarizes how to get started with Yocto including downloading Poky, setting up the build environment, and building a minimal image that can be run in QEMU for testing purposes.
The document provides an overview of the UNIX operating system. It discusses the history and development of UNIX from the 1960s onward. It describes the key features of UNIX including its layered architecture, kernel, shell, process management, file system, and security features. It also covers basic UNIX commands for working with files and directories, permissions, and getting help. The objective is to introduce readers to fundamental concepts of the UNIX OS.
This document provides an overview of the steps to port the U-boot bootloader to a new SoC using the NDS32 architecture as an example. It describes the directory structure of U-boot and key files related to the architecture, board, configuration, and device drivers. The document outlines where to define SoC hardware addresses, initialize board-specific peripherals, configure options, and implement device drivers to support the new SoC and board.
Page cache mechanism in Linux kernel.
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Have a quick overview of most of the embedded linux components and their details. How ti build Embedded Linux Hardware & Software, and developing Embedded Products
Linux Kernel Booting Process (1) - For NLKBshimosawa
Describes the bootstrapping part in Linux and some related technologies.
This is the part one of the slides, and the succeeding slides will contain the errata for this slide.
Yocto Project looked over by Linux Foundation is an open source project. Yocto can be summarized in a single - "It is not an embedded Linux distribution, It creates a custom one for you"
My presentation provides an overview of Yocto Project, an easy starters guide.
U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues start with overview, features, efforts created by community and future plans.
The U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues and share development efforts created by the U-Boot community.
In this talk Jagan Teki(Maintainer for Allwinner SoC, SPI, SPI FLASH Subsystems) will introduce U-Boot from scratch with a brief overview of U-Boot history, U-Boot Proper, SPL, TPL, Build process and Startup sequence. He will talk about other preliminaries such as Image booting, Falcon Mode, Secure Boot and U-Boot features like device tree, device overlays, driver model and DFU, etc.
Once giving enough introduction, he will also talk about steps to port U-Boot to new hardware with a demo, along with U-Boot testing process. Finally, he will address and review ongoing development work, issues and future development regarding U-Boot.
The second part of Linux Internals covers system calls, process subsystem and inter process communication mechanisms. Understanding these services provided by Linux are essential for embedded systems engineer.
In this talk, Jason will introduce tmux, the terminal multiplexer. He’ll cover why you’d want to use it, and then teach you how to actually use it with practical examples. He’ll teach you his favorite key bindings, and then go into some incredibly handy plugins that you can use that will make your tmux experience so much better. Once you are done learning tmux, you’ll never understand how you got along without it.
The Yocto Project is an open source project that provides tools and methods for creating custom Linux-based systems for embedded products regardless of CPU architecture. It uses a "layer" approach where components like the build system, core packages, and machine-specific files can be mixed and matched. The speaker demonstrates how to download a Yocto Project release, configure a build, and run the build process to generate root filesystem images and packages for target deployment. Potential applications mentioned include virtualization platforms and specialized subsystems in vehicles.
Stefano Cordibella - An introduction to Yocto Projectlinuxlab_conf
If you heard something about Yocto, bitbake, openembedded, layers, recipes and you want to know more about that, this talk is for you. In this presentation you will be introduced to the Yocto Project build system starting from the basic concepts of metadata up to the use of the build system “tasks” in order to create your own embedded linux distribution. I will start speaking about the pros and cons of the Yocto Project compared to the other embedded linux build systems. Then we go deep into the framework components: poky, openembedded core and bitbake. The practical use of the recipes, packagegroups, images and machines files will be explained by examples. Finally an example on how to integrate an extra layer will be showed demonstrating the ease of use and the modularity of the build system.
The document provides an introduction to the Yocto Project, including what it is, its main components, and workflow. It describes the Yocto Project as being comprised of Poky (the build system), tools, and upstreams. Poky contains BitBake (the build engine) and metadata (task configurations and definitions). It outlines the main components, including sub-projects, and compares the Yocto Project to OpenEmbedded. Finally, it summarizes the Yocto Project workflow, which involves configuring the build using recipes and layers then building packages, images, and cross-development toolchains.
The document discusses the architecture of the Linux kernel. It describes the user space and kernel space components. In user space are the user applications, glibc library, and each process's virtual address space. In kernel space are the system call interface, architecture-independent kernel code, and architecture-dependent code. It then covers several kernel subsystems like process management, memory management, virtual file system, network stack, and device drivers.
Linux Kernel and Driver Development TrainingStephan Cadene
This document provides information about a Linux Kernel and Driver Development training from Free Electrons. It begins with an overview of the course and hardware that will be used. It then discusses Free Electrons as a company and their online resources. The document also provides generic course information and guidelines for participation and the practical labs.
The document provides an overview of Android system development training conducted by Free Electrons. It includes details about the training agenda, hardware used (BeagleBone Black), and guidelines for participants. The training covers topics such as building and customizing Android, the Android kernel and boot process, and application development. Labs accompany each section to provide hands-on experience.
Embedded linux system development (slides)Jaime Barragan
This document provides an introduction to embedded Linux system development. It discusses Free Electrons, an engineering company focused on embedded Linux, the Linux kernel, and Android. It outlines the hardware that will be used in the training session, including Atmel SAMA5D3 Xplained boards. It provides guidelines for participating in lectures and practical labs.
Here are the steps to prepare your lab environment:
1. Download the lab materials archive from the provided link.
2. Extract the downloaded archive file and browse the contents to familiarize yourself with the lab directories and files.
3. Change to the lab directory and enforce read/write permissions on the files as needed by using the chmod command.
This will setup your local environment for the upcoming hands-on labs. Let me know if you have any other questions!
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner exampleAnne Nicolas
Since last year, we have been working on supporting the SoCs from Allwinner, a chinese SoC vendor, in the mainline kernel. These SoCs are cheap, wide-spread, backed by a strong community and, until last year, only supported by an out-of-tree kernel.
Through this talk, we would like to share the status of this effort: where we were a year ago, what solutions were in place, where we are currently, and what to expect from the future. We will also focus on the community around these SoCs, the work that is done there, etc.
This talk will be useful to developers working on ARM hardware interested in platform code and anyone interested by cool and cheap hardware to hack on.
Maxime Ripard, Free Electrons
Kernel Recipes 2013 - Easy rootfs using BuildrootAnne Nicolas
The Linux kernel is an exciting world. But if you want to get a working system, it is still essential to provide our kernel a root filesystem. The kernel developers often struggle to find a simple rootfs, adapted to their architecture, together with the tools that fits properly.
We will present how Buildroot, a tool for building embedded Linux systems, can meet the needs of kernel developers in the build of minimal rootfs for their developments.
Embedded Linux Build Systems - Texas Linux Fest 2018Mender.io
This document summarizes and compares several popular build systems and distributions for embedded Linux development: Yocto Project, Buildroot, OpenWRT, and desktop distributions. It provides overviews of each along with pros and cons. The key takeaways are that Yocto Project is best for commercial use with multiple configurations due to its modularity and hardware vendor support, while Buildroot and desktop distributions are better for beginners and hobbyists or single configuration use cases due to their faster build times and easier setup. OpenWRT is suited for replacement router/networking device firmware where package-based updates are needed.
I did an overview of Embedded Linux topics (arch, SoCs, SBCs, kernel dev community, real-time, device tree, building root filesystem, etc) in 2014 for the Embedded Systems meetup at my hackerspace: http://www.meetup.com/NERP-Not-Exclusively-Raspberry-Pi/events/183068212/
Come to this session to get an update about everything related to OpenNTF, the open source community for IBM Collaboration Solutions.
See the contest winning XPages projects live and learn about the new open source projects for IBM Connections.
The session will also cover the IBM Social Business Toolkit SDK which allows XPages, Java and JavaScript developers to easily access IBM Connections and IBM SmartCloud for Social Business from custom applications. Attend this session to see demos of the latest functionality and new samples of the toolkit.
The document summarizes Ulrich Krause's presentation on the latest developments from OpenNTF. The presentation covered:
- An overview of OpenNTF, its 800+ open source projects and 200k annual downloads.
- Current OpenNTF initiatives like CollaborationToday, XPages.info, contests and webinars.
- Specific projects like Bootstrap4XPages, org.openntf.domino, Tika for XPages, and Unplugged XPages mobile controls.
- The OpenNTF intellectual property policy and ways for developers to get involved.
The document discusses free and open source software (FOSS) and the FOSS movement. It provides an introduction to FOSS, describing some of the core concepts like free software definitions, important people like Richard Stallman and Linus Torvalds, popular licenses like GPL and Creative Commons, FOSS economics, Linux distributions, and common FOSS applications.
BITS: Introduction to linux, distributions and installationBITS
This slide is part of the BITS training session: "Introduction to linux for life sciences."
See http://www.bits.vib.be/index.php?option=com_content&view=article&id=17203890%3Abioperl-additional-material&catid=84&Itemid=284
[Webinar] An Introduction to the Yocto Embedded FrameworkICS
Yocto is an open source project that provides tools and templates for creating custom embedded Linux systems. It uses a build system called BitBake and metadata to automate the build process. This reduces development time and improves quality, stability, and repeatability. Yocto supports targets like ARM, PowerPC, MIPS and x86 and runs on common Linux desktop platforms. It allows building images, SDKs, and other artifacts for deployment on embedded hardware.
Slides for the 60 minutes workshop I presented at the virtual edition of ClueCon 2020 (ClueCon Deconstructed). The many slides cover different aspects in Janus, ranging from configuration, to plugins, how to write your own plugin, core features, recording, monitoring, and so on. Unfortunately I didn't have enough time to talk about everything, but slides should be easy to follow anyway.
The document discusses an overview of using the Beaglebone Black and Debian for prototyping IoT applications. It covers setting up a basic weather station demo using the Beaglebone Black, Python, MQTT and a public broker. Potential next steps discussed include using a private broker, adding device and system management, and automating offline image generation. Production considerations mentioned are developer workflows, first-boot actions, and injecting device-specific data during manufacturing.
This document provides an overview of the DevNet Associate course. The course covers software development, networking fundamentals, and automation. It is comprised of modules on APIs, software development, network fundamentals, infrastructure and automation, and Cisco platforms. The introduction module ensures students have the necessary Python and Linux skills through virtual lab setup and introductory labs.
This document discusses Vimeo's architecture and tools for video transcoding. It summarizes:
1. Vimeo uses a distributed transcoding pipeline that leverages tools like Gearman for job scheduling and FFmpeg for encoding. Video files are split into chunks that are encoded in parallel across multiple servers.
2. Popular open source multimedia tools used include FFmpeg, x264, L-SMASH and ffms2. Vimeo contributes back to these projects and others to support long-term maintainability.
3. Emerging technologies discussed include VP9, DASH, HEVC and Opus, along with notes on bandwidth limitations and the state of multimedia development in Europe versus North America
The document discusses how the Free and Open Source community collaborates and makes suggestions for how ISO could improve its standards development process. Specifically, it recommends that ISO create an open data portal, remove logins to access standards, adopt a more open and distributed model of citizen-led standards making, and use Creative Commons licensing. It also provides suggestions for collaboration tools and questions whether ISO's current systems could operate in a more open, distributed manner.
Similar to Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène Josserand (20)
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
This document discusses the benefits of contributing device drivers and other code to the Linux kernel upstream first instead of maintaining private branches. It outlines Chrome OS's strategy of picking long-term stable kernels and contributing hardware support to upstream. While challenging, working upstream provides many benefits like free code reviews, bugfixes, and easier updates. The document shows that Chrome OS contributions have helped increase upstream support for vendors' devices and that there is still work remaining to upstream GPU and other drivers. It demos mainlining the Samsung Chromebook Plus by using the open source Panfrost GPU driver instead of a vendor driver.
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
As the name would suggest, a Non-Maskable Interrupt (NMI) is an interrupt-like feature that is unaffected by the disabling of classic interrupts. In Linux, NMIs are involved in some features such as performance event monitoring, hard-lockup detector, on demand state dumping, etc… Their potential to fire when least expected can fill the most seasoned kernel hackers with dread.
AArch64 (aka arm64 in the Linux tree) does not provide architected NMIs, a consequence being that features benefiting from NMIs see their use limited on AArch64. However, the Arm Generic Interrupt Controller (GIC) supports interrupt prioritization and masking, which, among other things, provides a way to control whether or not a set of interrupts can be signaled to a CPU.
This talk will cover how, using the GIC interrupt priorities, we provide a way to configure some interrupts to behave in an NMI-like manner on AArch64. We’ll discuss the implementation, some of the complications that ensued and also some of the benefits obtained from it.
Julien Thierry
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelAnne Nicolas
At a rate of almost 9 changes per hour (24/7), the Linux kernel is definitely a scary beast. Bugs are introduced on a daily basis and, through the use of multiple code analyzers, *some* of them are detected and fixed before they hit mainline. Over the course of the last few years, Gustavo has been fixing such bugs and many different issues in every corner of the Linux kernel. Recently, he was in charge of leading the efforts to globally enable -Wimplicit-fallthrough; which appears by default in Linux v5.3. This presentation is a report on all the stuff Gustavo has found and fixed in the kernel with the support of the Core Infrastructure Initiative.
Gustavo A.R. Silva
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
In I.T. we all use all kinds of metrics. Operations teams rely heavily on these, especially when things go south. These metrics are sometimes overrated. Let’s dive into a few real life stories together.
Aurélien Rougemont
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
This document discusses the current state and future plans for Linux kernel documentation. It notes that documentation has transitioned from DocBook to Sphinx/RST, improving formatting and integration. There are now over 3,000 documentation files and many kerneldoc comments. Future plans include converting remaining text files, updating ancient documents, improving organization by topic, integrating documentation better, and enhancing the documentation toolchain. The goal is to improve documentation to better help kernel developers, users and the community.
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Anne Nicolas
Modern SoC designs incorporate technologies from numerous vendors, each with their own inconsistent, confusing, undocumented and even contradictory terminology. The result is a mess of acronyms and product names which have a surprising impact on the ability to develop reusable, modular code thanks to the nature of the underlying IP being obscured.
This presentation will dive into some of the misnomers plaguing the Arm ecosystem, with the aim of explaining why things are like they are, how they fit together under the architectural umbrella and how you, as a developer, can decipher the baffling ingredients list of your next SoC design!
Will Deacon
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataAnne Nicolas
GNU poke is a new interactive editor for binary data. Not limited to editing basic ntities such as bits and bytes, it provides a full-fledged procedural, interactive programming language designed to describe data structures and to operate on them. Once a user has defined a structure for binary data (usually matching some file format) she can search, inspect, create, shuffle and modify abstract entities such as ELF relocations, MP3 tags, DWARF expressions, partition table entries, and so on, with primitives resembling simple editing of bits and bytes. The program comes with a library of already written descriptions (or “pickles” in poke parlance) for many binary formats.
GNU poke is useful in many domains. It is very well suited to aid in the development of programs that operate on binary files, such as assemblers and linkers. This was in fact the primary inspiration that brought me to write it: easily injecting flaws into ELF files in order to reproduce toolchain bugs. Also, due to its flexibility, poke is also very useful for reverse engineering, where the real structure of the data being edited is discovered by experiment, interactively. It is also good for the fast development of prototypes for programs like linkers, compressors or filters, and it provides a convenient foundation to write other utilities such as diff and patch tools for binary files.
This talk (unlike Gaul) is divided into four parts. First I will introduce the program and show what it does: from simple bits/bytes editing to user-defined structures. Then I will show some of the internals, and how poke is implemented. The third block will cover the way of using Poke to describe user data, which is to say the art of writing “pickles”. The presentation ends with a status of the project, a call for hackers, and a hint at future works.
Jose E. Marchesi
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Anne Nicolas
Operating system distributors often face challenges that are somewhat different from that of upstream kernel developers. For instance, some kernel updates often need to stay at least binary compatible with modules that might be “out of tree” for some time.
In that context, being able to automatically detect and analyze changes to the binary interface exposed by the kernel to its module does have some noticeable value.
The Libabigail framework is capable of analyzing ELF binaries along with their accompanying debug info in the DWARF format, detect and report changes in types, functions, variables and ELF symbols. It has historically supported that for user space shared libraries and application so we worked to make it understand the Linux kernel
binaries.
In this presentation, we are going to present the current support of ABI analysis for Linux Kernel binaries, the challenges we face, how we address them and the plans we have for the future.
Dodji Seketeli, Jessica Yu, Matthias Männich
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxAnne Nicolas
Different upgrade and update strategies exist when it comes to embedded Linux system. If at development time none of these strategies have been chosen, adding them afterwards can be tedious task.
Even harder it gets when the system is already deployed in the field and only accessible via a 3G connection.
This talk is a developer experience of putting in place exactly that. Giving a return of experience on one way of doing it on a system running Barebox and a Yocto-based distribution.
Patrick Boettcher
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
Open-source graphics drivers are helping to make embedded systems less specialized by standardizing interfaces like KMS, DRI, and Mesa. Mesa provides implementations of graphics APIs like OpenGL and Vulkan via drivers for different GPUs. Combined with Wayland, this allows applications to run on embedded systems like a modern Linux desktop without platform-specific code. Current open-source drivers like Freedreno, Etnaviv, and Panfrost support GPUs from vendors like Qualcomm and ARM and are under active development by their respective communities.
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconAnne Nicolas
This talk will explore Open Source Hardware projects relevant to Linux, including boards like BeagleBone, Olimex OLinuXino, Giant board and more. Looking at the benefits and challenges of designing Open Source Hardware for a Linux system, along with BeagleBoard.org’s experience of working with community, manufacturers, and distributors to create an Open Source Hardware platform. In closing also looking at the future, Libre Silicon like RISC-V designs, and where this might take Linux.
Drew Fustini
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureAnne Nicolas
The I2C subsystem is not the shiniest part of the Linux Kernel. For embedded devices, though, it is one of the many puzzle pieces which just have to work. Wolfram Sang has the experience of maintaining this subsystem for nearly 7 years now. This talk gives a short overview of how maintaining works in general and specifically in this subsystem. But mainly, it will highlight noteworthy points in the timeline and lessons learnt from that. It will present trends, not so much regarding I2C but more the Linux Kernel and the embedded ecosystem in general. And of course, there will be plenty of anecdotes and bits from behind the scenes for your entertainment.
Wolfram Sang
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
ITRenew is selling recertified OCP servers under the Sesame brand, those servers come either with their original UEFI BIOS or with LinuxBoot. The LinuxBoot project is pushing the Linux kernel inside bios flash and using userland programs as bootloader.
To achieve quality on our software stack, as any project, we need to test it. Traditional BIOS are tested by hand, this is 2019 we need to do it automatically! We already presented the hardware setup behind the LinuxBoot CI, this talk will focus on the software.
We use u-root for our userland bootloader; this software is written in Go so we naturally choose to use Go for our testing too. We will present how we are using and extending the Go native test framework `go test` for testing embedded systems (serial console) and improving the report format for integration to a CI.
Julien Viard de Galbert
Embedded Recipes 2019 - Herd your socs become a matchmakerAnne Nicolas
This document discusses device tree matching for embedded systems. It covers:
- The history of device matching in Linux, from architecture-specific to discoverable buses to the modern device framework.
- How device trees improved the situation by providing a standardized hardware description and stable ABI, separating this from OS configuration.
- Best practices for designing compatible value schemes and supporting a variety of similar devices across SoC families in device trees and drivers.
- Different techniques for matching devices and drivers like compatible values, soc_device_match(), and quirk handling classes.
- Examples of implementing matching for Renesas SoCs and addressing differences across revisions.
Embedded Recipes 2019 - LLVM / Clang integrationAnne Nicolas
This document discusses the integration of LLVM and Clang into Buildroot. It provides an overview of LLVM and Clang, the objectives of integrating them into Buildroot, and the initial integration work done. It then covers cross-compiling Linux with Clang and some conclusions. Some key points include:
- LLVM is an open source compiler infrastructure that includes the Clang C/C++ compiler. It uses an intermediate representation and focuses on compile time and code generation performance.
- The initial integration into Buildroot included LLVM, Clang, and Mesa 3D driver support. It aimed to enable OpenCL and add new packages.
- Cross-compiling Linux and userspace applications with Clang
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
This talk introduces JTAG debugging capabilities, both for debugging hardware and software. Marek first explains what the JTAG stands for and explains the operation of the JTAG state machine. This is followed by an introduction to free software JTAG tools, OpenOCD and urJTAG. Marek shortly explains how to debug software using those tools and how that ties into the JTAG state machine. However, JTAG was designed for testing hardware. Marek explains what boundary scan testing (BST) is, what are BSDL files and their format, and practically demonstrates how to blink an LED using BST and only free software tools.
Marek Vasut
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
PipeWire is an open source project that aims to greatly improve audio and video handling under Linux. Utilising a fresh design, it bridges use cases that have been previously addressed by different tools – or not addressed at all -, providing ground for building complex, yet secure and efficient, multimedia systems.
In this talk, Julien is going to present the PipeWire project and the concepts that make up its design. In addition, he is going to give an update of the current and future work going on around PipeWire, both upstream and in Automotive Grade Linux, an early adopter that Julien is actively working on.
Julian Bouzas
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedAnne Nicolas
The document describes the ftrace function tracing tool in Linux kernels. It allows attaching to functions in the kernel to trace function calls. It works by having the GCC compiler insert indirect function entry calls. These calls are recorded during linking and replaced with nops at boot time for efficiency. This allows function tracing with low overhead by tracing the indirect function entry calls.
Kernel Recipes 2019 - Suricata and XDPAnne Nicolas
Suricata is a network threat detection engine using network packets capture to reconstruct the traffic till the application layer and find threats on the network using rules that define behavior to detect. This task is really CPU intensive and discarding non interesting traffic is a solution to enable a scaling of Suricata to 40gbps and other.
This talk will present the latest evolution of Suricata that knows uses eBPF and XDP to bypass traffic. Suricata 5.0 is supporting the hardware XDP to provide ypass with network card such as Netronome. It also takes advantage of pinned maps to get persistance of the bypassed flows. This talk will cover the different usage of XDP and eBPF in Suricata and shows how it impact performance and usability. If development time permit, the talk will also cover AF_XDP and the impact on this new capture method on Suricata.
Eric Leblond
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Anne Nicolas
System memory configuration is a transparent operation nowadays, something that we all came to expect to just work out of the box. Still, it does happen behind the scenes every single time we boot our computers. This requires the cooperation of hardware components on the mainboard and on memory modules themselves, as well as firmware code to drive these. While it is possible to just let it happen, having a deeper understanding of how it works makes it possible to access valuable information from the operating system at run-time.
I will take you through the history of system memory configuration from the mid 70s to now. We will explore the different types of memory modules, how their configuration data is stored and how the firmware can access them. We will see which problems had to be solved along the way and how they were solved. Lastly we will see how Linux supports reading the memory configuration information and what you can do with that information.
Jean Delvare
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
A Comprehensive Guide to DeFi Development Services in 2024Intelisync
DeFi represents a paradigm shift in the financial industry. Instead of relying on traditional, centralized institutions like banks, DeFi leverages blockchain technology to create a decentralized network of financial services. This means that financial transactions can occur directly between parties, without intermediaries, using smart contracts on platforms like Ethereum.
In 2024, we are witnessing an explosion of new DeFi projects and protocols, each pushing the boundaries of what’s possible in finance.
In summary, DeFi in 2024 is not just a trend; it’s a revolution that democratizes finance, enhances security and transparency, and fosters continuous innovation. As we proceed through this presentation, we'll explore the various components and services of DeFi in detail, shedding light on how they are transforming the financial landscape.
At Intelisync, we specialize in providing comprehensive DeFi development services tailored to meet the unique needs of our clients. From smart contract development to dApp creation and security audits, we ensure that your DeFi project is built with innovation, security, and scalability in mind. Trust Intelisync to guide you through the intricate landscape of decentralized finance and unlock the full potential of blockchain technology.
Ready to take your DeFi project to the next level? Partner with Intelisync for expert DeFi development services today!
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
This presentation provides valuable insights into effective cost-saving techniques on AWS. Learn how to optimize your AWS resources by rightsizing, increasing elasticity, picking the right storage class, and choosing the best pricing model. Additionally, discover essential governance mechanisms to ensure continuous cost efficiency. Whether you are new to AWS or an experienced user, this presentation provides clear and practical tips to help you reduce your cloud costs and get the most out of your budget.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
1. Embedded Recipes Conference - 2017
Introduction to the Yocto Project /
OpenEmbedded-core
Mylène Josserand
Free Electrons
mylene@free-electrons.com
Embedded Linux
Experts
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 1/35
2. Mylène Josserand
▶ Embedded Linux engineer at Free Electrons
since 2016
▶ Embedded Linux expertise
▶ Development, consulting and training around
the Yocto Project
▶ One of the authors of Free Electrons’ Yocto
Project / OpenEmbedded training
materials.
▶ Kernel contributor: audio driver, touchscreen,
RTC and more to come!
Embedded Linux
Experts
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 2/35
3. Introduction
▶ In this talk, we will:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
4. Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
5. Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
6. Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
7. Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
▶ How we can update it to fit our needs
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
8. Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
▶ How we can update it to fit our needs
▶ Give some good practices to start using the Yocto Project correctly
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
9. Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
▶ How we can update it to fit our needs
▶ Give some good practices to start using the Yocto Project correctly
▶ Allows to customize many things: it is easy to do things the wrong way
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
10. Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
▶ How we can update it to fit our needs
▶ Give some good practices to start using the Yocto Project correctly
▶ Allows to customize many things: it is easy to do things the wrong way
▶ When you see a ✓, it means it is a good practice!
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
11. Why use a build system?
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
12. Why use a build system?
▶ In the Embedded world, we have many constraints
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
13. Why use a build system?
▶ In the Embedded world, we have many constraints
▶ Nice to reduce the system to a minimal one + add our custom application
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
14. Why use a build system?
▶ In the Embedded world, we have many constraints
▶ Nice to reduce the system to a minimal one + add our custom application
▶ A build system will automate the creation of the system in a reproducible way
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
15. Why use a build system?
▶ In the Embedded world, we have many constraints
▶ Nice to reduce the system to a minimal one + add our custom application
▶ A build system will automate the creation of the system in a reproducible way
▶ Integration means packaging applications to create a final image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
16. System integration: several possibilities
▶ Building everything manually:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
17. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
18. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
19. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
20. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
21. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
22. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
23. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
24. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
25. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
26. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
27. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
28. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution⊕
Nearly full flexibility
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
29. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution⊕
Nearly full flexibility⊕
Built from source: customization and optimization are easy
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
30. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution⊕
Nearly full flexibility⊕
Built from source: customization and optimization are easy⊕
Fully reproducible
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
31. System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution⊕
Nearly full flexibility⊕
Built from source: customization and optimization are easy⊕
Fully reproducible⊕
Cross-compilation
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
32. Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
33. Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
34. Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
35. Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
36. Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
37. Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
38. Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
▶ Many recipes availables for many applications: organized in layers
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
39. Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
▶ Many recipes availables for many applications: organized in layers
▶ Allow to build custom embedded Linux-based systems
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
40. Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
▶ Many recipes availables for many applications: organized in layers
▶ Allow to build custom embedded Linux-based systems
⇒ This is the aim of the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
41. OpenEmbedded core & Poky
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
42. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
43. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
44. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
45. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
46. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
47. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
48. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
49. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
▶ OpenEmbedded-core
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
50. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
▶ OpenEmbedded-core
▶ Bitbake
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
51. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
▶ OpenEmbedded-core
▶ Bitbake
▶ Additional layers
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
52. OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
▶ OpenEmbedded-core
▶ Bitbake
▶ Additional layers
▶ Also contains some useful tools to ease
recipes and layers’ creation
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
53. The Yocto Project / OpenEmbedded Core / Poky
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 8/35
54. Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
55. Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
56. Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
57. Workflow - Users/Developers actions
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 10/35
58. Workflow - 1. Download
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
59. Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
60. Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support level: Development, Stable, Community
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
61. Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support level: Development, Stable, Community
▶ A codename corresponds to a Poky and Bitbake versions
Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
62. Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support level: Development, Stable, Community
▶ A codename corresponds to a Poky and Bitbake versions
Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34
▶ How to download:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
63. Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support level: Development, Stable, Community
▶ A codename corresponds to a Poky and Bitbake versions
Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34
▶ How to download:
git clone -b pyro git://git.yoctoproject.org/poky.git
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
64. Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
65. Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
▶ Look at existing layers
Figure: http://layers.openembedded.org/layerindex/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
66. Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
▶ Look at existing layers
Figure: http://layers.openembedded.org/layerindex/
▶ Download all other layers on same branch than Poky: Pyro
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
67. Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
▶ Look at existing layers
Figure: http://layers.openembedded.org/layerindex/
▶ Download all other layers on same branch than Poky: Pyro
✓ Use existing layers before creating a new one ⇒ saves you time
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
68. Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
▶ Look at existing layers
Figure: http://layers.openembedded.org/layerindex/
▶ Download all other layers on same branch than Poky: Pyro
✓ Use existing layers before creating a new one ⇒ saves you time
✓ DO NOT EDIT POKY/UPSTREAM LAYERS ⇒ complicates updates
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
69. Workflow - 2. Configure the build
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
70. Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
71. Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
72. Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
73. Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
74. Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
▶ All the local configurations are in the conf folder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
75. Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
▶ All the local configurations are in the conf folder
build/
|-- conf
|-- bblayers.conf
|-- local.conf
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
76. Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
▶ All the local configurations are in the conf folder
build/
|-- conf
|-- bblayers.conf
|-- local.conf
▶ Edit your bblayers.conf with possible additional layers:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
77. Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
▶ All the local configurations are in the conf folder
build/
|-- conf
|-- bblayers.conf
|-- local.conf
▶ Edit your bblayers.conf with possible additional layers:
BBLAYERS ?= "
/home/mylene/yocto/poky/meta
/home/mylene/yocto/poky/meta-poky
/home/mylene/yocto/poky/meta-yocto-bsp
/home/mylene/yocto/meta-freescale
/home/mylene/yocto/meta-qt5
"
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
78. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
79. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
80. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
81. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
82. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
83. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
84. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
85. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
▶ poky: poky, poky-tiny, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
86. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
▶ poky: poky, poky-tiny, ...
▶ meta-angstrom: angstrom
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
87. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
▶ poky: poky, poky-tiny, ...
▶ meta-angstrom: angstrom
▶ Noticed that local.conf ⇒ only for the local workstation.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
88. Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
▶ poky: poky, poky-tiny, ...
▶ meta-angstrom: angstrom
▶ Noticed that local.conf ⇒ only for the local workstation.
✓ Avoid changes directly in local.conf (or only for test purposes, except for some
variables such as MACHINE and DISTRO)
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
89. Workflow - 3. Build an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
90. Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, configuration
files, ... Will find it under recipes-*/images/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
91. Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, configuration
files, ... Will find it under recipes-*/images/
▶ Common images already exist in Poky: core-image-minimal, core-image-base,
core-image-x11, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
92. Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, configuration
files, ... Will find it under recipes-*/images/
▶ Common images already exist in Poky: core-image-minimal, core-image-base,
core-image-x11, ...
▶ Build an existing image:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
93. Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, configuration
files, ... Will find it under recipes-*/images/
▶ Common images already exist in Poky: core-image-minimal, core-image-base,
core-image-x11, ...
▶ Build an existing image:
bitbake core-image-minimal
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
94. MACHINE/DISTRO/IMAGE: a little reminder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
95. MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
96. MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
97. MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-level
configuration that will apply on every
build
conf/distro/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
98. MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-level
configuration that will apply on every
build
conf/distro/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
99. MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-level
configuration that will apply on every
build
conf/distro/
▶ Image: It represents your root
filesystem itself: all your applications,
libraries, configuration’s files, etc
recipes-core/images
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
100. MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-level
configuration that will apply on every
build
conf/distro/
▶ Image: It represents your root
filesystem itself: all your applications,
libraries, configuration’s files, etc
recipes-core/images
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
101. Workflow - Developer
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 17/35
102. Workflow - 4. Create a layer
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
103. Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
104. Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
105. Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
106. Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
107. Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
yocto-layer create <layer_name> -o <dest_dir>
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
108. Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
yocto-layer create <layer_name> -o <dest_dir>
✓ The layer’s name must be meta-* (done automatically using yocto-layer tool)
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
109. Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
yocto-layer create <layer_name> -o <dest_dir>
✓ The layer’s name must be meta-* (done automatically using yocto-layer tool)
✓ Avoid uppercase and funny/long names
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
110. Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
yocto-layer create <layer_name> -o <dest_dir>
✓ The layer’s name must be meta-* (done automatically using yocto-layer tool)
✓ Avoid uppercase and funny/long names
✓ If you have different projects with common parts, try to create two layers
⇒ Can re-use some parts
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
111. Workflow - 5. Create a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
112. Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
113. Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
114. Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
115. Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
116. Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
▶ install it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
117. Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
▶ install it
▶ It handles all the dependencies for you.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
118. Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
▶ install it
▶ It handles all the dependencies for you.
▶ Many common tasks are already defined by OpenEmbedded-core
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
119. Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
▶ install it
▶ It handles all the dependencies for you.
▶ Many common tasks are already defined by OpenEmbedded-core
▶ Organized in folders with the same purpose (recipes-core, recipes-bsp,
recipes-kernel, recipes-devtool, recipes-support, ...) and a sub-folder with the
application’s name
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
120. Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
121. Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
122. Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
123. Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
▶ The header: what/who. Description of the application
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
124. Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
▶ The header: what/who. Description of the application
▶ The sources: where. Can be tarballs, remote repository, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
125. Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
▶ The header: what/who. Description of the application
▶ The sources: where. Can be tarballs, remote repository, ...
▶ The tasks: how. How to proceed with the application’s sources
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
126. Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
▶ The header: what/who. Description of the application
▶ The sources: where. Can be tarballs, remote repository, ...
▶ The tasks: how. How to proceed with the application’s sources
▶ Classes are available for tasks commonly used: kernel, CMake, autotools, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
131. Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
132. Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
133. Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/...
⇒ Find recipes quicker
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
134. Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/...
⇒ Find recipes quicker
✓ Keep the headers / sources / tasks organization in the recipe
⇒ All the recipes have the same content organization
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
135. Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/...
⇒ Find recipes quicker
✓ Keep the headers / sources / tasks organization in the recipe
⇒ All the recipes have the same content organization
✓ Use/Create include files when possible
⇒ Can extend other versions easily
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
136. Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/...
⇒ Find recipes quicker
✓ Keep the headers / sources / tasks organization in the recipe
⇒ All the recipes have the same content organization
✓ Use/Create include files when possible
⇒ Can extend other versions easily
✓ Know how to compile the application manually before integrating it in a recipe
⇒ Saves you time
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
137. Workflow - 6. Extend a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
138. Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
139. Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
140. Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
▶ The BitBake build engine allows to modify a recipe by extending it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
141. Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
▶ The BitBake build engine allows to modify a recipe by extending it
▶ The recipe extensions end in .bbappend
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
142. Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
▶ The BitBake build engine allows to modify a recipe by extending it
▶ The recipe extensions end in .bbappend
▶ Appended files must have the same root name as the recipe they extend
example_0.1.bbappend applies to example_0.1.bb
⇒ version specific
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
143. Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
▶ The BitBake build engine allows to modify a recipe by extending it
▶ The recipe extensions end in .bbappend
▶ Appended files must have the same root name as the recipe they extend
example_0.1.bbappend applies to example_0.1.bb
⇒ version specific
▶ If adding new files, you must prepend the FILESEXTRAPATHS variable with the
path to files’ directory.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
145. Workflow - 7. Create an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
146. Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
147. Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
148. Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
149. Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
▶ meta*/recipes*/images/*.bb
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
150. Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
▶ meta*/recipes*/images/*.bb
▶ An image is no more than a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
151. Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
▶ meta*/recipes*/images/*.bb
▶ An image is no more than a recipe
▶ To create an image, simply create a .bb in an images folder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
152. Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
▶ meta*/recipes*/images/*.bb
▶ An image is no more than a recipe
▶ To create an image, simply create a .bb in an images folder
mkdir -p recipes-core/images/
touch recipes-core/images/core-image-fe.bb
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
153. Workflow - 7. Create an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
154. Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
155. Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of packages to install in the generated image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
156. Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of packages to install in the generated image
IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to
create images
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
157. Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of packages to install in the generated image
IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to
create images
✓ Create a minimal image to include it in others
⇒ Allows to have a minimal rootfs
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
158. Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of packages to install in the generated image
IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to
create images
✓ Create a minimal image to include it in others
⇒ Allows to have a minimal rootfs
✓ Create different images according to your needs: image-minimal, image-dev,
image-x11, image-qt5, etc
⇒ Install only what you really need for your board.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
159. Workflow - 7. Create an image
recipes-core/images/core-image-fe.bb
inherit core-image
DESCRIPTION = "A small image to boot a device, created for Embedded Recipes"
LICENSE = "MIT"
IMAGE_FSTYPES = "tar.bz2 ext4"
IMAGE_INSTALL = "packagegroup-core-boot
nmon
helloworld
"
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 30/35
160. Workflow - 8. Create a machine
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
161. Workflow - 8. Create a machine
▶ A machine describes your hardware
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
162. Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
163. Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
164. Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
165. Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
166. Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
167. Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use
SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed
to the kernel as the console parameter, e.g. 115200 ttyS0
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
168. Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use
SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed
to the kernel as the console parameter, e.g. 115200 ttyS0
KERNEL_IMAGETYPE : The type of kernel image to build, e.g. zImage
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
169. Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use
SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed
to the kernel as the console parameter, e.g. 115200 ttyS0
KERNEL_IMAGETYPE : The type of kernel image to build, e.g. zImage
✓ Describe your machine in a README file
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35