NAME

     installboot - make a device bootable


SYNOPSIS

     installboot -i(mage) image [label:]kernel mm fs ... init
     installboot -(e)x(tract) image
     installboot -d(evice) device bootblock  boot  [[label:]image
     ...]
     installboot -b(oot) device bootblock boot [label:]image ...
     installboot -m(aster) device masterboot [keys [logical]]


DESCRIPTION

     Installboot may be used to make a device  bootable  by  con-
     structing  a kernel image and installing bootstrap code into
     the boot block of a MINIX 3 file system.  To understand  how
     this  can  be done one first has to know what happens when a
     PC is booted.

     When the power is turned on the typical PC will try to  read
     the  first  sector  from  the  first floppy disk or from the
     first hard disk  into  memory  and  execute  it.   The  code
     obtained  from the hard disk (from the so-called master boot
     sector) will immediately replace itself by the code found in
     the  first  sector  of the active partition.  Thus the PC is
     now executing the bootstrap code found in the  first  sector
     of   /dev/fd0,  /dev/c0d0p0,  /dev/c0d0p1,  /dev/c0d0p2,  or
     /dev/c0d0p3 (assuming the boot  disk  is  attached  to  con-
     troller  0.)  The bootstrap will locate the operating system
     on the device it itself was loaded from, load it,  and  exe-
     cute it.

     To make a MINIX 3 file system /dev/fd0 mounted on /mnt boot-
     able, enter the following:

          cp /usr/mdec/boot /mnt/boot

          installboot -i /mnt/minix kernel mm fs init

          installboot -d /dev/fd0 /usr/mdec/bootblock boot

     The "boot" program in the example is named the  "Boot  Moni-
     tor".  It is loaded by the bootblock code placed in the boot
     sector of /dev/fd0 and it will take care of loading the ker-
     nel  image  "minix" from the root directory of the file sys-
     tem.  See monitor(8) for a description of the Boot  Monitor.
     Note  that  boot is a name in the file system on /dev/fd0 in
     this example, the same file as /mnt/boot.  Making /mnt/minix
     is  normally  not necessary, there is usually a kernel image
     in the tools directory.


OPTIONS

     -i(mage) image [label:]kernel mm fs ... init
          The -image option (or the -i  shorthand)  combines  the
          executable  files  needed  to  run MINIX 3 in one file.
          Only the names and a few zero bytes are  inserted  into
          the  image.   The  name  is  for identification and the
          zeros are used to pad separate pieces to  sector  boun-
          daries for fast loading.

          An executable may be prefixed by a label.  The  Monitor
          may  be instructed to load processes by label.  So more
          than one kernel process may be included in  the  image,
          each  with  a different winchester driver for instance.
          So if you have compiled two different kernels  with  an
          AT or XT driver then

               installboot -i image AT:at_kernel XT:xt_kernel  mm
               fs init

          will make an image with two different  labeled  kernels
          and one unlabeled set of the other binaries.

     -(e)x(tract) image
          Extract the binaries from image under the names  stored
          in the image.  (The name includes the optional label.)

     -d(evice) device bootblock boot [[label:]image ...]
          Installs  bootblock  in  the  boot  sector  of   device
          together  with  the disk addresses to boot.  These disk
          addresses are needed to load boot from the file  system
          at  boot  time.  The argument boot is first searched in
          the file system on device.  If it is not found then  it
          is  read  as  a normal file and added at the end of the
          file system.  The file system should  be  smaller  than
          the  device  it  is on to allow this.  Any extra images
          are also added to the end  as  described  under  -boot.
          (Make sure you understand all this.)

          The device need not be mounted when installboot is run,
          nor does it matter if it is.

          Installboot needs to be run again if boot is rewritten,
          because it will then occupy a new place on the disk.

          Old boot parameters are kept if  there  are  no  images
          added.

     -b(oot) device bootblock boot [label:]image ...
          This option fills a blank floppy in  device  with  boot
          code and kernel images.  This "boot disk" does not have
          a root file system, only the Boot Monitor and  MINIX  3
          kernels.   The  boot  parameters  sector is filled with
          code that enables menu options for selecting an  image.
          After  loading  an  image,  the Monitor will ask you to
          insert a root  file  system  diskette  before  starting
          MINIX 3.

          The labels used on the images should match those on the
          executables used inside the image.  You can put a comma
          separated list of labels on an  image  for  each  label
          used  within  the image.  For the image created earlier
          one would create a boot floppy like this:

               installboot -b /dev/fd0 bootblock boot AT,XT:image

          If a label-list is omitted on an image, then that image
          will  be  selected by default.  (Like in the normal one
          image, no labels case.)

          Note that -device and -boot together allow you to  make
          a boot floppy with or without a root file system.  With
          the boot code in the file system, attached to  the  end
          of  it,  or after the boot block.  And with one or more
          kernel images in the file system or at the end  of  the
          device.  Somewhat confusing.

     -m(aster) device masterboot [keys [logical]]
          This option installs the masterboot  program  into  the
          boot  sector of the given device.  If another device is
          given instead of masterboot then its bootstrap code  is
          copied  to device.  The master bootstrap on a hard disk
          boots the active partition on that disk at  boot  time.
          The   MS-DOS  fdisk  command  normally  puts  a  master
          bootstrap on the hard disk.  MINIX 3 has two bootstraps
          that  can be used as a master bootstrap, masterboot and
          jumpboot.

          Masterboot is a fairly  normal  master  bootstrap  that
          works as follows:

               If installed on a hard disk then it will load  the
               bootstrap  of  the  active  partition  and run it.
               Masterboot can be put in the  first  sector  of  a
               hard  disk to boot the active partition, or in the
               first sector of a MINIX 3 partition  to  boot  the
               active subpartition.

               If installed on a MINIX 3 floppy then it will  try
               to  boot  the  next floppy or the first hard disk.
               Ideal for floppies with just data on it, they will
               no longer obstruct the boot process if left in the
               drive.  Also a very  useful  trick  to  boot  from
               floppy drive 1.

          The other bootstrap named  jumpboot  is  used  for  the
          weird cases:
               If your default operating system is  installed  on
               another disk then jumpboot can be installed on the
               first disk and instructed to boot the disk, parti-
               tion  or  subpartition  that  must  be  booted  by
               default.

               If one of your operating systems insists on  being
               active when booted then use jumpboot to ignore the
               active flag and boot your preferred O.S.  instead.
               The  Boot Monitor's "boot *" trick to activate the
               partition to boot is useful here.

               To boot a logical  partition  within  an  extended
               partition.   Note that you can put jumpboot in the
               first sector of the  extended  partition  in  this
               case, with the extended partition marked active.

               If you hold down the ALT  key  while  jumpboot  is
               being executed, then you can type the disk, parti-
               tion or subpartition you want to boot  as  one  to
               three digits followed by typing ENTER.

          Jumpboot can be programmed to boot a certain  partition
          with  the keys argument and optionally also the logical
          argument.  Keys are one  to  three  digits  naming  the
          disk, partition or subpartition.  If the device to boot
          is /dev/c0d1p3s0, then keys is 130.  These are the same
          three digits you can type manually if you hold down ALT
          at boot.  To program jumpboot to boot a logical  parti-
          tion  within  an extended partition, let keys be just a
          disk number, and specify logical as  the  name  of  the
          logical  partition  on  that disk that is to be booted.
          (Actually logical can be any device name, but this form
          should  be  avoided  because it offers less checking to
          see if the device is still there  after  a  disk  rear-
          rangement.)

          A backup copy of the current master bootstrap  (includ-
          ing the partition table) can be made with:

               dd if=device of=backup-file count=1

          A simple 'cp backup-file device' will put it back.  You
          can  also use fdisk /mbr under MS-DOS 5.0 (or newer) to
          restore the master bootstrap.


