IGF(1M) (Media Generation Utilities) IGF(1M)
NAME
igf - software management package generation facility
SYNOPSIS
igf [ -vb ] [ -f special_file ] { table | - }
DESCRIPTION
igf is a general purpose utility for creating software
installation tapes. It provides a flexible mechanism to
combine identification information, multiple archives of
software, and scripts needed to manipulate software packages
(usually installation and removal scripts) on a single tape.
Optionally, the tape can be made bootable to run standalone.
Information about what is written to the tape is read from
table or standard input when the argument is a dash (-).
This information includes the package description, name,
version number, and entries that describe the number and
contents of the archives. The archives are not limited to a
specific format and may even be several different formats on
a single tape.
If the -b option is used to create a bootable tape, table
will also contain information about a bootloader and other
files necessary to run in a standalone environment.
The -f option is used to specify a tape device other than
the default (/dev/rmt/ctapen). Since the tape is created
with multiple records, special_device must be a ``no-
rewind'' tape device.
The -v option prints messages showing the progress and
contents of the tape being made.
table is made up of a number of single and/or multiple line
entries separated by any number of blank lines. A line is
defined as all characters leading up to a newline character;
line continuation is not recognized. Lines within a
multiple line entry must not be separated by blank lines. A
pound sign (#) in the first column of a line indicates a
Page 1 May 1989
IGF(1M) (Media Generation Utilities) IGF(1M)
comment line, and the line is discarded. Each line of each
entry consists of a keyword immediately followed by an equal
sign (=) and the text for that line.
table contains several different types of entries. Some of
them are optional, while some are used only when creating a
bootable tape. In the following descriptions, lines are
referred to by their keyword.
DESC Optional description of the software package on
the tape. This description is limited to 88
characters.
VER Optional package version number. This is actually
a string of 12 characters and need not be a
number. All printable characters, including
spaces, are acceptable.
PACK Optional package name. The name is usually the
one-word name of the package, limited to 14
characters.
BL Pathlist to the tape bootloader. It must be a
valid a.out file that is readable by the current
process (only with -b option).
OS Pathlist to the standalone operating system or
boot file. It must be a valid a.out file and
readable by the current process (only with -b
option).
RAM Ramdisk image. This entry must be a pathlist to a
valid file system image (only with -b option).
FILES Definition of an archive's contents. This entry
begins a multiple line entry. It has two
arguments separated by white space: source and
destination directory. igf changes to the source
directory before the the archive command is
executed. This is useful for archives with
Page 2 May 1989
IGF(1M) (Media Generation Utilities) IGF(1M)
relative pathnames. The destination directory
will be stored on the tape and used by the tape
extraction facility, ixf(1M). The other possible
lines in this entry are A_DESC, ARC, O_OPT and
I_OPT. The FILES line must be the first line in
the entry and is the only required line.
A_DESC Archive description. This entry is a short
description of the contents of this archive,
limited to 25 characters. This line is always
optional. If included, it is stored in the tape
directory entry for this archive.
ARC Name of the archive utility. This is the archive
utility that is used to write the archive
specified by the current FILES entry. The name is
not a full pathlist. The environment variable
PATH is parsed to find the instance of the
utility. The first match is used, as it is in the
shell. The archiver name will also be stored in
the tape directory for extracting of this archive.
O_OPT Archiver output options. These options are used
by the archiver to create the archive. If the
string $DEVICE is in this entry, it is substituted
with the current tape device specified by the -f
option or by /dev/rmt/ctapen when -f was not
specified. This allows the use of different tape
device nodes without having to change table.
I_OPT Archiver input options. These options are used by
the archiver when files are being extracted from
the tape. They are stored in the tape directory.
If the string $DEVICE is in this entry, it is
replaced with the current tape device specified on
the command line of ixf(1M) when the tape is being
read or extracted. This allows for different
device names to be used on the source and
destination systems without changing the contents
of the tape directory which would require remaking
Page 3 May 1989
IGF(1M) (Media Generation Utilities) IGF(1M)
the tape.
SCRIPTS Scripts archive. This entry is similar to the
FILES entry except it has only one argument, a
source directory. SCRIPTS is a special archive
that is used to contain scripts and all files
necessary to manipulate a software package (used
by sysadm softwaremgmt). A SCRIPTS entry is also
a multiple line entry which can contain all the
lines associated with the FILES entry (A_DESC,
ARC, O_OPT, I_OPT).
All other lines in FILES and SCRIPTS entries are optional.
If any one of the ARC, O_OPT or I_OPT lines are specified,
then all three of these lines are required to prevent a
mismatch of archiver options and arguments with the archive
utility. If all three lines are not in the entry, they take
on the following values: ARC defaults to cpio, O_OPT
defaults to -ocB > $DEVICE, and I_OPT defaults to -icBdu <
$DEVICE. File names in and below the source directory will
be supplied to cpio(1) by find(1).
The tape generated by igf is made up of multiple records.
The number of records depends on whether or not the tape is
bootable and how many archives are on it.
The first tape record, called volume id block, is a header.
It contains information about the tape for the software
package and for the tape-based bootloader. There is no line
in table that creates this record but some information from
the table is stored here.
If the tape is bootable, the next record is the bootloader.
It is stored on the tape as an image of how it will be run,
not as an a.out file. The bootloader designed to work with
igf is /stand/m68k/boots/350ipl for SYSTEM V/68 platforms
and /stand/m88k/boots/350ipl for SYSTEM V/88 platforms.
This record is created from the BL line in table.
The next record is a tape directory. It contains the
Page 4 May 1989
IGF(1M) (Media Generation Utilities) IGF(1M)
following information about all records after the tape
directory (where applicable): record number starting at
zero for the volume id block, archive number starting at one
for the first archive, type of record, name of record or
archive utility, description, destination directory, and
input options. There is no line in table that causes this
record to be created.
On a bootable tape, the next record is an operating system
or standalone kernel. There may be as many of these records
on the tape as needed. One record is created for each OS
entry in table. They are stored on the tape in a.out
format. The bootloader, 350ipl, is able to select any one of
these files to boot from.
After the operating system(s), there may be a ramdisk image
record on a bootable tape. This record is created from the
RAM line in table. It is an image of a file system from
disk.
Following this record are all of the archives. Archive
records are created from FILES and SCRIPTS entries in table,
one record per entry. If there is a SCRIPTS entry, it is
always the first archive; otherwise, the archives are in the
order in which they appear in table. These archives have no
special headers and their format is determined by the
archiving utility used.
EXAMPLES
Following is an example of a table used to create a bootable
installation tape for a SYSTEM V/68 platform..
-- Example Table --
#IGF Table for creating m68k distribution tapes
DESC=UniSoft UNIX
PACK=SYSTEM V
Page 5 May 1989
IGF(1M) (Media Generation Utilities) IGF(1M)
VER=0.4.0 3.2
# Tape bootloader
BL=/root/stand/m68k/boots/350ipl
# kernel used for installation
OS=/root/stand/tapeboot
RAM=/dev/dsk/m323_1s1
#Archive entry for the bill-of-materials files
FILES=/root /mnt
ARC=cpio
O_OPT=-ocB > $DEVICE </usr/src/build/tape/releaselist
I_OPT=-icBdu < $DEVICE
#Archive entry for the files in root and usr file systems
FILES=/usr/src/build/tape /mnt
ARC=cpio
O_OPT=-ocB > $DEVICE <releasefile
I_OPT=-icBdu < $DEVICE
In this example, ``tapeboot'' is the operating system kernel
that will be booted by the tape-based bootloader 350ipl .
The file system which will be mounted as a memory-based file
system by the bootloader is specified by the block-special
device /dev/dsk/m3231s1 .
There are two cpio (1) archive entries. The first archive is
for the basic operating system files, and the second is for
the bill-of-materials file. Since cpio (1) gets its file
list from the standard input, standard input is redirected
from the file /usr/src/build/tape/releaselist, which
contains a list of pathnames of basic operating systems
files for the first archive and
/usr/src/build/tape/releaselist.
The $DEVICE string is used so the tape device node name may
Page 6 May 1989
IGF(1M) (Media Generation Utilities) IGF(1M)
be changed for the second archive. Notice that the output
is being redirected to the tape.
SEE ALSO
ixf (1M), sh (1).
WARNINGS
Although 9-track drives have the capabilities needed by igf,
only the MVME350 streaming tape drive is supported.
If special_device is not a ``no-rewind'' device, the program
execution will proceed normally without a single error
message, but the tape will contain only one record, usually
the last archive. If the -f option is used, the
special_device name must correspond to a ``no-rewind''
device. The name for the ``rewind'' device is derived by
truncating the last character from the ``no-rewind''
device's name (for example, /dev/rmt/ctapen for a no-rewind
device and /dev/rmt/ctape for the rewind device).
BUGS
The option to have the table information read from standard
input does not work although it may appear to.
Page 7 May 1989