bootstrap man page on YellowDog

Man page or keyword search:  
man Server   18644 pages
apropos Keyword Search (all sections)
Output format
YellowDog logo
[printable version]

BOOTSTRAP(8)		    System Manager's Manual		  BOOTSTRAP(8)

NAME
       bootstrap - Disk boot process for PowerMac GNU/Linux

DESCRIPTION
       This  man  page	describes  the bootstrap process for both OldWorld and
       NewWorld PowerMacs.  OldWorld PowerMacs all have a hardware  MacOS  ROM
       and the case is beige in color.	NewWorld PowerMacs do not have a hard‐
       ware MacOS ROM, and are in colored, translucent cases.  All G3s in col‐
       ored  cases  are	 NewWorld, as are all G4s and later.  This man page is
       divided into three sections, OLDWORLD, NEWWORLD, and IBM.  Please  read
       the section appropriate to your hardware.

OLDWORLD
       The  process  of	 booting  PowerMac/Linux  from a disk starts with Open
       Firmware loading the boot block from the first  bootable	 partition  of
       the  boot  disk	into memory.  The user specifies which device is to be
       the boot disk by setting the boot-device environment  variable  to  the
       Open  Firmware  name  of	 the boot disk, or by giving it as an explicit
       argument to the Open Firmware boot command.  OldWorld  PowerMacs	 typi‐
       cally do not require bootstrap partitions like NewWorld PowerMacs do.

       Open  Firmware  then  transfers	control	 to  the first-stage bootstrap
       (first.b), located at the beginning of the boot block.  The boot	 block
       also contains the list of block numbers for the second-stage bootstrap.
       First.b reads these blocks into memory, thus loading  the  second-stage
       bootstrap.

       The  task of the second-stage bootstrap (second.b) is to load the Linux
       kernel into memory and pass it any arguments given by the  user.	  Sec‐
       ond.b  can  also be used for loading other programs, such as diagnostic
       programs or other operating systems, as long as they are present as  an
       ELF binary in an ext2 filesystem.

       Second.b gets two string values from Open Firmware, called bootpath and
       bootargs.  Bootpath is the Open Firmware name of the boot  disk	(i.e.,
       the  device  that  the first-stage bootstrap was loaded from).  If Open
       Firmware auto-booted, or if the boot command was	 given	without	 argu‐
       ments,  then  bootpath  and bootargs are set to the values of the boot-
       device and boot-file variables, respectively.  If the boot command  was
       given  with arguments, the first argument becomes bootpath and any sub‐
       sequent arguments are saved in bootargs.

       Second.b uses the Open Firmware input and output devices	 for  communi‐
       cating with the user.  By default, the modem port is used for both, but
       this can be changed by setting the Open Firmware input-device and  out‐
       put-device variables.

       Second.b	 starts by printing a message to indicate that it has started,
       and then reads the configuration file.  By default,  the	 configuration
       file  is /etc/quik.conf(5) on the same partition as the boot block, but
       this can be overridden with quik(8).  The configuration file must be on
       the  same disk as the boot block.  The format of the configuration file
       is described in quik.conf(5).

       Then second.b prints its boot: prompt and waits for the user to type  a
       command line.  Normally the configuration file specifies a timeout, and
       if the user does not type anything within that period of time, second.b
       proceeds	 using the bootargs value as the command line.	If the timeout
       value is 0, second.b will always use the bootargs value, ignoring  any‐
       thing  the user types.  This can be useful when a modem is connected to
       the modem port.

       Having obtained a command line, second.b takes the first	 word  (white‐
       space-separated)	 as  the  name	of the program to load.	 Any remaining
       words on the line become arguments to be passed to the program when  it
       is  loaded.   If	 the command line is empty, second.b uses the value of
       the default keyword in the configuration file,  or  failing  that,  the
       first program specified in the configuration file.

       The configuration file can specify several alternative programs to load
       (referred to as images in the configuration file	 syntax),  along  with
       shorthand  labels for them and extra arguments to be prepended to those
       specified by the user.  The program name given in the command line  can
       be  either  an  explicit	 path  name  or a shorthand label.  If it is a
       shorthand label, the configuration file gives  the  corresponding  path
       name.

       Path names are of the form

	      [device:][partno]/filepath

       where device is the Open Firmware name of the disk, partno is the (dec‐
       imal) number of the partition on that disk, and filepath is the path to
       the  file  in  the  ext2 filesystem on that partition.  The default for
       device is bootpath, and the default for partno is  the  first  bootable
       partition  on  device.	Alternatively,	the  /filepath	section can be
       replaced by a span of 512-byte blocks to load using the syntax  [start-
       end] where start and end are decimal block numbers.

       Second.b	 will attempt to open the file identified by the path name and
       load it into memory as an ELF binary.  If the file cannot be found,  or
       if  it  is  not an ELF binary, second.b will print an error message and
       print its boot: prompt again.  In this case there  is  no  timeout  and
       second.b does not use the bootargs value.

       Once  second.b has loaded the program into memory, it transfers control
       to it, passing it the list of arguments.

