Creating ARM Development Board Images

This document aims to provide the basic steps for creating Linaro disk images for use on ARM's development boards.

Linaro releases are available at http://releases.linaro.org/. This contains directories numbered for each monthly release, e.g. 12.06, as well as a directory for the latest builds. It also contains links to image installation instructions for Android and Ubuntu. These links should be considered the definitive set of instructions for building Linaro images, and will provide additional methods not covered in this document.

Pre-built Images

Android now has a pre-built disk image for Versatile Express with an A9x4, A15x2 or A5x2 CoreTile, to get this, see the latest release page.

Environment

To make your own disk images you will need a PC or virtual machine running the latest Ubuntu (the previous version should also be OK).

The additional tools required are in the Linaro tools PPA, this can be added to your system with:

sudo add-apt-repository ppa:linaro-maintainers/tools

The tools can now be installed with:

sudo apt-get update
sudo apt-get install linaro-image-tools

When trying out a new release it is important to make sure you have the latest tools; so even if you already have the tools installed, re-run the above update and install commands.

Android Images

Download

Android images are stored in the android/images directory of a release, e.g. http://releases.linaro.org/12.06/android/images/vexpress-ics-gcc47-armlt-tracking-open/. Within this are directories for each board, those for ARM's development boards are:

vexpress-ics-gcc47-armlt-tracking-open

Versatile Express with an A9x4, A15x2 or A5x2 CoreTile.

From here, you will need to download the three tar.bz2 files called boot, system and userdata.

Build Image

Once you have downloaded the relevant image files you can create a disk image on an SD card which can then be used to boot your board. This is done with a command of the form:

linaro-android-media-create --system system.tar.bz2 --userdata userdata.tar.bz2 \
                            --boot boot.tar.bz2 --dev $BOARD --mmc $DISK

Where

Ubuntu Images

Ubuntu images are constructed from two separate parts: a root filesystem image containing the board independent parts and a hardware pack (hwpack) which contains the board specific components like the kernel and bootloader.

The different image types are:

nano

A minimalist image with just enough to boot to a shell and install additional packages.

developer

An image containing many of the standard tools a developer needs.

alip

ARM Linux Internet Platform (ALIP).

ubuntu-desktop

A full Ubuntu desktop.

The hardware packs for ARM's development boards are:

hwpack_linaro-vexpress_*

Versatile Express with A9x4 CoreTile (Other CoreTiles soon to be supported)

Download

Ubuntu images are stored in the ubuntu directory of a release, under the directory called <codename>-images, where <codename> is the Ubuntu release codename, (currently 'precise', next 'quantal'). E.g. http://releases.linaro.org/12.06/ubuntu/precise-images/.

Within this there are directories for each image type, e.g. nano, developer, etc. These contain file for the actual image, named linaro-*.tar.gz, and also the hardware packs, named hwpack_linaro-*.tar.gz. Note, the hardware packs in the different image directories are the same, they are just copied for convenience.

So, for example, in Linaro release 12.06, the developer image is http://releases.linaro.org/12.06/ubuntu/precise-images/developer/linaro-precise-developer-20120626-213.tar.gz and the hardware pack for a Versatile Express is http://releases.linaro.org/12.06/ubuntu/precise-images/developer/hwpack_linaro-vexpress_20120627-132_armhf_supported.tar.gz

Build Image

Once you have downloaded the image and hardware pack filesyou can create a disk image on an SD card which can then be used to boot your board. This is done with a command of the form:

sudo linaro-media-create --binary $IMAGE --hwpack $HWPACK --dev $BOARD --rootfs ext4 --mmc $DISK

Where

  • $IMAGE is the name of the downloaded image file, e.g. the nano image.

  • $HWPACK is the name of the downloaded hardware pack.

  • $BOARD is the board name, e.g. vexpress-a9. See Board Names.

  • $DISK is the device name of the SD card to hold the disk image, e.g. /dev/mmcblk0. See Determining an SD Card Device Name

When making an image, you will get a warning like "WARNING: The following packages cannot be authenticated!", this is normal and can be silenced by adding the command line option --hwpack-force-yes.

Board Names

The board names used for ARM's development boards are:

vexpress-a9

Versatile Express with A9x4 CoreTile

vexpress

Versatile Express with any CoreTile (Android only)

Determining an SD Card Device Name

To determine the device name for an SD card, remove then reinsert the card, and run the command

dmesg

You should see something like:

[42335.758962] mmc0: new SDHC card at address e624
[42335.759227] mmcblk0: mmc0:e624 SU04G 3.69 GiB
[42335.759493]  mmcblk0: p1 p2 p3 p4 < p5 p6 >

In this example, the name will be /dev/mmcblk0.

Or for a SD card in a USB card reader, something like:

[24244.023230] scsi 6:0:0:0: Direct-Access     Multiple Card  Reader     1.00 PQ: 0 ANSI: 0
[24244.024917] sd 6:0:0:0: Attached scsi generic sg2 type 0
[24244.626192] sd 6:0:0:0: [sdb] 7744512 512-byte logical blocks: (3.96 GB/3.69 GiB)
[24244.627016] sd 6:0:0:0: [sdb] Write Protect is off
[24244.627026] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00
[24244.627032] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[24244.629508] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[24244.647211]  sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 >

In this case, the name will be /dev/sdb.


CategoryHowTo

ARM/CreatingLinaroDiskImages (last modified 2012-07-23 17:01:02)