Revision 2 as of 2007-05-07 06:12:11

Clear message

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.


This spec proposes a set of tools and graphical user interface to create and maintain custom Ubuntu LiveCDs.


Currently we do not have an acceptable way for end users to create Ubuntu LiveCDs. LiveCD customization based on the existing Ubuntu LiveCD requires a user capable of installing Gentoo or LFS for the first time using only online resources; many users either do not have the skill level or the interest to put that much effort into creating a custom LiveCD.

Use Cases

There are several.

  • The Ubuntu development team should use the proposed LiveCD creation tools to create the official LiveCDs; if they don't, then the tools obviously do not carry the appropriate level of robustness for their task.
  • Alice wants to create a LiveCD from Ubuntu containing Thunderbird instead of Evolution.
  • Bob wants to custom configure the default Ubuntu installation. He configures a LiveCD as needed with custom programs and a default configuration, and also includes the Ubiquity installer.
  • Eve wants to slipstream the latest security updates and bugfixes directly into the current LTS release. She builds herself a fresh LiveCD based on the official Ubuntu LiveCD template.
  • Smith wants to create a programming course for his students to study from. He guts Ubuntu and adds a load of programming tools to a new LiveCD.


Our scope includes all manner of LiveCD creation. LiveCD tools should provide a robust enough environment for the Ubuntu developers to generate the official CDs from them. Required functionality includes:

  • Creating LiveCDs based on templates, such as "bare minimum" installing ubuntu-minimal
    • Selects repositories
    • Selects default packages
  • Adjusting the packages on the LiveCD by adding or removing through a Synaptic-like interface
  • Adding files directly to the LiveCD just before finalizing
  • Modifying the default X11 environment
    • Execute a GNOME, KDE, or XFCE log-in in Xnest
    • Save the home directory as the /etc/skel

  • Saving and updating LiveCD templates
    • Save the package list, /etc/skel, and additional files

    • Update by adjusting repositories and performing upgrades or dist-upgrades
  • Adding the Ubiquity installer


The LiveCD Creator should use a set of Python or bash command line tools. It should create LiveCDs completely from scratch, rather than remaster existing LiveCDs.

The LiveCD creator should supply a graphical user interface that integrates with the command line tools or, optimally, a set of back-end libraries. This interface will allow non-technical users to create LiveCDs.

The LiveCD creator should separate the task of building a LiveCD Definition; constructing a LiveCD Compiled Image; and creating a LiveCD:

  • LiveCD Definition: A file listing packages, repositories, the path to an /etc/skel directory, and paths to extra files to include.

  • LiveCD Compiled Image: An archive compiled from a LiveCD Definition, containing versions of packages, a tarball of the /etc/skel directory, and a tarball of the extra files to overlay onto the final LiveCD. A LiveCD Compiled Image always builds a LiveCD containing the exact same files.

  • LiveCD: A bootable CD, DVD, or USB drive image.

Recompiling a LiveCD Definition can resync the repositories and roll out updates into the new LiveCD Compiled Image. You can feasibly decompile a LiveCD Compiled Image into a LiveCD Definition, as it contains the same information but has also selected specific versions of packages and rolled the /etc/skel directory and additional files into tarballs to overlay the final file system tree.


Outstanding Issues

BoF agenda and discussion