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
- Acquiring Buildroot
- Build system prerequisites
- Cross-compiler terminology: build, host, target, sysroot
- Selecting the appropriate target
- Constructing a minimal embedded system and booting it
- Examining the contents of the generated filesystem image
- Utilizing parallel builds
- Executing full and partial rebuilds
- Core design goals of Buildroot
- Key decision points
- Selecting a C library: glibc, uClibc, or musl?
- Choosing an init system: busybox versus sysVinit versus systemd
- Managing device nodes in /dev
- Picking additional packages
- Interpreting build instructions
- Syntax of Kconfig (Config.in) files
- GNU Make features employed by Buildroot Makefiles
- Style guidelines for Config.in and *.mk files
- Adding a simple Autotools-based package
- Distinguishing between staging and target directories
- The necessity of host packages
- Defining dependencies and optional features
- Support for languages other than C and build systems other than Autotools
- Debugging Makefiles
- Rebuilding a single package
- Analyzing build results
- Identifying time-consuming build steps
- Identifying space-consuming components
- Understanding why a specific package was built
- Structuring external package trees
- Application developer workflow
- Using a local source directory
- Overriding build instructions
- Debugging your application
- Accelerating rebuilds
- Reviewing build logs
- Addressing common cross-compilation challenges
- Writing software that is compatible with cross-compilers
- Kernel developer workflow
- Understanding kernel boot processes on embedded systems
- Modifying configuration options and applying patches
- Module loading mechanisms
- Finalizing the product
- Configuring daemon startup
- Supplying custom configuration files
- Available firmware update mechanisms
- Upgrading to a new Buildroot version
- Ensuring compliance with open-source licenses
Requirements
- Participants must have compiled a kernel at least once for a conventional desktop (non-embedded) Linux system.
- Familiarity with the components that constitute the Linux userspace on a desktop system.
- Ability to generate and apply patches.
- Understanding of GNU Make, Autotools, and other existing build systems.
- Preferred: Experience maintaining at least one Linux package, either as an upstream contributor or within a traditional Linux desktop distribution.
- While prior embedded development experience is not required, it does not replace the necessity of the traditional Linux desktop knowledge outlined above.
7 Hours