Go to file
Thomas Petazzoni 10a130f91e initramfs/init: make sure that 0, 1, 2 fds are available
As the kernel doesn't automatically mount devtmpfs when an initramfs
is used, commit 424888e474 has
introduced a small wrapper script that mounts devtmpfs before starting
the real init.

Unfortunately, the problem is that in this case, the init process runs
without any 0, 1 and 2 file descriptors, so none of the
messages/errors printed by the various initialization scripts can be
seen. This is due to the fact the init process relies on 0, 1 and 2
being opened by the kernel before init is started. However, as
/dev/console isn't present on the filesystem at the time the kernel
tries to open the console to create the 0, 1 and 2 file descriptors,
the kernel fails on this and prints the famous "Warning: unable to
open an initial console".

The proposed workaround is to actually open 0, 1 and 2 to /dev/console
in the wrapper script, right after mounting the devtmpfs filesystem,
and before starting the real init. The "Warning" from the kernel is
still shown, but at least the messages from the init scripts are
visible.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-08-04 21:52:21 +02:00
board qemu/mipsel-malta: switch to kernel 2.6.38.5 2011-05-03 20:45:23 +02:00
boot uboot: fix custom patch dir typo 2011-07-19 14:00:19 +02:00
configs sheevaplug_defconfig: use 2.6.39.3 2011-07-14 13:43:37 +02:00
docs Update for 2011.05 2011-05-27 16:18:21 +02:00
fs initramfs/init: make sure that 0, 1, 2 fds are available 2011-08-04 21:52:21 +02:00
linux uboot-tools: add fw_printenv, rename to uboot-tools 2011-07-18 15:27:52 +02:00
package package: fix <pkg>_DL_VERSION value 2011-08-04 21:48:08 +02:00
scripts setlocalversion: fix svn revision l10n-ism 2011-05-25 23:27:22 +02:00
target uClibc: drop BR2_PROGRAM_INVOCATION option 2011-07-27 11:56:53 +02:00
toolchain external toolchains: fix SuperH toolchain configuration 2011-08-04 21:00:50 +02:00
.defconfig buildroot: get rid of s390 support 2009-01-12 14:36:14 +00:00
.gitignore .gitignore: ignore more patch related files 2010-11-18 12:07:23 +01:00
CHANGES package: mark liboil + swfdec as deprecated 2011-08-04 21:20:44 +02:00
Config.in Makefile.package.in: Add BR2_XZCAT for LZMA compression type 2011-07-12 23:14:44 +02:00
COPYING clarify license and fix website license link 2009-05-08 09:29:41 +02:00
Makefile 'source' target should depend on 'dirs' 2011-08-04 21:44:56 +02:00

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) Use your shiny new root filesystem. Depending on which sort of
    root filesystem you selected, you may want to loop mount it,
    chroot into it, nfs mount it on your target device, burn it
    to flash, or whatever is appropriate for your target system.

You do not need to be root to build or run buildroot.  Have fun!

Offline build:
==============

In order to do an offline-build (not connected to the net), fetch all
selected source by issuing a
$ make source

before you disconnect.
If your build-host is never connected, then you have to copy buildroot
and your toplevel .config to a machine that has an internet-connection
and issue "make source" there, then copy the content of your dl/ dir to
the build-host.

Building out-of-tree:
=====================

Buildroot supports building out of tree with a syntax similar
to the Linux kernel. To use it, add O=<directory> to the
make command line, E.G.:

$ make O=/tmp/build

And all the output files (including .config) will be located under /tmp/build.

More finegrained configuration:
===============================

You can specify a config-file for uClibc:
$ make UCLIBC_CONFIG_FILE=/my/uClibc.config

And you can specify a config-file for busybox:
$ make BUSYBOX_CONFIG_FILE=/my/busybox.config

To use a non-standard host-compiler (if you do not have 'gcc'),
make sure that the compiler is in your PATH and that the library paths are
setup properly, if your compiler is built dynamically:
$ make HOSTCC=gcc-4.3.orig HOSTCXX=gcc-4.3-mine

Depending on your configuration, there are some targets you can use to
use menuconfig of certain packages. This includes:
$ make HOSTCC=gcc-4.3 linux-menuconfig
$ make HOSTCC=gcc-4.3 uclibc-menuconfig
$ make HOSTCC=gcc-4.3 busybox-menuconfig

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@uclibc.org