ALIP is a small distribution used for bringing up ARM boards both by ARM internally and by various customers. It has previously been generated from upstream sources, but this version is being generated using linaro tools from Ubuntu upstream packages. It is intended to be rebuildable from scratch in order to make optimisation for different flavours easy. The emphasis is on small size, rebuildability, cross-buildability and enough packages to usefully excercise a new board, including graphics and media.
As ARM is part of the Linaro collective effort it doesn't really make sense to continue to maintain its own distribution. However Debian/Ubuntu, being native-built, maximal, binary distros, are not ideally suited as a base for a minimal, bootstrappable and cross-buildable distro. Nevertheless they do provide a very wide range of software, and for a realistic concept of 'small/minimal' should be able to bootstrap themselves and cross-build properly.
It might be easier to use something like Yocto/Epenembedded/OpenWRT/Buildroot to produce these images, but that would not give the range of software or consistency that comes from building from Ubuntu/Debian. Making Ubuntu/Debian more useful in this area is a widely useful goal, so it is worth taking this route for long-term gain and alignment with other Linaro activities.
This spec concerns itself with the remaining work necessary to make that a reality.
A developer has a soft-model for a new CPU/SoC. They want to test it with a real Linux image. Models run quite slowly so a fairly simple/small system is needed - command-line only.
A developer has an FPGA image for a CPU/SoC. They want to test-boot it with a real image. FPGAs have very limited memory as well as being very slow so a really small image is needed. Ideally much smaller than the existing ALIP - preferably just kernel+busybox initramfs. See https://blueprints.launchpad.net/ubuntu/+spec/linaro-platforms-o-nano-image-user-stories
A developer has just recieved a new dev board which is not supported by Linaro hardwaqe packs yet. He can download the ALIP image, build himself a kernel and quickly get started testing the capabilities of the new hardware. The base image contains say a GUI browser and GTK example app for demonstrating that 'it works'. Because the rootfs is Ubuntu-based he has access to a large archive of software that is trivially installable for further testing. Ideally this image should be <100Mb uncompressed.
A developer has a new CPU/SoC and wishes to run an optimised image on it in order to run benchmarks. The standard Ubuntu build is not suitable. She needs to be easily able to rebuild the package set and image for the appropriate flavour. This requires a suitable toolchain and tools to do a bootstrap cross-build of the packages needed for the image.
Rebuilds within an ABI are supported (i.e. flavours), but not (in general) new ABIs. Rebuilt packages may not be compatible with standard distro packages and they should not generally be mixed. It should work OK if the new hardware supports the functionality of the standard build, plus 'extra stuff' (i.e new instructions). Nothing in the system will magically prevent a mixed installation of say v7 and v5 packages on one machine, which would fail to work on a v5 machines.
Only a fairly small subset of the archive is supported for use in ALIP images - i.e a fairly small set of maybe 200 packages is expected to cross-build and bootstrap correctly.
Investigations are needed into smaller-image technologies such as
- Turning on apt's 'separate long description' option
- Turning off recommends
- Making a system with a busybox base instead of a GNU utils base
- Language stripping
- Install-time package filtering
Work is needed on
- Remaining cross-building issues (e.g. gobject introspection). Document methods!
- Package selection for minimal image size but useful functionality
- Reduced dependency-explosion (allow a system without qt4-x11)
- Ensure that image creation tool sets apt config to give modified (locally-fettled) sources
- Cyclic dependency removal in included packages
- A bootstraping tool which automates bootstrap builds, and possibly flavoured toolchain builds
There are many, and diffuse, tasks here. We will start with something achievable in the time available: A fully-cross-buildable distro/image containing useful demo packages that is not excessive in size.
Once that is working we will try to make it bootstrapable so that flavours can be produced without unreasonable effort.
Many packages need cross-building changes upstreaming, and cross-metadata adding in the form of 'multiarchification'+ build-dep exception listing.
The existing ALIP packge set of 150 packages now all cross-build from ppearse archive (using xdeb).
A bootstraping tool is needed, possibly based on xdeb code.
Follow the wiki instructions to build an ALIP package set and image. Install it to a board and boot it.
Should we provide alternate flavoured builds for common cases (e.g v5 softfp, v6 softfp?)
BoF agenda and discussion
Notes from LDS here: http://summit.ubuntu.com/uds-o/meeting/linaro-platforms-o-alip-user-stories/
Platform/DevPlatform/Specs/LinaroALIP-mini-distro (last modified 2011-05-23 02:40:21)