Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Course Outline
- Getting started
- Obtaining Buildroot
- Build system requirements
- Cross-compiler terminology: build, host, target, sysroot
- Choosing the correct target
- Building a minimal embedded system and booting it
- Contents of the resulting filesystem image
- Parallel builds
- Full and partial rebuilds
- Design goals of Buildroot
- Choices to be made
- C library: glibc, uClibc, or musl?
- Init system: busybox vs sysVinit vs systemd
- Managing device nodes in /dev
- Selecting other packages
- Understanding the build instructions
- Syntax of Kconfig (Config.in) files
- Features of GNU Make used by Buildroot Makefiles
- Style guide for Config.in and *.mk files
- How to add a simple Autotools-based package
- The difference between staging and target directories
- The need for host packages
- How to express dependencies and optional features
- Support for languages other than C and build systems other than Autotools
- Debugging Makefiles
- Rebuilding a single package
- Analyzing the build results
- What took so much build time?
- What took so much disk space?
- Why has this package been built?
- Organizing external package trees
- Workflow for application developers
- How to use a local source directory
- Overriding build instructions
- Debugging your application
- Speeding up rebuilds
- Viewing build logs
- Dealing with common cross-compilation issues
- How to write your own software so that it is friendly to cross-compilers
- Workflow for kernel developers
- How the kernel boots on an embedded system
- Changing configuration options and adding patches
- Module loading mechanisms
- Making a finished product
- Running daemons at startup
- Providing custom configuration files
- Available firmware update mechanisms
- Upgrading to a new Buildroot version
- Complying with open-source licenses
Requirements
- Participants must have compiled a Linux kernel at least once for a conventional desktop (non-embedded) Linux system.
- A clear understanding of the components that constitute the Linux userspace on a desktop environment.
- Proficiency in generating and applying patches.
- Ability to explain the function of GNU Make and Autotools, as well as familiarity with other existing build systems.
- Preferred: Experience maintaining at least one Linux package, either as an upstream author or within a traditional Linux desktop distribution.
- Previous embedded development experience is not mandatory and does not substitute for the foundational knowledge of traditional Linux desktops outlined above.
7 Hours