1.\"- 2.\" Copyright (c) 2011-2013 Nathan Whitehorn <nwhitehorn@FreeBSD.org> 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17.\" DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 18.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 22.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 23.\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24.\" POSSIBILITY OF SUCH DAMAGE. 25.\" 26.\" $FreeBSD$ 27.\" 28.Dd October 6, 2013 29.Dt BSDINSTALL 8 30.Os 31.Sh NAME 32.Nm bsdinstall 33.Nd system installer 34.Sh SYNOPSIS 35.Nm 36.Op Ar target 37.Op Ar ... 38.Sh DESCRIPTION 39.Nm 40is used for installation of new systems, both for system setup from 41installation media (e.g. CD-ROMs) and for use on live systems to prepare 42VM images and jails. 43.Pp 44Much like 45.Xr make 1 , Nm 46takes a target and possible parameters of the target as arguments. If 47invoked with no arguments, it will invoke the 48.Cm auto 49target, which provides a standard interactive installation, invoking the 50others in sequence. To perform a scripted installation, these subtargets 51can be invoked separately by an installation script. 52.Sh TARGETS 53Most of the following targets are only useful for scripting the installer. 54For interactive use, most users will be interested only in the 55.Cm auto , 56.Cm jail , 57and 58.Cm script 59targets. 60.Bl -tag -width ".Cm jail Ar destination" 61.It Cm auto 62Run the standard interactive installation, including disk partitioning. 63.It Cm entropy 64Reads a small amount of data from 65.Pa /dev/random 66and stores it in a file in the new system's root directory. 67.It Cm jail Ar destination 68Sets up a new chroot system at 69.Pa destination , 70suitable for use with 71.Xr jail 8 . 72Behavior is generally similar to 73.Cm auto , 74except that disk partitioning and network setup are skipped and a kernel is 75not installed into the new system. 76.It Cm script Ar script 77Runs the installation script at 78.Pa script . 79See 80.Sx SCRIPTING 81for more information on this target. 82.It Cm keymap 83If the current controlling TTY is a 84.Xr syscons 4 85console, asks the user to set the current keymap, and saves the result to the 86new system's 87.Pa rc.conf . 88.It Cm hostname 89Prompts the user for a host name for the new system and saves the result to the 90new system's 91.Pa rc.conf . 92If 93.Ev BSDINSTALL_CONFIGCURRENT 94is set, also sets the host name of the current system. 95.It Cm netconfig 96Interactively configures network interfaces (first invoking 97.Cm wlanconfig 98on wireless interfaces), saving the result to the new system's 99.Pa rc.conf 100and 101.Pa resolv.conf . 102If 103.Ev BSDINSTALL_CONFIGCURRENT 104is set, also configures the network interfaces of the current system to match. 105.It Cm autopart 106Provides the installer's interactive guided disk partitioner for single-disk 107installations. Partitions disks, runs 108.Xr newfs 8 , 109and writes the new system's 110.Pa fstab . 111.It Cm partedit 112Provides the installer's interactive manual disk partitioner, with support 113for multi disk setups, non-UFS file systems, and manual selection of 114partition schemes. Partitions disks, runs 115.Xr newfs 8 , 116and writes the new system's 117.Pa fstab . 118.It Cm scriptedpart Ar parameters 119Sets up disks like 120.Cm autopart 121and 122.Cm partedit , 123but non-interactively according to the disk setup specified in 124.Ar parameters . 125Each disk setup is specified by a three-part argument: 126.Pp 127.Ar disk 128.Op Ar scheme 129.Op Ar {partitions} 130.Pp 131Multiple disk setups are separated by semicolons. The 132.Ar disk 133argument specifies the disk on which to operate (which will be erased), 134while the 135.Ar scheme 136argument specifies the 137.Xr gpart 8 138partition scheme to apply to the disk. If 139.Ar scheme 140is unspecified, 141.Cm scriptedpart 142will apply the default bootable scheme on your platform. 143The 144.Ar partitions 145argument is also optional and specifies how to partition 146.Ar disk . 147It consists of a comma-separated list of partitions to create enclosed in 148curly braces. Each partition declaration takes the form 149.Pp 150.Ar size 151.Ar type 152.Op Ar mount point 153.Pp 154.Ar size 155specifies the partition size to create in bytes (K, M, and G suffixes 156can be appended to specify kilobytes, megabytes, and gigabytes respectively), 157while the 158.Em auto 159keyword causes the partition to take all the remaining space on the disk. The 160.Ar type 161option chooses the 162.Xr gpart 8 163filesystem type (e.g. freebsd-ufs or freebsd-swap). 164The optional 165.Ar mount point 166argument sets where the created partition is to be mounted in the installed 167system. As an example, a typical invocation looks like: 168.Pp 169bsdinstall scriptedpart ada0 { 20G freebsd-ufs /, 4G freebsd-swap, 20G freebsd-ufs /var, auto freebsd-ufs /usr } 170.It Cm mount 171Mounts the file systems previously configured by 172.Cm autopart , 173.Cm partedit , 174or 175.Cm scriptedpart 176under 177.Ev BSDINSTALL_CHROOT . 178.It Cm distfetch 179Fetches the distributions in 180.Ev DISTRIBUTIONS 181to 182.Ev BSDINSTALL_DISTDIR 183from 184.Ev BSDINSTALL_DISTSITE . 185.It Cm checksum 186Verifies the checksums of the distributions listed in 187.Ev DISTRIBUTIONS 188against the distribution manifest. 189.It Cm distextract 190Extracts the distributions listed in 191.Ev DISTRIBUTIONS 192into 193.Ev BSDINSTALL_CHROOT . 194.It Cm rootpass 195Interactively invokes 196.Xr passwd 1 197in the new system to set the root user's password. 198.It Cm adduser 199Interactively invokes 200.Xr adduser 8 201in the new system. 202.It Cm time 203Interactively sets the time, date, and time zone of the new system. 204.It Cm services 205Queries the user for the system daemons to begin at system startup, 206writing the result into the new system's 207.Pa rc.conf . 208.It Cm config 209Installs the configuration files destined for the new system (e.g. rc.conf 210fragments generated by 211.Cm netconfig , 212etc.) onto the new system. 213.El 214.Sh ENVIRONMENT VARIABLES 215The following environment variables control various aspects of the installation 216process. Many are used internally during installation and have reasonable 217default values for most installation scenarios. Others are set by various 218interactive user prompts, and can be usefully overridden when making scripted 219or customized installers. 220.Bl -tag -width ".Ev BSDINSTALL_DISTSITE" 221.It Ev DISTRIBUTIONS 222The set of distributions to install (e.g. "base kernel ports"). Default: none 223.It Ev BSDINSTALL_DISTDIR 224The directory in which the distribution files can be found (or to which they 225should be downloaded). Default: 226.Pa /usr/freebsd-dist 227.It Ev BSDINSTALL_DISTSITE 228URL from which the distribution files should be downloaded if they are not 229already present in the directory defined by 230.Ev BSDINSTALL_DISTDIR . 231This should be a full path to the files, including architecture and release 232names. Most targets (e.g. 233.Cm auto 234and 235.Cm jail ) 236that prompt for a 237.Fx 238mirror will skip that step if this variable is already defined in the 239environment. Example: 240.Pa ftp://ftp.freebsd.org/pub/FreeBSD/releases/powerpc/powerpc64/9.1-RELEASE 241.It Ev BSDINSTALL_CHROOT 242The directory into which the distribution files should be unpacked and the 243directory at which the root file system of the new system should be mounted. 244Default: 245.Pa /mnt 246.It Ev BSDINSTALL_LOG 247Path to a log file for the installation. Default: 248.Pa /tmp/bsdinstall_log 249.It Ev BSDINSTALL_TMPETC 250Directory where files destined for the new system's 251.Pa /etc 252will be stored until the 253.Cm config 254target is executed. If this directory does not already exist, it will be 255created. Default: 256.Pa /tmp/bsdinstall_etc 257.It Ev BSDINSTALL_TMPBOOT 258Directory where files destined for the new system's 259.Pa /boot 260will be stored until the 261.Cm config 262target is executed. If this directory does not already exist, it will be 263created. Default: 264.Pa /tmp/bsdinstall_boot 265.El 266.Sh SCRIPTING 267.Nm 268scripts consist of two parts: a 269.Em preamble 270and a 271.Em setup script . 272The preamble sets up the options for the installation (how to partition the 273disk[s], which distributions to install, etc.) and the optional second part is 274a shell script run under 275.Xr chroot 8 276in the newly installed system before 277.Nm 278exits. The two parts are separated by the usual script header (#!), which 279also sets the interpreter for the setup script. 280.Pp 281A typical bsdinstall script looks like this: 282.Bd -literal -offset indent 283PARTITIONS=ada0 284DISTRIBUTIONS="kernel.txz base.txz" 285 286#!/bin/sh 287echo "ifconfig_em0=DHCP" >> /etc/rc.conf 288echo "sshd_enable=YES" >> /etc/rc.conf 289pkg install puppet 290.Ed 291.Pp 292On 293.Fx 294release media, such a script placed at 295.Pa /etc/installerconfig 296will be run at boot time and the system will be rebooted automatically after 297the installation has completed. This can be used for unattended network 298installation of new systems; see 299.Xr diskless 8 300for details. 301.Ss PREAMBLE 302The preamble consists of installer settings. These control global installation 303parameters (see 304.Sx ENVIRONMENT VARIABLES ) 305as well as disk partitioning. The preamble is interpreted as a 306.Xr sh 1 307script run at the very beginning of the install. If more complicated behavior 308than setting these variables is desired, arbitrary commands can be run here 309to extend the installer. In addition to the variables in 310.Sx ENVIRONMENT VARIABLES , 311in particular 312.Ev DISTRIBUTIONS , 313the preamble can contain a variable 314.Ev PARTITIONS 315which is passed to the 316.Cm scriptedpart 317target to control disk setup. 318.Ss SETUP SCRIPT 319Following the preamble is an optional shell script, beginning with a #! 320declaration. This script will be run at the end of the installation process 321inside a 322.Xr chroot 8 323environment in the newly installed system and can be used to set up 324configuration files, install packages, etc. Note that newly configured 325system services (e.g. networking) have not been started in the installed 326system at this time and only installation host services are available. 327.Sh HISTORY 328This version of 329.Nm 330first appeared in 331.Fx 9.0 . 332.Sh AUTHORS 333.An -nosplit 334.An Nathan Whitehorn Aq nwhitehorn@FreeBSD.org 335