xref: /dragonfly/usr.sbin/config/config.8 (revision 62f7f702)
1.\" Copyright (c) 1980, 1991, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. All advertising materials mentioning features or use of this software
13.\"    must display the following acknowledgement:
14.\"	This product includes software developed by the University of
15.\"	California, Berkeley and its contributors.
16.\" 4. Neither the name of the University nor the names of its contributors
17.\"    may be used to endorse or promote products derived from this software
18.\"    without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\"     @(#)config.8	8.2 (Berkeley) 4/19/94
33.\" $FreeBSD: src/usr.sbin/config/config.8,v 1.21.2.7 2003/04/23 07:32:39 brueffer Exp $
34.\" $DragonFly: src/usr.sbin/config/config.8,v 1.6 2008/05/01 20:24:01 swildner Exp $
35.\"
36.Dd July 4, 2001
37.Dt CONFIG 8
38.Os
39.Sh NAME
40.Nm config
41.Nd build system configuration files
42.Sh SYNOPSIS
43.Nm
44.Op Fl gpr
45.Op Fl d Ar destdir
46.Ar SYSTEM_NAME
47.Sh DESCRIPTION
48The
49.Nm
50utility builds a set of system configuration files from the file
51.Ar SYSTEM_NAME
52which describes
53the system to configure.
54A second file
55tells
56.Nm
57what files are needed to generate a system and
58can be augmented by configuration specific set of files
59that give alternate files for a specific machine
60(see the
61.Sx FILES
62section below).
63.Pp
64Available options and operands:
65.Bl -tag -width ".Ar SYSTEM_NAME"
66.It Fl d Ar destdir
67Use
68.Ar destdir
69as the output directory, instead of the default one.
70Note that
71.Nm
72does not append
73.Ar SYSTEM_NAME
74to the directory given.
75.It Fl g
76Configure a system for debugging.
77.It Fl p
78Configure a system for profiling; for example,
79.Xr kgmon 8
80and
81.Xr gprof 1 .
82If two or more
83.Fl p
84options are supplied,
85.Nm
86configures a system for high resolution profiling.
87.It Fl r
88Remove the old compile directory (see below).
89.It Ar SYSTEM_NAME
90Specify the name of the system configuration file
91containing device specifications, configuration options
92and other system parameters for one system configuration.
93.El
94.Pp
95.Nm
96should be run from the
97.Pa conf
98subdirectory of the system source (usually
99.Pa /sys/ Ns Va ARCH Ns Pa /conf ) ,
100where
101.Va ARCH
102represents one of the architectures supported by
103.Dx .
104.Nm
105creates the directory
106.Pa ../../compile/ Ns Ar SYSTEM_NAME
107or the one given with the
108.Fl d
109option
110as necessary and places all output files there.
111If the output directory already exists and the
112.Fl r
113flag was specified, it will be removed first.
114The output of
115.Nm
116consists of a number of files; for the
117.Tn i386 ,
118they are:
119.Pa ioconf.c ,
120a description
121of what I/O devices are attached to the system;
122.Pa Makefile ,
123used by
124.Xr make 1
125in building the system;
126header files,
127definitions of
128the number of various devices that will be compiled into the system.
129.Pp
130After running
131.Nm ,
132it is necessary to run
133.Dq Li make depend
134in the directory where the new makefile
135was created.
136The
137.Nm
138utility prints a reminder of this when it completes.
139.Pp
140If any other error messages are produced by
141.Nm ,
142the problems in the configuration file should be corrected and
143.Nm
144should be run again.
145Attempts to compile a system that had configuration errors
146are likely to fail.
147.Pp
148If the
149.Cd "options INCLUDE_CONFIG_FILE"
150is used in the configuration file the
151entire input file is embedded in the new kernel.
152This means that
153.Xr strings 1
154can be used to extract it from a kernel:
155to extract the configuration information, use the command
156.Pp
157.Dl "strings -n 3 kernel | sed -n 's/^___//p'"
158.Sh DEBUG KERNELS
159Traditional
160.Bx
161kernels are compiled without symbols due to the heavy load on the
162system when compiling a
163.Dq debug
164kernel.
165A debug kernel contains complete symbols for all the source files, and
166enables an experienced kernel programmer to analyse the cause of a problem.
167The
168debuggers available prior to
169.Bx 4.4 Lite
170were able to find some information
171from a normal kernel;
172.Xr gdb 1
173provides very little support for normal kernels, and a debug kernel is needed
174for any meaningful analysis.
175.Pp
176In order to ease posting bug reports for inexperienced users and
177make the debugging environment more uniform,
178.Dx
179installs kernel and modules unstripped.
180Debug information is not loaded into memory, so the only impact is
181a minor growth in root file-system consumption by 10MB.
182Those wishing to install stripped down kernel and modules can specify two new
183makeoptions in their kernel config file or when they run the
184kernel-related targets to make:
185.Bl -tag -width ".Va INSTALLSTRIPPEDMODULES=1"
186.It Va INSTALLSTRIPPED=1
187The installed kernel and modules will be stripped of debug info.
188.It Va INSTALLSTRIPPEDMODULES=1
189The installed modules will be stripped of debug info. The kernel will
190be left with debug info intact.
191.El
192.Pp
193Backup copies of the kernel and modules are automatically stripped of
194their debug information by
195.Xr objcopy 1 .
196.Sh FILES
197.Bl -tag -width ".Pa /sys/ Ns Va ARCH Ns Pa /conf/files. Ns Ar SYSTEM_NAME" -compact
198.It Pa /sys/conf/files
199list of common files system is built from
200.It Pa /sys/conf/Makefile. Ns Va ARCH
201generic makefile for the
202.Va ARCH
203.It Pa /sys/conf/files. Ns Va ARCH
204list of
205.Va ARCH
206specific files
207.It Pa /sys/ Ns Va ARCH Ns Pa /conf/files. Ns Ar SYSTEM_NAME
208list of files specific to
209.Ar SYSTEM_NAME
210on
211.Va ARCH
212.It Pa /sys/compile/ Ns Ar SYSTEM_NAME
213default kernel build directory for system
214.Ar SYSTEM_NAME .
215.El
216.Sh SEE ALSO
217The
218.Sx SYNOPSIS
219portion of each device in section 4.
220.Rs
221.%T "Building 4.3 BSD UNIX System with Config"
222.Re
223.Sh HISTORY
224The
225.Nm
226utility appeared in
227.Bx 4.1 .
228.Sh BUGS
229The line numbers reported in error messages are usually off by one.
230