Customizing the generated target filesystem
-------------------------------------------

There are a few ways to customize the resulting target filesystem:

* Customize the target filesystem directly and rebuild the image.  The
  target filesystem is available under +output/target/+.  You can
  simply make your changes here and run make afterwards - this will
  rebuild the target filesystem image. This method allows you to do
  anything to the target filesystem, but if you decide to completely
  rebuild your toolchain and tools, these changes will be lost.

* Create your own 'target skeleton'. You can start with the default
  skeleton available under +fs/skeleton+ and then customize it to suit
  your needs. The +BR2_ROOTFS_SKELETON_CUSTOM+ and
  +BR2_ROOTFS_SKELETON_CUSTOM_PATH+ will allow you to specify the
  location of your custom skeleton. At build time, the contents of the
  skeleton are copied to output/target before any package
  installation.

* In the Buildroot configuration, you can specify the path to a
  post-build script, that gets called 'after' Buildroot builds all the
  selected software, but 'before' the rootfs packages are
  assembled. The destination root filesystem folder is given as the
  first argument to this script, and this script can then be used to
  copy programs, static data or any other needed file to your target
  filesystem. You should, however, use this feature with care.
  Whenever you find that a certain package generates wrong or unneeded
  files, you should fix that package rather than work around it with a
  post-build cleanup script.

* A special package, 'customize', stored in +package/customize+ can be
  used. You can put all the files that you want to see in the final
  target root filesystem in +package/customize/source+, and then
  enable this special package in the configuration system.

