From Fedora Project Wiki
(moving boot problem to discussion page)
Line 70: Line 70:
== Troubleshooting ==
== Troubleshooting ==
=== Boot problem ===
[2011-08-06 0000 UTC] Upon boot of DVD, then dracut drops to shell with the message:
  Warning: No root device "live:/dev/disk/by-label/Fedora" found.
The file is present as
  /dev/disk/by-label/Fedora 16 x86_64 DVD
with those three spaces.  Reboot with quoting (single, or double, or backslash) also fails.  Altering the boot parameter to
also fails [that name is in my /dev/disk/by-id].
[2011-08-06 1700 UTC] After modifying pungi so that the label of the DVD has dashes "Fedora-16-x86_64-DVD" and changing the boot command line to include the dashes "root=live:CDLABEL=Fedora-16-x86_64-DVD", then dracut still complains "No root device \"live:/dev/disk/by-label/Fedora-16-x86_64-DVD\" found".  The device is there, symlinked to ../../sr0 ==> /dev/sr0, and that is the correct name of the hardware drive.
[2011-08-07 0400 UTC] In the emergency shell after dracut cannot find the root, I can find it by:
  mkdir /mnt1 /mnt2 /mnt3
  mount -o ro,loop /dev/sr0 /mnt1
  mount -o ro,loop /mnt1/images/install.img /mnt2
  mount -o ro,loop /mnt2/LiveOS/rootfs.img /mnt3
but I cannot find how to specify that in a "root=live..." that dracut understands.  It's also a mystery why so many mounts are necessary.

=== Slow ===
=== Slow ===

Revision as of 16:53, 8 August 2011

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 "$@"




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 .