xref: /freebsd/usr.sbin/bsdinstall/bsdinstall.8 (revision 8d20be1e22095c27faf8fe8b2f0d089739cc742e)
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 15, 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 zfsboot
112Provides the installer's
113.Pq experimental
114interactive/scriptable ZFS partitioner for multi-disk installations.
115Creates a single
116.Ic zpool
117with datasets and writes to the new system's
118.Pa rc.conf ,
119.Pa loader.conf ,
120and
121.Pa fstab .
122Supports
123.Xr geli 8 ,
124.Xr gnop 8 ,
125and many other features.
126.It Cm partedit
127Provides the installer's interactive manual disk partitioner, with support
128for multi disk setups, non-UFS file systems, and manual selection of
129partition schemes. Partitions disks, runs
130.Xr newfs 8 ,
131and writes the new system's
132.Pa fstab .
133.It Cm scriptedpart Ar parameters
134Sets up disks like
135.Cm autopart
136and
137.Cm partedit ,
138but non-interactively according to the disk setup specified in
139.Ar parameters .
140Each disk setup is specified by a three-part argument:
141.Pp
142.Ar disk
143.Op Ar scheme
144.Op Ar {partitions}
145.Pp
146Multiple disk setups are separated by semicolons. The
147.Ar disk
148argument specifies the disk on which to operate (which will be erased),
149while the
150.Ar scheme
151argument specifies the
152.Xr gpart 8
153partition scheme to apply to the disk. If
154.Ar scheme
155is unspecified,
156.Cm scriptedpart
157will apply the default bootable scheme on your platform.
158The
159.Ar partitions
160argument is also optional and specifies how to partition
161.Ar disk .
162It consists of a comma-separated list of partitions to create enclosed in
163curly braces. Each partition declaration takes the form
164.Pp
165.Ar size
166.Ar type
167.Op Ar mount point
168.Pp
169.Ar size
170specifies the partition size to create in bytes (K, M, and G suffixes
171can be appended to specify kilobytes, megabytes, and gigabytes respectively),
172while the
173.Em auto
174keyword causes the partition to take all the remaining space on the disk. The
175.Ar type
176option chooses the
177.Xr gpart 8
178filesystem type (e.g. freebsd-ufs or freebsd-swap).
179The optional
180.Ar mount point
181argument sets where the created partition is to be mounted in the installed
182system. As an example, a typical invocation looks like:
183.Pp
184bsdinstall scriptedpart ada0 { 20G freebsd-ufs /, 4G freebsd-swap, 20G freebsd-ufs /var, auto freebsd-ufs /usr }
185.It Cm mount
186Mounts the file systems previously configured by
187.Cm autopart ,
188.Cm partedit ,
189or
190.Cm scriptedpart
191under
192.Ev BSDINSTALL_CHROOT .
193.It Cm distfetch
194Fetches the distributions in
195.Ev DISTRIBUTIONS
196to
197.Ev BSDINSTALL_DISTDIR
198from
199.Ev BSDINSTALL_DISTSITE .
200.It Cm checksum
201Verifies the checksums of the distributions listed in
202.Ev DISTRIBUTIONS
203against the distribution manifest.
204.It Cm distextract
205Extracts the distributions listed in
206.Ev DISTRIBUTIONS
207into
208.Ev BSDINSTALL_CHROOT .
209.It Cm rootpass
210Interactively invokes
211.Xr passwd 1
212in the new system to set the root user's password.
213.It Cm adduser
214Interactively invokes
215.Xr adduser 8
216in the new system.
217.It Cm time
218Interactively sets the time, date, and time zone of the new system.
219.It Cm services
220Queries the user for the system daemons to begin at system startup,
221writing the result into the new system's
222.Pa rc.conf .
223.It Cm config
224Installs the configuration files destined for the new system (e.g. rc.conf
225fragments generated by
226.Cm netconfig ,
227etc.) onto the new system.
228.El
229.Sh ENVIRONMENT VARIABLES
230The following environment variables control various aspects of the installation
231process. Many are used internally during installation and have reasonable
232default values for most installation scenarios. Others are set by various
233interactive user prompts, and can be usefully overridden when making scripted
234or customized installers.
235.Bl -tag -width ".Ev BSDINSTALL_DISTSITE"
236.It Ev DISTRIBUTIONS
237The set of distributions to install (e.g. "base kernel ports"). Default: none
238.It Ev BSDINSTALL_DISTDIR
239The directory in which the distribution files can be found (or to which they
240should be downloaded). Default:
241.Pa /usr/freebsd-dist
242.It Ev BSDINSTALL_DISTSITE
243URL from which the distribution files should be downloaded if they are not
244already present in the directory defined by
245.Ev BSDINSTALL_DISTDIR .
246This should be a full path to the files, including architecture and release
247names. Most targets (e.g.
248.Cm auto
249and
250.Cm jail )
251that prompt for a
252.Fx
253mirror will skip that step if this variable is already defined in the
254environment. Example:
255.Pa ftp://ftp.freebsd.org/pub/FreeBSD/releases/powerpc/powerpc64/9.1-RELEASE
256.It Ev BSDINSTALL_CHROOT
257The directory into which the distribution files should be unpacked and the
258directory at which the root file system of the new system should be mounted.
259Default:
260.Pa /mnt
261.It Ev BSDINSTALL_LOG
262Path to a log file for the installation. Default:
263.Pa /tmp/bsdinstall_log
264.It Ev BSDINSTALL_TMPETC
265Directory where files destined for the new system's
266.Pa /etc
267will be stored until the
268.Cm config
269target is executed. If this directory does not already exist, it will be
270created. Default:
271.Pa /tmp/bsdinstall_etc
272.It Ev BSDINSTALL_TMPBOOT
273Directory where files destined for the new system's
274.Pa /boot
275will be stored until the
276.Cm config
277target is executed. If this directory does not already exist, it will be
278created. Default:
279.Pa /tmp/bsdinstall_boot
280.El
281.Sh SCRIPTING
282.Nm
283scripts consist of two parts: a
284.Em preamble
285and a
286.Em setup script .
287The preamble sets up the options for the installation (how to partition the
288disk[s], which distributions to install, etc.) and the optional second part is
289a shell script run under
290.Xr chroot 8
291in the newly installed system before
292.Nm
293exits. The two parts are separated by the usual script header (#!), which
294also sets the interpreter for the setup script.
295.Pp
296A typical bsdinstall script looks like this:
297.Bd -literal -offset indent
298PARTITIONS=ada0
299DISTRIBUTIONS="kernel.txz base.txz"
300
301#!/bin/sh
302echo "ifconfig_em0=DHCP" >> /etc/rc.conf
303echo "sshd_enable=YES" >> /etc/rc.conf
304pkg install puppet
305.Ed
306.Pp
307On
308.Fx
309release media, such a script placed at
310.Pa /etc/installerconfig
311will be run at boot time and the system will be rebooted automatically after
312the installation has completed. This can be used for unattended network
313installation of new systems; see
314.Xr diskless 8
315for details.
316.Ss PREAMBLE
317The preamble consists of installer settings. These control global installation
318parameters (see
319.Sx ENVIRONMENT VARIABLES )
320as well as disk partitioning. The preamble is interpreted as a
321.Xr sh 1
322script run at the very beginning of the install. If more complicated behavior
323than setting these variables is desired, arbitrary commands can be run here
324to extend the installer. In addition to the variables in
325.Sx ENVIRONMENT VARIABLES ,
326in particular
327.Ev DISTRIBUTIONS ,
328the preamble can contain a variable
329.Ev PARTITIONS
330which is passed to the
331.Cm scriptedpart
332target to control disk setup.
333Alternatively,
334instead of
335.Ev PARTITIONS ,
336the preamble can contain the variable
337.Ev ZFSBOOT_DATASETS
338which is parsed by the
339.Pq experimental
340.Cm zfsboot
341target to control ZFS datasets/options of the boot pool setup.
342.Ss SETUP SCRIPT
343Following the preamble is an optional shell script, beginning with a #!
344declaration. This script will be run at the end of the installation process
345inside a
346.Xr chroot 8
347environment in the newly installed system and can be used to set up
348configuration files, install packages, etc. Note that newly configured
349system services (e.g. networking) have not been started in the installed
350system at this time and only installation host services are available.
351.Sh HISTORY
352This version of
353.Nm
354first appeared in
355.Fx 9.0 .
356.Sh AUTHORS
357.An -nosplit
358.An Nathan Whitehorn Aq nwhitehorn@FreeBSD.org
359