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)