From Fedora Project Wiki

What's treebuilder?

Treebuilder is the new branch of Lorax which builds Anaconda images that boot like regular Live images. The advantages of this approach are:

  1. The installer uses much less RAM and starts up much faster than it did in F15
  2. The initrd is a normal dracut image, so:
    • There's a shell in initrd.img
    • No more maintaining the ancient, crusty loader codebase. yay!
  3. initrd.img is under 20MB, so PPC systems can netboot it

How do I get started?

1. set up an F16 chroot

  • this is optional for x86 systems but required for ppc

2. yum install pungi fedora-kickstarts (inside the chroot if you're doing that)

3. Install a copy of the treebuilder branch:

 git clone git://
 cd lorax
 git checkout treebuilder
 sudo make install

4. Grab a kickstart You can use fedora-install-fedora.ks from the fedora-kickstarts package, or you can use this minimized version if you're not going to build full DVD images:

# Minimal Fedora kickstart - basically just for testing anaconda

# ==== REPOS ====
repo --name=fedora --mirrorlist=$basearch
repo --name=fedora --mirrorlist=$basearch
repo --name=fedora --mirrorlist=$basearch
# And an extra line in case you have some local changes
#repo --name=localrepo --baseurl=file:///srv/pungi/localrepo --cost=1

# core stuff that isn't in @base
# basic groups
# size removals

Save that as /srv/pungi/anacondatest.ks.

5. Run pungi Here's the script I use:

if [ $(getenforce) == Enforcing ]; then
    sudo setenforce 0
    echo "turning off SELinux enforcing"
echo "removing /srv/pungi/test, one moment..."
sudo rm -rf /srv/pungi/test
sudo pungi --nosource --nodebuginfo --destdir=/srv/pungi/test
           -c /srv/pungi/anacondatest.ks -G -C -B "$@"

Testing / troubleshooting

Treebuilder images are Live images
The treebuilder-style images are live images, just like the normal Fedora LiveCD. So the runtime image (root filesystem) is an ext4 image, inside a squashfs image, inside an iso image. It's complicated, but that's how live images work.

Where are the .rpm packages?

OK, I've grokked the output format, which I see in $DESTDIR/os/images/boot.iso instead of $DESTDIR/iso/Fedora-16-x86_64-DVD.iso. (The descriptive filename and volume label of pungi come in handy, although spaces in the volume label cause trouble on the boot command line.) After burning boot.iso then the DVD does boot. But I see no *.rpm packages anywhere for anaconda to install, even after "offline" mounting all the layers of boot.iso. A related symptom is that my former .iso created by pungi was 2.3GB (my .ks is a full release DVD, except I omit all @Languages), while boot.iso is only 149MB. Squashfs on an entire filesystem might have a better compression ratio than on individual files, but I'm not ready to believe a factor of 15.

Making a USB stick

These are live images - use livecd-iso-to-disk.

Can't find root device when booting ISO image

Try changing the root= argument to root=live:/dev/sr0.


Treebuilder is slower. The first culprit looks like dracut.

number execve
7606 /bin/egrep
2578 /bin/cp
1633 /lib64/
1434 /usr/bin/ldd
1413 /bin/ln
1303 /usr/local/bin/ln
1303 /usr/bin/ln
1087 /sbin/modinfo

The second culprit is not honoring $TMPDIR, and not putting yumroot-$PID and installroot-$PID inside it.

count filename
1693845 *
253387 $DESTDIR/yumroot/...
79977 $DESTDIR/installroot/...
44486 /etc/xattr.conf
41713 /proc/self/task/31818/attr/fscreate
25919 /proc/self/task/1070/attr/fscreate
20220 /usr
19487 /etc/localtime
18485 /lib64/
18294 /usr/share
18184 /etc/
18074 /etc/
17213 /usr/bin/ldd
14471 /bin/egrep
9861 /usr/share/locale
9090 /var/log/dracut.log
9013 /dev/null
7529 /sbin/modprobe
6110 .