home | help
SYSINSTALL(8)		     System Manager's Manual		   SYSINSTALL(8)

NAME
     sysinstall -- system installation and configuration tool

SYNOPSIS
     sysinstall [var=value] [function] [...]

DESCRIPTION
     The  sysinstall utility is used for installing and configuring FreeBSD sys-
     tems.  It is the first utility invoked by	the  FreeBSD  installation  boot
     floppy  and  is  also  available as /usr/sbin/sysinstall on newly installed
     FreeBSD systems for use in later configuring the system.

     The sysinstall utility is generally invoked without arguments for	the  de-
     fault  behavior,  where  the  main  installation/configuration menu is pre-
     sented.

     On those occasions where it is deemed necessary to invoke	a  subsystem  of
     sysinstall  directly,  however,  it is also possible to do so by naming the
     appropriate function entry points on the command line.  Since  this  action
     is  essentially  identical to running an installation script, each command-
     line argument corresponding to a line of script, the reader  is  encouraged
     to read the section on scripting for more information on this feature.

NOTES
     The sysinstall utility is essentially nothing more than a monolithic C pro-
     gram  with  the ability to write MBRs and disk labels (through the services
     of the libdisk(3) library) and install distributions or packages  onto  new
     and existing FreeBSD systems.  It also contains some extra intelligence for
     running  as a replacement for init(8) when it is invoked by the FreeBSD in-
     stallation boot procedure.  It assumes very little in the way of additional
     utility support and performs most file system  operations	by  calling  the
     relevant syscalls (such as mount(2)) directly.

     The  sysinstall utility currently uses the dialog(3) library to do user in-
     teraction with simple ANSI line graphics, color support for  which  is  en-
     abled by either running on a syscons VTY or some other color-capable termi-
     nal  emulator  (newer  versions  of xterm will support color when using the
     "xterm-color" termcap entry).

     This product is currently at the end of its life cycle and will  eventually
     be replaced.

