The Buildroot user manual


Table of Contents

I. Getting started
1. About Buildroot
2. System requirements
2.1. Mandatory packages
2.2. Optional packages
3. Getting Buildroot
4. Buildroot quick start
5. Community resources
II. User guide
6. Buildroot configuration
6.1. Cross-compilation toolchain
6.2. /dev management
6.3. init system
7. Configuration of other components
8. General Buildroot usage
8.1. make tips
8.2. Understanding when a full rebuild is necessary
8.3. Understanding how to rebuild packages
8.4. Offline builds
8.5. Building out-of-tree
8.6. Environment variables
8.7. Dealing efficiently with filesystem images
8.8. Details about packages
8.9. Graphing the dependencies between packages
8.10. Graphing the build duration
8.11. Graphing the filesystem size contribution of packages
8.12. Top-level parallel build
8.13. Advanced usage
9. Project-specific customization
9.1. Recommended directory structure
9.2. Keeping customizations outside of Buildroot
9.3. Storing the Buildroot configuration
9.4. Storing the configuration of other components
9.5. Customizing the generated target filesystem
9.6. Adding custom user accounts
9.7. Customization after the images have been created
9.8. Adding project-specific patches and hashes
9.9. Adding project-specific packages
9.10. Quick guide to storing your project-specific customizations
10. Integration topics
10.1. Configurable packages
10.2. Systemd
10.3. Using SELinux in Buildroot
11. Frequently Asked Questions & Troubleshooting
11.1. The boot hangs after Starting network…
11.2. Why is there no compiler on the target?
11.3. Why are there no development files on the target?
11.4. Why is there no documentation on the target?
11.5. Why are some packages not visible in the Buildroot config menu?
11.6. Why not use the target directory as a chroot directory?
11.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)?
11.8. How to speed-up the build process?
11.9. How does Buildroot support Y2038?
12. Known issues
13. Legal notice and licensing
13.1. Complying with open source licenses
13.2. Complying with the Buildroot license
14. Beyond Buildroot
14.1. Boot the generated images
14.2. Chroot
III. Developer guide
15. How Buildroot works
16. Coding style
16.1. Config.in file
16.2. The .mk file
16.3. The genimage.cfg file
16.4. The documentation
16.5. Support scripts
17. Adding support for a particular board
18. Adding new packages to Buildroot
18.1. Package directory
18.2. Config files
18.3. The .mk file
18.4. The .hash file
18.5. The SNNfoo start script
18.6. Infrastructure for packages with specific build systems
18.7. Infrastructure for autotools-based packages
18.8. Infrastructure for CMake-based packages
18.9. Infrastructure for Python packages
18.10. Infrastructure for LuaRocks-based packages
18.11. Infrastructure for Perl/CPAN packages
18.12. Infrastructure for virtual packages
18.13. Infrastructure for packages using kconfig for configuration files
18.14. Infrastructure for rebar-based packages
18.15. Infrastructure for Waf-based packages
18.16. Infrastructure for Meson-based packages
18.17. Infrastructure for Cargo-based packages
18.18. Infrastructure for Go packages
18.19. Infrastructure for QMake-based packages
18.20. Infrastructure for packages building kernel modules
18.21. Infrastructure for asciidoc documents
18.22. Infrastructure specific to the Linux kernel package
18.23. Hooks available in the various build steps
18.24. Gettext integration and interaction with packages
18.25. Tips and tricks
18.26. Conclusion
19. Patching a package
19.1. Providing patches
19.2. How patches are applied
19.3. Format and licensing of the package patches
19.4. Additional patch documentation
20. Download infrastructure
21. Debugging Buildroot
22. Contributing to Buildroot
22.1. Reproducing, analyzing and fixing bugs
22.2. Analyzing and fixing autobuild failures
22.3. Reviewing and testing patches
22.4. Work on items from the TODO list
22.5. Submitting patches
22.6. Reporting issues/bugs or getting help
22.7. Using the runtime tests framework
23. DEVELOPERS file and get-developers
24. Release Engineering
24.1. Releases
24.2. Development
IV. Appendix
25. Makedev syntax documentation
26. Makeusers syntax documentation
26.1. Caveat with automatic UIDs and GIDs
27. Migrating from older Buildroot versions
27.1. General approach
27.2. Migrating to 2016.11
27.3. Migrating to 2017.08
27.4. Migrating to 2023.11
27.5. Migrating to 2024.05

List of Examples

18.1. Config script: divine package
18.2. Config script: imagemagick package: