From Fedora Project Wiki
(Update "root=..." workarounds, remove "Slow" section)
Line 90: Line 90:
=== Can't find root device when booting ISO image ===
=== Can't find root device when booting ISO image ===


Try changing the <code>root=</code> argument to <code>root=live:/dev/sr0</code>.
Currently (Sep. 9) the DVD images lack a proper <code>root=</code> argument in their bootloader config. Change the <code>root=</code> argument to <code>root=live:/dev/sr0</code> (or add it if it doesn't exist).


=== Slow ===
On Power Mac systems, the CD driver is too old for udev to be able to handle setting up the <code>/dev/disk/by-label</code> links, so booting will fail. As a workaround, try <code>root=live:/dev/hda</code>.
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||.
|}

Revision as of 18:24, 9 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://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=updates --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f16&arch=$basearch
repo --name=updates-testing --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.

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.

Initial dialogs

The first two dialogs for language and keyboard are in VGA character-cell text-mode "graphics". As far back as F13 or so these have been in X11 graphics.

$HOME ?

During install from boot.iso DVD, then /mnt/sysimage has a "home/<<me>>" directory which contains a copy of my user $HOME at the time I ran pungi, even though I ran pungi within "su; cd" which set $CWD to /root.

Making a USB stick

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

Can't find root device when booting ISO image

Currently (Sep. 9) the DVD images lack a proper root= argument in their bootloader config. Change the root= argument to root=live:/dev/sr0 (or add it if it doesn't exist).

On Power Mac systems, the CD driver is too old for udev to be able to handle setting up the /dev/disk/by-label links, so booting will fail. As a workaround, try root=live:/dev/hda.