Buildroot: a Firmware Generator for Embedded Systems ( buildroot | 7 hours )

Prerequisites:
  • The participant must have built a kernel at least once for a traditional desktop (non-embedded) Linux system.
  • Knows what components the Linux userspace on a desktop system is composed of.
  • Knows how to generate and use patches.
  • Must be able to explain what is GNU Make, Autotools, what other build systems exist.
  • Ideally, maintains at least one Linux package, either as an upstream author, or in any traditional Linux desktop distribution.
  • Prior experience with embedded development is not required, and is not a substitute for the knowledge about traditional Linux desktops specified above.
Overview:

Buildroot is an open-source project that contains scripts that produce a cross-compilation toolchain, a customizable root filesystem image, and a Linux kernel for embedded devices. During this practical course, participants will learn how to use it:

  • How to select software that goes into the root filesystem.
  • How to add new packages and modify existing ones.
  • How to add support for new embedded boards.

During the course, bootable filesystem images will be produced. Remote courses are delivered using the QEMU emulator, while in the classroom it is possible to use either QEMU or real embedded boards of the trainer's choice.

Other projects with similar goals include the Yocto project and OpenWRT. Please use these presentations to determine which one is the right choice for your needs.

Course Outline:
  1. Getting started
    1. Obtaining Buildroot
    2. Build system requirements
    3. Cross-compiler terminology: build, host, target, sysroot
    4. Choosing the correct target
    5. Building a minimal embedded system and booting it
    6. Contents of the resulting filesystem image
    7. Parallel builds
    8. Full and partial rebuilds
  2. Design goals of Buildroot
  3. Choices to be made
    1. C library: glibc or uClibc or musl?
    2. Init system: busybox vs sysVinit vs systemd
    3. Managing device nodes in /dev
    4. Selecting other packages
  4. Understanding the build instructions
    1. Syntax of Kconfig (Confog.in) files
    2. Features of GNU Make used by Buidroot Makefiles
    3. Style guide for Config.in and *.mk files
    4. How to add a simple Autotools-based package
    5. The difference between staging and target directories
    6. The need for host packages
    7. How to express dependencies and optional features
    8. Support for languages other than C and build systems other than Autotools
    9. Debugging Makefiles
    10. Rebuilding a single package
  5. Analyzing the build results
    1. What took so much build time?
    2. What took so much disk space?
    3. Why has this package been built?
  6. Organizing external package trees
  7. Workflow for application developers
    1. How to use a local source directory
    2. Overriding build instructions
    3. Debugging your application
    4. Speeding up rebuilds
    5. Viewing build logs
  8. Dealing with common cross-compilation issues
    1. How to write your own software so that it is friendly to cross-compilers
  9. Workflow for kernel developers
    1. How the kernel boots on an embedded system
    2. Changing configuration options and adding patches
    3. Module loading mechanisms
  10. Making a finished product
    1. Running daemons at startup
    2. Providing custom configuration files
    3. Available firmware update mechanisms
    4. Upgrading to a new Buildroot version
    5. Complying with open-source licenses
Sites Published:

United Arab Emirates - Buildroot: a Firmware Generator for Embedded Systems

Qatar - Buildroot: a Firmware Generator for Embedded Systems

Egypt - Buildroot: a Firmware Generator for Embedded Systems

Saudi Arabia - Buildroot: a Firmware Generator for Embedded Systems

South Africa - Buildroot: a Firmware Generator for Embedded Systems

Brasil - Buildroot: a Firmware Generator for Embedded Systems

Canada - Buildroot: a Firmware Generator for Embedded Systems

中国 - Buildroot: a Firmware Generator for Embedded Systems

香港 - Buildroot: a Firmware Generator for Embedded Systems

澳門 - Buildroot: a Firmware Generator for Embedded Systems

台灣 - Buildroot: a Firmware Generator for Embedded Systems

USA - Buildroot: a Firmware Generator for Embedded Systems

Österreich - Buildroot: a Firmware Generator for Embedded Systems

Schweiz - Buildroot: a Firmware Generator for Embedded Systems

Deutschland - Buildroot: a Firmware Generator for Embedded Systems

Czech Republic - Buildroot: a Firmware Generator for Embedded Systems

Denmark - Buildroot: a Firmware Generator for Embedded Systems

Estonia - Buildroot: a Firmware Generator for Embedded Systems