FILES

     /usr/mdec/bootblock      MINIX 3  bootstrap  for  the  Minix
                              root  device.   To be placed in the
                              boot sector.

     /usr/mdec/boot           MINIX 3 Boot Monitor.  Can  usually
                              be found in the root directory of a
                              bootable device.

     /usr/mdec/masterboot     Master bootstrap.  Can be placed in
                              the  first  sector  of  a  disk  to
                              select the active partition.  In  a
                              MINIX   3   primary   partition  it
                              selects the active subpartition.

     /usr/mdec/jumpboot       Special "boot this" bootstrap.


SEE ALSO

     part(8), monitor(8).


DIAGNOSTICS

     File is not an executable
          What you think is boot  code  or  part  of  the  kernel
          isn't.

     Program will crash, text/data segment larger then 64K
          One of the 16-bit programs added to an image has a text
          or  data segment that is larger than 64K.  You probably
          enabled  too  many  drivers,  or  configured  too  many
          buffers.

     File can't be attached to device
          You are trying to put the  boot  monitor  or  an  image
          after  a  file  system,  but  there is no or not enough
          space.  Did you specify the full path  of  the  monitor
          instead of just "boot"?

     Device is not a MINIX 3 file system
          You are using -device on a device that doesn't  contain
          a  file  system.  Maybe you specified the wrong device,
          maybe you should make  a  file  system,  or  maybe  you
          should use -boot.

     Device contains a file system
          You are about to destroy  a  file  system  with  -boot.
          Maybe you meant to use -device?  You have 10 seconds to
          make up your mind...

     File is too big
          Several types of messages like these will tell you that
          file can't be installed in a boot sector, or that there
          is no room to add some parameters, etc.  Is file really
          a bootstrap?

  Bootstrap errors
     Read error
          A read error trying to get the next bit of  boot  code.
          You  may  even  get the BIOS error code in hex.  Either
          the device has a bad block, or jumpboot is told to read
          a nonexistent disk.

     No active partition
          None of the partitions in a partition table  is  marked
          active.

     Not bootable
          Partition does not exist (jumpboot), or it's  bootstrap
          isn't executable.


NOTES

     The MINIX 3 bootstraps can boot  beyond  the  8G  disk  size
     limit  if  the  BIOS  supports the IBM/MS INT 13 Extensions.
     Alas only Minix-vmd can make use of this, standard  MINIX  3
     has a 4G disk size limit.


BUGS

     It has four more options than the SunOS installboot  program
     it is modeled after.

     The bootblock code has been crunched to such  ugliness  that
     you can use it to scare little kids out of your garden.


AUTHOR

     Kees J. Bot (kjb@cs.vu.nl)