Yaboot  -- PowerPC GNU/Linux OpenFirmware bootloader
-------------------------------------------------------------------

Please read the "COPYING" file for licence informations.

-------------------------------------------------------------------

Yaboot is an OpenFirmware bootloader for Open Firmware based
machines. It is known to work on "NewWorld" class powermacs (iMac and
all machines released after it), RS/6000, and possibly other OF based
CHRP machines. "OldWorld" PowerMacs (with the built-in MacOS ROM)
are not supported.

This README serves as a quick-start introduction to yaboot and its
installation utilities. For a more complete usage and installation
guide, see yaboot-howto.html/index.en.html in the same folder where
this README is located, or else inside the doc folder in this
directory. For documentation about all the options available, see the
man pages (bootstrap, yaboot, yaboot.conf, ybin, mkofboot, ofpath,
yabootconfig).

Mailing lists
-------------------------------------------------------------------
The following mailing lists exist for yaboot:

yaboot-announce   Announcements regarding yaboot (read-only)
yaboot-users      User related questions/discussion regarding yaboot
yaboot-devel      Technical and development discussion regarding yaboot

Please see http://lists.penguinppc.org/LISTNAME where LISTNAME is one
of the above named lists.

-------------------------------------------------------------------
Bootloader Installation Utilities  
ybin, mkofboot, ofpath, yabootconfig
Written by Ethan Benson <erbenson@alaska.net>
-------------------------------------------------------------------

ybin (YaBoot INstaller) and mkofboot
-------------------------------------------------------------------