NEWWORLD
       The process of booting so called NewWorld PowerMacs  from  disk	starts
       with OpenFirmware first attempting to execute the file specified in the
       boot-device variable.  Unlike older versions of OpenFirmware  the  New‐
       World version will not attempt to read a boot sector.  By default Open‐
       Firmware attempts to load a file with  HFS  file	 type  “tbxi”  in  the
       “blessed”  directory  from  each partition of each disk OpenFirmware is
       aware of, the first partition/disk that is  found  to  be  bootable  is
       booted immediately.

       Ybin(8)	configures a bootstrap partition to pass all of OpenFirmware's
       tests to determine if the partition is considered  to  be  bootable  or
       not.   The boot script is given file type “tbxi” and the root directory
       is marked as “blessed”, the blessing is important because  OpenFirmware
       will  immediately  consider  a  partition unbootable if no directory is
       marked as blessed (you can still manually  execute  a  loader  such  as
       yaboot(8)  with	OpenFirmware  even  without a blessed directory but it
       will not happen automatically).

       The MacOS System Folder is always marked as blessed, this  is  required
       for  MacOS  as well as OpenFirmware.  The MacOS System Folder also con‐
       tains its own boot loader which has the	tbxi  file  type,  this	 makes
       installing yaboot(8) onto a MacOS partition is difficult.  The only way
       to install yaboot(8) on a MacOS	boot  partition	 is  to	 modify	 Open‐
       Firmware	 to  boot  the	CHRP script directly.  Given this it is highly
       recommended  that  you  create  a  dedicated  bootstrap	partition  for
       yaboot(8).

       Since OpenFirmware boots the first partition it finds to be bootable it
       is important that the bootstrap partition be first on the  disk	before
       any  MacOS  partition, otherwise MacOS will be booted instead of a dual
       boot menu used with yaboot(8).

       The bootstrap partition should also NOT be mountable by MacOS, the rea‐
       son  is MacOS will (almost always) closely inspect any blessed directo‐
       ries to make sure its real MacOS, if it is not satisfied that the  con‐
       tents are a real copy of MacOS it will unbless the directory, resulting
       in OpenFirmware no longer considering it bootable.   The	 best  way  to
       protect against this is to create the bootstrap partition with the par‐
       tition type “Apple_Bootstrap” which OpenFirmware accepts as a valid HFS
       partition,  but	MacOS  will ignore and refuse to mount.	 The bootstrap
       partition need not be any larger then 800K.  800K is the	 minimum  size
       of  an  HFS  filesystem, and is much more then enough for this purpose.
       You need not, and should not keep kernels on this partition,  yaboot(8)
       will  load  them	 from your ext2fs root partition just fine, as well as
       from any HFS or HFS+ partitions	(yaboot(8)  uses  OpenFirmware's  HFS+
       filesystem support).

       To create the bootstrap partition, use GNU parted(8) or mac-fdisk(8) to
       create a partiton of type “Apple_Bootstrap”.  This is documented better
       in   mac-fdisks-basics	(http://penguinppc.org/usr/ybin/doc/mac-fdisk-
       basics.shtml).

       The bootstrap need not and should  not  be  mounted  anywhere  on  your
       filesystem,  especially not on top of /boot.  Yaboot(8) is able to load
       the kernels from the ext2fs root partition so that is where they should
       be kept.

       OpenFirmware  maintains a hierarchy of all the hardware it is aware of.
       To access or specify a boot device you must use the OpenFirmware	 path.
       For  example:  the  path	 to a SCSI hard disk partition might look like
       this: /pci@80000000/pci-bridge@d/ADPT,2930CU@2/@2:2 . The  first	 part,
       pci@80000000,  shows that the target device is accessed through the PCI
       bus.  The next part is the PCI bridge, the next is the name of the SCSI
       host  adapter installed (this name is provided by a BootROM on the card
       itself), and after that is the SCSI ID number.  The colon delimits  the
       device  from  partition	specification,	so the last 2 means the second
       partition of this device.  After the partition number  we  can  specify
       pathnames to files in two ways: lazy and absolute. The “,” delimits the
       OpenFirmware path from the location of the bootfile.  “,\\:tbxi” speci‐
       fies  the file that has a HFS file type of “tbxi” in the blessed direc‐
       tory.  If there is not blessed directory this will fail.	 The second is
       to  specify a absolute pathname to an arbitrary file on the disk, exam‐
       ple: 2:,yaboot would load the file named “yaboot” in the root directory
       of  the filesystem.  It is possible to load files in subdirectories but
       OpenFirmware does not always do this reliably, and any special  charac‐
       ters such as an embedded space must be expressed like %20 (for a space)
       the directory separator used by OpenFirmware is the backslash \.	 Exam‐
       ple:  2:,\boot\yaboot.  Determining  the	 OpenFirmware  path to a given
       device is unfortunately not a trivial task.  If you are using the built
       in ATA hard disk you can use the alias “hd:”.

       Ybin also includes a utility ofpath(8) which can in most cases find the
       OpenFirmware device path from a unix device node (ie /dev/hda2).

       In addition to binary executables OpenFirmware can also execute a  CHRP
       script.	 This is somewhat similar to a shell script.  A CHRP script is
       useful to create simple boot menus, among other things.	 CHRP  scripts
       are  divided  into  sections in a way similar to HTML.  Here is a basic
       example of a CHRP script used as a wrapper to  yaboot(8)	 (since	 Open‐
       Firmware	 will  only  load  a  file  with  type	“tbxi” if it is a CHRP
       script).

	      <CHRP-BOOT>
	      <COMPATIBLE>
	      MacRISC
	      </COMPATIBLE>
	      <DESCRIPTION>
	      GNU/Linux PowerPC bootloader
	      </DESCRIPTION>
	      <BOOT-SCRIPT>
	      boot hd:,\\yaboot
	      </BOOT-SCRIPT>
	      </CHRP-BOOT>

       The COMPATIBLE section defines what machines this script is  compatible
       with,  if  the  machine name encoded into the ROM does not match one of
       these entries OpenFirmware will print out  a  lot  of  incomprehensible
       junk  and fail to load the script.  The DESCRIPTION is ignored by Open‐
       Firmware as far as I know.  The BOOT-SCRIPT section is where  arbitrary
       OpenFirmware  Forth commands may go.  They are executed the same way as
       you would enter them on the  OpenFirmware  command  line.   The	entire
       script  is wrapped with the CHRP-BOOT tags so that such a script may be
       attached as a header to a binary file.  Much more complicated and elab‐
       orate  CHRP  scripts  are possible but that is beyond the scope of this
       document.

       Ybin as of version 0.17 includes a more robust script that is automati‐
       cally   configured   with  the  correct	OpenFirmware  paths  based  on
       /etc/yaboot.conf.  This new script need not and should not be edited by
       the user.

       If  you	have  G4  hardware  then  your OpenFirmware may already have a
       graphical boot selector built in. This  selector	 can  be  accessed  by
       holding down the option key when booting the machine.  You should see a
       screen with buttons for each bootable partition.	 The  current  version
       (as of ybin(8) 0.13) of ofboot includes a badge icon, the button with a
       penguin icon is your bootstrap partition.  If you decide	 to  use  this
       built in selector you really do not need to use a CHRP script that pro‐
       vides a boot menu. Thanks to Nicholas Humfrey for  creating  the	 Badge
       icon.

IBM
       IBM  hardware such as the RS/6000 require msdos style partition tables.
       In order to boot from the disk they require a type 0x41 PReP Boot boot‐
       strap   partition  large	 enough	 to  hold  the	bootloader  (typically
       yaboot(8)).  The bootloader is copied onto the raw partition  as	 there
       is no filesystem.  This is done either with dd(1) or mkofboot(8).

BUGS
       OpenFirmware

AUTHORS
       ybin,  and  the	NEWWORLD, and IBM sections of this man page written by
       Ethan Benson <erbenson@alaska.net>

       The OLDWORLD section of this man page was taken from the quik(8)	 pack‐
       age, which was written by Paul Mackerras.

       yaboot	was  written  by  Benjamin  Herrenschmidt  <benh@kernel.crash‐
       ing.org>.

SEE ALSO
       dd(1),  mkofboot(8),  ofpath(8),	 quik(8),   quik.conf(5),   yaboot(8),
       ybin(8).

GNU/Linux PowerPC		 28 April 2001			  BOOTSTRAP(8)
[top]

List of man pages available for YellowDog

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net