/** @page first_steps First Steps

<i>This section demonstrates the first steps with the 'sandbox'
platform. </i>

@a barebox usually needs an environment for storing it's configuration.
You can generate an environment using the example-environment contained
in arch/sanbox/board/env:

@code
# ./scripts/bareboxenv -s -p 0x10000 arch/sanbox/board/env/ env.bin
@endcode

To get some files to play with you can generate a cramfs image:

@code
# mkcramfs somedir/ cramfs.bin
@endcode

The @a barebox image is a normal Linux executable, so it can be started
just like every other program:

@code
# ./barebox -e env.bin -i cramfs.bin

barebox 2010.10.0 (Oct 29 2010 - 13:47:17)

loading environment from /dev/env0
barebox\> /
@endcode

Specifying -[ie] \<file\> tells @a barebox to map the file as a device
under @p /dev. Files given with '-e' will appear as @p /dev/env[n]. Files
given with '-i' will appear as @p /dev/fd[n].

If @a barebox finds a valid configuration sector on @p /dev/env0, it
will be loaded into @p /env and executes @p /env/init if existing.
The default environment from the example above will show up a menu
asking for the relevant settings.

If you have started @a barebox as root you will find a new tap device on
your host which you can configure using ifconfig. Once configured with
valid network addresses, barebox can be used to ping the host machine or
to fetch files with tftp.

\todo Add more about tun/tap configuration

If you have mapped a cramfs image, try mounting it with

@code
# mkdir /cram
# mount /dev/fd0 cramfs /cram
@endcode

Memory can be examined using @p md/mw commands. They both understand the
-f \<file\> option to tell the commands that they should work on the
specified files instead of @p /dev/mem (which holds the complete address
space). Note that if you call 'md /dev/fd0' (without -f), @a barebox will
segfault on the host, because it will interpret @p /dev/fd0 as a number.

*/
