Summary

This work allows corporate IT users to:

Release Note

We now offer a simple command-line tool to build customised Ubuntu installation images, suitable for use in corporate environments.

Rationale

Building customised images of Ubuntu is possible right now, but it involves a lot of reading and generally is complicated enough that many people who would like to do so see this as a barrier. We would like to lower this barrier.

User stories

Assumptions

Design

We will offer a straightforward way to build a repository with any additional packages that are required (perhaps backports, PPA packages, packages otherwise not in the standard Ubuntu repositories for whatever reason, local builds, etc.). This will probably just wrap up existing technology.

There will be a special-purpose easy way to create a metapackage referring to all the top-level packages needed by the organisation.

Preseeding will be used to add the internal repository to /etc/apt/sources.list, to configure automatic upgrades, and optionally to configure home directory encryption (via ecryptfs).

We will advise that configuration changes should normally be made by changing packages (and will document the process for doing so), but in some cases it may instead be appropriate to permit manually editing configuration files in the live image.

Implementation

Existing software

The normal cdimage toolset we use to build official Ubuntu images is probably too complicated to set up here, but is by and large overkill for this purpose anyway. Most of the hard work it does involves building an apt archive on the CD, and with a customised image this is unnecessary.

livecd-rootfs, which we use to build official Ubuntu live filesystems, is reasonably straightforward to run on a user machine. It is currently fairly specific to Ubuntu and its known derivatives, so it needs to have some more customisation facilities added to it: in particular it needs to be able to take a custom package list on its command line.

There are several suitable packages for managing local repositories, and there is clearly no need to invent another; reprepro seems to be a likely candidate.

New software

To start with, we will offer a simple command-line toolset, using a single top-level command with subcommands. We expect that a graphical interface may be added later if time permits.

The initial command set will be similar to the following:

init
set up a configuration directory and a local repository
add-distribution

add a distribution (e.g. karmic) to the archive

remove-distribution
remove a distribution from the archive
add-package

add packages (.changes files) to the archive

remove-package
remove packages from the archive
add-metapackage
build a metapackage depending on a given list of packages, and add it to the archive
configure-image
create or edit configuration for an image
build-image
build a live CD image for a distribution
edit-image
unpack an image, chroot into it, let the operator edit it, and save the result as a new image

Test/Demo Plan

It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to http://testcases.qa.ubuntu.com/Coverage/NewFeatures for tracking test coverage.

This need not be added or completed until the specification is nearing beta.

Future work

It might make sense to rewrite livecd-rootfs in Python (it is currently written in shell) for better extensibility; or perhaps we should switch Ubuntu to live-helper. I think it is important that the software used for building customised images shares as much with the software used for building official Ubuntu images as possible, since that offers maximum probability of fixing common bugs in both rather than just in one.


CategorySpec

FoundationsTeam/Specs/KarmicGoldenIsoImage (last edited 2009-06-17 13:26:41 by cjwatson)