For the last few months I have working in an environment which has required
me to create Angstrom linux images for use on the Beaglebone Black. This
post documents the procedure I have used to create a basic starting
Angstrom Linux image on an SD-card.
I imagine this will be useful for those who prefer to use a source-based
linux distribution on the Beaglebone white and black, targeting embedded
use.
If you intend using the Beaglebone as a miniature, low-cost, arm personal
computer it might be more convenient to stick with one of the many binary
distributions, such as arch, emdebian, etc ...
*Angstrom Master Build*
Master Branch: v2013.06-yocto1.4
This guide details the process of building a Angstrom linux console image
from source on an Xubuntu 12.04.3 32-bit Linux host. Your computer must be
connected to the Internet. The build will take a number of hours and more
than 600 MB of data and source code will be downloaded.
The angstrom console image includes boot loader components, compressed
kernel image, device tree and overlays, device drivers, udev, systemd,
connman, ofono, ppp, busybox and some package management tools. It is a
good starting point to evaluate Angstrom linux for use in embedded systems.
*Prerequisites*
We need some host development tools:
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
/bin/sh (ls -l /bin/sh) is symbolically linked to dash. "dash" is a POSIX
compliant shell that is much smaller than "bash". Some broken shell scripts
still make use of bash extensions while calling into /bin/sh. To work
around this issue call "sudo dpkg-reconfigure dash" and select No when it
asks you to install dash as /bin/sh.
*Download Angstrom Distribution and Build*
To download the master branch of the distribution and configure for the
beaglebone (both white and black) , enter the following commands:
cd ~/Projects (*or your preferred directory*)
mkdir Angstrom
cd ./Angstrom
git clone git://github.com/Angstrom-distribution/setup-scripts.git
cd setup-scripts
MACHINE=beaglebone ./oebb.sh config beaglebone
And to compile the console image:
. ./environment-angstrom-v2013.06
bitbake console-image
The previous command creates the root file system archive, modules, kernel
and boot files in the deployment directory
(~/Projects/Angstrom/setup-scripts/deploy/eglibc/images/beaglebone):
Angstrom-console-image-eglibc-ipk-v2013.06-beaglebone.rootfs.tar.gz (*the
root filesystem*)
Angstrom-console-image-eglibc-ipk-v2013.06-beaglebone.rootfs.tar.xz (*the
root filesystem*)
MLO-beaglebone-2014.01
(*first stage of the boot loader*)
modules--3.8.13-r23z.2-beaglebone-20140116020947.tgz
(*device
modules; the exact filename is dependent upon date*)
u-boot-beaglebone-2014.01-r0.img
(*second stage of the boot loader*)
zImage--3.8.13-r23z.2-beaglebone-20140116020947.bin
(*compressed
kernel image; the exact filename is dependent upon date*)
*SD Card Creation*
Installing on SD card.
Use the gnome disk utility application to create the partitions on a blank
micro SD card and mount them.
Create DOS Partition with following:
Size: 4.000 MB
Type: FAT
Name: boot
Then edit the DOS partition with the following:
Partition Label:
Type: W95 FAT32 (LBA) (0x0c)
Bootable: Check this tickbox
Create a Linux partition to fill the rest of the SD card:
Size: 7.880 GB (for my 8 GB card)
Type: Ext4
Name:
rootfs~/Projects/Angstrom/setup-scripts/deploy/eglibc/images/beaglebone
Take Ownership of filesystem: Not checked
Encrypt underlying device: Not checked
Mount both partitions. The dos partition will be mounted at /media/boot and
the Linux partition will be mounted at /media/rootfs
Copy the Angstrom distribution files to the SD card:
cd ~/Projects/Angstrom/setup-scripts/deploy/eglibc/images/beaglebone
cp MLO-beaglebone-2014.01 /media/boot/MLO
cp u-boot-beaglebone-2014.01-r0.img /media/boot/u-boot.img
sudo tar zxv -C /media/rootfs -f
Angstrom-console-image-eglibc-ipk-v2013.06-beaglebone.rootfs.tar.gz
sudo tar zxv -C /media/rootfs -f
modules--3.8.13-r23z.2-beaglebone-20140116020947.tgz
The SD card now is ready for the Beaglebone. Unmount the partitions.
Of course it is possible to write a script to duplicate this procedure, if
you want it.
*Booting Beagle*
When you power up the Beaglebone Black with the new SD card inserted, make
sure you are holding down the boot switch for the first second or so. This
ensure the boot loader components on the SD card are loaded and run in
preference to the eMMC.
Make sure when the system boots for the first time to run:
depmod -a
*A few comments*
Unless there is a specific requirement, there is no need to include the
kernel image or compiled device tree in the dos boot partition. The second
stage of the boot loader u-boot.img will attempt to load the compressed
kernel image from the boot directory in the ext4 partition. Also, I have no
current need for a uEnv.txt file.
It is possible to include development tools in the image by modifying some
of the image recipe files. I prefer to keep Angstrom as a source based
distribution and not download binary packages.
There is quite a bit of on-going development with Angstrom and the
underlying Yocto build system. Hopefully these changes will be available
for use on the Beaglebone soon. The sample yocto project for Beaglebone is
already using Kernel version 3.12. It is surprisingly functional.
An alternative is to use Yocto to create your own embedded linux
distribution for the Beaglebone.
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.