From Fedora Project Wiki
 
(8 intermediate revisions by 2 users not shown)
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=fedora --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=fedora --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
    
    
  # And an extra line in case you have some local changes
  # And an extra line in case you have some local changes
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


Line 68: Line 60:
             -c /srv/pungi/anacondatest.ks -G -C -B "$@"
             -c /srv/pungi/anacondatest.ks -G -C -B "$@"


== Troubleshooting ==
== Testing / troubleshooting ==
  TODO.


=== Boot problem ===
{{admon/important|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.}}
[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
  root=ID=ata_SONY_DVD_RW_AW_G-170A
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.
=== Initial dialogs ===


[2011-08-07 0400 UTC] In the emergency shell after dracut cannot find the root, I can find it by:
The first two dialogs for language and keyboard are in VGA character-cell text-mode "graphics". This is being investigated.
  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 ===
=== Making a USB stick ===
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.
These are live images - use <code>livecd-iso-to-disk</code>.
{|
 
!count!!filename
=== Can't find root device when booting ISO image ===
|-
 
|1693845|| *
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).
|-
 
| 253387||$DESTDIR/yumroot/...
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>.
|-
|  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||.
|}

Latest revision as of 19:04, 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.

Initial dialogs

The first two dialogs for language and keyboard are in VGA character-cell text-mode "graphics". This is being investigated.

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.