ybin is a lilo/quik style bootloader installer for PowerPC based
machines which require a bootstrap partition rather than a traditional
bootblock (i.e. all `NewWorld' Macintoshes). When ybin is configured
correctly you can simply type ybin at the command line as root, and
the bootloader and its configuration file will be installed or updated
on the bootstrap partition without any further user intervention.

ybin also supports IBM PowerPC hardware which requires a slightly different
bootstrap partition setup. For these machines, ybin uses dd to write yaboot
directly to the partition instead of copying it to a filesystem on the
partition. ybin will add the requisite .note section to yaboot prior to
installation (IBM CHRP only).

mkofboot is a companion script (actually a symlink to ybin) which
initializes the bootstrap partition prior to running ybin to install
the bootloader on it. mkofboot will confirm you want to continue
before proceeding unless called with the -f or --force switch. This
is in contrast to ybin, which is non destructive except that it
overwrites any existing yaboot files (yaboot and yaboot.conf) at the
root level of the bootstrap filesystem.

mkofboot and ybin both refer to the same configuration file (normally
yaboot.conf) to determine where the bootstrap files will be placed. 

IMPORTANT: The bootstrap partition should never be mounted anywhere on
your filesystem, ybin and mkofboot will check if it is and refuse to
operate on it if it is mounted.  It is not necessary to keep anything
but the boot loader on the bootstrap partition, yaboot will load the
kernel from your root partition (which can be an ext2/3, XFS, or
ReiserFS filesystem). Do not mount the bootstrap partition on top of
/boot.

ybin can update a bootstrap filesystem either on a block device or in
an ordinary file (as in an image of a filesystem.) 

NOTE: You must have a secure mktemp program otherwise ybin will be
vulnerable to race conditions.  Debian's mktemp qualifies I don't know
about the other distributions, you have been warned. The temp file is
created in /tmp by default but ybin will respect the $TMPDIR
environment variable.


ofpath
-------------------------------------------------------------------

The included ofpath utility can usually determine the OpenFirmware
device path that corresponds with a unix device node in /dev/.  Ybin
uses this utility to find the path to the bootstrap partition and to
any defined macos/macosx partitions. ofpath is based on the utility
`show_of_path.sh' written by Olaf Hering.


NOTE: ofpath may not work with all SCSI cards/drivers.

IMPORTANT: ofpath will NOT work on NewWorld Powermacs if the machine
was booted with BootX.


yabootconfig
-------------------------------------------------------------------

Yabootconfig creates a default configuration file and then runs mkofboot to
complete the bootloader installation. yabootconfig reads the running
system's /etc/fstab to determine the kernel location, and detects the
location of the 800k Apple_Bootstrap partition. It will also find IBM
CHRP bootstrap partitions (type 0x41 PReP Boot).



Yaboot.conf Configuration File
-------------------------------------------------------------------

yaboot.conf configuration file settings are covered in detail in `man
yaboot.conf'. Avoid the use of spaces in the config file, except in
comment lines or inside quotes. Here are the essential settings.


boot=
Example:   boot=/dev/hda2

This required setting defines the bootstrap partition device.  It can
also be a regular file if you are creating a filesystem image for some
reason. The default config file has this set to ``unconfigured'' which
will cause ybin to complain about you not reading the docs, it is the
only option you should need to change for ybin to work. Be sure you
include the partition number at the end, it should never be something
like /dev/hda. 


install= 
Example:  install=/usr/lib/yaboot/yaboot or /usr/local/lib/yaboot/yaboot

The full pathname to the yaboot OpenFirmware executable file. The
default is shown above. This file will be copied to the root level of
the bootstrap partition. Note: If you are installing an alternative
bootloader, its filename will be changed to yaboot when it is copied
(to match what the first stage bootloader expects to be loading).


partition=
Example:   partition=3

The partition number on which the kernel image is located. By default,
this partition is assumed to be on the same device from which yaboot
was loaded. If needed, device= can be used to explicitly specify the 
device.


image=
Examples:  image=/vmlinux  or  image=/boot/vmlinux-2.2.19-pmac

The path to the image from the root level of the partition (remember
that yaboot is unaware of mountpoints).  Don't forget to include the
leading slash when specifying the image path (image=vmlinux will
probably fail).


root=
Example:   root=/dev/hda3

The Linux device name for the root partition. This parameter is
passed to the kernel when it starts up to let it know where its root
filesystem is located. Refer to the yaboot.conf man page for details
on kernel image options such as append=, initrd=, and initrd-size=.


magicboot= (same as -m or --magicboot)
Example:   /usr/local/lib/yaboot/ofboot 

Identifies the first stage loader. The example shown is the default. The
ofboot script it refers to is included with and configured automatically by
ybin from options in /etc/yaboot.conf. The magicboot= can be the full
pathname to any OF CHRP script file. Since some newer OpenFirmware
implementations appear to require a CHRP script, the magicboot= setting is
highly recommended. If you don't include magicboot=, then yaboot itself will
be the active bootfile.  magicboot= cannot be used on IBM CHRP.


Boot Menu Options
-------------------------------------------------------------------

The following options work only if you have specified the magicboot= option.
Each option specifies an OpenFirmware or unix device path to another
operating system's boot partition.  When you define one of these options you
will be presented with a simple menu at bootup allowing you to hit `l' to
boot GNU/Linux or another letter to boot the other OS (see below). These
letters are typed without a shift key (the boot menu is case sensitive).
When set to a unix device node such as /dev/hda11 then ybin will use the
ofpath utility to determine the OpenFirmware device path.

  Option       Letter  Operating System Type
  ---------    ------  ---------------------------------------------
  bsd=           b     NetBSD or OpenBSD root partition (you must 
                          have the BSD ofwboot bootloader 
                          installed at /usr/local/lib/yaboot/ofwboot)

  macos=         m     MacOS 8.* or 9.* bootable partition

  macosx=        x     MacOS X boot partition (also see brokenosx)

  darwin=        d     Darwin boot partition

  enablecdboot   c     Boot from the CDROM drive

  enablenetboot  n     Boot from the network

  enableofboot   o     Display an OpenFirmware prompt

  defaultos=           The default OS to load (linux, bsd, macos, 
                          darwin or macosx.

brokenosx

This option causes the menu entry for MacOSX to execute
\System\Library\CoreServices\BootX from the macosx=device instead of
the usual \\:tbxi.  This is necessary if OSX is installed onto an HFS+
filesystem instead of UFS. When OSX is installed on an HFS+ filesystem
MacOS will mount and debless the OSX partition.  Add this option if
the OSX menu entry breaks after booting MacOS.  You should not use
this option if OSX is installed on a UFS filesystem, for UFS installs
you specify the OSX bootstrap partition which is protected against
MacOS.

delay= 
Example:  delay=5

The time in seconds that the first stage ofboot loader will wait for
you to choose a letter before booting the default OS defined in
defaultos=.  If not set, the value of timeout= (converted to seconds)
will be used.


Colors
-------------------------------------------------------------------

fgcolor=string

Specifies the foreground (text) color used by yaboot and the
multiboot menu.  Available colors are: black, blue, light-blue, green,
light-green, cyan, light-cyan, red, light-red, purple, light- purple,
brown, light-gray, dark-gray, yellow, and white.  The default is
white.

bgcolor=string

Specifies the background color used by yaboot and the multiboot
menu.  Available colors are the same as fgcolor. The default is
black.


===========================================================================

Copyright (C) 2000, 2001, 2002, 2003 Ethan Benson

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

===========================================================================
