Configuring Open Embedded to bake Angstrom images for the mini2440

Please Note: I noticed a few people were having trouble with the Angstrom build using Doug’s article, so I thought I’d post the exact method I used (which seemed to work!) so others can retrace my steps with out confusing anyone by editing the previous article! If you have already successfully baked an Angstrom image please ignore this post!

First off I’d like to point out that this article is essentially an amalgamation of the Open Embedded Wiki (Getting Started) and Angstrom’s ‘Building Angstrom’ articles but in context relating to the mini2440 Embedded PC. If you would like a more detailed and probably better written explanation please refer to these two articles.

Make sure you have the packages needed for Open Embedded(OE) by visiting here and looking under the section relating to your distro. Running fedora 11 I did:

su -c "yum install python m4 make wget curl ftp cvs subversion tar bzip2 gzip unzip
python-psyco perl texinfo texi2html diffstat openjade docbook-style-dsssl
docbook-style-xsl docbook-dtds docbook-utils sed bison bc glibc-devel glibc-static
gcc binutils pcre pcre-devel git quilt groff linuxdoc-tools patch linuxdoc-tools
gcc-c++ help2man perl-ExtUtils-MakeMaker"

Getting down to business…

Open up a terminal. Issue these commands:

su -
mkdir -p /stuff2/build/conf
chmod 777 -Rf /stuff2/
exit
cd /stuff2/

Download latest bitbake from here and extract the bitbake directory in the archive (eg. bitbake-1.8.16) to /stuff2/

A few more commands:

mv bitbake-1.8.16/ bitbake
git clone git://git.openembedded.org/openembedded
cp openembedded/conf/local.conf.sample build/conf/local.conf

Edit the config you have just copied using your favourite text editor.

gedit build/conf/local.conf

It is important that you read the config carefully so that you understand what everything does…

Next edit it to look something like this (which is just a slightly modified version of openembedded/contrib/angstrom/local.conf) :

Note: Do not copy and paste from this article due to formatting issues. You can download a pre-made local.conf here.Just extract to /stuff2/build/conf/ …

MACHINE = "mini2440"

# Where to store sources
DL_DIR = "/stuff2/downloads"

INHERIT += " rm_work "

# Make sure you have these installed
ASSUME_PROVIDED += "gdk-pixbuf-csource-native imagemagick-native librsvg-native"

# Which files do we want to parse:
BBFILES := "/stuff2/openembedded/recipes/*/*.bb"
BBMASK = ""

# What kind of images do we want?
IMAGE_FSTYPES += " tar.bz2 "

# Set TMPDIR instead of defaulting it to $pwd/tmp
TMPDIR = "/stuff2/${DISTRO}-dev"

# Make use of SMP and fast disks
PARALLEL_MAKE = "-j2"
BB_NUMBER_THREADS = "2"

#tinderbox
#INHERIT += "oestats-client"
OESTATS_BUILDER      = "myname"

DISTRO = "angstrom-2008.1"

Save and exit the editor. Download this script and move it to the directory /stuff2/ .

Check it is ok:

gedit /stuff2/source-me.txt

It should look something like this:

export OETREE="/stuff2"
export PATH=/stuff2/bitbake/bin:$PATH
BBPATH=${OETREE}/:${OETREE}/build/:${OETREE}/openembedded/
PKGDIR=${OETREE}/build/
DL_DIR=${OETREE}/downloads
echo Setting up dev env for Ångström

if [ -z ${ORG_PATH} ] ; then
ORG_PATH=${PATH}
export ORG_PATH
fi

if [ -z ${ORG_LD_LIBRARY_PATH} ] ; then
ORG_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
export ORG_LD_LIBRARY_PATH
fi

PATH=${OETREE}/openembedded/bitbake/bin:${ORG_PATH}

cd $PKGDIR

LD_LIBRARY_PATH=
export PATH LD_LIBRARY_PATH BBPATH
export LANG=C
export BB_ENV_EXTRAWHITE="MACHINE DISTRO OETREE ANGSTROM_MODE ANGSTROMLIBC LIBC"

