How To Build Custom Angstrom Build for BeagleBone with Ubuntu or Debian

This guide details the process of building a systemd image from the Angstrom source on a ubuntu or debian host.

For the steps below I have used Debian 6.0.4 via a net install

Install Debian 6.0.4 net install choosing only Standard system utilites

From root command prompt run

sudo apt-get install openssh-server

This will allow us to access the machine remotely via ssh

Following instructions on

Install the mandatory packages as root

sudo apt-get install sed wget cvs subversion git-core coreutils unzip texi2html texinfo docbook-utils gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ desktop-file-utils chrpath dosfstools kpartx

Logout as root and return to regular user

Following instructions on in the section down the bottom on “how to reproduce”

Run the following commands

git clone git://

EDIT: I had trouble with this line since I posted this so I have since been using “git clone”

cd setup-scripts
./ config beaglebone/

MACHINE=beaglebone ./ bitbake systemd-image

When the build completes the files of interest will be stored in.

cd ~/setup-scripts/build/tmp-angstrom_2010_x-eglibc/deploy/images/beaglebone/

Insert the BeagleBone SD Card into the debian host.

Run dmesg

you should see the last few lines look like this
[28915.028000] mmc0: new SDHC card at address 1234
[28915.675869] mmcblk0: mmc0:1234 SA04G 3.63 GiB
[28915.675912] mmcblk0: p1 p2
The above notes show that we have an SD card mounted at /dev/mmc/blk0

We now want to format the SD card using the script file here

First get the script on the debian host


Rename the file

mv mkcard.txt

Login as root


Make the file executable

chmod +x

Run the script to format the SD card

./ /dev/mmcblk0

If this is runs nicely then write the Angstrom image to the BeagleBone SD card using
Create a place to mount the new file systems

cd /mnt/

mkdir boot

mkdir Angstrom

Mount the File systems

mount -t vfat /dev/mmcblk0p1 /mnt/boot/

mount /dev/mmcblk0p2 /mnt/Angstrom/

Now using df -h we can see the file systems are mounted and empty

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 226G 9.3G 205G 5% /

tmpfs 1013M 0 1013M 0% /lib/init/rw

udev 1009M 212K 1009M 1% /dev

tmpfs 1013M 0 1013M 0% /dev/shm

/dev/mmcblk0p1 70M 512 70M 1% /mnt/boot

/dev/mmcblk0p2 3.6G 72M 3.3G 3% /mnt/Angstrom

Change directory back to the location of our build

cd /home/craig/setup-scripts/build/tmp-angstrom_2010_x-eglibc/deploy/images/beaglebone/

Copy the boot files to the first partition

cp u-boot.img /mnt/boot/

cp MLO /mnt/boot/

cp uImage-3.2-r5b+gitr09e9651bcf2ee8d86685f2a8075bc6557b1d3b91-beaglebone-20120311054152.bin /mnt/boot


Rename the uImage to just uImage

mv /mnt/boot/uImage-3.2-r5b+gitr09e9651bcf2ee8d86685f2a8075bc6557b1d3b91-beaglebone-20120311054152.bin /mnt/boot/uImage

Copy the root filesystem from the tarball we created earlier to the second partition

tar -xjv -C /mnt/Angstrom/ -f Angstrom-systemd-image-eglibc-ipk-v2012.03-core-beaglebone.rootfs.tar.bz2

Unmount the SD card

umount /mnt/boot

umount /mnt/Angstrom

Your SD card is now ready for booting.

Remove the SD card from the Debian host
Remove all cables from BeagleBone
Insert SD card into BeagleBone
Plug in Ethernet cable to BeagleBone
Plug in power adapter.

The LEDs on the BeagleBone should flash as the device is booting.

Once it has booted it should show up in your routers DHCP Client list with the hostname “beaglebone”

You should now have access to the BeagleBone via an SSH client.
Using the username “root” password “root”

To change the root password use the passwd command.

Now you have a systemd image running on your BeagleBone

