buildroot for BBW or BBB?

Hey guys!

Is there the buildroot available for BBW or BBB? Building kernel is OK by Robert Nelson instructions but I need to build a very tiny filesystem (Angstrom is not an option)

You can get a very tiny filesystem with Angstrom, or just plain OpenEmbedded + meta-beagleboard. I have one with quite a few extra programs which comes in at ~12MB.

In regards to build root, their mailing list is probably the best place to ask; I don't know.

Jack, care to elaborate on the build steps you took in order to create such a build ?

Jack,

I consider systemd as very unstable. I need a static dev tree without any magic activity

You can get a small image with not much extra effort, more or less like this:

1) Download/Clone openembedded
2) Download/Clone meta-beagleboard
2) Download/Clone meta-oe
3) Initialise build
4) Add meta-beagleboard/common-bsp to bblayers.conf
5) Add meta-oe/meta-oe to bblayers.conf
6) Set machine to beaglebone in local.conf
7) bitbake core-image-minimal

There may be a few tweaks you need to make along the way depending on host system libraries and applications but the error messages bitbake gives are usually very informative.

Cheers,

OpenEmbedded doesn't use systemd by default. If you use the OE/meta-beagleboard/meta-oe combo I just posted you will end up with sysv.

Cheers,

that is precisely the recipe i'm using to build a system for my BBB
for some upcoming embedded linux classes, i mentioned earlier that i'd
written it up here:

  http://www.crashcourse.ca/wiki/index.php/BBB

i just did a fresh build this morning, and here's the size of the
generated artifacts:

total 44028
-rw-r--r-- 1 rpjday rpjday 2310861 Jul 4 09:09 core-image-minimal-beaglebone-20130704122125.rootfs.tar.gz
-rw-r--r-- 1 rpjday rpjday 1514640 Jul 4 09:09 core-image-minimal-beaglebone-20130704122125.rootfs.tar.xz
lrwxrwxrwx 1 rpjday rpjday 58 Jul 4 09:09 core-image-minimal-beaglebone.tar.gz -> core-image-minimal-beaglebone-20130704122125.rootfs.tar.gz
lrwxrwxrwx 1 rpjday rpjday 58 Jul 4 09:09 core-image-minimal-beaglebone.tar.xz -> core-image-minimal-beaglebone-20130704122125.rootfs.tar.xz
lrwxrwxrwx 1 rpjday rpjday 22 Jul 4 09:02 MLO -> MLO-beaglebone-2013.04
lrwxrwxrwx 1 rpjday rpjday 22 Jul 4 09:02 MLO-beaglebone -> MLO-beaglebone-2013.04
-rwxr-xr-x 1 rpjday rpjday 99816 Jul 4 09:02 MLO-beaglebone-2013.04
-rw-rw-r-- 2 rpjday rpjday 36501340 Jul 4 08:55 modules--3.8.13-r23a-beaglebone-20130704121308.tgz
lrwxrwxrwx 2 rpjday rpjday 50 Jul 4 08:55 modules-beaglebone.tgz -> modules--3.8.13-r23a-beaglebone-20130704121308.tgz
-rw-rw-r-- 2 rpjday rpjday 294 Jul 4 09:09 README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt
-rwxr-xr-x 1 rpjday rpjday 377524 Jul 4 09:02 u-boot-beaglebone-2013.04-r0.img
lrwxrwxrwx 1 rpjday rpjday 32 Jul 4 09:02 u-boot-beaglebone.img -> u-boot-beaglebone-2013.04-r0.img
lrwxrwxrwx 1 rpjday rpjday 32 Jul 4 09:02 u-boot.img -> u-boot-beaglebone-2013.04-r0.img
lrwxrwxrwx 2 rpjday rpjday 49 Jul 4 08:55 uImage -> uImage--3.8.13-r23a-beaglebone-20130704121308.bin
-rw-r--r-- 2 rpjday rpjday 4259664 Jul 4 08:55 uImage--3.8.13-r23a-beaglebone-20130704121308.bin
lrwxrwxrwx 2 rpjday rpjday 49 Jul 4 08:55 uImage-beaglebone.bin -> uImage--3.8.13-r23a-beaglebone-20130704121308.bin

