Anaconda/Features/Lorax-TreeBuilder

Summary
Lorax is the python library used to build Anaconda installer images.

Treebuilder is the name of a new branch of Lorax which has some new features:
 * More powerful templating language
 * Nearly all of the image creation process rewritten as Lorax templates
 * Images are "Live" images, using dracut instead of loader to find the anaconda runtime
 * Better support for non-x86 architectures
 * Easier to maintain and update the image build process

Owner

 * Name: Will Woods (wwoods@redhat.com)

Current status

 * Targeted release: Fedora 17
 * Last updated: Aug 31, 2010
 * Percentage of completion: 80%

Detailed Description
The lorax image build process was much improved over the old 'buildinstall' scripts, but still difficult to understand in some places, and sometimes hard to modify or customize.

The treebuilder branch of lorax adds a new templating language that clarifies the process of building an anaconda runtime image (installing packages, setting up config files, trimming unnecessary files, building the runtime image, building bootable ISO images for x86, ppc, s390, sparc, EFI, etc.)

It also adds a python library and some extra tools for manipulating filesystem images.

The plan is to have Lorax be the canonical tool for building bootable images; this avoids having to maintain the strange tricks (special  incantations etc) needed to build proper bootable images in more than one place. In time it may replace Pungi and/or the LiveCD creation tools.

Benefit to Fedora

 * Release engineering would have the flexibility to tweak install image contents without depending on a new anaconda build.
 * Joint ownership of image building between installer team and rel-eng.
 * Anaconda releases are not so strictly tied to rel-eng schedules.
 * Improved testability (and thus improved reliability) of image build process

Scope
Currently, work is being done in the treebuilder branch of lorax. Soon we'll merge this into the master branch and begin using it to build images for Rawhide.

We'll need some fixes to Pungi to build viable DVD images.

Some work to Dracut will be needed to support various arguments / boot methods that were handled by loader in the past.

This will change the way the boot images are built and how the initramfs finds the anaconda runtime. Documentation changes may be necessary, especially on Anaconda/Options.

Test Plan
Produce installer images for testing with the usual install test plan(s).

To build images:

Check out the treebuilder branch of lorax:

git clone git://git.fedorahosted.org/lorax.git cd lorax git checkout treebuilder

User Experience
In case of trouble, there is now a shell in the first stage of anaconda bootup. This makes debugging easier.

The new image type will change the way some anaconda options are handled (since they are being handled by dracut rather than loader). Some boot arguments may change or be dropped.

Memory usage will be greatly reduced compared to F15.

Dependencies
As before, coordination with pungi will need to be handled so the transition to lorax is not problematic.

Contingency Plan
Continue using the existing rel-eng scripts that are part of the anaconda project.