xref: /freebsd/usr.sbin/config/config.5 (revision 262e143bd46171a6415a5b28af260a5efa2a3db8)
1.\" Copyright (c) 2003 Joseph Koshy
2.\"
3.\" Redistribution and use in source and binary forms, with or without
4.\" modification, are permitted provided that the following conditions
5.\" are met:
6.\" 1. Redistributions of source code must retain the above copyright
7.\"    notice, this list of conditions and the following disclaimer.
8.\" 2. Redistributions in binary form must reproduce the above copyright
9.\"    notice, this list of conditions and the following disclaimer in the
10.\"    documentation and/or other materials provided with the distribution.
11.\"
12.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
13.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
22.\" SUCH DAMAGE.
23.\"
24.\" $FreeBSD$
25.\"
26.Dd December 3, 2005
27.Dt CONFIG 5
28.Os
29.Sh NAME
30.Nm config
31.Nd kernel configuration file format
32.Sh DESCRIPTION
33A kernel configuration file specifies the configuration of a
34.Fx
35kernel.
36It is processed by
37.Xr config 8
38to create a build environment where a kernel may be built using
39.Xr make 1 .
40.Ss Lexical Structure
41A kernel configuration file comprises a sequence of specification
42directives.
43.Pp
44A specification directive starts with a keyword at the beginning
45of the line and is followed by additional parameters.
46.Pp
47A specification directive may be terminated by a semicolon
48.Ql \&;
49or by a newline.
50Long input lines may be broken into shorter lines by starting the
51second and subsequent lines with a white space character.
52.Pp
53Case is significant,
54.Dq Li machine
55and
56.Dq Li MACHINE
57are different tokens.
58.Pp
59A double quote character
60.Ql \[dq]
61starts a quoted string.
62All characters up to the next quote character form the value
63of the quoted string.
64A
65.Ql \[dq]
66character may be inserted into a quoted string by
67using the sequence
68.Ql \e\[dq] .
69.Pp
70Numbers are specified using
71.Tn C Ns -style
72syntax.
73.Pp
74A
75.Ql #
76character starts a comment; all characters from the
77.Ql #
78character till the end of the current line are ignored.
79.Pp
80Whitespace between tokens is ignored, except inside quoted strings.
81Whitespace following a comment line is ignored.
82.Ss Configuration Directives
83Kernel configuration directives may appear in any order
84in a kernel configuration file.
85Directives are processed in order of appearance with subsequent
86directive lines overriding the effect of prior ones.
87.Pp
88The list of keywords and their meanings are as follows:
89.Bl -tag -width indent -compact
90.\" -------- CPU --------
91.Pp
92.It Ic cpu Ar cputype
93Specify the CPU this kernel will run on.
94There can be more than one
95.Ic cpu
96directive in a configuration file.
97The allowed list of CPU names is architecture specific and is
98defined in the file
99.Pa sys/conf/options. Ns Aq Ar arch .
100.\" -------- DEVICE --------
101.Pp
102.It Ic device Ar name Op , Ar name Op ...
103.It Ic devices Ar name Op , Ar name Op ...
104Configures the specified devices
105for inclusion into the kernel image.
106Devices that are common to all architectures are
107defined in the file
108.Pa sys/conf/files .
109Devices that are specific to architecture
110.Ar arch
111are defined in the file
112.Pa sys/conf/files. Ns Aq Ar arch .
113.\" -------- ENV --------
114.Pp
115.It Ic env Ar filename
116Specifies a filename containing a kernel environment definition.
117The kernel normally uses an environment prepared for it at boot time
118by
119.Xr loader 8 .
120This directive makes the kernel ignore the boot environment and use
121the compiled-in environment instead.
122.Pp
123This directive is useful for setting kernel tunables in
124embedded environments that do not start from
125.Xr loader 8 .
126.\" -------- FILES --------
127.Pp
128.It Ic files Ar filename
129Specifies a file containing a list of files specific to that kernel
130configuration file (a la
131.Pa files. Ns Aq Ar arch ) .
132.\" -------- HINTS --------
133.Pp
134.It Ic hints Ar filename
135Specifies a file to load a static device configuration specification
136from.
137From
138.Fx 5.0
139onwards, the kernel reads the system's device configuration at boot
140time (see
141.Xr device.hints 5 ) .
142This directive configures the kernel to use the static device configuration
143listed in
144.Ar filename .
145The file
146.Ar filename
147must conform to the syntax specified by
148.Xr device.hints 5 .
149.\" -------- IDENT --------
150.Pp
151.It Ic ident Ar name
152Set the kernel name to
153.Ar name .
154At least one
155.Ic ident
156directive is required.
157.\" -------- INCLUDE --------
158.Pp
159.It Ic include Ar filename
160Read subsequent text from file
161.Ar filename
162and return to the current file after
163.Ar filename
164is successfully processed.
165.\" -------- MACHINE --------
166.Pp
167.It Ic machine Ar arch
168Specifies the architecture of the machine the kernel is being
169compiled for.
170Legal values for
171.Ar arch
172include:
173.Pp
174.Bl -tag -width ".Cm powerpc" -compact
175.It Cm alpha
176The DEC Alpha architecture.
177.It Cm amd64
178The AMD x86-64 architecture.
179.It Cm i386
180The Intel x86 based PC architecture.
181.It Cm ia64
182The Intel IA64 architecture.
183.It Cm pc98
184The PC98 architecture.
185.It Cm powerpc
186The IBM PowerPC architecture.
187.It Cm sparc64
188The Sun Sparc64 architecture.
189.El
190.Pp
191A kernel configuration file may have only one
192.Ic machine
193directive.
194.\" -------- MAKEOPTION --------
195.Pp
196.It Ic makeoption Ar options
197.It Ic makeoptions Ar options
198Add
199.Ar options
200to the generated makefile.
201.Pp
202The
203.Ar options
204argument is a comma separated list of one or more option
205specifications.
206Each option specification has the form
207.Pp
208.D1 Ar MakeVariableName Ns Op = Ns Ar Value
209.Pp
210and results in the appropriate
211.Xr make 1
212variable definition being inserted into the generated makefile.
213If only the name of the
214.Xr make 1
215variable is specified,
216.Ar value
217is assumed to be the empty string.
218.Pp
219Example:
220.Bd -literal -offset indent -compact
221makeoptions MYMAKEOPTION="foobar"
222makeoptions MYNULLMAKEOPTION
223.Ed
224.\" -------- MAXUSERS --------
225.Pp
226.It Ic maxusers Ar number
227This optional directive is used to configure the size
228of some kernel data structures.
229The parameter
230.Ar number
231can be 0 (the default) or an integer greater than or equal to 2.
232A value of 0 indicates that the kernel should configure
233its data structures according to the size of available
234physical memory.
235If auto configuration is requested, the kernel will set
236this tunable to a value between 32 and 384.
237.Pp
238As explained in
239.Xr tuning 7 ,
240this tunable can also be set at boot time using
241.Xr loader 8 .
242.\" -------- NOCPU --------
243.Pp
244.It Ic nocpu Ar cputype
245Remove the specified CPU
246from the list of previously selected CPUs.
247This directive can be used to cancel the effect of
248.Ic cpu
249directives in files included using
250.Ic include .
251.\" -------- NODEVICE --------
252.Pp
253.It Ic nodevice Ar name Op , Ar name Op ...
254.It Ic nodevices Ar name Op , Ar name Op ...
255Remove the specified devices
256from the list of previously selected devices.
257This directive can be used to cancel the effects of
258.Ic device
259or
260.Ic devices
261directives in files included using
262.Ic include .
263.\" -------- NOMAKEOPTION --------
264.Pp
265.It Ic nomakeoption Ar name
266.It Ic nomakeoptions Ar name
267Removes previously defined
268.Xr make 1
269option
270.Ar name
271from the kernel build.
272This directive can be used to cancel the effects of
273.Ic makeoption
274directives in files included using
275.Ic include .
276.\" -------- NOOPTION --------
277.Pp
278.It Ic nooption Ar name Op , Ar name Op ...
279.It Ic nooptions Ar name Op , Ar name Op ...
280Remove the specified kernel options
281from the list of previously defined options.
282This directive can be used to cancel the effects of
283.Ic option
284or
285.Ic options
286directives in files included using
287.Ic include .
288.\" -------- OPTIONS --------
289.Pp
290.It Ic option Ar optionspec Op , Ar optionspec Op ...
291.It Ic options Ar optionspec Op , Ar optionspec Op ...
292Add compile time kernel options to the kernel build.
293Each option specification has the form
294.Pp
295.D1 Ar name Ns Op = Ns Ar value
296.Pp
297If
298.Ar value
299is not specified, it is assumed to be
300.Dv NULL .
301Options common to all architectures are specified in
302the file
303.Pa sys/conf/options .
304Options specific to architecture
305.Ar arch
306are specified in the file
307.Pa sys/conf/options. Ns Aq Ar arch .
308.\" -------- PROFILE --------
309.Pp
310.It Ic profile Ar number
311Enables kernel profiling if
312.Ar number
313is non-zero.
314If
315.Ar number
316is 2 or greater, the kernel is configured for
317high-resolution profiling.
318Kernels can also be built for profiling using the
319.Fl p
320option to
321.Xr config 8 .
322.El
323.Ss Obsolete Directives
324The following kernel configuration directives are obsolete.
325.Bl -tag -width indent
326.\" -------- CONFIG --------
327.Pp
328.It Ic config
329This directive was used to specify the device to be used for the root
330file system.
331From
332.Fx 4.0
333onwards, this information is passed to a booting kernel by
334.Xr loader 8 .
335.El
336.Sh FILES
337.Bl -tag -width ".Pa sys/conf/Makefile. Ns Ar arch" -compact
338.It Pa sys/compile/ Ns Ar NAME
339Compile directory created from a kernel configuration.
340.It Pa sys/conf/Makefile. Ns Ar arch
341.Pa Makefile
342fragments for architecture
343.Ar arch .
344.It Pa sys/conf/files
345Devices common to all architectures.
346.It Pa sys/conf/files. Ns Ar arch
347Devices for architecture
348.Ar arch .
349.It Pa sys/conf/options
350Options common to all architectures.
351.It Pa sys/conf/options. Ns Ar arch
352Options for architecture
353.Ar arch .
354.El
355.Sh SEE ALSO
356.Xr kenv 1 ,
357.Xr make 1 ,
358.Xr device.hints 5 ,
359.Xr loader.conf 5 ,
360.Xr config 8 ,
361.Xr kldload 8 ,
362.Xr loader 8
363.Rs
364.%T "Building 4.4BSD Kernels with Config"
365.%A "Samuel J. Leffler"
366.%A "Michael J. Karels"
367.Re
368.Sh HISTORY
369The
370.Xr config 8
371utility first appeared in
372.Bx 4.1 ,
373and was subsequently revised in
374.Bx 4.4 .
375.Pp
376The kernel configuration mechanism changed further in
377.Fx 4.0
378and
379.Fx 5.0 ,
380moving toward an architecture supporting dynamic kernel
381configuration.
382