RUNNING SCRIPTS
     The sysinstall utility may be either driven interactively through its vari-
     ous  internal  menus  or  run  in batch mode, driven by an external script.
     Such a script may be loaded and executed in one of 3 ways:

     LOAD_CONFIG_FILE
	     If sysinstall is compiled with LOAD_CONFIG_FILE set in the environ-
	     ment (or in the Makefile) to some value, then that  value	will  be
	     used  as  the  filename  to  automatically  look  for and load when
	     sysinstall starts up and with no user interaction	required.   This
	     option  is aimed primarily at large sites who wish to create a sin-
	     gle prototype install for multiple machines with largely  identical
	     configurations and/or installation options.

     MAIN MENU
	     If  sysinstall  is run interactively, that is to say in the default
	     manner, it will bring up a main menu which contains a "load  config
	     file"  option.  Selecting this option will prompt for the name of a
	     script file which it then will attempt to load from a  DOS  or  UFS
	     formatted floppy.

     COMMAND LINE
	     Each  command  line  argument is treated as a script directive when
	     sysinstall is run in multi-user mode.  Execution ends either by ex-
	     plicit request (e.g. calling the shutdown directive), upon reaching
	     the end of the argument list or on error.

	     For example:

	     /usr/sbin/sysinstall _ftpPath=ftp://ziggy/pub/ mediaSetFTP configPackages

	     Would initialize sysinstall for FTP installation media  (using  the
	     server  `ziggy') and then bring up the package installation editor,
	     exiting when finished.

SCRIPT SYNTAX
     A script is a list of one or more directives,  each  directive  taking  the
     form of:

     var=value

     function

     or #somecomment

     Where  var=value  is  the	assignment of some internal sysinstall variable,
     e.g.  "ftpPass=FuNkYChiKn",  and  function  is  the  name	of  an	internal
     sysinstall function, e.g. "mediaSetFTP", and #comment is a single-line com-
     ment  for	documentation  purposes (ignored by sysinstall).  Each directive
     must be by itself on a single line, functions taking their arguments by ex-
     amining known variable names.  This requires that you be sure to assign the
     relevant variables before calling a function which requires them.

     The noError variable can be assigned before each directive: this will cause
     any error detected while processing the directive	itself	to  be	ignored.
     The  value  of noError will automatically reset to the default "unassigned"
     every time a directive is processed.

     When and where a function depends on the settings of one or more  variables
     will be noted in the following table:

     Function Glossary:

     configAnonFTP
	     Invoke the Anonymous FTP configuration menu.

	     Variables: None

     configRouter
	     Select  which  routing  daemon you wish to use, potentially loading
	     any required 3rd-party routing daemons as necessary.

	     Variables:

	     router  can be set to the name of the desired routing daemon,  e.g.
		     "routed" or "gated", otherwise it is prompted for.

     configNFSServer
	     Configure host as an NFS server.

	     Variables: None

     configNTP
	     Configure host as a user of the Network Time Protocol.

	     Variables:

	     ntpdate_flags
		     The  flags  to  ntpdate(8),  that is to say the name of the
		     server to sync from.

     configPCNFSD
	     Configure host to support PC NFS.

	     Variables:

	     pcnfsd_pkg
		     The name of the PCNFSD package to load  if  necessary  (de-
		     faults to hard coded version).

     configPackages
	     Bring up the interactive package management menu.

	     Variables: None

     configUsers
	     Add users and/or groups to the system.

	     Variables: None

     diskPartitionEditor
	     Invokes the disk partition (MBR) editor.

	     Variables:

	     geometry
		    The disk geometry, as a cyls/heads/sectors formatted string.
		    Default: no change to geometry.

	     partition
		    Set  to disk partitioning type or size, its value being free
		    in order to use only remaining free space for  FreeBSD,  all
		    to	use  the  entire  disk for FreeBSD but maintain a proper
		    partition table, existing to use an existing FreeBSD  parti-
		    tion   (first   found),   exclusive   to  use  the	disk  in
		    "dangerously dedicated" mode or, finally, somenumber to  al-
		    locate  somenumber	blocks	of available free space to a new
		    FreeBSD partition.	Default: Interactive mode.

	     bootManager
		    is set to one of boot to signify the installation of a  boot
		    manager,  standard	to  signify installation of a "standard"
		    non-boot MGR DOS MBR or none to indicate that no  change  to
		    the boot manager is desired.  Default: none.

	     diskInteractive
		    If set, bring up the interactive disk partition editor.

	     Note:  Nothing is actually written to disk by this function, an ex-
	     plicit call to diskPartitionWrite being required for that	to  hap-
	     pen.

     diskPartitionWrite
	     Causes    any    pending	 MBR   changes	 (typically   from   the
	     diskPartitionEditor function) to be written out.

	     Variables: None

     diskLabelEditor
	     Invokes the disk label editor.  This  is  a  bit  trickier  from  a
	     script  since  you need to essentially label everything inside each
	     FreeBSD (type 0xA5) partition created  by	the  diskPartitionEditor
	     function,	and  that  requires knowing a few rules about how things
	     are laid out.  When creating a  script  to  automatically	allocate
	     disk space and partition it up, it is suggested that you first per-
	     form  the installation interactively at least once and take careful
	     notes as to what the slice names will be, then and only then  hard-
	     wiring them into the script.

	     For  example, let's say you have a SCSI disk on which you have cre-
	     ated a new FreeBSD partition in slice 2 (your DOS partition  resid-
	     ing  in  slice  1).   The	slice  name would be da0s2 for the whole
	     FreeBSD partition (da0s1 being your DOS  primary  partition).   Now
	     let's  further assume that you have 500MB in this partition and you
	     want to sub-partition that space into root, swap, var and usr  file
	     systems  for FreeBSD.  Your invocation of the diskLabelEditor func-
	     tion might involve setting the following variables:

	     da0s2-1=ufs 40960 /
		    A 20MB root file system (all sizes are in 512 byte blocks).

	     da0s2-2=swap 131072 /
		    A 64MB swap partition.

	     da0s2-3=ufs 204800 /var
		    A 100MB /var file system.

	     da0s2-4=ufs 0 /usr 1
		    With the balance of free space (around 316MB) going  to  the
		    /usr file system and with soft-updates enabled (the argument
		    following  the  mount  point,  if non-zero, means to set the
		    soft updates flag).

	     One can also use the diskLabelEditor for mounting or erasing exist-
	     ing partitions as well as creating new ones.   Using  the	previous
	     example  again, let's say that we also wanted to mount our DOS par-
	     tition and make sure that an /etc/fstab entry is created for it  in
	     the new installation.  Before calling the diskLabelEditor function,
	     we simply add an additional line:

		   da0s1=/dos_c N

	     before  the  call.   This	tells  the label editor that you want to
	     mount the first slice on /dos_c and not to attempt to newfs it (not
	     that sysinstall would attempt this for a DOS partition in any case,
	     but it could just as easily be  an  existing  UFS	partition  being
	     named here and the 2nd field is non-optional).

	     You  can  also set the diskInteractive variable to request that the
	     disk label editor use an interactive dialog to partition  the  disk
	     instead  of  using  variables  to explicitly layout the disk as de-
	     scribed above.

	     Note: No file system data is actually written to disk until an  ex-
	     plicit call to diskLabelCommit is made.

     diskLabelCommit
	     Writes  out  all  pending	disklabel information and creates and/or
	     mounts any file  systems  which  have  requests  pending  from  the
	     diskLabelEditor function.

	     Variables: None

     distReset
	     Resets  all  selected  distributions to the empty set (no distribu-
	     tions selected).

	     Variables: None

     distSetCustom
	     Allows the selection of a custom distribution set	(e.g.  not  just
	     one of the existing "canned" sets) with no user interaction.

	     Variables:

	     dists   List  of distributions to load.  Possible distribution val-
		     ues are:

		     base      The base binary distribution.

		     doc       Miscellaneous documentation

		     games     Games

		     manpages  Manual pages (unformatted)

		     catpages  Pre-formatted manual pages

		     proflibs  Profiled libraries for developers.

		     dict      Dictionary information (for tools like spell).

		     info      GNU info files and other extra docs.

		     compat1x  Compatibility with FreeBSD 1.x

		     compat20  Compatibility with FreeBSD 2.0

		     compat21  Compatibility with FreeBSD 2.1

		     compat22  FreeBSD 2.2 and FreeBSD 3.0 a.out binary compati-
			       bility

		     compat3x  Compatibility with  FreeBSD  3.x  (available  for
			       FreeBSD 4.0 systems only)

		     compat4x  Compatibility  with  FreeBSD  4.x  (available for
			       FreeBSD 5.0 systems only)

		     ports     The ports collection.

		     ssecure   /usr/src/secure

		     sbase     /usr/src/[top level files]

		     scontrib  /usr/src/contrib

		     sgnu      /usr/src/gnu

		     setc      /usr/src/etc

		     sgames    /usr/src/games

		     sinclude  /usr/src/include

		     skrb5     /usr/src/kerberos5

		     slib      /usr/src/lib

		     slibexec  /usr/src/libexec

		     srelease  /usr/src/release

		     srescue   /usr/src/rescue

		     sbin      /usr/src/bin

		     ssbin     /usr/src/sbin

		     sshare    /usr/src/share

		     ssys      /usr/src/sys

		     subin     /usr/src/usr.bin

		     susbin    /usr/src/usr.sbin

		     ssmailcf  /usr/src/usr.sbin/sendmail/cf

		     Xbin      X.Org client applications.

		     Xlib      X.Org libraries.

		     Xman      X.Org manual pages.

		     Xdoc      X.Org protocol and library documentation.

		     Xprog     X.Org imake distribution.

		     Xsrv      X.Org X server.

		     Xnest     X.Org nested X server.

		     Xprt      X.Org print server.

		     Xvfb      X.Org virtual frame-buffer X server.

		     Xfmsc     X.Org miscellaneous font set.

		     Xf75      X.Org 75DPI font set.

		     Xf100     X.Org 100DPI font set.

		     Xfcyr     X.Org Cyrillic font set.

		     Xft1      X.Org Type 1 font set.

		     Xftt      X.Org TrueType font set.

		     Xfs       X.Org font server.

     distSetDeveloper
	     Selects the standard Developer's distribution set.

	     Variables: None

     distSetXDeveloper
	     Selects the standard X Developer's distribution set.

	     Variables: None

     distSetKernDeveloper
	     Selects the standard kernel Developer's distribution set.

	     Variables: None

     distSetUser
	     Selects the standard user distribution set.

	     Variables: None

     distSetXUser
	     Selects the standard X user's distribution set.

	     Variables: None

     distSetMinimum
	     Selects the very minimum distribution set.

	     Variables: None

     distSetEverything
	     Selects the full whack - all available distributions.

	     Variables: None

     distSetSrc
	     Interactively select source subcomponents.

	     Variables: None

     distSetXOrg
	     Interactively select X.Org subcomponents.

	     Variables: None

     distExtractAll
	     Install all currently selected distributions (requires  that  media
	     device also be selected).

	     Variables: None

     docBrowser
	     Install  (if necessary) an HTML documentation browser and go to the
	     HTML documentation submenu.

	     Variables:

	     browserPackage
		     The name of the browser package to try and install as  nec-
		     essary.  Defaults to latest links package.

	     browserBinary
		     The  name	of  the browser binary itself (if overriding the
		     browserPackage variable).	Defaults to links.

     installCommit
	     Commit any and all pending changes to disk.  This function  is  es-
	     sentially	shorthand  for	a number of more granular "commit" func-
	     tions.

	     Variables: None

     installExpress
	     Start an "express" installation, asking few questions of the user.

	     Variables: None

     installStandard
	     Start a "standard" installation, the most	user-friendly  installa-
	     tion type available.

	     Variables: None

     installUpgrade
	     Start an upgrade installation.

	     Variables: None

     installFixitHoloShell
	     Start  up the "emergency holographic shell" over on VTY4 if running
	     as init.  This will also happen automatically as part  of	the  in-
	     stallation process unless noHoloShell is set.

	     Variables: None

     installFixitCDROM
	     Go  into  "fixit" mode, assuming a live file system CDROM currently
	     in the drive.

	     Variables: None

     installFixitFloppy
	     Go into "fixit" mode, assuming an available fixit floppy disk (user
	     will be prompted for it).

	     Variables: None

     installFilesystems
	     Do just the file system initialization part of an install.

	     Variables: None

     installVarDefaults
	     Initialize all variables to their defaults, overriding any previous
	     settings.

	     Variables: None

     loadConfig
	     Sort of like an #include statement, it allows you to load one  con-
	     figuration file from another.

	     Variables:

	     configFile
		     The fully qualified pathname of the file to load.

     mediaClose
	     If a media device is open, close it.

	     Variables: None

     mediaSetCDROM
	     Select a FreeBSD CDROM as the installation media.

	     Variables: None

     mediaSetFloppy
	     Select  a	pre-made floppy installation set as the installation me-
	     dia.

	     Variables: None

     mediaSetDOS
	     Select an existing DOS primary partition as the installation media.
	     The first primary partition found is used (e.g. C:).

	     Variables: None

     mediaSetTape
	     Select a tape device as the installation media.

	     Variables: None

     mediaSetFTP
	     Select an FTP site as the installation media.

	     Variables:

	     hostname
		     The name of the host being installed (non-optional).

	     domainname
		     The domain name of the host being installed (optional).

	     defaultrouter
		     The default router for this host (non-optional).

	     netDev  Which host interface to use (ed0 or ep0, for example.  Non-
		     optional).

	     netInteractive
		     If set, bring up the interactive network setup form even if
		     all relevant configuration variables are already  set  (op-
		     tional).

	     ipaddr  The  IP  address  for  the selected host interface (non-op-
		     tional).

	     netmask
		     The netmask for the selected host interface (non-optional).

	     _ftpPath
		     The fully qualified URL of  the  FTP  site  containing  the
		     FreeBSD   distribution   you   are   interested   in,  e.g.
		     ftp://ftp.FreeBSD.org/pub/FreeBSD/.

     mediaSetFTPActive
	     Alias for mediaSetFTP using "active" FTP transfer mode.

	     Variables: Same as for mediaSetFTP.

     mediaSetFTPPassive
	     Alias for mediaSetFTP using "passive" FTP transfer mode.

	     Variables: Same as for mediaSetFTP.

     mediaSetHTTP
	     Alias for mediaSetFTP using an HTTP proxy.

	     Variables: See mediaSetFTP, plus

	     _httpPath
		     The proxy to use (host:port) (non-optional).

     mediaSetUFS
	     Select an existing UFS partition (mounted with the label editor) as
	     the installation media.

	     Variables:

	     ufs     full /path to directory containing the FreeBSD distribution
		     you are interested in.

     mediaSetNFS

	     Variables:

	     hostname
		     The name of the host being installed (non-optional).

	     domainname
		     The domain name of the host being installed (optional).

	     defaultrouter
		     The default router for this host (non-optional).

	     netDev  Which host interface to use (ed0 or ep0, for example.  Non-
		     optional).

	     netInteractive
		     If set, bring up the interactive network setup form even if
		     all relevant configuration variables are already  set  (op-
		     tional).

	     ipaddr  The  IP  address  for  the selected host interface (non-op-
		     tional).

	     netmask
		     The netmask for the selected host interface (non-optional).

	     nfs     full hostname:/path specification for directory  containing
		     the FreeBSD distribution you are interested in.

     mediaSetFTPUserPass

	     Variables:

	     ftpUser
		     The username to log in as on the ftp server site.	Default:
		     ftp

	     ftpPass
		     The  password  to	use  for this username on the ftp server
		     site.  Default: user@host

     mediaSetCPIOVerbosity

	     Variables:

	     cpioVerbose
		     Can be used to set the verbosity  of  cpio  extractions  to
		     low, medium or high.

     mediaGetType
	     Interactively get the user to specify some type of media.

	     Variables: None

     optionsEditor
	     Invoke the interactive options editor.

	     Variables: None

     packageAdd
	     Try to fetch and add a package to the system (requires that a media
	     type be set),

	     Variables:

	     package
		     The  name	of  the  package  to  add,  e.g.  bash-1.14.7 or
		     ncftp-2.4.2.

     addGroup
	     Invoke the interactive group editor.

	     Variables: None

     addUser
	     Invoke the interactive user editor.

	     Variables: None

     shutdown
	     Stop the script and terminate sysinstall.

	     Variables: None

     system  Execute an arbitrary command with system(3)

	     Variables:

	     command
		     The name of the command to execute.  When	running  from  a
		     boot floppy, very minimal expectations should be made as to
		     what is available until/unless a relatively full system in-
		     stallation has just been done.

     tcpMenuSelect
	     Configure a network device.

	     Variables:  Same  as  for	mediaSetFTP  except that _ftpPath is not
	     used.

DISTRIBUTION MEDIA
     The following files can be used to affect the operation of sysinstall  when
     used during initial system installation.

     cdrom.inf	     A	text  file  of properties, listed one per line, that de-
		     scribe the contents of the media in use.	The  syntax  for
		     each  line  is  simply "property = value".  Currently, only
		     the following properties are recognized.

		     CD_VERSION       This property should be set to the FreeBSD
				      version on the current media volume.   For
				      example, "CD_VERSION = 5.3".

		     CD_MACHINE_ARCH  This  property should be set to the archi-
				      tecture of the contents  on  this  volume.
				      This  property  is normally only used with
				      FreeBSD products that contain CDs for dif-
				      ferent architectures,  to  provide  better
				      error messages if users try to install Al-
				      pha  packages on an i386 machine.  For ex-
				      ample, "CD_MACHINE_ARCH = alpha".

		     CD_VOLUME	      In a multi-volume collection (such as  the
				      FreeBSD 4-CD set), the ports/INDEX file on
				      each  disc should contain the full package
				      index for the set.  The last field of  the
				      INDEX  file denotes which volume the pack-
				      age appears on, and the CD_VOLUME property
				      here defines the volume ID of the  current
				      disc.

     packages/INDEX  The  package index file.  Each package is listed on a sepa-
		     rate line with additional meta-data such  as  the	required
		     dependencies.  This index is generated by "make index" from
		     the  ports(7) collection.	When multi-volume support is en-
		     abled, an additional field should be added to each line in-
		     dicating which media volume contains the given package.

     For information about building a full release of FreeBSD,	please	see  re-
     lease(7).

FILES
     This  utility  may  edit  the  contents  of  /etc/rc.conf,  /etc/hosts, and
     /etc/resolv.conf as necessary to reflect changes in the network  configura-
     tion.

SEE ALSO
     If  you  have  a  reasonably  complete  source  tree online, take a look at
     /usr/src/usr.sbin/sysinstall/install.cfg for a sample installation script.

HISTORY
     This version of sysinstall first appeared in FreeBSD 2.0.

AUTHORS
     Jordan K. Hubbard <jkh@FreeBSD.org>

BUGS
     This utility is a prototype which lasted several years past its  expiration
     date and is greatly in need of death.

FreeBSD 5.5			 August 9, 1997 		   SYSINSTALL(8)

home | help