This guide is meant to quickly get you started building your own linaro arm images. Live Build runs natively on arm, pulling packages directly from the appropriate repositories. Builds take time, you'll want plenty of storage and a reasonable net connection. I do this on my Panda, Beagle Board Xm as well as original Beagle so you can too. Questions? or seek out tgall_foo on

Live Build

You can pull in the Linaro version of live-build from the linaro ppa:linaro-maintainers/tools or directly from the ubuntu archive. Both should work, however for arm images (which I'm interested in) I recommend the linaro version.

Live Build Setup

  • Either

sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get update
sudo apt-get install live-build


Live Build Config Part 1

Once you have live-build installed, you'll need a config. You'll want to put this somewhere you have plenty of disk space since your image building will occur there.

There are several configs already available at :

  • lp:~linaro-maintainers/linaro/live-helper.config.precise.nano
  • lp:~linaro-maintainers/linaro/live-helper.config.precise.alip
  • lp:~linaro-maintainers/linaro/live-helper.config.precise.developer
  • lp:~linaro-maintainers/linaro/live-helper.config.precise.ubuntu-desktop

If as part of your build, you want to output the results onto an SD as part of the build or create an SD image, you'll need to edit as found in the main directory of the configs outlined above. Add as appropriate from the following:

  • --lmc-board <board_name> -- name of the board you're working with

  • --lmc-mmc <device_name> -- device that your SD card can be found at. This option means as part of the build, the image is copied DIRECTLY to your sd card.

  • --lmc-hwpack <file_location/file_name> -- path and name of hwpack to be used.

  • --lmc-image-file <file_name> -- image file location/name that you want linaro-media-create to output. specify image-file OR mmc not both. image-file results in a dd-able image.

  • --lmc-image_size -- image size that should be used with image-file.


lb config \
        --archive-areas "main universe" \
        --bootstrap debootstrap \
        --bootstrap-flavour "$bootstrap_flavour" \
        --distribution "$distribution" \
        --mirror-bootstrap "" \
        --mirror-chroot "" \
        --mirror-chroot-security "" \
        --mirror-binary "" \
        --mirror-binary-security "" \
        --cache $cache \
        --cache-stages "bootstrap" \
        --initramfs "$initramfs" \
        --mode ubuntu \
        --keyring-packages "$keyring_packages" \
        --linux-flavours "$linux_flavours" \
        --tasks "$tasks" \
        --linux-packages linux \
        --security true \
        --packages "$packages" \
        --chroot-filesystem "none" \
        --binary-images "tar" \
        --binary-filesystem ext3 \
        --username linaro \
        --debian-installer-distribution "$distribution" \        
        --debian-installer-gui false \
        --hostname "$hostname" \
        --net-root-path "/srv/${hostname}-live" \
        --virtual-root-size 1500 

More indepth information on linaro-media-create can be found at

Seeds + Meta Packages

These next two steps, linaro.natty and Linaro-meta are optional.

You may want to modify the collection of packages that are installed as part of the build. This is a two step process.

linaro.precise & platform.precise

First download the seeds

  • bzr branch lp:linaro-seeds linaro.precise

  • bzr branch lp:~linaro-maintainers/linaro-seeds/platform.precise

cd into the linaro.precise directory and edit the seed that you're interested in. Remember that packages without parens ( ) around them are required packages and packages names with ( foomatic-package ) around them are recommended.

Seeds list the named packages you want in your image. Seeds can include other seeds.

You can test your seed with germinate. Best to run from the directory containing linaro.natty.

germinate -S file:///path-to-your-linaro.precise-dir/ -s linaro.precise -m -d precise,preise-updates -a armhf -c main,universe

If germinate indicates there are no issues, commit your change with bzr commit -m "your commit message about what you added"


Now we're going to create the meta package. The meta package is a .deb when installs causes all of the named packages to be installed.

First if you don't have it already obtain the latest linaro-meta package from the linaro-maintainers overlay PPA on launchpad.

Visit Click on the Linaro Overlay PPA. Click on view package details link which at the beginning of the package list, right. Click to expand Linaro-meta. Download the .dsc and the tar.gz file for linaro-meta.

untar/compress and then edit update.cfg. Look for the instance of "seed_base:" in the "[precise/bzr]" section. Change this to point to where you linaro.precise directory is located so something like: seed_base: file:///path-to-your-linaro.precise-dir/ then save and exit your editor.

Then run ./update.

Presuming there's no error messages you need to deal with, time to build the meta package.


Live Build Config Setup Part 2

Ok nearly there.

  • If there are .debs that you need to include in your build (such as the ones might have created in the optional Linaro-meta step) you'll put a copy of them into the chroot_local-packages directory.
  • If you would like to run a script to customize the image in some fashion, you can put that script into chroot_local-hooks. Be careful that any tools you might need will be part of the image install.

Run the script. (Feel free to look at it ahead of time and potentially change something, most things are fairly obvious) The script will create a config directory. You might want to check config/chroot_local-hooks as well config/chroot_local-packages to make sure they are populated.

Now you're ready.

lb clean --all; lb clean --cache; lb build

That's what you want to run. If the build falls over for some reason after you've fixed whatever it is that went ker-blewey, be sure to do both clean steps.

If the build succeeds, you'll end up with a binary-tar.tar.gz file. This is the file that linaro-media-create uses for image creation. If you didn't add linaro-media-create options as part of your live-build config, now is to use linaro-media-create by hand to create your image for your media. See

TomGall/LiveBuild (last edited 2012-06-19 14:12:21 by tom-gall)