// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

Beyond Buildroot
================

Boot the generated images
-------------------------

NFS boot
~~~~~~~~

To achieve NFS-boot, enable _tar root filesystem_ in the _Filesystem
images_ menu.

After a complete build, just run the following commands to setup the
NFS-root directory:

-------------------
sudo tar -xavf /path/to/output_dir/rootfs.tar -C /path/to/nfs_root_dir
-------------------

Remember to add this path to +/etc/exports+.

Then, you can execute a NFS-boot from your target.

Chroot
------

If you want to chroot in a generated image, then there are few thing
you should be aware of:

* you should setup the new root from the _tar root filesystem_ image;

* either the selected target architecture is compatible with your host
  machine, or you should use some +qemu-*+ binary and correctly set it
  within the +binfmt+ properties to be able to run the binaries built
  for the target on your host machine;

* Buildroot does not currently provide +host-qemu+ and +binfmt+
  correctly built and set for that kind of use.
