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

NAME
     bsdinstall -- system installer

SYNOPSIS
     bsdinstall [options] [target] [...]

DESCRIPTION
     bsdinstall  is  used for installation of new systems, both for system setup
     from installation media (e.g. CD-ROMs) and for use on live systems to  pre-
     pare VM images and jails.

     Much like make(1), bsdinstall takes a target and possible parameters of the
     target  as arguments. If invoked with no arguments, it will invoke the auto
     target, which provides a standard interactive  installation,  invoking  the
     others  in  sequence.  To perform a scripted installation, these subtargets
     can be invoked separately by an installation script.

OPTIONS
     bsdinstall supports the following options, global to all targets:

     -D file  Provide  a  path	for  the  installation	 log   file   (overrides
	      BSDINSTALL_LOG).	See "ENVIRONMENT VARIABLES" for more information
	      on BSDINSTALL_LOG.

TARGETS
     Most  of the following targets are only useful for scripting the installer.
     For interactive use, most users will be interested only in the auto,  jail,
     and script targets.

     auto	       Run the standard interactive installation, including disk
		       partitioning.

     jail destination  Sets  up a new chroot system at destination, suitable for
		       use with jail(8).  Behavior is generally similar to auto,
		       except that  disk  partitioning	and  network  setup  are
		       skipped	and  a kernel is not installed into the new sys-
		       tem.

     script script     Runs the installation script at script.	See  "SCRIPTING"
		       for more information on this target.

     keymap	       If  the	current controlling TTY is a syscons(4) or vt(4)
		       console, asks the user to set  the  current  keymap,  and
		       saves the result to the new system's rc.conf.

     hostname	       Prompts	the  user for a host name for the new system and
		       saves  the  result  to  the  new  system's  rc.conf.   If
		       BSDINSTALL_CONFIGCURRENT  is set, also sets the host name
		       of the current system.

     netconfig	       Interactively configures network interfaces (first invok-
		       ing wlanconfig on wireless interfaces), saving the result
		       to  the	new  system's  rc.conf	and   resolv.conf.    If
		       BSDINSTALL_CONFIGCURRENT is set, also configures the net-
		       work interfaces of the current system to match.

     autopart	       Provides  the  installer's interactive guided disk parti-
		       tioner for single-disk installations. Defaults to UFS.

     zfsboot	       Provides an alternative	ZFS-only  automatic  interactive
		       disk  partitioner.   Creates a single zpool with separate
		       datasets for /tmp, /usr, /usr/home, /usr/ports, /usr/src,
		       and /var.  Optionally can set up geli(8) to  encrypt  the
		       disk.

     partedit	       Provides  the  installer's interactive manual disk parti-
		       tioner with an interface identical to sade(8).	Supports
		       multiple disks as well as UFS, ZFS, and FAT file systems.
		       ZFS is set up with one pool and dataset per partition.

     scriptedpart parameters
		       Sets  up disks like autopart and partedit, but non-inter-
		       actively  according  to	the  disk  setup  specified   in
		       parameters.  Each disk setup is specified by a three-part
		       argument:

		       disk [scheme] [{partitions}]

		       Multiple  disk  setups  are  separated by semicolons. The
		       disk argument specifies the  disk  on  which  to  operate
		       (which  will be erased), while the scheme argument speci-
		       fies the gpart(8) partition scheme to apply to the  disk.
		       If scheme is unspecified, scriptedpart will apply the de-
		       fault  bootable	scheme on your platform.  The partitions
		       argument is also optional and specifies how to  partition
		       disk.   It  consists  of a comma-separated list of parti-
		       tions to create enclosed in curly braces. Each  partition
		       declaration takes the form

		       size type [mount point]

		       size  specifies the partition size to create in bytes (K,
		       M, and G suffixes can be appended to  specify  kilobytes,
		       megabytes,  and	gigabytes  respectively), while the auto
		       keyword causes the partition to take  all  the  remaining
		       space  on  the disk. The type option chooses the gpart(8)
		       filesystem  type  (e.g.	freebsd-ufs,   freebsd-zfs,   or
		       freebsd-swap).	The  optional  mount point argument sets
		       where the created partition is to be mounted in	the  in-
		       stalled system. As an example, a typical invocation looks
		       like:

		       bsdinstall  scriptedpart  ada0  {  20G  freebsd-ufs /, 4G
		       freebsd-swap, 20G freebsd-ufs /var, auto freebsd-ufs /usr
		       }

		       A shorter invocation to use the default partitioning  (as
		       autopart would have used) on the same disk:

		       bsdinstall scriptedpart ada0

     mount	       Mounts	the   file   systems  previously  configured  by
		       autopart,     partedit,	   or	  scriptedpart	   under
		       BSDINSTALL_CHROOT.

     distfetch	       Fetches	  the	 distributions	 in   DISTRIBUTIONS   to
		       BSDINSTALL_DISTDIR from BSDINSTALL_DISTSITE.

     checksum	       Verifies the checksums of  the  distributions  listed  in
		       DISTRIBUTIONS against the distribution manifest.

     distextract       Extracts  the  distributions listed in DISTRIBUTIONS into
		       BSDINSTALL_CHROOT.

     rootpass	       Interactively invokes passwd(1) in the new system to  set
		       the root user's password.

     adduser	       Interactively invokes adduser(8) in the new system.

     time	       Interactively  sets  the time, date, and time zone of the
		       new system.

     services	       Queries the user for the system daemons to begin at  sys-
		       tem  startup,  writing  the  result into the new system's
		       rc.conf.

     entropy	       Reads a small amount of data from /dev/random and  stores
		       it in a file in the new system's root directory.

     config	       Installs  the  configuration  files  destined for the new
		       system (e.g. rc.conf fragments  generated  by  netconfig,
		       etc.) onto the new system.