echo "Altered environment for OE Development"

save, and start the script:

cd /stuff2/
source source-me.txt
cd ../openembedded

one last update:

git pull

Issue a few commands to fix build issues:

su
sysctl vm.mmap_min_addr=0
setenforce 0 (Fixes an SELINUX problem during building)
exit

issue build commands:

bitbake base-image ; bitbake console-image ; bitbake  x11-image

Be prepared to saturate your internet connection, wait a long time and take up a lot of disk space!
The result ends up in:

stuff2/angstrom-dev/deploy/glibc/images/mini2440

You should have the image(s) in .jffs2 for flashing and .tar.gz for mounting using NFS.

14 Replies to “Configuring Open Embedded to bake Angstrom images for the mini2440”

  1. Thanks Will!

    You can also git clone the official mini2440 repository. The instructions are basically the same as above (although you don’t need to get bitbake).

    git clone git://repo.or.cz/openembedded/mini2440.git openembedded

    Fill in the mini2440 example config and copy it to /conf/local.conf

    All the mini2440 specific files are already there 🙂

    Now:

    bitbake mini2440-image

    You can add packages to this by editing the recipes in /openembedded/recipes/images/mini2440-image.bb

    You might want to add ‘qt4-embedded’ here.

  2. @Doug
    Doug,

    I figured out why Will’s build worked and yours didnt. You and I were trying to use the 2009 stable branch and that doesnt have mini2440 specific recipes there. The main branch though seem to have integrated the mini2440 recipes. Since Will cloned the main branch he got all the recipes and mini2440 MACHINE description. I though didnt used the qt-embedded recipe because it seems that its using GPL licensing and I need LGPL. Thats why I extracted Qt/E seperately and just used the toolchain from build/cross area of OE build but I guess using the DEPEND in the mini2440 receipe to have qt4-embedded will be so much easier as it will create a complete image and no need to hack around using teh SDCard to get Qt/E on mini2440. Will see fi recipe can be made to accept LGPL license.

    Cheers
    Pankaj

  3. I used your instructions to bitbake an image for my micro2440. There were no jffs2 files or u-boot in my folder. is this normal or did something go wrong. I have a tar folder and two files name uImage-2.6.31+git-r0-micro2440.bin and uImage-micro2440.bin

    how do i generate u-boot and my file system(jffs2)..?

    1. You need to you change this line in your local.conf:
      IMAGE_FSTYPES += ” tar.bz2 ”
      to (if you only want jffs2):
      IMAGE_FSTYPES = “jffs2”
      Or you can specify multiple types in a white space separated list, like this:
      IMAGE_FSTYPES = “jffs2 tar.bz2”
      Please read the local.conf.sample in /stuff2/openembedded/conf for a full list of types.

      I haven’t actually built u-boot using open embedded, but if you’d like to use an alternate method please see this post.

  4. @mvofoana
    You can build u-boot using open embedded using the command:
    bitbake u-boot
    Which you should find in:
    /stuff2/angstrom-dev/deploy/glibc/images/mini2440
    Haven’t actually actually flashed this, so if you try let me know how you get on.

  5. Hi all,
    I’m a new to mini2440 and i was wanna to design a GUI using the WxWidget libs i’m use a Ubuntu Linux for x86 machine i wanna to design my GUI, then download this program to the mini2440 board,
    I asked the mini2440 board technical support and they said that we don’t support for the wxwidget , we support only the QT libs, but if you want to use the wxwidget try to use the OpenEmbedded
    So could anybody help me to a ccomplish this task,you can reply to this form or you can mail me to this mail eng_m_elsaidy@yahoo.com

    Thanks
    Mohamed Hamed

  6. Hi Mohamed,

    As far as i know you need X11 for WxWidgets but i’ve never used them myself. Openembedded is the answer and the source of most problems! I would create a bitbake recipe which inherits x11-image.bb and has wxwidgets included in it. Look in the recipes folder after you’ve git cloned OE. In there you’ll find wxwidgets and you can specify one of the recipes within.

    If that sounds like gibberish start by trying to bitbake x11-image after cloning the mini2440 OE repo, see here:

    http://cowboycoders.org/embedded/mini2440/bitbaking-the-kernel-angstrom-and-qt4-embedded-all-at-once/

    With the exception that you should bitbake x11-image instead of mini2440-image.

    Cheers,
    Doug

  7. Hello guys,

    I´ve made those procedures including baking with: bitbake console-image x11-image

    After a long time waiting i got all images and after i could boot inside my mini2440. I could not get X11 working.

    Angstrom boots on console login and when i try to run Xinit i got error messages for no display found. My mini2440 has an tft touch lcd for 7″.

    I tryed to export DISPLAY=localhost:0.0, loopbackip:0.0 and others but display error message keeps appearing, does any one has any idea why is this happening?

    Am I´m baking the correct image option (x11-image)?

    Thanks

    Charles

  8. Hello, i’ve trying to build a mini2440 image with gpe but im getting bunch of errors

    NOTE: Handling BitBake files: | (0456/7200) [ 6 %]ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc_git.bb
    NOTE: :EOL while scanning string literal (, line 1) while evaluating:
    ${@oe_filter_out(‘(-LS+|-lS+)’, ‘-Wl,-O1 ${TARGET_LINK_HASH_STYLE}’, d)}
    ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc_git.bb
    NOTE: Handling BitBake files: – (0497/7200) [ 6 %]ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc_0.9.30.3.bb
    NOTE: :EOL while scanning string literal (, line 1) while evaluating:
    ${@oe_filter_out(‘(-LS+|-lS+)’, ‘-Wl,-O1 ${TARGET_LINK_HASH_STYLE}’, d)}
    ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc_0.9.30.3.bb
    NOTE: Handling BitBake files: | (0954/7200) [13 %]ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc-initial_git.bb
    NOTE: :EOL while scanning string literal (, line 1) while evaluating:
    ${@oe_filter_out(‘(-LS+|-lS+)’, ‘-Wl,-O1 ${TARGET_LINK_HASH_STYLE}’, d)}
    ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc-initial_git.bb
    NOTE: Handling BitBake files: / (1179/7200) [16 %]ERROR: EOL while scanning string literal (DISTRO_UPDATE_ALTERNATIVES, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/tasks/task-boot.bb
    NOTE: :EOL while scanning string literal (DISTRO_UPDATE_ALTERNATIVES, line 1) while evaluating:
    ${@base_conditional(“ONLINE_PACKAGE_MANAGEMENT”, “none”, “”, “${PREFERRED_PROVIDER_virtual/update-alternatives}”, d)}
    NOTE: :EOL while scanning string literal (DISTRO_UPDATE_ALTERNATIVES, line 1) while evaluating:
    base-files base-passwd busybox ${@base_contains(“MACHINE_FEATURES”, “keyboard”, “keymaps”, “”, d)} modutils-initscripts netbase ${DISTRO_UPDATE_ALTERNATIVES} ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}
    ERROR: EOL while scanning string literal (DISTRO_UPDATE_ALTERNATIVES, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/tasks/task-boot.bb
    NOTE: Handling BitBake files: (1760/7200) [24 %]ERROR: list indices must be integers, not NoneType while parsing /home/alvaro/oe2/openembedded/recipes/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
    NOTE: :list indices must be integers, not NoneType while evaluating:
    http://projects.linuxtogo.org/frs/download.php/14/prismstumbler-0.7.4pre1.tar.gz file://gpsapi.patch ${@[”, ‘file://wireless.patch’][bb.data.getVar(‘PREFERRED_VERSION_linux-libc-headers’, d, 1) and bb.data.getVar(‘PREFERRED_VERSION_linux-libc-headers’, d, 1).split(‘.’)[2] < '30']} file://fix-includes.patch;striplevel=0 file://libgps-check.patch file://replace-gps_query.patch
    ERROR: list indices must be integers, not NoneType while parsing /home/alvaro/oe2/openembedded/recipes/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
    NOTE: Handling BitBake files: / (2167/7200) [30 %]ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc_0.9.31.bb
    NOTE: :EOL while scanning string literal (, line 1) while evaluating:
    ${@oe_filter_out(‘(-LS+|-lS+)’, ‘-Wl,-O1 ${TARGET_LINK_HASH_STYLE}’, d)}
    ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc_0.9.31.bb
    NOTE: Handling BitBake files: / (4221/7200) [58 %]ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc-initial_0.9.30.2.bb
    NOTE: :EOL while scanning string literal (, line 1) while evaluating:
    ${@oe_filter_out(‘(-LS+|-lS+)’, ‘-Wl,-O1 ${TARGET_LINK_HASH_STYLE}’, d)}
    ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc-initial_0.9.30.2.bb
    NOTE: Handling BitBake files: / (5565/7200) [77 %]ERROR: EOL while scanning string literal (FILESPATH, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/angstrom/angstrom-version.bb
    NOTE: :EOL while scanning string literal (FILESPATH, line 1) while evaluating:
    ${@’:’.join(uniq(os.path.normpath(os.path.join(fp, p, o)) for fp in ‘/home/alvaro/oe2/openembedded/recipes/angstrom’.split(‘:’) for p in ‘angstrom-version-1_${DISTRO_VERSION}-r6:angstrom-version-${DISTRO_VERSION}:angstrom-version:angstrom-version-${DISTRO_VERSION}:angstrom-version:files:.’.split(‘:’) for o in reversed([”] + filter(None, ‘pn-angstrom-version:fail-fast:build-linux:arm:linux:angstrom-2008.1:mini2440:local’.split(‘:’)))))}
    NOTE: :EOL while scanning string literal (FILESPATH, line 1) while evaluating:
    ${@patch_deps(d)}
    ERROR: EOL while scanning string literal (FILESPATH, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/angstrom/angstrom-version.bb
    NOTE: Handling BitBake files: (6346/7200) [88 %]ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc-initial_0.9.30.3.bb
    NOTE: :EOL while scanning string literal (, line 1) while evaluating:
    ${@oe_filter_out(‘(-LS+|-lS+)’, ‘-Wl,-O1 ${TARGET_LINK_HASH_STYLE}’, d)}
    ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc-initial_0.9.30.3.bb
    NOTE: Handling BitBake files: (6471/7200) [89 %]ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc_0.9.30.2.bb
    NOTE: :EOL while scanning string literal (, line 1) while evaluating:
    ${@oe_filter_out(‘(-LS+|-lS+)’, ‘-Wl,-O1 ${TARGET_LINK_HASH_STYLE}’, d)}
    ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc_0.9.30.2.bb
    NOTE: Handling BitBake files: | (6866/7200) [95 %]ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc-initial_0.9.31.bb
    NOTE: :EOL while scanning string literal (, line 1) while evaluating:
    ${@oe_filter_out(‘(-LS+|-lS+)’, ‘-Wl,-O1 ${TARGET_LINK_HASH_STYLE}’, d)}
    ERROR: EOL while scanning string literal (, line 1) while parsing /home/alvaro/oe2/openembedded/recipes/uclibc/uclibc-initial_0.9.31.bb
    NOTE: Handling BitBake files: (7189/7200) [99 %]Command execution failed: Traceback (most recent call last):
    File “/home/alvaro/oe2/bitbake/lib/bb/command.py”, line 85, in runAsyncCommand
    self.cooker.updateCache()
    File “/home/alvaro/oe2/bitbake/lib/bb/cooker.py”, line 829, in updateCache
    if not self.parser.parse_next():
    File “/home/alvaro/oe2/bitbake/lib/bb/cooker.py”, line 983, in parse_next
    def parse_next(self):
    File “/home/alvaro/oe2/bitbake/lib/bb/cooker.py”, line 1022, in parse_next
    raise ParsingErrorsFound
    ParsingErrorsFound

    I using ubuntu 9.10 tried diferent versions bitbake-1.8.18 bitbake-1.10.2 bitbake-1.12.0 with no luck

    Please give me some advice.

    Thanks

  9. Hi All,

    I am using Fedora 11, in virtualbox(inside ubuntu-11.04).

    bitbake version is (bitbake-1.10.2.tar.gz bitbake-1.8.16.tar.gz bitbake-1.12.0.tar.gz ) all are failed

    Giving below error:

    OTE: Handling BitBake files: (0304/7195) [ 4 %]ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/devimage-image.bb
    ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/devimage-image.bb
    NOTE: Handling BitBake files: (0318/7195) [ 4 %]ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/base-image.bb
    ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/base-image.bb
    NOTE: Handling BitBake files: (0341/7195) [ 4 %]ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/gpe-image-blank-user.bb
    ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/gpe-image-blank-user.bb
    NOTE: Handling BitBake files: / (0538/7195) [ 7 %]ERROR: EOL while scanning string literal (, line 1) while parsing /home/oe/OE/openembedded/recipes/uclibc/uclibc_0.9.30.3.bb
    NOTE: :EOL while scanning string literal (, line 1) while evaluating:
    ${@oe_filter_out(‘(-LS+|-lS+)’, ‘-Wl,-O1 ${TARGET_LINK_HASH_STYLE}’, d)}
    ERROR: EOL while scanning string literal (, line 1) while parsing /home/oe/OE/openembedded/recipes/uclibc/uclibc_0.9.30.3.bb
    NOTE: Handling BitBake files: (0554/7195) [ 7 %]ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/qt4e-demo-image.bb
    ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/qt4e-demo-image.bb
    NOTE: Handling BitBake files: (0573/7195) [ 7 %]ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/bootmanager-image.bb
    ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/bootmanager-image.bb
    NOTE: Handling BitBake files: – (0586/7195) [ 8 %]ERROR: list indices must be integers, not NoneType while parsing /home/oe/OE/openembedded/recipes/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
    NOTE: :list indices must be integers, not NoneType while evaluating:
    http://projects.linuxtogo.org/frs/download.php/14/prismstumbler-0.7.4pre1.tar.gz file://gpsapi.patch ${@[”, ‘file://wireless.patch’][bb.data.getVar(‘PREFERRED_VERSION_linux-libc-headers’, d, 1) and bb.data.getVar(‘PREFERRED_VERSION_linux-libc-headers’, d, 1).split(‘.’)[2] < '30']} file://fix-includes.patch;striplevel=0 file://libgps-check.patch file://replace-gps_query.patch
    ERROR: list indices must be integers, not NoneType while parsing /home/oe/OE/openembedded/recipes/prismstumbler/prismstumbler_0.7.3+0.7.4pre1.bb
    NOTE: Handling BitBake files: | (0678/7195) [ 9 %]ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/angstrom-systemd-image.bb
    ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/angstrom-systemd-image.bb
    NOTE: Handling BitBake files: – (0714/7195) [ 9 %]ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/x11-image.bb
    ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/x11-image.bb
    NOTE: Handling BitBake files: – (0803/7195) [11 %]ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/helloworld-image.bb
    ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/helloworld-image.bb
    NOTE: Handling BitBake files: / (0856/7195) [11 %]ERROR: Could not inherit file classes/rootfs_${IMAGE_PKGTYPE}.bbclass while parsing /home/oe/OE/openembedded/recipes/images/nas-server-

    It is ended with errors

    pls update it
    b.maheshwer@gmail.com

    1. Sounds like a misconfiguration. Have a look at your local.conf . Uncommenting INHERIT = “package_ipk”, or similar should get you on your way. If you trying to bake the current repo you are not in for an easy ride. I’d start with BusError’s original repo as OE has changed a lot since i last posted. Quick post on that coming up.

Leave a Reply

Your email address will not be published. Required fields are marked *