Finland - Buildroot: a Firmware Generator for Embedded Systems

Greece - Buildroot: a Firmware Generator for Embedded Systems

Magyarország - Buildroot: a Firmware Generator for Embedded Systems

Ireland - Buildroot: a Firmware Generator for Embedded Systems

Israel - Buildroot: a Firmware Generator for Embedded Systems

Luxembourg - Buildroot: a Firmware Generator for Embedded Systems

Latvia - Buildroot: a Firmware Generator for Embedded Systems

España - Buildroot: a Firmware Generator for Embedded Systems

Italia - Buildroot: a Firmware Generator for Embedded Systems

Lithuania - Buildroot: a Firmware Generator for Embedded Systems

Nederland - Buildroot: a Firmware Generator for Embedded Systems

Norway - Buildroot: a Firmware Generator for Embedded Systems

Portugal - Buildroot: a Firmware Generator for Embedded Systems

România - Buildroot: a Firmware Generator for Embedded Systems

Sverige - Buildroot: a Firmware Generator for Embedded Systems

Türkiye - Buildroot: a Firmware Generator for Embedded Systems

Malta - Buildroot: a Firmware Generator for Embedded Systems

Belgique - Buildroot: a Firmware Generator for Embedded Systems

France - Buildroot: a Firmware Generator for Embedded Systems

日本 - Buildroot: a Firmware Generator for Embedded Systems

Australia - Buildroot: a Firmware Generator for Embedded Systems

Malaysia - Buildroot: a Firmware Generator for Embedded Systems

New Zealand - Buildroot: a Firmware Generator for Embedded Systems

Philippines - Buildroot: a Firmware Generator for Embedded Systems

Singapore - Buildroot: a Firmware Generator for Embedded Systems

Thailand - Buildroot: a Firmware Generator for Embedded Systems

Vietnam - Buildroot: a Firmware Generator for Embedded Systems

India - Buildroot: a Firmware Generator for Embedded Systems

Argentina - Buildroot: a Firmware Generator for Embedded Systems

Chile - Buildroot: a Firmware Generator for Embedded Systems

Costa Rica - Buildroot: a Firmware Generator for Embedded Systems

Ecuador - Buildroot: a Firmware Generator for Embedded Systems

Guatemala - Buildroot: a Firmware Generator for Embedded Systems

Colombia - Buildroot: a Firmware Generator for Embedded Systems

México - Buildroot: a Firmware Generator for Embedded Systems

Panama - Buildroot: a Firmware Generator for Embedded Systems

Peru - Buildroot: a Firmware Generator for Embedded Systems

Uruguay - Buildroot: a Firmware Generator for Embedded Systems

Venezuela - Buildroot: a Firmware Generator for Embedded Systems

Polska - Course Outline Buildroot: a Firmware Generator for Embedded Systems

United Kingdom - Buildroot: a Firmware Generator for Embedded Systems

South Korea - Buildroot: a Firmware Generator for Embedded Systems

Pakistan - Buildroot: a Firmware Generator for Embedded Systems

Sri Lanka - Buildroot: a Firmware Generator for Embedded Systems

Bulgaria - Buildroot: a Firmware Generator for Embedded Systems

Bolivia - Buildroot: a Firmware Generator for Embedded Systems

Indonesia - Buildroot: a Firmware Generator for Embedded Systems

Kazakhstan - Buildroot: a Firmware Generator for Embedded Systems

Moldova - Buildroot: a Firmware Generator for Embedded Systems

Morocco - Buildroot: a Firmware Generator for Embedded Systems

Tunisia - Buildroot: a Firmware Generator for Embedded Systems

Kuwait - Buildroot: a Firmware Generator for Embedded Systems

Oman - Buildroot: a Firmware Generator for Embedded Systems

Slovakia - Buildroot: a Firmware Generator for Embedded Systems

Kenya - Buildroot: a Firmware Generator for Embedded Systems

Nigeria - Buildroot: a Firmware Generator for Embedded Systems

Botswana - Buildroot: a Firmware Generator for Embedded Systems

Slovenia - Buildroot: a Firmware Generator for Embedded Systems

Croatia - Buildroot: a Firmware Generator for Embedded Systems

Serbia - Buildroot: a Firmware Generator for Embedded Systems

Bhutan - Buildroot: a Firmware Generator for Embedded Systems

Nepal - Buildroot: a Firmware Generator for Embedded Systems