1// -*- mode:doc; -*- 2// vim: set syntax=asciidoc: 3 4[[customize]] 5== Project-specific customization 6 7Typical actions you may need to perform for a given project are: 8 9* configuring Buildroot (including build options and toolchain, 10 bootloader, kernel, package and filesystem image type selection) 11* configuring other components, like the Linux kernel and BusyBox 12* customizing the generated target filesystem 13 ** adding or overwriting files on the target filesystem (using 14 +BR2_ROOTFS_OVERLAY+) 15 ** modifying or deleting files on the target filesystem (using 16 +BR2_ROOTFS_POST_BUILD_SCRIPT+) 17 ** running arbitrary commands prior to generating the filesystem image 18 (using +BR2_ROOTFS_POST_BUILD_SCRIPT+) 19 ** setting file permissions and ownership (using 20 +BR2_ROOTFS_DEVICE_TABLE+) 21 ** adding custom devices nodes (using 22 +BR2_ROOTFS_STATIC_DEVICE_TABLE+) 23* adding custom user accounts (using +BR2_ROOTFS_USERS_TABLES+) 24* running arbitrary commands after generating the filesystem image 25 (using +BR2_ROOTFS_POST_IMAGE_SCRIPT+) 26* adding project-specific patches to some packages (using 27 +BR2_GLOBAL_PATCH_DIR+) 28* adding project-specific packages 29 30An important note regarding such 'project-specific' customizations: 31please carefully consider which changes are indeed project-specific and 32which changes are also useful to developers outside your project. The 33Buildroot community highly recommends and encourages the upstreaming of 34improvements, packages and board support to the official Buildroot 35project. Of course, it is sometimes not possible or desirable to 36upstream because the changes are highly specific or proprietary. 37 38This chapter describes how to make such project-specific customizations 39in Buildroot and how to store them in a way that you can build the same 40image in a reproducible way, even after running 'make clean'. By 41following the recommended strategy, you can even use the same Buildroot 42tree to build multiple distinct projects! 43 44include::customize-directory-structure.txt[] 45 46include::customize-outside-br.txt[] 47 48include::customize-configuration.txt[] 49 50include::customize-rootfs.txt[] 51 52include::customize-users-tables.txt[] 53 54include::customize-post-image.txt[] 55 56include::customize-patches.txt[] 57 58include::customize-packages.txt[] 59 60include::customize-quick-guide.txt[] 61