18 thoughts on “How To Build Custom Angstrom Build for BeagleBone with Ubuntu or Debian

  1. Your post is really useful. I followed your instructions and successfully booted beaglebone. Thank you.
    Is there a way to get a later version of Linux using your instructions?
    Right now my version is:
    Linux beaglebone 3.2.11+ #1 Mon Mar 26 01:12:33 CDT 2012 armv7l GNU/Linux

    The instruction : git clone git://
    gave me the above version.

    I would like to get 3.2.25


  2. To create u-boot.img & MLO you need to execute following:
    MACHINE=beaglebone ./ bitbake u-boot
    To create angstrom tarball you need to execute following:
    MACHINE=beaglebone ./ bitbake console-image


  3. Very useful, but I have a question. If you want to change the config of your kernel filesystem to add a SPI driver (f.e.), How can I change the config file and recompile the kernel system files?


  4. I’m trying to follow this and get the following error when I run “MACHINE=beaglebone ./ bitbake systemd-image”… any idea how to fix it?…

    | ERROR: Function failed: Fetcher failure for URL: ‘’. Checksum mismatch!
    | File: ‘/home/jayk/ang/setup-scripts/sources/downloads/netbase_4.47.tar.gz’ has md5 checksum ecde675df5188038b3d5f6aae04e65aa when fcd87a62f177592724a8066e3774ae97 was expected
    | File: ‘/home/jayk/ang/setup-scripts/sources/downloads/netbase_4.47.tar.gz’ has sha256 checksum 94951e3c9bcd0df25d8a9898b1b6768c78aa8e1a71e5d51547ea74c3f3be37c7 when a7e6525c9a09b00eff3395d09739b3c70a18bff8d13f7daa21fdf81989387726 was expected
    NOTE: package netbase-4.47-r2: task do_fetch: Failed
    ERROR: Task 1373 (/home/jayk/ang/setup-scripts/sources/openembedded-core/meta/recipes-core/netbase/, do_fetch) failed with exit code ‘1’
    Waiting for 1 running tasks to finish:
    0: avahi-0.6.31-r2.0 do_package_write_ipk (pid 28723)
    NOTE: package avahi-0.6.31-r2.0: task do_package_write_ipk: Succeeded
    NOTE: Tasks Summary: Attempted 3026 tasks of which 3021 didn’t need to be rerun and 1 failed.

    Summary: 1 task failed:
    /home/jayk/ang/setup-scripts/sources/openembedded-core/meta/recipes-core/netbase/, do_fetch
    Summary: There were 4 WARNING messages shown.
    Summary: There was 1 ERROR message shown, returning a non-zero exit code.


  5. If you get an error when doing the about “apparently in use by the system; will not make a filesystem here”.

    Edit the script and just before the line:
    # now make partitions.

    Add this:
    # Fix for that mdsetup issue
    # URL:
    echo DMSETUP FIX
    /sbin/dmsetup status
    sleep 2
    /sbin/dmsetup remove_all
    sleep 2
    /sbin/dmsetup status
    sleep 2


  6. Hello, and thank you for this helpful article.
    All is fine until I run bitbake, I get the following error…

    ERROR: OE-core’s config sanity checker detected a potential misconfiguration.
    Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).
    Following is the list of potential problems / advisories:

    Failed to create a file with a long name in TMPDIR. Please use a filesystem that does not unreasonably limit filename length.
    Failed to create a file with a long name in SSTATE_DIR. Please use a filesystem that does not unreasonably limit filename length.

    ERROR: Execution of event handler ‘check_sanity_eventhandler’ failed

    any ideas?

    Thank you in advance 🙂


    1. Technosham,

      I am in the same boat you are. Unfortunately, we are using eCryptfs, which limits filename length. I’m not sure what the next move is? Re-partition? Modify sanity.conf to ignore the issue?

      If you have learned a solution, please share it.


      1. I was in the same situation like you. What I did was to move or install again in another place outside of the user account. In my case in another partition. Try moving poky directory or untar to /home.


  7. Hi,

    your post is really helpful, but I have one question.
    Is this installation only for ethernet connection? I need WiFi access to my Beagleboard…
    I have a liquidware kit which includes a Belkin USB wirelss adapter. The adapter was supposed to be fully compatible with the beagleboard but unfortunatelly it doesn’t seem to be, so I have to customize it.
    Any help would be appreciated!



  8. I followed the mentioned steps, but got the following error.

    NOTE: package glib-2.0-1_2.30.3-r1: task do_compile: Failed
    ERROR: Task 638 (/home/kaushik/workspace/setup-scripts/sources/openembedded-core/meta/recipes-core/glib-2.0/, do_compile) failed with exit code ‘1’
    Waiting for 1 running tasks to finish:
    0: libpam-1.1.5-r4 do_compile (pid 15814)
    NOTE: package libpam-1.1.5-r4: task do_compile: Succeeded
    NOTE: Tasks Summary: Attempted 1043 tasks of which 925 didn’t need to be rerun and 1 failed.

    Summary: 1 task failed:
    /home/kaushik/workspace/setup-scripts/sources/openembedded-core/meta/recipes-core/glib-2.0/, do_compile
    Summary: There were 4 WARNING messages shown.
    Summary: There was 1 ERROR message shown, returning a non-zero exit code.


    Can anyone suggest why is this error coming during build and how can it be resolved? I saw someone else has also posted similar problem.


  9. Hi,

    this blog had make my Beaglebone fly ! 🙂 Thanks a lot for the informations!

    One question:
    one can find the newest builds of the demo image, which is shipped with the Beaglbone’s SD-card.
    This demo images is currently based on Linux kernel 3.2.*28*
    But regardless what I am doing (for example following the instructions on the bottom of the page linked above…) my copy of the Angstrom distribution only builds
    Linux kernel 3.2.*23*…. five kernels ‘behind’…

    How can I get the same base as from what the demo images are build?
    Thank you very much for any help in advance!
    Best regards,


  10. This tutorial works fine with BeagleBone Black. However, it will not install the SD system to the embedded eMMC.
    To install it, I prepared a SD card as explained in this tuto after bitbaking a new Angström, because the PRU drivers seem not to work properly on demo image.
    Then, I repeat the process but this time I write directly on the eMMC. The eMMC device after booting on SD card was /dev/mmcblk1 for me.

    Hope this will help !


  11. Hi,
    I am using beaglebone black with 3.2 kernel. I can see the below information on “dmesg”

    [ 2.362609] mmc0: host does not support reading read-only switch. assuming write-enable.
    [ 2.375396] mmc0: new high speed SDHC card at address 1234
    [ 2.388824] mmcblk0: mmc0:1234 SA04G 3.63 GiB
    [ 2.395843] mmcblk0: p1 p2
    [ 2.423248] udevd[67]: starting version 175
    [ 2.497589] mmc1: new high speed MMC card at address 0001
    [ 2.510894] mmcblk1: mmc1:0001 MMC02G 1.78 GiB
    [ 2.538116] mmcblk1boot0: mmc1:0001 MMC02G partition 1 1.00 MiB
    [ 2.550994] mmcblk1boot1: mmc1:0001 MMC02G partition 2 1.00 MiB

    However, I can not use the mmcblk1 device (i.e. on board emmc with beaglebone black)! Not even issuing “sudo if=/dev/zero of=/dev/mmcblk1 bs=1024 count=1024” command. The command freezes all the time! Anyone knows why? or had experienced something simular? Any help would be much appreciated.


  12. Thanks a lot for this nice description! Will I use the same config for the beaglebone black, i.e.
    ./ config beaglebone
    or do I have to specify it differently?


  13. I absolutely love this game, and believe most anyone would enjoy it as well.
    Players have not declared victory, despite being defeated Natar tribe.
    The Magic Circle provides you with mana every hour.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s