Install - install a kernel from an ON workspace

[ -w workspace ] [ -s source dir ]
[ -k kernel arch ] [ -n | -t|T target ]
[ -u|m|a ] [ -v|V|q ] [ -c|p ]
[ -l library file ] [ -L ] [ -3 ] [ -6 ] [ -K ]
[ -o { obj | debug } ] [ -d work dir ]
[ -D library dir ] [ -G glomname ] [ module ... ]
Install -R [ options ]

Install is a utility which simplifies the process of installing a 5.0 system. Install goes into a built ON workspace (or any kernel source tree), looks at the Makefiles, and figures out how to construct the /kernel and /usr/kernel directories. It then creates a tarfile (see tar(1)) containing /kernel, /usr/kernel, and a few related /etc files. If a target ([user@]machine:/dir) is specified, the tarfile is either copied to machine:/dir (-T) or untarred on machine in /dir (-t), using the remote user id user, if specified. With no options, Install creates a sun4c system from files in the current workspace (as indicated by $SRC) and places the tarfile in /tmp/Install.username/Install.sun4c.tar.

-w ws
Install the system built in the ON workspace ws. ws must be a built ON workspace — Install will not automatically invoke make(1). If -w is not specified, Install uses the current workspace (as indicated by $CODEMGR_WS). If there is no current workspace, Install checks to see if you are in an appropriate source directory, e.g. uts/sun4c; if so, Install takes files from there. Otherwise, Install looks for files under $SRC/uts.
-s source directory
where to look for files [default: $SRC/uts].
-k kernel arch
the type of kernel to install. The default is sun4c; however, if you invoke Install from $SRC/uts/sun4z, Install assumes you want a sun4z kernel.
No target; just create the tarfile in /tmp/Install.username/Install.sun4c.tar [default]. -n implies -p.
-t target
Install the system on target ([user@]machine:/dir). This means that kernel/unix is copied to machine:/dir/kernel/unix, etc. /dir is typically either / or /mnt. -t implies -c. The default remote user id is the same as the local one ($LOGNAME).
-T target
Copy the tarfile to target ([user@]machine:/dir). This creates the file /dir/Install.tar on machine. To finish the install, log on to machine as root, and type ``cd /; tar xvf /dir/Install.tar''. -T implies -c.
Install unix only.
Install modules only.
Install unix and all modules [default].
Verbose mode.
REALLY verbose mode. Useful mainly for debugging.
Quiet mode [default]. Only fatal messages are printed.
Clean up. After a successful install, delete the files created in /tmp/Install.username. This is the default behavior if a target is specified with -t or -T.
Preserve temp files. This is the default behavior when no target is specified (-n).
Recover from a failed Install. This is not required, it's just faster than restarting. A typical scenario is for Install to run smoothly right up to the very end, but then die with "Permission denied" when it tries to rsh/rcp to the target machine. At this point, you log on to the target machine, diddle the permissions, log off, and type ``Install -R''. Install will only have to retry the rsh/rcp, rather than rebuild the tarfile from scratch.
-d temp directory
specifies where Install should create its temp files [default: /tmp/Install.username]. This is useful if you have limited space in /tmp ( Install can take as much as 100MB). The suffix "Install.username" is always appended.
add a system to your library. This allows you to build a personal collection of installable systems from various environments and for various architectures. When you type ``Install -w /ws/ws_name -k arch -L'', Install creates a tarfile called ws_name.arch.tar in your library directory (~/LibInstall by default). -L implies -c.
-l library file
Installs the system contained in library file. You may omit the ``.tar'' suffix. For example, ``Install -l my_ws.sun4c -t machine:/'' installs a system you previously built with -L (from sun4c files in my_ws) on machine:/. This is equivalent to typing ``rsh machine '(cd /; tar xvf -)' <~/LibInstall/my_ws.sun4c.tar'', but it's easier to remember.
-D lib directory
specifies the library directory [default: $HOME/LibInstall].
-G glomname
gloms /kernel and /usr/kernel together into a single /kernel directory. Useful for development work, e.g. use "Install -G good [...]" to create a "/kernel.good".
-o { obj | debug }
object directory. The default is "debug".
32-bit modules only
64-bit modules only
Do not include kmdb misc module or dmods
Help. Prints a brief summary of Install's options.
If you are in a directory like $SRC/uts/sun4z when you invoke Install, it will infer that you want to install a sun4z system from the current workspace.
If you supply a list of modules, it overrides any of the -uma options. You only need to specify the basename of the module(s), e.g. `` Install ufs nfs le''. `` Install unix'' is equivalent to ``Install -u'', and `` Install modules'' is equivalent to ``Install -m''.
You can customize Install by creating a .Installrc file in your home directory. .Installrc should consist of a list of command-line-style options, e.g:
	-w /ws/foo
	-t labmachine:/mnt -pv
Install processes default options first, then .Installrc options, then command-line options. In the case of conflicting options (e.g. -uma), the last one wins.
In order to use the most convenient form of Install (``Install -t machine:/''), you will need to do the following on the target machine:
	(1) add your machine name to the /etc/hosts.equiv file
	(2) add your username to the /etc/{passwd,shadow} files
	(3) chown -R yourself /kernel /usr/kernel
	(4) chmod -R u+w /kernel /usr/kernel

You can set the following variables in your environment:
INSTALL_RC [default: $HOME/.Installrc]
file containing default options for Install
INSTALL_STATE [default: $HOME/.Install.state]
where Install keeps its state information
INSTALL_DIR [default: /tmp/Install.username]
where Install does its work. This can be overridden on the command line with -d.
INSTALL_LIB [default: $HOME/LibInstall]
where Install gets/puts library files. This can be overridden on the command line with -D.
INSTALL_CP [default: cp -p]
the command to copy files locally
INSTALL_RCP [default: rcp -p]
the command to copy files remotely

Install -w /ws/blort -t machine:/
installs the system built in workspace /ws/blort on machine:/
Install -w /ws/blort -T machine:/tmp
rsh machine -l root "cd /; tar xvf /tmp/Install.tar"
is an equivalent way to do the previous example
makes a tarfile containing a sun4c kernel, and places it in /tmp/Install.username/Install.sun4c.tar. However, if you are in one of the arch directories (e.g. $SRC/uts/sun4m) when you invoke Install, you will get a tarfile for that architecture instead.
Install -k sun4m -w /ws/on493 -t mpbox:/ ufs
installs a new sun4m ufs module from workspace /ws/on493 on mpbox:/

$HOME/.Installrc, $HOME/.Install.state

tar(1), rsh(1), rcp(1)

tar(1) and rsh(1) do not have particularly useful exit codes. To compensate, Install feeds stderr through grep -v and throws away error messages which it considers harmless. If there's anything left, Install assumes it is fatal. It's a hack, but it works.
January 14, 2010