From Fedora Project Wiki
 
(9 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 ===
  
=== Slow ===
+
The first two dialogs for language and keyboard are in VGA character-cell text-mode "graphics". This is being investigated.
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.
+
=== Making a USB stick ===
{|
+
 
!count!!filename
+
These are live images - use <code>livecd-iso-to-disk</code>.
|-
+
 
|1693845|| *
+
=== Can't find root device when booting ISO image ===
|-
+
 
| 253387||$DESTDIR/yumroot/...
+
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).
|-
+
 
|  79977||$DESTDIR/installroot/...
+
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>.
|-
 
|  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.