| Yaboot -- PowerPC GNU/Linux OpenFirmware bootloader |
| -------------------------------------------- |
| |
| Please read the "COPYING" file for licence informations. |
| |
| Copyright (C) 2000 Benjamin Herrenschmidt |
| |
| portions based on "poof" |
| |
| Copyright (C) 1999 Marius Vollmer |
| |
| portions based on "quik" |
| |
| Copyright (C) 1996 Paul Mackerras. |
| |
| PPC64 support & Misc fixes by Peter Bergner, David Engebretsen |
| |
| |
| -------------------------------------------- |
| |
| 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 old MacOS ROM buit-in) are not |
| supported. |
| |
| ybin Written by Ethan Benson <erbenson@alaska.net> |
| |
| ybin (YaBoot INstaller) was created so that there could be a lilo/quik |
| style bootloader installer for PowerPC based machines which require |
| bootstrap partitions rather then a traditional bootblock (ie all |
| `NewWorld' Macintoshes). It is designed to install yaboot, an |
| OpenFirmware bootloader for GNU/Linux written by Benjamin |
| Herrenschmidt. When ybin is configured correctly you can simply type |
| ybin, and the bootloader and its configuration file will be |
| installed/updated on the bootstrap partition without any further user |
| intervention. |
| |
| ybin also supports IBM PowerPC hardware which requires a slightly |
| different bootstrap partition setup, yaboot is directly dded to the |
| partition instead of copied to a filesystem on the partition. For |
| these machines add fstype=raw to your /etc/yaboot.conf. See |
| examples/yaboot.conf.rs6k for an example configuration. |
| |
| Both ybin and mkofboot are shell scripts (compatible with ash, sh, |
| bash). These are the first real scripts that I have written with any |
| sort of complexity, so don't be too brutal if they are ugly and |
| inefficient. ;-) Suggestions on how to do things better are welcome. |
| |
| ybin can update a bootstrap filesystem either on a block device or a |
| ordinary file (as in a image of a filesystem.) |
| |
| Unless you use the usemount (or --mount) option it does not |
| necessarily need to be run as root, but it probably will, unless you |
| changed device permissions or are only updating an image. |
| |
| mkofboot is a companion script (actually a symlink to ybin) to |
| initialise the bootstrap partition and then run ybin to install the |
| bootloader on it. It uses the same configuration file as ybin to find |
| the device to use. It will validate the configuration file before |
| actually creating the filesystem. It will also confirm you want to |
| continue before proceeding unless called with the -f or --force |
| switch. |
| |
| (>= 0.18): ofpath utility now included which can usually find the |
| OpenFirmware device path that corresponds with a unix device node in |
| /dev/. Ybin will use this utility automatically to find the path to |
| the bootstrap partition and to any defined macos/macosx partitions. |
| NOTE: ofpath may not work with all SCSI cards/drivers. |
| IMPORTANT: ofpath will NOT work if you boot your machine with BootX. |
| |
| ofpath is based on the utility `show_of_path.sh' written by Olaf |
| Hering. |
| |
| (>= 0.20): ybin will now check for the new nvsetenv that is |
| compatible with Newworld PowerMacs, and if found it will automatically |
| update the boot-device variable in nvram to that of the bootstrap |
| partition. This feature can be disabled by passing the --nonvram |
| switch to ybin or by adding `nonvram' to /etc/yaboot.conf. This |
| feature works in both the userland and `usemount' modes. In userland |
| mode ybin sets the boot-device variable to <path>,\\:tbxi, for example |
| if your bootstrap partition is /dev/hda2 boot-device will be set to |
| hd:2,\\:tbxi, in `usemount' mode it would be set to hd:2,ofboot (or |
| hd:2,yaboot if you don't have magicboot= set.) |
| |
| NEW (>= 0.31): The ofboot script now has configurable colors, you can |
| change the foreground (text) and background colors it will use with |
| the fgcolor= and bgcolor= options in yaboot.conf, see below for |
| details. Yaboot 1.0 and later also supports these options. |
| |
| 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 its mounted. It is not necessary to keep anything |
| but the boot loader on the bootstrap partition, yaboot will load the |
| kernel from your ext2fs root partition so do not mount the bootstrap |
| partition on top of /boot. |
| |
| ybin now fully supports command line switches, see ybin --help for |
| information on these. |
| |
| NEW: ybin can now generate a basic yaboot.conf on the fly that you may |
| customise with command line options: |
| |
| --device yaboot auto configuration: sets the OF boot device |
| default: hd: |
| --partition yaboot auto configuration: sets the partition |
| number of the root partition. default: 3 |
| --timeout yaboot auto configuration: sets the time yaboot |
| will wait for user input before booting default |
| image default: 20 (2 seconds) |
| --image yaboot auto configuration: sets the path to the |
| kernel image. default: /vmlinux |
| --label yaboot auto configuration: sets the image label |
| default: Linux |
| --root yaboot auto configuration: sets the root device |
| default: /dev/hda3 |
| |
| This is experimental but appears to work ok. |
| |
| A much better method of generating an /etc/yaboot.conf is to run |
| yabootconfig however. |
| |
| 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. |
| |
| Configuration file documentation: |
| |
| ybin will verify the configuration file is sane and valid |
| before proceeding. |
| |
| IMPORTANT: The configuration file format as of version 0.12 has |
| changed, see below for the current format, note some options have been |
| removed. as with version 0.11 ybin allows you to put spaces around the |
| = eg: boot = /dev/hda3 (however this prevents spaces from being |
| embedded in the options themselves) As of version 0.12 the separate |
| ybin.conf file is deprecated, instead ybin's options should be placed |
| in /etc/yaboot.conf, you must have yaboot 0.6 or later for this to |
| work. Ybin will no longer use the obsolete /etc/ybin.conf. |
| |
| The kludge, and kludgedir options have been removed. The bootconf |
| option has been deprecated since yaboot and ybin both use |
| /etc/yaboot.conf (or whatever config file is specified to the -C |
| switch). |
| |
| boot= (same as -b or --boot) |
| |
| This option defines what device the bootstrap partition is. It also |
| be a regular file if you are creating a filesystem image for some |
| reason. It is safe to specify a MacOS boot partition as long as you DO |
| NOT use mkofboot. ybin is non destructive except that is overwrites |
| any existing yaboot files (yaboot and yaboot.conf) at the root level |
| of the bootstrap filesystem. 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. Example boot=/dev/hda2 |
| |
| ofboot= (same as -o or --ofboot) |
| |
| This option defines the OpenFirmware device path to the bootstrap |
| partition. This is needed so the first stage ofboot loader can be |
| configured properly. It should include the OpenFirmware path |
| including the partition number (but not a filename). Example: if your |
| bootstrap partition is /dev/hda2 the OF path will likely be hd:2. |
| As of ybin 0.18 you no longer are required to specify this option, if |
| left undefined ybin will attempt to figure out the OpenFirmware path |
| automatically using the ofpath utility. You should only need to |
| define this option if ofpath fails. |
| |
| install= (same as -i or --install) |
| |
| The full pathname to the yaboot OpenFirmware executable file. This |
| file will be copied to the root level of the bootstrap partition, its |
| filename will not be changed. The default is |
| /usr/local/lib/yaboot/yaboot, or if that does not exist |
| /usr/lib/yaboot/yaboot. |
| |
| magicboot= (same as -m or --magicboot) |
| |
| The full pathname to any OF CHRP script file. If this is defined then |
| it will be given the HFS filetype defined below and the bootfile will |
| be given type "boot" instead, if we set two files to `tbxi' we may get |
| unpredictable results from OF. A wrapper file would generally only be |
| needed if you have a OF script that creates a nice boot menu or |
| possibly adds a option to the newer ibook boot screens. IMPORTANT: it |
| appears that OF will only load `tbxi' files if they have a CHRP script |
| embedded, so this option is now on by default and will install the |
| included basic script that just loads the yaboot executable. (at least |
| until/if yaboot gets a embedded script) If you later change your mind |
| about using an OF wrapper you will have to delete it manually from the |
| bootstrap partition, ybin will not and cannot do it for you. If the |
| partition is a dedicated bootstrap partition you can run mkofboot to |
| remove it (and anything else). This should be set to |
| /usr/local/lib/yaboot/ofboot which is the new first stage loader |
| configured automatically by ybin from options in /etc/yaboot.conf. |
| |
| bsd= |
| |
| The OpenFirmware or unix device path to a NetBSD or OpenBSD bootstrap |
| partition, this partition must already have the BSD ofwboot.elf |
| bootloader installed in the root directory. When you define this |
| option you will be presented with a simple menu at bootup allowing you |
| to hit L to boot GNU/Linux or B to boot BSD (along with other choices |
| if configured). This will only work if you are using the new |
| /usr/local/lib/yaboot/ofboot script. When this is set to a unix |
| device node (ie /dev/hda11) then ybin will use the ofpath utility to |
| determine the OpenFirmware device path. |
| |
| macos= |
| |
| The OpenFirmware or unix device path to a MacOS 8.* or 9.* boot |
| partition. When you define this option you will be presented with a |
| simple menu at bootup allowing you to hit L to boot GNU/Linux or M to |
| boot MacOS (along with other choices if configured). This will only |
| work if you are using the new /usr/local/lib/yaboot/ofboot script. |
| When this is set to a unix device node (ie /dev/hda11) then ybin will |
| use the ofpath utility to determine the OpenFirmware device path. |
| |
| macosx= |
| |
| The OpenFirmware or unix device path to a MacOS X boot partition. |
| When you define this option you will be presented with a simple menu |
| at bootup allowing you to hit L to boot GNU/Linux or X to boot MacOSX |
| (along with other choices if configured). This will only work if you |
| are using the new /usr/local/lib/yaboot/ofboot script. |
| When this is set to a unix device node (ie /dev/hda11) then ybin will |
| use the ofpath utility to determine the OpenFirmware device path. |
| |
| 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. |
| |
| darwin= |
| |
| The OpenFirmware or unix device path to a Darwin boot partition. When |
| you define this option you will be presented with a simple menu at |
| bootup allowing you to hit L to boot GNU/Linux or D to boot Darwin |
| (along with other choices if configured). This will only work if you |
| are using the new /usr/local/lib/yaboot/ofboot script. When this is |
| set to a unix device node (ie /dev/hda11) then ybin will use the |
| ofpath utility to determine the OpenFirmware device path. |
| |
| enablecdboot |
| |
| This option adds an entry to the multiboot menu to boot from the CDROM |
| drive. |
| |
| enablenetboot |
| |
| This option adds an entry to the mulitboot menu to boot from the |
| network. |
| |
| enableofboot |
| |
| This option adds an entry to the multiboot menu to boot into an |
| OpenFirmware prompt. |
| |
| defaultos= |
| |
| The name of the default OS to load. This can be linux, bsd, macos or |
| macosx. This option controls what the first stage ofboot loader will |
| boot by default after the delay elapses. This is only relevant if you |
| are using the new /usr/local/lib/yaboot/ofboot script and you have |
| defined bsd= and/or macos= and/or macosx= in /etc/yaboot.conf. |
| |
| delay= |
| |
| The time in seconds that the first stage ofboot loader will wait for |
| you to choose L for GNU/Linux,M for MacOS, or X for MacOSX before |
| booting the default OS defined in defaultos=. If not set the value of |
| timeout= (converted to seconds) will be used. |
| |
| usemount (same as -M or --mount) |
| |
| Whether or not to use the standard mount and umount utilities (and |
| thus kernel space filesystem drivers instead of userspace utilities |
| that manipulate the partition directly (through the device file). If |
| this option is present ybin will insist that you be root. Note that |
| using this option will prevent ybin from setting HFS attributes on the |
| boot files (such as type and creator). This option is here mainly to |
| allow ybin's use even if you do not have hfsutils. Default: no |
| IMPORTANT: It is not possible to bless the filesystem when mounted |
| this way, you will thus have to manually configure OF to make your |
| system bootable. |
| |
| mntpoint= |
| |
| Requires `usemount' this works exactly like usemount does except it |
| does not mount the bootstrap partition but rather installs the |
| bootloader into the directory defined as the mountpoint. The pathname |
| MUST be clean, ie no embedded spaces or metacharacters. The directory |
| may not be more then one subdirectory deep from the root of the |
| partition (not necessarily the unix /). You must not have a trailing |
| / either. This option is NOT recommended since it has the same |
| limitations as usemount, your system will not be bootable by |
| OpenFirmware, it will only be manually bootable or bootable if you |
| change the boot-device variable to the direct pathname to the |
| bootloader (which ybin will attempt to do). |
| |
| fstype= (same as --filesystem) |
| |
| This defines what kind of filesystem exists (or created by mkofboot) |
| on the bootstrap partition. Possible options are hfs and msdos (if |
| anyone can figure out how to get OF to execute a file on a ISO |
| filesystem I will add that too) Note that if you use msdos filesystem |
| you must have a DOS style partition table and not a Apple partition |
| map. (it also requires that usemount be yes) yaboot may not yet |
| support this configuration. The "raw" type causes ybin or mkofboot to |
| copy the bootloader (value of install=) to the bootstrap without any |
| filesystem. CAUTION: this will destroy any data or filesystem on the |
| bootstrap partition (value of boot=) if you specify something like |
| boot=/dev/sda you will destroy the partition table and lose ALL data |
| on the disk. Default: hfs |
| |
| hfstype= |
| |
| This defines the 4 character code that should be given to the bootfile |
| (the bootconf file will always be given type "conf") The main purpose |
| of this is to make OF think its loading a MacOSROM image file and boot |
| the system into GNU/Linux from the bootstrap partition as |
| automatically as it would MacOS. In order for this to work you should |
| set this to `tbxi' (the default in the included config file). If you |
| have specified a OF wrapper (see above) then it will be given this |
| filetype and the bootfile will be given type "boot" instead. NOTE: |
| This appears to not work unless the bootfile has a CHRP boot script |
| embedded in the header, at the moment yaboot lacks this script, see |
| README.ofboot for more details. Default: tbxi |
| |
| hfscreator= |
| |
| This defines the 4 character creator code that should be given to both |
| the bootfile and the bootconf files. This is largely pointless but if |
| you use MacOS you could configure it so you have a pretty icon on the |
| bootloader files. Default: UNIX |
| |
| nobless (same as --nobless) |
| |
| This prevents ybin from "blessing" the root directory of the bootstrap |
| partition. This is Macspeak for "bootable directory" on the MacOS the |
| System Folder is "blessed". Blessing the root directory will allow OF |
| to find the bootstrap partition and load the bootloader automatically |
| without reconfiguration (assuming the bootstrap partition is on the |
| default disk (internal IDE in most cases). You should probably only |
| set this if you are keeping the bootloader on a MacOS boot partition. |
| |
| protect (same as --protect) |
| |
| This defines whether the read-only bit should be set on the boot |
| files, this is mostly pointless but slightly discourages |
| tampering/deleting of the bootloader files if the bootstrap partition |
| is mounted by MacOS. (hide below really would do a better job of |
| that) This option will work with both msdos and hfs filesystems. It |
| also works whether you have the usemount option set or not. |
| |
| hide (same as --hide) |
| |
| This defines whether or not the HFS invisible bit should be set on the |
| boot files. This is a stronger way to make sure nobody fscks up your |
| bootloader on the MacOS side of things. (A better option is a |
| dedicated bootstrap partition with its partition type set to |
| Apple_Bootstrap which is acceptable to OF but MacOS will refuse to mount |
| it.) This option is ignored for msdos filesystems and will only work |
| if usemount is not set. |
| |
| nonvram (same as --nonvram) |
| |
| This option prevents ybin from using nvsetenv to set the OpenFirmware |
| boot-device variable in nvram. This is currently required for IBM |
| machines. NOTE: you should not use this option when dual booting |
| MacOS, it will cause the MacOS boot menu entries to fail on some |
| machines. |
| |
| fgcolor=string |
| |
| Specifies the foreground (text) color used by yaboot(8) 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(8) and the mulitboot |
| 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 |
| black. |
| |
| ybin does not make any validations of the yaboot specific options, |
| that is up to you to make sure yaboot is configured correctly. |
| |
| =========================================================================== |
| |
| Copyright (C) 2001 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. |
| |
| =========================================================================== |