ENVIRONMENT VARIABLES
     The  following environment variables control various aspects of the instal-
     lation process. Many are used internally during installation and have  rea-
     sonable  default  values for most installation scenarios. Others are set by
     various interactive user prompts, and can be usefully overridden when  mak-
     ing scripted or customized installers.

     DISTRIBUTIONS	  The set of distributions to install (e.g. "base kernel
			  ports"). Default: none

     BSDINSTALL_DISTDIR   The  directory  in which the distribution files can be
			  found (or to which they  should  be  downloaded).  De-
			  fault: /usr/freebsd-dist

     BSDINSTALL_DISTSITE  URL  from which the distribution files should be down-
			  loaded if they are not already present in  the  direc-
			  tory	defined by BSDINSTALL_DISTDIR.	This should be a
			  full path to the files, including architecture and re-
			  lease names. Most targets (e.g.  auto and  jail)  that
			  prompt  for  a  FreeBSD  mirror will skip that step if
			  this variable is already defined in  the  environment.
			  Example:
			  ftp://ftp.freebsd.org/pub/FreeBSD/releases/powerpc/powerpc64/9.1-RELEASE

     BSDINSTALL_CHROOT	  The directory into which the distribution files should
			  be  unpacked	and the directory at which the root file
			  system of the new system should be mounted.	Default:
			  /mnt

     BSDINSTALL_LOG	  Path	to  a  log  file  for the installation. Default:
			  /tmp/bsdinstall_log

     BSDINSTALL_TMPETC	  Directory where files destined for  the  new	system's
			  /etc	will  be  stored until the config target is exe-
			  cuted. If this directory does not  already  exist,  it
			  will be created. Default: /tmp/bsdinstall_etc

     BSDINSTALL_TMPBOOT   Directory  where  files  destined for the new system's
			  /boot will be stored until the config target	is  exe-
			  cuted.  If  this  directory does not already exist, it
			  will be created. Default: /tmp/bsdinstall_boot

SCRIPTING
     bsdinstall scripts consist of two parts: a preamble  and  a  setup  script.
     The preamble sets up the options for the installation (how to partition the
     disk[s], which distributions to install, etc.) and the optional second part
     is  a shell script run under chroot(8) in the newly installed system before
     bsdinstall exits. The two parts are separated by the  usual  script  header
     (#!), which also sets the interpreter for the setup script.

     A typical bsdinstall script looks like this:

	   PARTITIONS=ada0
	   DISTRIBUTIONS="kernel.txz base.txz"

	   #!/bin/sh
	   echo "ifconfig_em0=DHCP" >> /etc/rc.conf
	   echo "sshd_enable=YES" >> /etc/rc.conf
	   pkg install puppet

     On FreeBSD release media, such a script placed at /etc/installerconfig will
     be run at boot time and the system will be rebooted automatically after the
     installation has completed. This can be used for unattended network instal-
     lation of new systems; see diskless(8) for details.

   PREAMBLE
     The preamble consists of installer settings. These control global installa-
     tion parameters (see "ENVIRONMENT VARIABLES") as well as disk partitioning.
     The  preamble is interpreted as a sh(1) script run at the very beginning of
     the install. If more complicated behavior than setting these  variables  is
     desired, arbitrary commands can be run here to extend the installer. In ad-
     dition   to   the	variables  in  "ENVIRONMENT  VARIABLES",  in  particular
     DISTRIBUTIONS, the preamble can contain  a  variable  PARTITIONS  which  is
     passed to the scriptedpart target to control disk setup.  Alternatively, to
     use  zfsboot  instead  of	partedit,  the preamble can contain the variable
     ZFSBOOT_DATASETS instead of PARTITIONS.

   SETUP SCRIPT
     Following the preamble is an optional shell script,  beginning  with  a  #!
     declaration. This script will be run at the end of the installation process
     inside  a	chroot(8)  environment	in the newly installed system and can be
     used to set up configuration files, install packages, etc. Note that  newly
     configured  system  services (e.g. networking) have not been started in the
     installed system at this time  and  only  installation  host  services  are
     available.

HISTORY
     This version of bsdinstall first appeared in FreeBSD 9.0.

AUTHORS
     Nathan Whitehorn <nwhitehorn@FreeBSD.org>

FreeBSD 11.1			October 31, 2014		   BSDINSTALL(8)

home | help