for what it's worth.

rday

Thanks guys. I do prefer the exact_steps method initially then learn what everything is later. With the lack of coherent information on the web for build steps concerning OE, these steps will come in handy.

Thanks again :slight_smile:

http://www.openembedded.org/wiki/Kernel_Building

There is a gui-ish configurator called 'Hob' but I wouldn't recommend it. With OpenEmbedded it's either stick with the defaults, or get stuck in and learn the build system.

To change the kernel defconfig you would overlay the meta-beagleboard linux kernel recipe with your own bbappend specifying the custom defconfig.

The build you produced isn't 11GB, the folder that holds all the sources and build artefacts is probably 11GB, but the actual root filesystem is located in build_dir/tmp/depoy/images.

Cheers,

Thanks for these tips, I wanted to try out openembedded and now
I have. I ended up with 11GB once "bitbak core-image-minimal"
finished. I found multiple .config files and I wonder....

Is there a "make menuconfig" or "make nconfig" for changing
one of the kernel .config files?

Is there a gui-ish configurator for the OS features?

There is a gui-ish configurator called 'Hob' but I wouldn't recommend
it. With OpenEmbedded it's either stick with the defaults, or get
stuck in and learn the build system.

Good info, thanks.

To change the kernel defconfig you would overlay the meta-beagleboard
linux kernel recipe with your own bbappend specifying the custom
defconfig.

It will take me a while to decode that sentence, but thanks.

The Yocto Project has some very good documentation explaining the some of the basic and more advanced parts of the OE system, just don't get bogged down with all the references to their 'Poky' distribution and specific Yocto Extras (such as kernel fragments).

The build you produced isn't 11GB, the folder that holds all the
sources and build artefacts is probably 11GB, but the actual root
filesystem is located in build_dir/tmp/depoy/images.

It's my use of the word "build". It has multiple meanings.... without
getting too boring. I created a dir called "oe" and within there I
followed your steps and when I was done the "oe" dir was 11GB.

du -sh deploy/images/
44M deploy/images/

Since I'm new to this embedded stuff and you are not I have a
question for you. In your experience is there a significant
advantage to building the code natively on the device?

No

i.e. instead of cross-compiling setup a build environment on the BBB,
create the images natively. Or is cross-compiling so mature that it
doesn't matter?

Doesn't matter. I wouldn't envision myself every attempting to natively compile; I don't even know if OE supports non x86 hosts.

One last observation....I have looked at many of the different build
environments and they all have on thing in common. They are
too complicated. They seem to have gathered lots of cruft as
they have evolved. They all have gotten more complicated over
time and not simpler.

People want more options, more customisations, more software and multiple ways to configure builds. Add that to the already complex process of building a Linux Root Filesystem from scratch and you have yourself a complex environment I'm afraid.

While I have your ear....I always thought embedded folks liked
statically built software. Is that no longer true? My goal is to
have a static (or monolithic or non-modular) kernel and static
OS binaries. The monolithic kernel would also have the
firmware built-in.

Traditionally, maybe, it all depends on what you value. Linux is a very different ball game to most embedded systems and you have to accept the different way of working with it. Yes, you can build the system statically; is it required or recommended... I would personally not bother, but essentially it's what you're happy with. Also one of the main values of using Linux is the wealth of userspace apps and libraries; which are often LGPL licensed, which usually means no static building (I may be wrong on this, someone feel free to correct me).

As for building firmware in with the kernel, I don't think that is acceptable, the kernel is GPL licensed, so depending on the compatibility of the firmware license you may or may not be able to do this.

download via git from

git clone git://[git.buildroot.net/buildroot](http://git.buildroot.net/buildroot)
cd buildroot ; make menuconfig 

Yacto is based on OpenEmbedd .
For over 6 years ago . Openmoko used it , 5 years ago ,Poky used it and Now Yacto use it
only angstrom seems to be successful .

Yacto is based on OpenEmbedd .
For over 6 years ago . Openmoko used it , 5 years ago ,Poky used it
and Now Yacto use it
only angstrom seems to be successful .

bitbake is too nobby

Agreed, simple commands failed for me giving me useless error
messages.

They probably won't be useless.... unless it was a python backtrace which is classified ad a bug.