| // -*- mode:doc; -*- |
| // vim: set syntax=asciidoc: |
| |
| == Buildroot quick start |
| |
| *Important*: you can and should *build everything as a normal user*. There |
| is no need to be root to configure and use Buildroot. By running all |
| commands as a regular user, you protect your system against packages |
| behaving badly during compilation and installation. |
| |
| The first step when using Buildroot is to create a configuration. |
| Buildroot has a nice configuration tool similar to the one you can |
| find in the http://www.kernel.org/[Linux kernel] or in |
| http://www.busybox.net/[BusyBox]. |
| |
| From the buildroot directory, run |
| |
| -------------------- |
| $ make menuconfig |
| -------------------- |
| |
| for the original curses-based configurator, or |
| |
| -------------------- |
| $ make nconfig |
| -------------------- |
| |
| for the new curses-based configurator, or |
| |
| -------------------- |
| $ make xconfig |
| -------------------- |
| |
| for the Qt-based configurator, or |
| |
| -------------------- |
| $ make gconfig |
| -------------------- |
| |
| for the GTK-based configurator. |
| |
| All of these "make" commands will need to build a configuration |
| utility (including the interface), so you may need to install |
| "development" packages for relevant libraries used by the |
| configuration utilities. Refer to xref:requirement[] for more details, |
| specifically the xref:requirement-optional[optional requirements] |
| to get the dependencies of your favorite interface. |
| |
| For each menu entry in the configuration tool, you can find associated |
| help that describes the purpose of the entry. Refer to xref:configure[] |
| for details on some specific configuration aspects. |
| |
| Once everything is configured, the configuration tool generates a |
| +.config+ file that contains the entire configuration. This file will be |
| read by the top-level Makefile. |
| |
| To start the build process, simply run: |
| |
| -------------------- |
| $ make |
| -------------------- |
| |
| You *should never* use +make -jN+ with Buildroot: top-level parallel |
| make is currently not supported. Instead, use the +BR2_JLEVEL+ option |
| to tell Buildroot to run the compilation of each individual package |
| with +make -jN+. |
| |
| The `make` command will generally perform the following steps: |
| |
| * download source files (as required); |
| * configure, build and install the cross-compilation toolchain, or |
| simply import an external toolchain; |
| * configure, build and install selected target packages; |
| * build a kernel image, if selected; |
| * build a bootloader image, if selected; |
| * create a root filesystem in selected formats. |
| |
| Buildroot output is stored in a single directory, +output/+. |
| This directory contains several subdirectories: |
| |
| * +images/+ where all the images (kernel image, bootloader and root |
| filesystem images) are stored. These are the files you need to put |
| on your target system. |
| |
| * +build/+ where all the components are built (this includes tools |
| needed by Buildroot on the host and packages compiled for the |
| target). This directory contains one subdirectory for each of these |
| components. |
| |
| * +staging/+ which contains a hierarchy similar to a root filesystem |
| hierarchy. This directory contains the headers and libraries of the |
| cross-compilation toolchain and all the userspace packages selected |
| for the target. However, this directory is 'not' intended to be |
| the root filesystem for the target: it contains a lot of development |
| files, unstripped binaries and libraries that make it far too big |
| for an embedded system. These development files are used to compile |
| libraries and applications for the target that depend on other |
| libraries. |
| |
| * +target/+ which contains 'almost' the complete root filesystem for |
| the target: everything needed is present except the device files in |
| +/dev/+ (Buildroot can't create them because Buildroot doesn't run |
| as root and doesn't want to run as root). Also, it doesn't have the correct |
| permissions (e.g. setuid for the busybox binary). Therefore, this directory |
| *should not be used on your target*. Instead, you should use one of |
| the images built in the +images/+ directory. If you need an |
| extracted image of the root filesystem for booting over NFS, then |
| use the tarball image generated in +images/+ and extract it as |
| root. Compared to +staging/+, +target/+ contains only the files and |
| libraries needed to run the selected target applications: the |
| development files (headers, etc.) are not present, the binaries are |
| stripped. |
| |
| * +host/+ contains the installation of tools compiled for the host |
| that are needed for the proper execution of Buildroot, including the |
| cross-compilation toolchain. |
| |
| These commands, +make menuconfig|nconfig|gconfig|xconfig+ and +make+, are the |
| basic ones that allow to easily and quickly generate images fitting |
| your needs, with all the features and applications you enabled. |
| |
| More details about the "make" command usage are given in |
| xref:make-tips[]. |