Get in Touch

Course Outline

  1. Getting Started
    1. Acquiring Buildroot
    2. Build system prerequisites
    3. Cross-compiler terminology: build, host, target, sysroot
    4. Selecting the appropriate target
    5. Constructing a minimal embedded system and booting it
    6. Inspection of the resulting filesystem image contents
    7. Parallel builds
    8. Full and partial rebuilds
  2. Design Goals of Buildroot
  3. Key Decisions
    1. C library selection: glibc, uClibc, or musl?
    2. Init system choice: busybox versus sysVinit versus systemd
    3. Management of device nodes in /dev
    4. Selection of other packages
  4. Understanding Build Instructions
    1. Syntax of Kconfig (Config.in) files
    2. GNU Make features employed in Buildroot Makefiles
    3. Style guide for Config.in and *.mk files
    4. Incorporating a simple Autotools-based package
    5. Distinction between staging and target directories
    6. The necessity of host packages
    7. Expressing dependencies and optional features
    8. Support for languages other than C and build systems beyond Autotools
    9. Debugging Makefiles
    10. Rebuilding a single package
  5. Analyzing Build Results
    1. Identifying what caused prolonged build times?
    2. Understanding what consumed significant disk space?
    3. Determining why a specific package was built?
  6. Organizing External Package Trees
  7. Workflow for Application Developers
    1. Utilizing a local source directory
    2. Overriding build instructions
    3. Debugging your application
    4. Accelerating rebuilds
    5. Reviewing build logs
  8. Addressing Common Cross-Compilation Challenges
    1. Writing software that is compatible with cross-compilers
  9. Workflow for Kernel Developers
    1. Understanding kernel boot processes on embedded systems
    2. Modifying configuration options and applying patches
    3. Module loading mechanisms
  10. Finalizing the Product
    1. Configuring daemons to start at boot
    2. Supplying custom configuration files
    3. Available firmware update mechanisms
    4. Upgrading to a newer Buildroot version
    5. Ensuring compliance with open-source licenses

Requirements

  • Participants must have built a kernel at least once for a standard desktop (non-embedded) Linux system.
  • Understanding of the components that make up the Linux userspace on a desktop environment.
  • Ability to generate and apply patches.
  • Capability to explain GNU Make, Autotools, and identify other existing build systems.
  • Preferably, experience maintaining at least one Linux package, either as an upstream author or within a traditional Linux desktop distribution.
  • Previous experience with embedded development is not required and cannot substitute for the desktop Linux knowledge outlined above.
 7 Hours

Number of participants


Price per participant

Upcoming Courses

Related Categories