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.
Launchpad Entry: livecd-creator
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.
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 with Ubiquity 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.
Carol carries around a LiveCD containing OpenOffice.org, Firefox, Pidgin, Rhythmbox, and her CD collection ripped to Ogg Vorbis. She uses this along with a USB drive at public terminals to safely browse the Internet and work on reports without the threat of keyloggers and trojan-infected machines.
- Trent works for the Infrastructure department of Delta Software. He creates custom LiveCD images and keeps several burned to CD-RW for the company's employees to use in case their hard drives fail or their operating systems get destroyed.
Adam creates a Network Security LiveCD from Ubuntu. Rather than host a whole LiveCD image, he places a LiveCD Compiled Image (see Design notes) up for download, which is only a few megabytes and allows end users to quickly create the LiveCD ISO.
Steve gets Adam's Network Security LiveCD and wants to update it to the latest tools, as it's from 2 releases ago. He reverse-compiles the LiveCD Compiled Image to a LiveCD Definition and updates it to use the latest repositories and software versions.
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. A LiveCD Compiled Image may optionally maintain only pointers to the files, useful if the files include data files like music or videos.
Need to avoid using mount at all, or use fuse-iso if you mount the ISO (only needed for remastering; creating from scratch can avoid this). Tools like Reconstructor need root access; Reconstructor itself is so poorly designed it suggests a directory in your home directory as a working directory, and creates tons of root-owned files you can't remove without sudo.
BoF agenda and discussion
From what I can tell, the developers are used to building LiveCDs; and once you've gotten used to the few steps involved, it's too easy to bother automating. The user base only has passive interest, and mostly in minor customization (a LiveCD with MP3 and Flash support). Mostly no one (myself included) simultaneously has the time, skill, and interest to implement this. It doesn't seem to solve a visible problem either, as LiveCD customization gives a passive whisper here and there but gets no significant publicity. --JohnMoser
The big question is, would a quick and easy way to create completely customized LiveCDs from scratch set Ubuntu apart from every other modern operating system? Would Apple suddenly implement some sort of "MacOSX Emergency Rescue" CD in case of "hard drive or system failure"? Would Microsoft scramble to bring WinPE to the general user base? Or would the whole thing just blow over? --JohnMoser
I've used Reconstructor. It's shoddy and pretty useless, unless you want to write "rmod" scripts and manual apt-get commands. I managed to remove Evolution and Ekiga with it, but it doesn't really let me pick packages I'd like through any kind of Synaptic-like interface (just what there's 'rmod' files for). UCK only advertises controlling the language pack, haven't tried it to see if there's more. --JohnMoser
As the developer/engineer behind the envisioned redesign of Reconstructor, we were planning to drop everything and start from scratch with a new design. But shortly after I joined the team, the leader and other developer both practically disappeared before work could really begin. So Reconstructor has a new terrific design that could achieve most of what is specified here, but is languishing under no supporting developers. -- Nuclear_Eclipse
Also note that these both modify existing LiveCDs, and I'm more interested functionally in a tool that creates them from scratch. Also note there was mention of using "definition" files and such, which could make it possible to ship a "LiveCD" by shipping the definition and letting the end user load it and have it built. Adding this to use cases. --JohnMoser
I tried with both of them to change the default language and keyboard at boot-time and didn't manage to make it work. In Belgium, we have 1 keayboard for the country but 3 official languages... --FrancoisSchoubben
I'm Fabrizio from the UCK team, I'd really like our team to collaborate, UCK has been nearly rewritten and could provide a good set of scripts for all remastering phases, with a modular design thus we would really like to fill the gap of bugs and missing features and you could focus on the GUI. That's what I already thought for reconstructor (I wrote something on my blog about that). Please contact me I'm very interested in this collaboration because we could create a great product joining our forces. FabrizioBalliano