From Fedora Project Wiki
(Update "root=..." workarounds, remove "Slow" section)
(update kickstart a bit)
Line 28: Line 28:
 
   
 
   
 
  # ==== REPOS ====
 
  # ==== REPOS ====
 +
# pick one of rawhide or the current (branched) release
 +
#repo --name=rawhide --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=$basearch
 +
# -or-
 
  repo --name=fedora --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-16&arch=$basearch
 
  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 --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
 
  repo --name=updates-testing --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-testing-f16&arch=$basearch
 
    
 
    
Line 36: Line 39:
 
   
 
   
 
  %packages
 
  %packages
  # core stuff that isn't in @base
+
  # This is what ends up in the Packages dir and on the DVD.
  kernel*
+
  # It doesn't change the contents of the anaconda runtime.
dracut*
+
  # This is a very minimal package set because we only care about the images (boot.iso etc.)
  # basic groups
+
  @base
@filesystems
 
  @base-x
 
# size removals
 
-*-devel
 
-*-src
 
-*javadoc*
 
-xorg-x11-docs
 
-kernel-doc
 
-frysk
 
-*gcj*
 
-kde*
 
 
  %end
 
  %end
  

Revision as of 18:53, 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 ====
# pick one of rawhide or the current (branched) release
#repo --name=rawhide --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=$basearch
# -or-
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
# This is what ends up in the Packages dir and on the DVD.
# It doesn't change the contents of the anaconda runtime.
# This is a very minimal package set because we only care about the images (boot.iso etc.)
@base
%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.