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:
- The installer uses much less RAM and starts up much faster than it did in F15
- The initrd is a normal dracut image, so:
- There's a shell in
initrd.img
- No more maintaining the ancient, crusty
loader
codebase. yay!
- There's a shell in
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
- see http://sharkcz.livejournal.com/8649.html for detailed directions
- NOTE: you don't need a separate partition for this - just creating a directory named
/f16
will work OK
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 "$@"
Troubleshooting
TODO.
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 | . |