From Fedora Project Wiki

< User:Wwoods

Revision as of 17:12, 8 August 2011 by Wwoods (talk | contribs) (Add a bit of troubleshooting/testing info)

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://git.fedorahosted.org/git/lorax
 cd lorax
 git checkout treebuilder
 make
 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=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-16&arch=$basearch
repo --name=fedora --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f16&arch=$basearch
repo --name=fedora --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-testing-f16&arch=$basearch
 
# And an extra line in case you have some local changes
#repo --name=localrepo --baseurl=file:///srv/pungi/localrepo --cost=1

%packages
# core stuff that isn't in @base
kernel*
dracut*
# basic groups
@filesystems
@base-x
# size removals
-*-devel
-*-src
-*javadoc*
-xorg-x11-docs
-kernel-doc
-frysk
-*gcj*
-kde*
%end

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

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

#!/bin/bash
if [ $(getenforce) == Enforcing ]; then
    sudo setenforce 0
    echo "turning off SELinux enforcing"
fi
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

Important.png
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.

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.

Slow

Treebuilder is slower. The first culprit looks like dracut.

number execve
7606 /bin/egrep
2578 /bin/cp
1633 /lib64/ld-linux-x86-64.so.2
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/libc.so.6
18294 /usr/share
18184 /etc/ld.so.cache
18074 /etc/ld.so.preload
17213 /usr/bin/ldd
14471 /bin/egrep
9861 /usr/share/locale
9090 /var/log/dracut.log
9013 /dev/null
7529 /sbin/modprobe
6110 .