| // -*- mode:doc; -*- |
| // vim: set syntax=asciidoc: |
| |
| === Quick guide to storing your project-specific customizations |
| |
| Earlier in this chapter, the different methods for making |
| project-specific customizations have been described. This section will |
| now summarize all this by providing step-by-step instructions to storing your |
| project-specific customizations. Clearly, the steps that are not relevant to |
| your project can be skipped. |
| |
| 1. +make menuconfig+ to configure toolchain, packages and kernel. |
| 1. +make linux-menuconfig+ to update the kernel config, similar for |
| other configuration like busybox, uclibc, ... |
| 1. +mkdir -p board/<manufacturer>/<boardname>+ |
| 1. Set the following options to +board/<manufacturer>/<boardname>/<package>.config+ |
| (as far as they are relevant): |
| * +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+ |
| * +BR2_PACKAGE_BUSYBOX_CONFIG+ |
| * +BR2_UCLIBC_CONFIG+ |
| * +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE+ |
| * +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE+ |
| * +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE+ |
| 1. Write the configuration files: |
| * +make linux-update-defconfig+ |
| * +make busybox-update-config+ |
| * +make uclibc-update-config+ |
| * +cp <output>/build/at91bootstrap3-*/.config |
| board/<manufacturer>/<boardname>/at91bootstrap3.config+ |
| * +make barebox-update-defconfig+ |
| * +make uboot-update-defconfig+ |
| 1. Create +board/<manufacturer>/<boardname>/rootfs-overlay/+ and fill it |
| with additional files you need on your rootfs, e.g. |
| +board/<manufacturer>/<boardname>/rootfs-overlay/etc/inittab+. |
| Set +BR2_ROOTFS_OVERLAY+ |
| to +board/<manufacturer>/<boardname>/rootfs-overlay+. |
| 1. Create a post-build script |
| +board/<manufacturer>/<boardname>/post_build.sh+. Set |
| +BR2_ROOTFS_POST_BUILD_SCRIPT+ to |
| +board/<manufacturer>/<boardname>/post_build.sh+ |
| 1. If additional setuid permissions have to be set or device nodes have |
| to be created, create +board/<manufacturer>/<boardname>/device_table.txt+ |
| and add that path to +BR2_ROOTFS_DEVICE_TABLE+. |
| 1. If additional user accounts have to be created, create |
| +board/<manufacturer>/<boardname>/users_table.txt+ and add that path |
| to +BR2_ROOTFS_USERS_TABLES+. |
| 1. To add custom patches to certain packages, set +BR2_GLOBAL_PATCH_DIR+ |
| to +board/<manufacturer>/<boardname>/patches/+ and add your patches |
| for each package in a subdirectory named after the package. Each |
| patch should be called +<packagename>-<num>-<description>.patch+. |
| 1. Specifically for the Linux kernel, there also exists the option |
| +BR2_LINUX_KERNEL_PATCH+ with as main advantage that it can also |
| download patches from a URL. If you do not need this, |
| +BR2_GLOBAL_PATCH_DIR+ is preferred. U-Boot, Barebox, at91bootstrap |
| and at91bootstrap3 also have separate options, but these do not |
| provide any advantage over +BR2_GLOBAL_PATCH_DIR+ and will likely be |
| removed in the future. |
| 1. If you need to add project-specific packages, create |
| +package/<manufacturer>/+ and place your packages in that |
| directory. Create an overall +<manufacturer>.mk+ file that |
| includes the +.mk+ files of all your packages. Create an overall |
| +Config.in+ file that sources the +Config.in+ files of all your |
| packages. Include this +Config.in+ file from Buildroot's |
| +package/Config.in+ file. |
| 1. +make savedefconfig+ to save the buildroot configuration. |
| 1. +cp defconfig configs/<boardname>_defconfig+ |