xref: /netbsd-src/share/man/man4/options.4 (revision d90047b5d07facf36e6c01dcc0bded8997ce9cc2)
1.\"	$NetBSD: options.4,v 1.512 2020/04/24 13:54:56 jdolecek Exp $
2.\"
3.\" Copyright (c) 1996
4.\" 	Perry E. Metzger.  All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\" 3. All advertising materials mentioning features or use of this software
15.\"    must display the following acknowledgment:
16.\"	This product includes software developed for the NetBSD Project
17.\"	by Perry E. Metzger.
18.\" 4. The name of the author may not be used to endorse or promote products
19.\"    derived from this software without specific prior written permission.
20.\"
21.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31.\"
32.\"
33.Dd April 24, 2020
34.Dt OPTIONS 4
35.Os
36.Sh NAME
37.Nm options
38.Nd Miscellaneous kernel configuration options
39.Sh SYNOPSIS
40.Cd cinclude ...
41.Cd config ...
42.Cd [no] file-system ...
43.Cd ident ...
44.Cd include ...
45.Cd [no] makeoptions ...
46.Cd maxusers ...
47.Cd [no] options ...
48.Cd [no] pseudo-device ...
49.Sh DESCRIPTION
50This manual page describes a number of miscellaneous kernel
51configuration options that may be specified in a kernel config
52file.
53See
54.Xr config 1
55and
56.Xr config 5
57for information on how to configure and build kernels.
58.Pp
59The
60.Ar no
61form removes a previously specified option.
62.Ss Keywords
63The following keywords are recognized in a kernel configuration file:
64.Bl -ohang
65.It Sy cinclude Qq Ar filename
66Conditionally includes another kernel configuration file whose name is
67.Ar filename ,
68which may be double-quoted and may be an explicit path or relative to
69the kernel source directory.
70Failure to open the named file is ignored.
71.It Sy config Ar exec_name No root on Ar rootdev Oo type Ar fstype Oc \
72Oo dumps on Ar dumpdev Oc
73Defines a configuration whose kernel executable is named
74.Ar exec_name ,
75normally
76.Dq netbsd ,
77with its root file system of type
78.Ar fstype
79on the device
80.Ar rootdev ,
81and optionally specifying the location of kernel core dumps on the device
82.Ar dumpdev .
83.Ar dev
84or
85.Ar dumpdev
86and
87.Ar fstype
88may be specified as
89.Dq \&? ,
90which is a wild card.
91The root
92.Ar fstype
93and
94.Ar dumpdev
95are optional and assumed to be wild carded if they are not specified.
96.It Ar device_instance No at Ar attachment \
97Oo Ar locators value Oo ... Oc Oc Oo flags Ar value Oc
98Define an instance of the device driver
99.Ar device_instance
100that attaches to the bus or device named
101.Ar attachment .
102An
103.Ar attachment
104may require additional information on where the device can be found, such
105as an address, channel, function, offset, and/or slot, referred to as
106.Ar locators ,
107whose
108.Ar value
109often may be a wild card,
110.Dq \&? .
111Some device drivers have one or more
112.Ar flags
113that can be adjusted to affect the way they operate.
114.It Sy file-system Ar fs_name Op , Ar fs_name Op ...
115Include support for the file-system
116.Ar fs_name .
117.It Sy ident Qq Ar string
118Sets the kernel identification string to
119.Ar string .
120.It Sy include Qq Ar filename
121Functions the same as
122.Ar cinclude ,
123except failure to open
124.Ar filename
125produces a fatal error.
126.It Sy makeoptions Ar name=value
127Defines a
128.Xr make 1
129macro
130.Ar name
131with the value
132.Ar value
133in the kernel Makefile.
134.It Sy maxusers Ar integer
135Set the maxusers variable in the kernel.
136.It Sy no Ar keyword Ar name Op Ar arguments Op ...
137For the
138.Xr config 1
139.Ar keywords
140file-system, makeoptions, options, and pseudo-device,
141.Ar no
142removes the file-system, makeoption, options, or pseudo-device,
143.Ar name .
144This is useful when a kernel configuration file includes another which
145has undesired options.
146.Pp
147For example, a local configuration file that wanted the kitchen sink, but
148not COMPAT_09 or bridging, might be:
149.Bd -literal -offset indent
150include "arch/i386/conf/GENERIC"
151no options COMPAT_09
152no pseudo-device bridge
153.Ed
154.It Sy options Ar option_name Op , Ar option_name=value Op ...
155Specifies (or sets) the option, or comma-separated list of options,
156.Ar option_name .
157Some options expect to be assigned a value, which may be an integer,
158a double-quoted word, a bare word, or an empty string
159.Pq Qq .
160Note that those are eventually handled by the C compiler, so the rules
161of that language apply.
162.Pp
163.Em Note :
164Options that are not defined by device definition files are passed to
165the compile process as
166.Fl D
167flags to the C compiler.
168.It Sy pseudo-device Ar name Op Ar N
169Includes support for the pseudo-device
170.Ar name .
171Some pseudo-devices can have multiple or
172.Ar N
173instances.
174.El
175.Ss Compatibility Options
176Note that compatibility options for older
177.Nx
178releases includes support for newer releases as well.
179This means that typically only one of these is necessary, with the
180.Cd COMPAT_09
181option enabling all
182.Nx
183compatibility.
184This does not include the
185.Cd COMPAT_43
186or
187.Cd COMPAT_44
188options.
189.Bl -ohang
190.It Cd options COMPAT_09
191Enable binary compatibility with
192.Nx 0.9 .
193This enables support for
19416-bit user, group, and process IDs (following revisions support
19532-bit identifiers).
196It also allows the use of the deprecated
197.Xr getdomainname 3 ,
198.Xr setdomainname 3 ,
199and
200.Xr uname 3
201syscalls.
202This option also allows using numeric file system identifiers rather
203than strings.
204Post
205.Nx 0.9
206versions use string identifiers.
207.It Cd options COMPAT_10
208Enable binary compatibility with
209.Nx 1.0 .
210This option allows the use of the file system name of
211.Dq ufs
212as an alias for
213.Dq ffs .
214The name
215.Dq ffs
216should be used post 1.0 in
217.Pa /etc/fstab
218and other files.
219It also adds old syscalls for the
220.At V
221shared memory interface.
222This was changed post 1.0 to work on 64-bit architectures.
223This option also enables
224.Dq sgtty
225compatibility, without which programs using the old interface produce
226an
227.Dq inappropriate ioctl
228error, and
229.Pa /dev/io
230only works when this option is set in the kernel,
231see
232.Xr io 4
233on ports that support it.
234.It Cd options COMPAT_11
235Enable binary compatibility with
236.Nx 1.1 .
237This allows binaries running on the i386 port to gain direct access to
238the io ports by opening
239.Pa /dev/io
240read/write.
241This functionality was replaced by
242.Xr i386_iopl 2
243post 1.1.
244On the Atari port, the location of the disk label was moved after 1.1.
245When the
246.Em COMPAT_11
247option is set, the kernel will read (pre) 1.1 style disk labels as a
248last resort.
249When a disk label is re-written, the old style label will be replaced
250with a post 1.1 style label.
251This also enables the
252.Em EXEC_ELF_NOTELESS
253option.
254.It Cd options COMPAT_12
255Enable binary compatibility with
256.Nx 1.2 .
257This allows the use of old syscalls for
258.Fn reboot
259and
260.Fn swapon .
261The syscall numbers were changed post 1.2 to add functionality to the
262.Xr reboot 2
263syscall, and the new
264.Xr swapctl 2
265interface was introduced.
266This also enables the
267.Em EXEC_ELF_NOTELESS
268option.
269.It Cd options COMPAT_13
270Enable binary compatibility with
271.Nx 1.3 .
272This allows the use of old syscalls for
273.Fn sigaltstack ,
274and also enables the old
275.Xr swapctl 2
276command
277.Dv SWAP_STATS
278(now called
279.Dv SWAP_OSTATS ) ,
280which does not include the
281.Fa se_path
282member of
283.Va struct swapent .
284.It Cd options COMPAT_14
285Enable binary compatibility with
286.Nx 1.4 .
287This allows some old
288.Xr ioctl 2
289on
290.Xr wscons 4
291to be performed, and allows the
292.Dv NFSSVC_BIOD
293mode of the
294.Xr nfssvc 2
295system call to be used for compatibility with the deprecated nfsiod program.
296.It Cd options COMPAT_15
297Enable binary compatibility with
298.Nx 1.5 .
299Since there were no API changes from
300.Nx 1.5
301and
302.Nx 1.6 ,
303this option does nothing.
304.It Cd options COMPAT_16
305Enable binary compatibility with
306.Nx 1.6 .
307This allows the use of old signal trampoline code which has been deprecated
308with the addition of
309.Xr siginfo 2 .
310.It Cd options COMPAT_20
311Enable binary compatibility with
312.Nx 2.0 .
313This allows the use of old syscalls for
314.Fn statfs ,
315.Fn fstatfs ,
316.Fn getfsstat
317and
318.Fn fhstatfs ,
319which have been deprecated with the addition of the
320.Xr statvfs 2 ,
321.Xr fstatvfs 2 ,
322.Xr getvfsstat 2
323and
324.Xr fhstatvfs 2
325system calls.
326.It Cd options COMPAT_30
327Enable binary compatibility with
328.Nx 3.0 .
329See
330.Xr compat_30 8
331for details about the changes made after the
332.Nx 3.0
333release.
334.It Cd options COMPAT_40
335Enable binary compatibility with
336.Nx 4.0 .
337This allows the use of old
338.Xr ptrace 2
339calls for the SH3 platform.
340It also enables the old
341.Xr mount 2
342system call that did not include the data length parameter.
343The power_event_t structure's pev_switch is filled in.
344.It Cd options COMPAT_43
345Enables compatibility with
346.Bx 4.3 .
347This adds an old syscall for
348.Xr lseek 2 .
349It also adds the ioctls for
350.Dv TIOCGETP
351and
352.Dv TIOCSETP .
353The return values for
354.Xr getpid 2 ,
355.Xr getgid 2 ,
356and
357.Xr getuid 2
358syscalls are modified as well, to return the parent's PID and
359UID as well as the current process's.
360It also enables the deprecated
361.Dv NTTYDISC
362terminal line discipline.
363It also provides backwards compatibility with
364.Dq old
365SIOC[GS]IF{ADDR,DSTADDR,BRDADDR,NETMASK} interface ioctls, including
366binary compatibility with code written before the introduction of the
367sa_len field in sockaddrs.
368It also enables
369support for some older pre
370.Bx 4.4
371socket calls.
372.It Cd options COMPAT_50
373Enable binary compatibility with
374.Nx 5.0 .
375This enables support for the old
376.Ft time_t
377and
378.Ft dev_t
379types as 32 bit, and all the associated kernel interface changes.
380It also enables old
381.Xr gpio 4
382and
383.Xr rnd 4
384interfaces.
385.It Cd options COMPAT_60
386Enable binary compatibility with
387.Nx 6.0 .
388This provides old
389.Xr ccd 4
390interfaces, enables support for old
391.Xr cpuctl 8
392microcode interfaces, and support for the old
393.Ft ptmget
394structure.
395.It Cd options COMPAT_70
396Enable binary compatibility with
397.Nx 7.0 .
398This provides support for old
399.Xr route 4
400interfaces.
401.It Cd options COMPAT_BSDPTY
402This option is currently on by default and enables the pty multiplexer
403.Xr ptm 4
404and
405.Xr ptmx 4
406to find and use ptys named
407.Pa /dev/ptyXX
408(master) and
409.Pa /dev/ttyXX
410(slave).
411Eventually this option will become optional as ptyfs based pseudo-ttys become
412the default, see
413.Xr mount_ptyfs 8 .
414.It Cd options COMPAT_LINUX
415On those architectures that support it, this enables binary
416compatibility with Linux ELF and
417.Xr a.out 5
418applications built for the same architecture.
419This currently includes the alpha, arm, i386, m68k, mips, powerpc and
420x86_64 ports.
421.It Cd options COMPAT_LINUX32
422On those 64 bit architectures that support it, this enables binary
423compatibility with 32 bit Linux binaries.
424For now this is limited to running i386 ELF Linux binaries on amd64.
425.It Cd options COMPAT_SUNOS
426On those architectures that support it, this enables binary
427compatibility with SunOS 4.1 applications built for the same architecture.
428This currently includes the sparc, sparc64 and most or all m68k ports.
429Note that the sparc64 requires the
430.Em COMPAT_NETBSD32
431option for 64-bit kernels, in addition to this option.
432.It Cd options COMPAT_ULTRIX
433On those architectures that support it, this enables binary
434compatibility with ULTRIX applications built for the same architecture.
435This currently is limited to the pmax.
436The functionality of this option is unknown.
437.It Cd options COMPAT_FREEBSD
438On those architectures that support it, this enables binary
439compatibility with
440.Fx
441applications built for the same architecture.
442At the moment this is limited to the i386 port.
443.It Cd options COMPAT_NOMID
444Enable compatibility with
445.Xr a.out 5
446executables that lack a machine ID.
447This includes
448.Nx 0.8 Ns 's
449ZMAGIC format, and 386BSD and BSDI's
450QMAGIC, NMAGIC, and OMAGIC
451.Xr a.out 5
452formats.
453.It Cd options COMPAT_NETBSD32
454On those architectures that support it, this enables binary
455compatibility with 32-bit applications built for the same architecture.
456This is currently limited to the amd64 and sparc64 ports, and only
457applicable for 64-bit kernels.
458.It Cd options COMPAT_AOUT_M68K
459On m68k architectures which have switched to ELF,
460this enables binary compatibility with
461.Nx Ns /m68k
462.Xr a.out 5
463executables on
464.Nx Ns /m68k
465ELF kernels.
466This handles alignment incompatibility of m68k ABI between
467a.out and ELF which causes the structure padding differences.
468Currently only some system calls which use
469.Va struct stat
470are adjusted and some binaries which use
471.Xr sysctl 3
472to retrieve network details would not work properly.
473.It Cd options EMUL_NATIVEROOT=string
474Just like emulated binaries first try looking up files in
475an emulation root (e.g.
476.Pa /emul/linux )
477before looking them up in real root, this option causes native
478binaries to first look up files in an "emulation" directory too.
479This can be useful to test an amd64 kernel on top of an i386 system
480before full migration: by unpacking the amd64 distribution in e.g.
481.Pa /emul/netbsd64
482and specifying that location as
483.Cd EMUL_NATIVEROOT ,
484native amd64 binaries can be run while the root file system remains
485populated with i386 binaries.
486Beware of
487.Pa /dev
488incompatibilities between i386 and amd64 if you do this.
489.It Cd options EXEC_ELF_NOTELESS
490Run unidentified ELF binaries as
491.Nx
492binaries.
493This might be needed for very old
494.Nx
495ELF binaries on some archs.
496These old binaries didn't contain an appropriate
497.Li .note.netbsd.ident
498section, and thus can't be identified by the kernel as
499.Nx
500binaries otherwise.
501Beware - if this option is on, the kernel would run
502.Em any
503unknown ELF binaries as if they were
504.Nx
505binaries.
506.El
507.Ss Debugging Options
508.Bl -ohang
509.It Cd options DDB
510Compiles in a kernel debugger for diagnosing kernel problems.
511See
512.Xr ddb 4
513for details.
514.Em NOTE :
515not available on all architectures.
516.It Cd options DDB_FROMCONSOLE=integer
517If set to non-zero, DDB may be entered by sending a break on a serial
518console or by a special key sequence on a graphics console.
519A value of "0" ignores console breaks or key sequences.
520If not explicitly specified, the default value is "1".
521Note that this sets the value of the
522.Em ddb.fromconsole
523.Xr sysctl 3
524variable which may be changed at run time \(em see
525.Xr sysctl 8
526for details.
527.It Cd options DDB_HISTORY_SIZE=integer
528If this is non-zero, enable history editing in the kernel debugger
529and set the size of the history to this value.
530.It Cd options DDB_ONPANIC
531The default if not specified is
532.Dq 1
533- just enter into DDB.
534If set to
535.Dq 0
536the kernel will attempt to print out a stack trace
537and reboot the system.
538If set to
539.Dq -1
540then neither a stack trace is printed or DDB entered -
541it is as if DDB were not compiled into the kernel.
542Note that this sets the value of the
543.Em ddb.onpanic
544.Xr sysctl 3
545variable which may be changed at run time \(em see
546.Xr sysctl 8
547for details.
548.It Cd options DDB_COMMANDONENTER=string
549This option specify commands which will be executed on each entry to DDB.
550This sets the default value of the
551.Em ddb.commandonenter
552.Xr sysctl 3
553variable which may be changed at run time.
554.It Cd options DDB_BREAK_CHAR=integer
555This option overrides using break to enter the kernel debugger
556on the serial console.
557The value given is the ASCII value to be used instead.
558This is currently only supported by the com driver.
559.It Cd options DDB_VERBOSE_HELP
560This option adds more verbose descriptions to the
561.Em help
562command.
563.It Cd options DDB_PANICSTACKFRAMES=integer
564Number of stack frames to display on panic.
565Useful to avoid scrolling away the interesting frames on a glass tty.
566Default value is
567.Dv 65535
568(all frames), useful value around
569.Dv 10 .
570.It Cd options KGDB
571Compiles in a remote kernel debugger stub for diagnosing kernel problems
572using the
573.Dq remote target
574feature of gdb.
575See
576.Xr gdb 1
577for details.
578.Em NOTE :
579not available on all architectures.
580.It Cd options KGDB_DEV
581Device number
582.Po
583as a
584.Dv dev_t
585.Pc
586of kgdb device.
587.It Cd options KGDB_DEVADDR
588Memory address of kgdb device.
589.It Cd options KGDB_DEVMODE
590Permissions of kgdb device.
591.It Cd options KGDB_DEVNAME
592Device name of kgdb device.
593.It Cd options KGDB_DEVRATE
594Baud rate of kgdb device.
595.It Cd makeoptions DEBUG="-g"
596The
597.Fl g
598flag causes
599.Pa netbsd.gdb
600to be built in addition to
601.Pa netbsd .
602.Pa netbsd.gdb
603is useful for debugging kernel crash dumps with gdb.
604See
605.Xr gdb 1
606for details.
607.It Cd options DEBUG
608Turns on miscellaneous kernel debugging.
609Since options are turned into preprocessor defines (see above),
610.Em options DEBUG
611is equivalent to doing a
612.Em #define DEBUG
613throughout the kernel.
614Much of the kernel has
615.Em #ifdef DEBUG
616conditionalized debugging code.
617Note that many parts of the kernel (typically device drivers) include their own
618.Em #ifdef XXX_DEBUG
619conditionals instead.
620This option also turns on certain other options,
621which may decrease system performance.
622Systems with this option are not suitable for regular use, and are
623intended only for debugging or looking for bugs.
624.It Cd options DIAGNOSTIC
625Adds code to the kernel that does internal consistency checks.
626This code will cause the kernel to panic if corruption of internal data
627structures is detected.
628Historically, the performance degradation is sufficiently small that
629it is reasonable for systems with
630.Em options DIAGNOSTIC
631to be in production use, with the real consideration not being
632performance but instead a preference for more panics versus continued
633operation with undetected problems.
634.It Cd options LOCKDEBUG
635Adds code to the kernel to detect incorrect use of locking primitives
636(mutex, rwlock).
637This code will cause the kernel to check for dead lock conditions.
638It will also check for memory being freed to not contain initialised
639lock primitives.
640Functions for use in
641.Xr ddb 4
642to check lock chains etc. are also enabled.
643These checks are very expensive and can decrease performance on
644multi-processor machines by a factor of three.
645.It Cd options KDTRACE_HOOKS
646Adds hooks for the DTrace tracing facility, which allows users to
647analyze many aspects of system and application behavior.
648See
649.Xr dtrace 1
650for details.
651.It Cd options KSTACK_CHECK_MAGIC
652Check kernel stack usage and panic if stack overflow is detected.
653This check is performance sensitive because it scans stack on each context
654switch.
655.It Cd options KTRACE
656Add hooks for the system call tracing facility, which allows users to
657watch the system call invocation behavior of processes.
658See
659.Xr ktrace 1
660for details.
661.It Cd options MSGBUFSIZE=integer
662This option sets the size of the kernel message buffer.
663This buffer holds the kernel output of
664.Fn printf
665when not (yet) read by
666.Xr syslogd 8 .
667This is particularly useful when the system has crashed and you wish to lookup
668the kernel output from just before the crash.
669Also, since the autoconfig output becomes more and more verbose,
670it sometimes happens that the message buffer overflows before
671.Xr syslogd 8
672was able to read it.
673Note that not all systems are capable of obtaining a variable sized message
674buffer.
675There are also some systems on which memory contents are not preserved
676across reboots.
677.It Cd options KERNHIST
678Enables the kernel history logs, which create in-memory traces of
679various kernel activities.
680These logs can be displayed by using
681.Cm show kernhist
682from DDB.
683See the kernel source file
684.Pa sys/kern/kern_history.c
685and the
686.Xr kernhist 9
687manual for details.
688.It Cd options KERNHIST_PRINT
689Prints the kernel history logs on the system console as entries are added.
690Note that the output is
691.Em extremely
692voluminous, so this option is really only useful for debugging
693the very earliest parts of kernel initialization.
694.It Cd options UVMHIST
695Like
696.Em KERNHIST ,
697it enables the UVM history logs.
698These logs can be displayed by using
699.Cm show kernhist
700from DDB.
701See the kernel source file
702.Pa sys/uvm/uvm_stat.c
703for details.
704.It Cd options UVMHIST_PRINT
705Like
706.Em UVMHIST ,
707it prints the UVM history logs on the system console as entries are added.
708Note that the output is
709.Em extremely
710voluminous, so this option is really only useful for debugging
711the very earliest parts of kernel initialization.
712.It Cd options UVMHIST_MAPHIST_SIZE
713Set the size of the
714.Dq maphist
715kernel history.
716The default is 100.
717This option depends upon the
718.Em UVMHIST
719option.
720.It Cd options UVMHIST_PDHIST_SIZE
721Set the size of the
722.Dq pdhist
723kernel history.
724The default is 100.
725This option depends upon the
726.Em UVMHIST
727option.
728.It Cd options BIOHIST
729Like
730.Em KERNHIST ,
731it enables the BIO history logs.
732These logs can be displayed by using
733.Cm show kernhist
734from DDB, and can help in debugging problems with Buffered I/O operations.
735See the kernel source file
736.Pa sys/kern/vfs_vio.c
737for details.
738.It Cd options BIOHIST_PRINT
739Like
740.Em BIOHIST ,
741it prints the BIO history logs on the system console as entries are added.
742Note that the output is
743.Em extremely
744voluminous, so this option is really only useful for debugging
745the very earliest parts of kernel initialization.
746.It Cd options BIOHIST_SIZE
747Set the size of the
748.Dq biohist
749kernel history.
750The default is 500.
751This option depends upon the
752.Em BIOHIST
753option.
754.El
755.Ss File Systems
756.Bl -ohang
757.It Cd file-system FFS
758Includes code implementing the Berkeley Fast File System
759.Po Em FFS Pc .
760Most machines need this if they are not running diskless.
761.It Cd file-system EXT2FS
762Includes code implementing the Second Extended File System
763.Po Em ext2 Pc ,
764revision 0 and revision 1 with the
765.Em filetype ,
766.Em sparse_super
767and
768.Em large_file
769options.
770This is the most commonly used file system on the Linux operating system,
771and is provided here for compatibility.
772Some of the specific features of
773.Em ext2
774like the "behavior on errors" are not implemented.
775See
776.Xr mount_ext2fs 8
777for details.
778.It Cd file-system LFS
779.Bq Em EXPERIMENTAL
780Include the Log-structured File System
781.Po Em LFS Pc .
782See
783.Xr mount_lfs 8
784and
785.Xr newfs_lfs 8
786for details.
787.It Cd file-system MFS
788Include the Memory File System
789.Po Em MFS Pc .
790This file system stores files in swappable memory, and produces
791notable performance improvements when it is used as the file store
792for
793.Pa /tmp
794and similar file systems.
795See
796.Xr mount_mfs 8
797for details.
798.It Cd file-system NFS
799Include the client side of the Network File System (NFS)
800remote file sharing protocol.
801Although the bulk of the code implementing NFS
802is kernel based, several user level daemons are needed for it to work.
803See
804.Xr mount_nfs 8
805for details.
806.It Cd file-system CD9660
807Includes code for the ISO 9660 + Rock Ridge file system, which is
808the standard file system on many CD-ROM discs.
809Useful primarily if you have a CD-ROM drive.
810See
811.Xr mount_cd9660 8
812for details.
813.It Cd file-system MSDOSFS
814Includes the MS-DOS FAT file system, which is reportedly still used
815by unfortunate people who have not heard about
816.Nx .
817Also implements the Windows 95 extensions to the same, which permit
818the use of longer, mixed case file names.
819See
820.Xr mount_msdos 8
821and
822.Xr fsck_msdos 8
823for details.
824.It Cd file-system NTFS
825.Bq Em EXPERIMENTAL
826Includes code for the Microsoft Windows NT file system.
827See
828.Xr mount_ntfs 8
829for details.
830.It Cd file-system FDESC
831Includes code for a file system, conventionally mounted on
832.Pa /dev/fd ,
833which permits access to the per-process file descriptor space via
834special files in the file system.
835See
836.Xr mount_fdesc 8
837for details.
838Note that this facility is redundant, and thus unneeded on most
839.Nx
840systems, since the
841.Xr fd 4
842pseudo-device driver already provides identical functionality.
843On most
844.Nx
845systems, instances of
846.Xr fd 4
847are mknoded under
848.Pa /dev/fd/
849and on
850.Pa /dev/stdin ,
851.Pa /dev/stdout ,
852and
853.Pa /dev/stderr .
854.It Cd file-system KERNFS
855Includes code which permits the mounting of a special file system
856(normally mounted on
857.Pa /kern )
858in which files representing various kernel variables and parameters
859may be found.
860See
861.Xr mount_kernfs 8
862for details.
863.It Cd file-system NULLFS
864Includes code for a loopback file system.
865This permits portions of the file hierarchy to be re-mounted in other places.
866The code really exists to provide an example of a stackable file system layer.
867See
868.Xr mount_null 8
869for details.
870.It Cd file-system OVERLAY
871Includes code for a file system filter.
872This permits the overlay file system to intercept all access to an underlying
873file system.
874This file system is intended to serve as an example of a stacking file
875system which has a need to interpose itself between an underlying file
876system and all other access.
877See
878.Xr mount_overlay 8
879for details.
880.It Cd file-system PROCFS
881Includes code for a special file system (conventionally mounted on
882.Pa /proc )
883in which the process space becomes visible in the file system.
884Among
885other things, the memory spaces of processes running on the system are
886visible as files, and signals may be sent to processes by writing to
887.Pa ctl
888files in the procfs namespace.
889See
890.Xr mount_procfs 8
891for details.
892.It Cd file-system UDF
893.Bq Em EXPERIMENTAL
894Includes code for the UDF file system commonly found on CD and DVD
895media but also on USB sticks.
896Currently supports read and write access upto UDF 2.01 and somewhat limited
897write support for UDF 2.50.
898It is marked experimental since there is no
899.Xr fsck_udf 8 .
900See
901.Xr mount_udf 8
902for details.
903.It Cd file-system UMAPFS
904Includes a loopback file system in which user and group IDs may be
905remapped \(em this can be useful when mounting alien file systems with
906different UIDs and GIDs than the local system.
907See
908.Xr mount_umap 8
909for details.
910.It Cd file-system UNION
911.Bq Em EXPERIMENTAL
912Includes code for the union file system, which permits directories to
913be mounted on top of each other in such a way that both file systems
914remain visible \(em this permits tricks like allowing writing (and the
915deleting of files) on a read-only file system like a CD-ROM by
916mounting a local writable file system on top of the read-only file
917system.
918See
919.Xr mount_union 8
920for details.
921.It Cd file-system CODA
922.Bq Em EXPERIMENTAL
923Includes code for the Coda file system.
924Coda is a distributed file system like NFS and AFS.
925It is freely available, like NFS, but it functions much like AFS in being a
926.Dq stateful
927file system.
928Both Coda and AFS cache files on your local machine to improve performance.
929Then Coda goes a step further than AFS by letting you access the cached
930files when there is no available network, viz. disconnected laptops and
931network outages.
932In Coda, both the client and server are outside the kernel which makes
933them easier to experiment with.
934Coda is available for several UNIX and non-UNIX platforms.
935See
936.Lk http://www.coda.cs.cmu.edu
937for more details.
938.Em NOTE :
939You also need to enable the pseudo-device, vcoda, for the Coda
940file system to work.
941.It Cd file-system PTYFS
942Includes code for a special file system (normally mounted on
943.Pa /dev/pts )
944in which pseudo-terminal slave devices become visible in the file system.
945See
946.Xr mount_ptyfs 8
947for details.
948.It Cd file-system TMPFS
949Includes code for the efficient memory file system, normally used over
950.Pa /tmp .
951See
952.Xr mount_tmpfs 8
953for details.
954.It Cd file-system PUFFS
955Includes kernel support for the pass-to-userspace framework file system.
956It can be used to implement file system functionality in userspace.
957See
958.Xr puffs 3
959for more details.
960This enables for example sshfs:
961.Xr mount_psshfs 8 .
962.El
963.Ss File System Options
964.Bl -ohang
965.It Cd options DISKLABEL_EI
966Enable
967.Dq Endian-Independent
968.Xr disklabel 5
969support.
970This allows a system to recognize a disklabel written in the other byte order.
971For writing, when a label already exists, its byte order is preserved.
972Otherwise, a new label is written in the native byte order.
973To specify the byte order explicitly, the
974.Fl F
975option of
976.Xr disklabel 8
977should be used with the
978.Fl B
979option in order to avoid using
980.Xr ioctl 2 ,
981which results in the default behavior explained above.
982At the moment this option is restricted to the following ports:
983amd64, bebox, emips, epoc32, evbarm, i386, ibmnws, landisk, mvmeppc, prep,
984.\" riscv,
985rs6000, sandpoint,
986.\" usermode,
987xen, and zaurus;
988also to machines of the
989evbmips and evbppc ports that support
990Master Boot Record (MBR).
991.It Cd options MAGICLINKS
992Enables the expansion of special strings
993.Po
994beginning with
995.Dq @
996.Pc
997when traversing symbolic links.
998See
999.Xr symlink 7
1000for a list of supported strings.
1001Note that this option only controls the enabling of this feature
1002by the kernel at boot-up.
1003This feature can still be manipulated with the
1004.Xr sysctl 8
1005command regardless of the setting of this option.
1006.It Cd options NFSSERVER
1007Include the server side of the
1008.Em NFS
1009(Network File System) remote file sharing protocol.
1010Although the bulk of the code implementing
1011.Em NFS
1012is kernel based, several user level daemons are needed for it to
1013work.
1014See
1015.Xr mountd 8
1016and
1017.Xr nfsd 8
1018for details.
1019.It Cd options NVNODE=integer
1020This option sets the size of the cache used by the name-to-inode translation
1021routines, (a.k.a. the
1022.Fn namei
1023cache, though called by many other names in the kernel source).
1024By default, this cache has
1025.Dv ( NPROC + NTEXT + 100 )
1026entries (NPROC set as 20 + 16 * MAXUSERS and NTEXT as 80 + NPROC / 8).
1027A reasonable way to derive a value of
1028.Dv NVNODE ,
1029should you notice a large number of namei cache misses with a tool such as
1030.Xr systat 1 ,
1031is to examine your system's current computed value with
1032.Xr sysctl 8 ,
1033(which calls this parameter "kern.maxvnodes") and to increase this value
1034until either the namei cache hit rate improves or it is determined that
1035your system does not benefit substantially from an increase in the size of
1036the namei cache.
1037.It Cd options NAMECACHE_ENTER_REVERSE
1038Causes the namei cache to always enter a reverse mapping (vnode -> name)
1039as well as a normal one.
1040Normally, this is already done for directory vnodes, to speed up the getcwd
1041operation.
1042This option will cause longer hash chains in the reverse cache, and thus
1043slow down getcwd somewhat.
1044However, it does make vnode -> path translations possible in some cases.
1045For now, only useful if strict
1046.Pa /proc/#/maps
1047emulation for Linux binaries is required.
1048.El
1049.Ss Options for FFS/UFS File Systems
1050.Bl -ohang
1051.It Cd options APPLE_UFS
1052Enable support for UFS file systems created on Mac OS X.
1053.It Cd options FFS_EI
1054Enable
1055.Dq Endian-Independent
1056FFS support.
1057This allows a system to mount an FFS file system created for another
1058architecture, at a small performance cost for all FFS file systems.
1059See also
1060.Xr newfs 8 ,
1061.Xr fsck_ffs 8 ,
1062.Xr dumpfs 8
1063for file system byte order status and manipulation.
1064.It Cd options FFS_NO_SNAPSHOT
1065Disable support for the creation of file system internal snapshot
1066of FFS file systems.
1067Maybe useful for install media kernels, small memory systems and
1068embedded systems which don't require the snapshot support.
1069.It Cd options QUOTA
1070Enables kernel support for traditional quotas in FFS.
1071Traditional quotas store the quota information in external files and
1072require
1073.Xr quotacheck 8
1074and
1075.Xr quotaon 8
1076at boot time.
1077Traditional quotas are limited to 32-bit sizes and are at this point
1078considered a legacy feature.
1079.It Cd options QUOTA2
1080Enables kernel support for in-volume quotas in FFS.
1081The quota information is file system metadata maintained by
1082.Xr fsck 8
1083and/or WAPBL journaling.
1084MFS volumes can also use
1085.Dv QUOTA2
1086quotas; see
1087.Xr mount_mfs 8
1088for more information.
1089.It Cd options UFS_DIRHASH
1090Increase lookup performance by maintaining in-core hash tables
1091for large directories.
1092.It Cd options UFS_EXTATTR
1093Enable extended attribute support for UFS1 file systems.
1094.It Cd options WAPBL
1095Enable
1096.Dq Write Ahead Physical Block Logging file system journaling .
1097This provides rapid file system consistency checking after a system outage.
1098It also provides better general use performance over regular FFS.
1099See also
1100.Xr wapbl 4 .
1101.El
1102.Ss Options for the LFS File System
1103.Bl -ohang
1104.\" .It Cd options LFS_KERNEL_RFW
1105.\" There is no documentation for this. (XXX)
1106.\" .It Cd options LFS_QUOTA
1107.\" Enable traditional quota support for LFS.
1108.\" (It is not clear if this works.)
1109.\" .It Cd options LFS_QUOTA2
1110.\" Enable modernized 64-bit quota support for LFS.
1111.\" (This does not work yet.)
1112.It Cd options LFS_EI
1113Enable
1114.Dq Endian-Independent
1115LFS support.
1116This allows (at a small performance cost) mounting an LFS file system
1117created for another architecture.
1118.\" .It Cd options LFS_EXTATTR
1119.\" Enable extended attribute support for LFS.
1120.\" (It is not clear if this works.)
1121.It Cd options LFS_DIRHASH
1122Increase lookup performance by maintaining in-core hash tables
1123for large directories.
1124.El
1125.Ss Options for the ext2fs File System
1126.Bl -ohang
1127.It Cd options EXT2FS_SYSTEM_FLAGS
1128This option changes the behavior of the APPEND and IMMUTABLE flags
1129for a file on an
1130.Em ext2
1131file system.
1132Without this option, the superuser or owner of the file can
1133set and clear them.
1134With this option, only the superuser can set them, and
1135they can't be cleared if the securelevel is greater than 0.
1136See also
1137.Xr chflags 1
1138and
1139.Xr secmodel_securelevel 9 .
1140.El
1141.Ss Options for the NFS File System
1142.Bl -ohang
1143.It Cd options NFS_BOOT_BOOTP
1144Enable use of the BOOTP protocol (RFCs 951 and 1048) to get configuration
1145information if NFS is used to mount the root file system.
1146See
1147.Xr diskless 8
1148for details.
1149.It Cd options NFS_BOOT_BOOTSTATIC
1150Enable use of static values defined as
1151.Dq NFS_BOOTSTATIC_MYIP ,
1152.Dq NFS_BOOTSTATIC_GWIP ,
1153.Dq NFS_BOOTSTATIC_SERVADDR ,
1154and
1155.Dq NFS_BOOTSTATIC_SERVER
1156in kernel options to get configuration information
1157if NFS is used to mount the root file system.
1158.It Cd options NFS_BOOT_DHCP
1159Same as
1160.Dq NFS_BOOT_BOOTP ,
1161but use the DHCP extensions to the
1162BOOTP protocol (RFC 1541).
1163.It Cd options NFS_BOOT_BOOTP_REQFILE
1164Specifies the string sent in the bp_file field of the BOOTP/DHCP
1165request packet.
1166.It Cd options NFS_BOOT_BOOTPARAM
1167Enable use of the BOOTPARAM protocol, consisting of RARP and
1168BOOTPARAM RPC, to get configuration information if NFS
1169is used to mount the root file system.
1170See
1171.Xr diskless 8
1172for details.
1173.It Cd options NFS_BOOT_RWSIZE=value
1174Set the initial NFS read and write sizes for diskless-boot requests.
1175The normal default is 8Kbytes.
1176This option provides a way to lower the value (e.g., to 1024 bytes)
1177as a workaround for buggy network interface cards or boot PROMs.
1178Once booted, the read and write request sizes can be increased by
1179remounting the file system.
1180See
1181.Xr mount_nfs 8
1182for details.
1183.It Cd options NFS_V2_ONLY
1184Reduce the size of the NFS client code by omitting code that's only required
1185for NFSv3 and NQNFS support, leaving only that code required to use NFSv2
1186servers.
1187.It Cd options NFS_BOOT_TCP
1188Use NFS over TCP instead of the default UDP, for mounting root.
1189.El
1190.Ss Buffer queue strategy options
1191The following options enable alternative buffer queue strategies.
1192.Bl -ohang
1193.It Cd options BUFQ_READPRIO
1194Enable alternate buffer queue strategy for disk I/O.
1195In the default strategy, outstanding disk requests are ordered by
1196sector number and sent to the disk, regardless of whether the
1197operation is a read or write; this option gives priority to issuing
1198read requests over write requests.
1199Although requests may therefore be issued out of sector-order, causing
1200more seeks and thus lower overall throughput, interactive system
1201responsiveness under heavy disk I/O load may be improved, as processes
1202blocking on disk reads are serviced sooner (file writes typically
1203don't cause applications to block).
1204The performance effect varies greatly depending on the hardware, drive
1205firmware, file system configuration, workload, and desired performance
1206trade-off.
1207Systems using drive write-cache (most modern IDE disks, by default)
1208are unlikely to benefit and may well suffer; such disks acknowledge
1209writes very quickly, and optimize them internally according to
1210physical layout.
1211Giving these disks as many requests to work with as possible (the
1212standard strategy) will typically produce the best results, especially
1213if the drive has a large cache; the drive will silently complete
1214writes from cache as it seeks for reads.
1215Disks that support a large number of concurrent tagged requests (SCSI
1216disks and many hardware RAID controllers) expose this internal
1217scheduling with tagged responses, and don't block for reads; such
1218disks may not see a noticeable difference with either strategy.
1219However, if IDE disks are run with write-cache disabled for safety,
1220writes are not acknowledged until actually completed, and only one
1221request can be outstanding; a large number of small writes in one
1222locality can keep the disk busy, starving reads elsewhere on the disk.
1223Such systems are likely to see the most benefit from this option.
1224Finally, the performance interaction of this option with ffs soft
1225dependencies can be subtle, as that mechanism can drastically alter
1226the workload for file system metadata writes.
1227.It Cd options BUFQ_PRIOCSCAN
1228Enable another buffer queue strategy for disk I/O, per-priority cyclical scan.
1229.It Cd options NEW_BUFQ_STRATEGY
1230Synonym of
1231.Em BUFQ_READPRIO .
1232.El
1233.Ss Miscellaneous Options
1234.Bl -ohang
1235.It Cd options CPU_UCODE
1236Support cpu microcode loading via
1237.Xr cpuctl 8 .
1238.It Cd options MEMORY_DISK_DYNAMIC
1239This option makes the
1240.Xr md 4
1241RAM disk size dynamically sized.
1242It is incompatible with
1243.Xr mdsetimage 8 .
1244.It Cd options MEMORY_DISK_HOOKS
1245This option allows for some machine dependent functions to be called when
1246the
1247.Xr md 4
1248RAM disk driver is configured.
1249This can result in automatically loading a RAM disk from floppy on
1250open (among other things).
1251.It Cd options MEMORY_DISK_IS_ROOT
1252Forces the
1253.Xr md 4
1254RAM disk to be the root device.
1255This can only be overridden when
1256the kernel is booted in the 'ask-for-root' mode.
1257.It Cd options MEMORY_DISK_ROOT_SIZE=integer
1258Allocates the given number of 512 byte blocks as memory for the
1259.Xr md 4
1260RAM disk, to be populated with
1261.Xr mdsetimage 8 .
1262.It Cd options MEMORY_DISK_SERVER=0
1263Do not include the interface to a userland memory disk server process.
1264Per default, this option is set to 1, including the support code.
1265Useful for install media kernels.
1266.It Cd options MEMORY_DISK_RBFLAGS=value
1267This option sets the
1268.Xr reboot 2
1269flags used when booting with a memory disk as root file system.
1270Possible values include
1271.Dv RB_AUTOBOOT
1272(boot in the usual fashion - default value), and
1273.Dv RB_SINGLE
1274(boot in single-user mode).
1275.It Cd options MODULAR
1276Enables the framework for kernel modules (see
1277.Xr module 7 ) .
1278.It Cd options MODULAR_DEFAULT_AUTOLOAD
1279Enables the autoloading of kernel modules by default.
1280This sets the default value of the
1281.Em kern.module.autoload
1282.Xr sysctl 3
1283variable which may be changed at run time.
1284.It Cd options VND_COMPRESSION
1285Enables the
1286.Xr vnd 4
1287driver to also handle compressed images.
1288See
1289.Xr vndcompress 1 ,
1290.Xr vnd 4
1291and
1292.Xr vnconfig 8
1293for more information.
1294.It Cd options SPLDEBUG
1295Help the kernel programmer find bugs related to the interrupt priority
1296level.
1297When
1298.Fn spllower
1299or
1300.Fn splraise
1301changes the current CPU's interrupt priority level to or from
1302.Dv IPL_HIGH ,
1303record a backtrace.
1304Read
1305.Xr i386/return_address 9
1306for caveats about collecting backtraces.
1307This feature is experimental, and it is only available on i386.
1308See
1309.Pa sys/kern/subr_spldebug.c .
1310.It Cd options TFTPROOT
1311Download the root memory disk through TFTP at root mount time.
1312This enables the use of a root RAM disk without requiring it to be
1313embedded in the kernel using
1314.Xr mdsetimage 8 .
1315The RAM disk name is obtained using DHCP's filename parameter.
1316This option requires
1317.Em MEMORY_DISK_HOOKS
1318and
1319.Em MEMORY_DISK_DYNAMIC .
1320It is incompatible with
1321.Em MEMORY_DISK_ROOT_SIZE .
1322.It Cd options HZ=integer
1323On ports that support it, set the system clock frequency (see
1324.Xr hz 9 )
1325to the supplied value.
1326Handle with care.
1327.It Cd options NTP
1328Turns on in-kernel precision timekeeping support used by software
1329implementing
1330.Em NTP
1331(Network Time Protocol, RFC 1305).
1332The
1333.Em NTP
1334option adds an in-kernel Phase-Locked Loop (PLL) for normal
1335.Em NTP
1336operation, and a Frequency-Locked Loop (FLL) for intermittently-connected
1337operation.
1338.Xr ntpd 8
1339will employ a user-level PLL when kernel support is unavailable,
1340but the in-kernel version has lower latency and more precision, and
1341so typically keeps much better time.
1342.Pp
1343The interface to the kernel
1344.Em NTP
1345support is provided by the
1346.Xr ntp_adjtime 2
1347and
1348.Xr ntp_gettime 2
1349system calls, which are intended for use by
1350.Xr ntpd 8
1351and are enabled by the option.
1352On systems with sub-microsecond resolution timers, or where (HZ/100000)
1353is not an integer, the
1354.Em NTP
1355option also enables extended-precision arithmetic to keep track of
1356fractional clock ticks at NTP time-format precision.
1357.It Cd options PPS_SYNC
1358This option enables a kernel serial line discipline for receiving time
1359phase signals from an external reference clock such as a radio clock.
1360.Po
1361The
1362.Em NTP
1363option (which see) must be on if the
1364.Em PPS_SYNC
1365option is used
1366.Pc .
1367Some reference clocks generate a Pulse Per Second (PPS) signal in
1368phase with their time source.
1369The
1370.Em PPS
1371line discipline receives this signal on either the data leads
1372or the DCD control lead of a serial port.
1373.Pp
1374.Em NTP
1375uses the PPS signal to discipline the local clock oscillator to a high
1376degree of precision (typically less than 50 microseconds in time and
13770.1 ppm in accuracy).
1378.Em PPS
1379can also generate a serial output pulse when the system receives a PPS
1380interrupt.
1381This can be used to measure the system interrupt latency and thus calibrate
1382.Em NTP
1383to account for it.
1384Using
1385.Em PPS
1386usually requires a gadget box
1387to convert from TTL to RS-232 signal levels.
1388The gadget box and PPS are described in more detail in the HTML documentation
1389for
1390.Xr ntpd 8
1391in
1392.Pa /usr/share/doc/html/ntp .
1393.Pp
1394.Nx
1395currently supports this option in
1396.Xr com 4
1397and
1398.Xr zsc 4 .
1399.It Cd options SETUIDSCRIPTS
1400Allows scripts with the setuid bit set to execute as the effective
1401user rather than the real user, just like binary executables.
1402.Pp
1403.Em NOTE :
1404Using this option will also enable
1405.Em options FDSCRIPTS
1406.It Cd options FDSCRIPTS
1407Allows execution of scripts with the execute bit set, but not the
1408read bit, by opening the file and passing the file descriptor to
1409the shell, rather than the filename.
1410.Pp
1411.Em NOTE :
1412Execute only (non-readable) scripts will have
1413.Va argv[0]
1414set to
1415.Pa /dev/fd/* .
1416What this option allows as far as security is
1417concerned, is the ability to safely ensure that the correct script
1418is run by the interpreter, as it is passed as an already open file.
1419.It Cd options RTC_OFFSET=integer
1420The kernel (and typically the hardware battery backed-up clock on
1421those machines that have one) keeps time in
1422.Em UTC
1423(Universal Coordinated Time, once known as
1424.Em GMT ,
1425or Greenwich Mean Time)
1426and not in the time of the local time zone.
1427The
1428.Em RTC_OFFSET
1429option is used on some ports (such as the i386) to tell the kernel
1430that the hardware clock is offset from
1431.Em UTC
1432by the specified number of minutes.
1433This is typically used when a machine boots several operating
1434systems and one of them wants the hardware clock to run in the
1435local time zone and not in
1436.Em UTC ,
1437e.g.
1438.Em RTC_OFFSET=300
1439means
1440the hardware clock is set to US Eastern Time (300 minutes behind
1441.Em UTC ) ,
1442and not
1443.Em UTC .
1444(Note:
1445.Em RTC_OFFSET
1446is used to initialize a kernel variable named
1447.Va rtc_offset
1448which is the source actually used to determine the clock offset, and
1449which may be accessed via the kern.rtc_offset sysctl variable.
1450See
1451.Xr sysctl 8
1452and
1453.Xr sysctl 3
1454for details.
1455Since the kernel clock is initialized from the hardware clock very
1456early in the boot process, it is not possible to meaningfully change
1457.Va rtc_offset
1458in system initialization scripts.
1459Changing this value currently may only be done at kernel compile
1460time or by patching the kernel and rebooting).
1461.Pp
1462.Em NOTE :
1463Unfortunately, in many cases where the hardware clock
1464is kept in local time, it is adjusted for Daylight Savings
1465Time; this means that attempting to use
1466.Em RTC_OFFSET
1467to let
1468.Nx
1469coexist with such an operating system, like Windows,
1470would necessitate changing
1471.Em RTC_OFFSET
1472twice a year.
1473As such, this solution is imperfect.
1474.It Cd options MAXUPRC=integer
1475Sets the soft
1476.Dv RLIMIT_NPROC
1477resource limit, which specifies the maximum number of simultaneous
1478processes a user is permitted to run, for process 0;
1479this value is inherited by its child processes.
1480It defaults to
1481.Em CHILD_MAX ,
1482which is currently defined to be 160.
1483Setting
1484.Em MAXUPRC
1485to a value less than
1486.Em CHILD_MAX
1487is not permitted, as this would result in a violation of the semantics of
1488.St -p1003.1-90 .
1489.It Cd options NOFILE=integer
1490Sets the soft
1491.Dv RLIMIT_NOFILE
1492resource limit, which specifies the maximum number of open
1493file descriptors for each process;
1494this value is inherited by its child processes.
1495It defaults to
1496.Em OPEN_MAX ,
1497which is currently defined to be 128.
1498.It Cd options MAXFILES=integer
1499Sets the default value of the
1500.Em kern.maxfiles
1501sysctl variable, which indicates the maximum number of files that may
1502be open in the system.
1503.It Cd options DEFCORENAME=string
1504Sets the default value of the
1505.Em kern.defcorename
1506sysctl variable, otherwise it is set to
1507.Nm %n.core .
1508See
1509.Xr sysctl 8
1510and
1511.Xr sysctl 3
1512for details.
1513.It Cd options RASOPS_CLIPPING
1514Enables clipping within the
1515.Nm rasops
1516raster-console output system.
1517.Em NOTE :
1518only available on architectures that use
1519.Nm rasops
1520for console output.
1521.It Cd options RASOPS_SMALL
1522Removes optimized character writing code from the
1523.Nm rasops
1524raster-console output system.
1525.Em NOTE :
1526only available on architectures that use
1527.Nm rasops
1528for console output.
1529.It Cd options INCLUDE_CONFIG_FILE
1530Embeds the kernel config file used to define the kernel in the kernel
1531binary itself.
1532The embedded data also includes any files directly included by the config
1533file itself, e.g.
1534.Pa GENERIC.local
1535or
1536.Pa std.$MACHINE .
1537The embedded config file can be extracted from the resulting kernel with
1538.Xr config 1
1539.Fl x ,
1540or by the following command:
1541.Bd -literal -offset indent
1542strings netbsd | sed -n 's/^_CFG_//p' | unvis
1543.Ed
1544.It Cd options INCLUDE_JUST_CONFIG
1545Similar to the above option, but includes just the actual config file,
1546not any included files.
1547.It Cd options PIPE_SOCKETPAIR
1548Use slower, but smaller socketpair(2)-based pipe implementation instead
1549of default faster, but bigger one.
1550Primarily useful for installation kernels.
1551.It Cd options USERCONF
1552Compiles in the in-kernel device configuration manager.
1553See
1554.Xr userconf 4
1555for details.
1556.It Cd options SCDEBUG_DEFAULT
1557Used with the
1558.Cd options SYSCALL_DEBUG
1559described below to choose which types of events are displayed.
1560.Pp
1561.Bl -tag -width "SCDEBUG_KERNHIST" -compact -offset indent
1562.It Dv SCDEBUG_CALLS
1563Show system call entry points.
1564.It Dv SCDEBUG_RETURNS
1565Show system call exit points.
1566.It Dv SCDEBUG_ALL
1567Show all system call requestes, including unimplemented calls.
1568.It Dv SCDEBUG_SHOWARGS
1569Show the arguments provided.
1570.It Dv SCDEBUG_KERNHIST
1571Store a restricted form of the system call debug in a kernel history
1572instead of printing it to the console.
1573This option relies upon
1574.Cd options KERNHIST .
1575.El
1576.Pp
1577The default value is
1578.Dv (SCDEBUG_CALLS|SCDEBUG_RETURNS|SCDEBUG_SHOWARGS) .
1579.It Cd options SYSCALL_DEBUG
1580Useful for debugging system call issues, usually in early single user bringup.
1581By default, writes entries to the system console for most system call events.
1582Can be configured with the
1583.Cd options SCDEBUG_DEFAULT
1584option to to use the
1585.Cd options KERNHIST
1586facility instead.
1587.It Cd options SYSCALL_STATS
1588Count the number of times each system call number is called.
1589The values can be read through the sysctl interface and displayed using
1590.Xr systat 1 .
1591.Em NOTE :
1592not yet available on all architectures.
1593.It Cd options SYSCALL_TIMES
1594Count the time spent (using
1595.Fn cpu_counter32 )
1596in each system call.
1597.Em NOTE :
1598Using this option will also enable
1599.Cd options SYSCALL_STATS .
1600.It Cd options SYSCALL_TIMES_HASCOUNTER
1601Force use of
1602.Fn cpu_counter32
1603even if
1604.Fn cpu_hascounter
1605reports false.
1606Useful for systems where the cycle counter doesn't run at a constant rate
1607(e.g. Soekris boxes).
1608.It Cd options XSERVER_DDB
1609A supplement to XSERVER that adds support for entering
1610.Xr ddb 4
1611while in X11.
1612.It Cd options FILEASSOC
1613Support for
1614.Xr fileassoc 9 .
1615Required for
1616.Cd options PAX_SEGVGUARD
1617and
1618.Cd pseudo-device veriexec .
1619.It Cd options FILEASSOC_NHOOKS=integer
1620Number of storage slots per file for
1621.Xr fileassoc 9 .
1622Default is 4.
1623.El
1624.Ss Networking Options
1625.Bl -ohang
1626.It Cd options GATEWAY
1627Enables
1628.Em IPFORWARDING
1629and (on most ports) increases the size of
1630.Em NMBCLUSTERS .
1631In general,
1632.Em GATEWAY
1633is used to indicate that a system should act as a router, and
1634.Em IPFORWARDING
1635is not invoked directly.
1636(Note that
1637.Em GATEWAY
1638has no impact on protocols other than IP).
1639.Em GATEWAY
1640option also compiles IPv4 and IPv6 fast forwarding code into the kernel.
1641.It Cd options IPFORWARDING=value
1642If
1643.Em value
1644is 1 this enables IP routing behavior.
1645If
1646.Em value
1647is 0 (the default), it disables it.
1648The
1649.Em GATEWAY
1650option sets this to 1 automatically.
1651With this option enabled, the machine will forward IP datagrams destined
1652for other machines between its interfaces.
1653Note that even without this option, the kernel will
1654still forward some packets (such as source routed packets) \(em removing
1655.Em GATEWAY
1656and
1657.Em IPFORWARDING
1658is insufficient to stop all routing through a bastion host on a
1659firewall \(em source routing is controlled independently.
1660Note that IP forwarding may be turned on and off independently of the
1661setting of the
1662.Em IPFORWARDING
1663option through the use of the
1664.Em net.inet.ip.forwarding
1665sysctl variable.
1666If
1667.Em net.inet.ip.forwarding
1668is 1, IP forwarding is on.
1669See
1670.Xr sysctl 8
1671and
1672.Xr sysctl 3
1673for details.
1674.It Cd options IFA_STATS
1675Tells the kernel to maintain per-address statistics on bytes sent
1676and received over (currently) Internet and AppleTalk addresses.
1677.\"This can be a fairly expensive operation, so you probably want to
1678.\"keep this disabled.
1679The option is not recommended as it degrades system stability.
1680.It Cd options IFQ_MAXLEN=value
1681Increases the allowed size of the network interface packet queues.
1682The default queue size is 50 packets, and you do not normally need
1683to increase it.
1684.It Cd options IPSELSRC
1685Includes support for source-address selection policies.
1686See
1687.Xr in_getifa 9 .
1688.It Cd options MROUTING
1689Includes support for IP multicast routers.
1690You certainly want
1691.Em INET
1692with this.
1693Multicast routing is controlled by the
1694.Xr mrouted 8
1695daemon.
1696See also option
1697.Cd PIM .
1698.It Cd options PIM
1699Includes support for Protocol Independent Multicast (PIM) routing.
1700You need
1701.Em MROUTING
1702and
1703.Em INET
1704with this.
1705Software using this can be found e.g. in
1706.Pa pkgsrc/net/xorp .
1707.It Cd options INET
1708Includes support for the TCP/IP protocol stack.
1709You almost certainly want this.
1710See
1711.Xr inet 4
1712for details.
1713.It Cd options INET6
1714Includes support for the IPv6 protocol stack.
1715See
1716.Xr inet6 4
1717for details.
1718Unlike
1719.Em INET ,
1720.Em INET6
1721enables multicast routing code as well.
1722This option requires
1723.Em INET
1724at this moment, but it should not.
1725.It Cd options ND6_DEBUG
1726The option sets the default value of net.inet6.icmp6.nd6_debug to 1,
1727for debugging IPv6 neighbor discovery protocol handling.
1728See
1729.Xr sysctl 3
1730for details.
1731.It Cd options IPSEC
1732Includes support for the IPsec protocol, using the implementation derived from
1733.Ox ,
1734relying on
1735.Xr opencrypto 9
1736to carry out cryptographic operations.
1737See
1738.Xr ipsec 4
1739for details.
1740.It Cd options IPSEC_DEBUG
1741Enables debugging code in IPsec stack.
1742See
1743.Xr ipsec 4
1744for details.
1745The
1746.Cd IPSEC
1747option includes support for IPsec Network Address Translator traversal
1748(NAT-T), as described in RFCs 3947 and 3948.
1749This feature might be patent-encumbered in some countries.
1750.It Cd options ALTQ
1751Enabled ALTQ (Alternate Queueing).
1752For simple rate-limiting, use
1753.Xr tbrconfig 8
1754to set up the interface transmission rate.
1755To use queueing disciplines, their appropriate kernel options should also
1756be defined (documented below).
1757Queueing disciplines are managed by
1758.Xr altqd 8 .
1759See
1760.Xr altq 9
1761for details.
1762.It Cd options ALTQ_HFSC
1763Include support for ALTQ-implemented HFSC (Hierarchical Fair Service Curve)
1764module.
1765HFSC supports both link-sharing and guaranteed real-time services.
1766HFSC employs a service curve based QoS model, and its unique feature
1767is an ability to decouple delay and bandwidth allocation.
1768Requires
1769.Em ALTQ_RED
1770to use the RED queueing discipline on HFSC classes, or
1771.Em ALTQ_RIO
1772to use the RIO queueing discipline on HFSC classes.
1773This option assumes
1774.Em ALTQ .
1775.It Cd options ALTQ_PRIQ
1776Include support for ALTQ-implemented PRIQ (Priority Queueing).
1777PRIQ implements a simple priority-based queueing discipline.
1778A higher priority class is always served first.
1779Requires
1780.Em ALTQ_RED
1781to use the RED queueing discipline on HFSC classes, or
1782.Em ALTQ_RIO
1783to use the RIO queueing discipline on HFSC classes.
1784This option assumes
1785.Em ALTQ .
1786.It Cd options ALTQ_WFQ
1787Include support for ALTQ-implemented WFQ (Weighted Fair Queueing).
1788WFQ implements a weighted-round robin scheduler for a set of queues.
1789A weight can be assigned to each queue to give a different proportion
1790of the link capacity.
1791A hash function is used to map a flow to one of a set of queues.
1792This option assumes
1793.Em ALTQ .
1794.It Cd options ALTQ_FIFOQ
1795Include support for ALTQ-implemented FIFO queueing.
1796FIFOQ is a simple drop-tail FIFO (First In, First Out) queueing discipline.
1797This option assumes
1798.Em ALTQ .
1799.It Cd options ALTQ_RIO
1800Include support for ALTQ-implemented RIO (RED with In/Out).
1801The original RIO has 2 sets of RED parameters; one for in-profile
1802packets and the other for out-of-profile packets.
1803At the ingress of the network, profile meters tag packets as IN or
1804OUT based on contracted profiles for customers.
1805Inside the network, IN packets receive preferential treatment by
1806the RIO dropper.
1807ALTQ/RIO has 3 drop precedence levels defined for the Assured Forwarding
1808PHB of DiffServ (RFC 2597).
1809This option assumes
1810.Em ALTQ .
1811.It Cd options ALTQ_BLUE
1812Include support for ALTQ-implemented Blue buffer management.
1813Blue is another active buffer management mechanism.
1814This option assumes
1815.Em ALTQ .
1816.It Cd options ALTQ_FLOWVALVE
1817Include support for ALTQ-implemented Flowvalve.
1818Flowvalve is a simple implementation of a RED penalty box that identifies
1819and punishes misbehaving flows.
1820This option requires
1821.Em ALTQ_RED
1822and assumes
1823.Em ALTQ .
1824.It Cd options ALTQ_CDNR
1825Include support for ALTQ-implemented CDNR (diffserv traffic conditioner)
1826packet marking/manipulation.
1827Traffic conditioners are components to meter, mark, or drop incoming
1828packets according to some rules.
1829As opposed to queueing disciplines, traffic conditioners handle incoming
1830packets at an input interface.
1831This option assumes
1832.Em ALTQ .
1833.It Cd options ALTQ_NOPCC
1834Disables use of processor cycle counter to measure time in ALTQ.
1835This option should be defined for a non-Pentium i386 CPU which does not
1836have TSC, SMP (per-CPU counters are not in sync), or power management
1837which affects processor cycle counter.
1838This option assumes
1839.Em ALTQ .
1840.It Cd options ALTQ_IPSEC
1841Include support for IPsec in IPv4 ALTQ.
1842This option assumes
1843.Em ALTQ .
1844.It Cd options ALTQ_JOBS
1845Include support for ALTQ-implemented JoBS (Joint Buffer Management
1846and Scheduling).
1847This option assumes
1848.Em ALTQ .
1849.It Cd options ALTQ_AFMAP
1850Include support for an undocumented ALTQ feature that is used to map an IP
1851flow to an ATM VC (Virtual Circuit).
1852This option assumes
1853.Em ALTQ .
1854.It Cd options ALTQ_LOCALQ
1855Include support for ALTQ-implemented local queues.
1856Its practical use is undefined.
1857Assumes
1858.Em ALTQ .
1859.It Cd options SUBNETSARELOCAL
1860Sets default value for net.inet.ip.subnetsarelocal variable, which
1861controls whether non-directly-connected subnets of connected networks
1862are considered "local" for purposes of choosing the MSS for a TCP
1863connection.
1864This is mostly present for historic reasons and completely irrelevant if
1865you enable Path MTU discovery.
1866.It Cd options HOSTZEROBROADCAST
1867Sets default value for net.inet.ip.hostzerobroadcast variable, which
1868controls whether the zeroth host address of each connected subnet is
1869also considered a broadcast address.
1870Default value is "1", for compatibility with old systems; if this is
1871set to zero on all hosts on a subnet, you should be able to fit an extra
1872host per subnet on the
1873".0" address.
1874.It Cd options MCLSHIFT=value
1875This option is the base-2 logarithm of the size of mbuf clusters.
1876The
1877.Bx
1878networking stack keeps network packets in a linked
1879list, or chain, of kernel buffer objects called mbufs.
1880The system provides larger mbuf clusters as an optimization for
1881large packets, instead of using long chains for large packets.
1882The mbuf cluster size,
1883or
1884.Em MCLBYTES ,
1885must be a power of two, and is computed as two raised to the power
1886.Em MCLSHIFT .
1887On systems with Ethernet network adapters,
1888.Em MCLSHIFT
1889is often set to 11, giving 2048-byte mbuf clusters, large enough to
1890hold a 1500-byte Ethernet frame in a single cluster.
1891Systems with network interfaces supporting larger frame sizes like
1892ATM, FDDI, or HIPPI may perform better with
1893.Em MCLSHIFT
1894set to 12 or 13, giving mbuf cluster sizes of 4096 and 8192 bytes,
1895respectively.
1896.It Cd options NETATALK
1897Include support for the AppleTalk protocol stack.
1898The kernel provides provision for the
1899.Em Datagram Delivery Protocol
1900(DDP), providing SOCK_DGRAM support and AppleTalk routing.
1901This stack is used by the
1902.Em NETATALK
1903package, which adds support for AppleTalk server services via user
1904libraries and applications.
1905.It Cd options BLUETOOTH
1906Include support for the Bluetooth protocol stack.
1907See
1908.Xr bluetooth 4
1909for details.
1910.It Cd options IPNOPRIVPORTS
1911Normally, only root can bind a socket descriptor to a so-called
1912.Dq privileged
1913TCP port, that is, a port number in the range 0-1023.
1914This option eliminates those checks from the kernel.
1915This can be useful if there is a desire to allow daemons without
1916privileges to bind those ports, e.g., on firewalls.
1917The security tradeoffs in doing this are subtle.
1918This option should only be used by experts.
1919.It Cd options TCP_DEBUG
1920Record the last
1921.Em TCP_NDEBUG
1922TCP packets with SO_DEBUG set, and decode to the console if
1923.Em tcpconsdebug
1924is set.
1925.It Cd options TCP_NDEBUG
1926Number of packets to record for
1927.Em TCP_DEBUG .
1928Defaults to 100.
1929.It Cd options TCP_SENDSPACE=value
1930.It Cd options TCP_RECVSPACE=value
1931These options set the max TCP window size to other sizes than the default.
1932The TCP window sizes can be altered via
1933.Xr sysctl 8
1934as well.
1935.It Cd options TCP_INIT_WIN=value
1936This option sets the initial TCP window size for non-local connections,
1937which is used when the transmission starts.
1938The default size is 1, but if the machine should act more aggressively,
1939the initial size can be set to some other value.
1940The initial TCP window size can be set via
1941.Xr sysctl 8
1942as well.
1943.It Cd options TCP_SIGNATURE
1944Enable MD5 TCP signatures (RFC 2385) to protect BGP sessions.
1945.It Cd options IPFILTER_LOG
1946This option, in conjunction with
1947.Em pseudo-device ipfilter ,
1948enables logging of IP packets using IP-Filter.
1949.It Cd options IPFILTER_LOOKUP
1950This option enables the
1951IP-Filter
1952.Xr ippool 8
1953functionality to be enabled.
1954.It Cd options IPFILTER_COMPAT
1955This option enables older IP-Filter binaries to work.
1956.It Cd options IPFILTER_DEFAULT_BLOCK
1957This option sets the default policy of IP-Filter.
1958If it is set, IP-Filter will block packets by default.
1959.It Cd options BRIDGE_IPF
1960This option causes
1961.Em bridge
1962devices to use the IP and/or IPv6 filtering hooks, forming
1963a link-layer filter that uses protocol-layer rules.
1964This option assumes the presence of
1965.Em pseudo-device ipfilter .
1966.It Cd options MBUFTRACE
1967This option can help track down mbuf leaks.
1968When enabled, mbufs are tagged with the devices and protocols using them.
1969This can significantly decrease network performance, particularly
1970on MP systems.
1971This additional information can be viewed with
1972.Xr netstat 1 :
1973.Dl Ic netstat Fl mssv
1974Not all devices or protocols support this option.
1975.El
1976.Ss Sysctl Related Options
1977.Bl -ohang
1978.It Cd options SYSCTL_DISALLOW_CREATE
1979Disallows the creation or deletion of nodes from the sysctl tree, as
1980well as the assigning of descriptions to nodes that lack them, by any
1981process.
1982These operations are still available to kernel sub-systems, including
1983loadable kernel modules.
1984.It Cd options SYSCTL_DISALLOW_KWRITE
1985Prevents processes from adding nodes to the sysctl tree that make
1986existing kernel memory areas writable.
1987Sections of kernel memory can still be read and new nodes that own
1988their own data may still be writable.
1989.It Cd options SYSCTL_DEBUG_SETUP
1990Causes the SYSCTL_SETUP routines to print a brief message when they
1991are invoked.
1992This is merely meant as an aid in determining the order in which
1993sections of the tree are created.
1994.It Cd options SYSCTL_DEBUG_CREATE
1995Prints a message each time
1996.Fn sysctl_create ,
1997the function that adds nodes to the tree, is called.
1998.It Cd options SYSCTL_INCLUDE_DESCR
1999Causes the kernel to include short, human readable descriptions for
2000nodes in the sysctl tree.
2001The descriptions can be retrieved programmatically (see
2002.Xr sysctl 3 ) ,
2003or by the sysctl binary itself (see
2004.Xr sysctl 8 ) .
2005The descriptions are meant to give an indication of the purpose and/or
2006effects of a given node's value, not replace the documentation for the
2007given subsystem as a whole.
2008.El
2009.Ss System V IPC Options
2010.Bl -ohang
2011.It Cd options SYSVMSG
2012Includes support for
2013.At V
2014style message queues.
2015See
2016.Xr msgctl 2 ,
2017.Xr msgget 2 ,
2018.Xr msgrcv 2 ,
2019.Xr msgsnd 2 .
2020.It Cd options SYSVSEM
2021Includes support for
2022.At V
2023style semaphores.
2024See
2025.Xr semctl 2 ,
2026.Xr semget 2 ,
2027.Xr semop 2 .
2028.It Cd options SEMMNI=value
2029Sets the number of
2030.At V
2031style semaphore identifiers.
2032The GENERIC config file for your port will have the default.
2033.It Cd options SEMMNS=value
2034Sets the number of
2035.At V
2036style semaphores in the system.
2037The GENERIC config file for your port will have the default.
2038.It Cd options SEMUME=value
2039Sets the maximum number of undo entries per process for
2040.At V
2041style semaphores.
2042The GENERIC config file for your port will have the default.
2043.It Cd options SEMMNU=value
2044Sets the number of undo structures in the system for
2045.At V
2046style semaphores.
2047The GENERIC config file for your port will have the default.
2048.It Cd options SYSVSHM
2049Includes support for
2050.At V
2051style shared memory.
2052See
2053.Xr shmat 2 ,
2054.Xr shmctl 2 ,
2055.Xr shmdt 2 ,
2056.Xr shmget 2 .
2057.It Cd options SHMMAXPGS=value
2058Sets the maximum number of
2059.At V
2060style shared memory pages that are available through the
2061.Xr shmget 2
2062system call.
2063Default value is 1024 on most ports.
2064See
2065.Pa /usr/include/machine/vmparam.h
2066for the default.
2067.El
2068.Ss VM Related Options
2069.Bl -ohang
2070.It Cd options NMBCLUSTERS=value
2071The number of mbuf clusters the kernel supports.
2072Mbuf clusters are MCLBYTES in size (usually 2k).
2073This is used to compute the size of the kernel VM map
2074.Em mb_map ,
2075which maps mbuf clusters.
2076Default on most ports is 1024 (2048 with
2077.Dq options GATEWAY
2078).
2079See
2080.Pa /usr/include/machine/param.h
2081for exact default information.
2082Increase this value if you get
2083.Dq mclpool limit reached
2084messages.
2085.It Cd options NKMEMPAGES=value
2086.It Cd options NKMEMPAGES_MIN=value
2087.It Cd options NKMEMPAGES_MAX=value
2088Size of kernel VM map
2089.Em kmem_map ,
2090in PAGE_SIZE-sized chunks (the VM page size; this value may be read
2091from the
2092.Xr sysctl 8
2093variable
2094.Em hw.pagesize
2095).
2096This VM map is used to map the kernel malloc arena.
2097The kernel attempts to auto-size this map based on the amount of
2098physical memory in the system.
2099Platform-specific code may place bounds on this computed size,
2100which may be viewed with the
2101.Xr sysctl 8
2102variable
2103.Em vm.nkmempages .
2104See
2105.Pa /usr/include/machine/param.h
2106for the default upper and lower bounds.
2107The related options
2108.Sq NKMEMPAGES_MIN
2109and
2110.Sq NKMEMPAGES_MAX
2111allow the bounds to be overridden in the kernel configuration file.
2112These options are provided in the event the computed value is
2113insufficient resulting in an
2114.Dq out of space in kmem_map
2115panic.
2116.It Cd options SB_MAX=value
2117Sets the max size in bytes that a socket buffer is allowed to occupy.
2118The default is 256k, but sometimes it needs to be increased, for example
2119when using large TCP windows.
2120This option can be changed via
2121.Xr sysctl 8
2122as well.
2123.It Cd options SOMAXKVA=value
2124Sets the maximum size of kernel virtual memory that the socket buffers
2125are allowed to use.
2126The default is 16MB, but in situations where for example large TCP
2127windows are used this value must also be increased.
2128This option can be changed via
2129.Xr sysctl 8
2130as well.
2131.It Cd options BUFCACHE=value
2132Size of the buffer cache as a percentage of total available RAM.
2133Ignored if BUFPAGES is also specified.
2134.It Cd options NBUF=value
2135Sets the number of buffer headers available, i.e., the number of
2136open files that may have a buffer cache entry.
2137Each buffer header
2138requires MAXBSIZE (machine dependent, but usually 65536) bytes.
2139The default value is machine dependent, but is usually equal to the
2140value of BUFPAGES.
2141.It Cd options BUFPAGES=value
2142These options set the number of pages available for the buffer cache.
2143Their default value is a machine dependent value, often calculated as
2144between 5% and 10% of total available RAM.
2145.It Cd options MAXTSIZ=bytes
2146Sets the maximum size limit of a process' text segment.
2147See
2148.Pa /usr/include/machine/vmparam.h
2149for the port-specific default.
2150.It Cd options DFLDSIZ=bytes
2151Sets the default size limit of a process' data segment, the value that
2152will be returned as the soft limit for
2153.Dv RLIMIT_DATA
2154(as returned by
2155.Xr getrlimit 2 ) .
2156See
2157.Pa /usr/include/machine/vmparam.h
2158for the port-specific default.
2159.It Cd options MAXDSIZ=bytes
2160Sets the maximum size limit of a process' data segment, the value that
2161will be returned as the hard limit for
2162.Dv RLIMIT_DATA
2163(as returned by
2164.Xr getrlimit 2 ) .
2165See
2166.Pa /usr/include/machine/vmparam.h
2167for the port-specific default.
2168.It Cd options DFLSSIZ=bytes
2169Sets the default size limit of a process' stack segment, the value that
2170will be returned as the soft limit for
2171.Dv RLIMIT_STACK
2172(as returned by
2173.Xr getrlimit 2 ) .
2174See
2175.Pa /usr/include/machine/vmparam.h
2176for the port-specific default.
2177.It Cd options MAXSSIZ=bytes
2178Sets the maximum size limit of a process' stack segment, the value that
2179will be returned as the hard limit for
2180.Dv RLIMIT_STACK
2181(as returned by
2182.Xr getrlimit 2 ) .
2183See
2184.Pa /usr/include/machine/vmparam.h
2185for the port-specific default.
2186.It Cd options DUMP_ON_PANIC=integer
2187Defaults to one.
2188If set to zero, the kernel will not dump to the dump device when
2189it panics, though dumps can still be forced via
2190.Xr ddb 4
2191with the
2192.Dq sync
2193command.
2194Note that this sets the value of the
2195.Em kern.dump_on_panic
2196.Xr sysctl 3
2197variable which may be changed at run time \(em see
2198.Xr sysctl 8
2199for details.
2200.It Cd options USE_TOPDOWN_VM
2201User space memory allocations (as made by
2202.Xr mmap 2 )
2203will be arranged in a
2204.Dq top down
2205fashion instead of the traditional
2206.Dq upwards from MAXDSIZ \&+ vm_daddr
2207method.
2208This includes the placement of
2209.Xr ld.so 1 .
2210Arranging memory in this manner allows either (or both of) the heap or
2211.Xr mmap 2
2212allocated space to grow larger than traditionally possible.
2213This option is not available on all ports, but is instead expected to be
2214offered on a port-by-port basis, after which some ports will commit to
2215using it by default.
2216See the files
2217.Pa /usr/include/uvm/uvm_param.h
2218for some implementation details, and
2219.Pa /usr/include/machine/vmparam.h
2220for port specific details including availability.
2221.It Cd options VMSWAP
2222Enable paging device/file support.
2223This option is on by default.
2224.It Cd options PDPOLICY_CLOCKPRO
2225Use CLOCK-Pro, an alternative page replace policy.
2226.El
2227.Ss Security Options
2228.Bl -ohang
2229.It Cd options INSECURE
2230Initializes the kernel security level with \-1 instead of 0.
2231This means that the system always starts in secure level \-1 mode, even when
2232running multiuser, unless the securelevel variable is set to value > \-1 in
2233.Pa /etc/rc.conf .
2234In this case the kernel security level will be raised to that value when the
2235.Pa /etc/rc.d/securelevel
2236script is run during system startup.
2237See the manual page for
2238.Xr init 8
2239for details on the implications of this.
2240The kernel secure level may manipulated by the superuser by altering the
2241.Em kern.securelevel
2242.Xr sysctl 3
2243variable (the secure level may only be lowered by a call from process ID 1,
2244i.e.,
2245.Xr init 8 ) .
2246See also
2247.Xr secmodel_securelevel 9 ,
2248.Xr sysctl 8
2249and
2250.Xr sysctl 3 .
2251.It Cd options VERIFIED_EXEC_FP_SHA256
2252Enables support for SHA256 hashes in Veriexec.
2253.It Cd options VERIFIED_EXEC_FP_SHA384
2254Enables support for SHA384 hashes in Veriexec.
2255.It Cd options VERIFIED_EXEC_FP_SHA512
2256Enables support for SHA512 hashes in Veriexec.
2257.It Cd options PAX_MPROTECT=value
2258Enables PaX MPROTECT,
2259.Xr mprotect 2
2260restrictions from the PaX project.
2261.Pp
2262The
2263.Ar value
2264is the default value for the
2265.Em global
2266knob, see
2267.Xr sysctl 3 .
2268If 0, PaX MPROTECT will be enabled only if explicitly set on programs
2269using
2270.Xr paxctl 8 .
2271If 1, PaX MPROTECT will be enabled for all programs.
2272Programs can be exempted using
2273.Xr paxctl 8 .
2274.Pp
2275See
2276.Xr security 7
2277for more details.
2278.It Cd options PAX_SEGVGUARD=value
2279Enables PaX Segvguard.
2280Requires
2281.Cd options FILEASSOC .
2282.Pp
2283The
2284.Ar value
2285is the default value for the
2286.Em global
2287knob, see
2288.Xr sysctl 3 .
2289If 0, PaX Segvguard will be enabled only if explicitly set on programs
2290using
2291.Xr paxctl 8 .
2292If 1, PaX Segvguard will be enabled to all programs, and exemption can
2293be done using
2294.Xr paxctl 8 .
2295.Pp
2296See
2297.Xr security 7
2298for more details.
2299.It Cd options PAX_ASLR=value
2300Enables PaX ASLR.
2301.Pp
2302The
2303.Ar value
2304is the default value for the
2305.Em global
2306knob, see
2307.Xr sysctl 3 .
2308If 0, PaX ASLR will be enabled only if explicitly set on programs
2309using
2310.Xr paxctl 8 .
2311If 1, PaX ASLR will be enabled to all programs, and exemption can
2312be done using
2313.Xr paxctl 8 .
2314.Pp
2315See
2316.Xr security 7
2317for more details.
2318.It Cd options USER_VA0_DISABLE_DEFAULT=value
2319Sets the initial value of the flag which controls whether user programs
2320can map virtual address 0.
2321The flag can be changed at runtime by
2322.Xr sysctl 3 .
2323.It Cd options KASAN
2324Enables Kernel Address Sanitizer.
2325.Em NOTE :
2326not available on all architectures.
2327.It Cd options KASLR
2328Enables Kernel ASLR.
2329This randomizes the location of the kernel image in memory.
2330.Em NOTE :
2331not available on all architectures.
2332.It Cd options SVS
2333Enables Separate Virtual Space.
2334On architectures that are designed to function with a shared address
2335space, this option explicitly isolates the kernel and user spaces.
2336.Em NOTE :
2337not available on all architectures.
2338.El
2339.Ss amiga-specific Options
2340.Bl -ohang
2341.It Cd options BB060STUPIDROM
2342When the bootloader (which passes AmigaOS ROM information) claims
2343we have a 68060 CPU without FPU, go look into the Processor
2344Configuration Register (PCR) to find out.
2345You need this with Amiga ROMs up to (at least) V40.xxx (OS3.1),
2346when you boot via the bootblocks and don't have a DraCo.
2347.It Cd options IOBZCLOCK=frequency
2348The IOBlix boards come with two different serial master clocks: older ones
2349use 24 MHz, newer ones use 22.1184 MHz.
2350The driver normally assumes the latter.
2351If your board uses 24 MHz, you can recompile your kernel with
2352options IOBZCLOCK=24000000
2353or patch the kernel variable iobzclock to the same value.
2354.It Cd options LIMITMEM=value
2355If there, limit the part of the first memory bank used by
2356.Nx
2357to value megabytes.
2358Default is unlimited.
2359.It Cd options P5PPC68KBOARD
2360Add special support for Phase5 mixed 68k+PPC boards.
2361Currently, this only affects rebooting from
2362.Nx
2363and is only needed on 68040+PPC, not on
236468060+PPC; without this, affected machines will hang after
2365.Nx
2366has shut
2367down and will only restart after a keyboard reset or a power cycle.
2368.El
2369.Ss atari-specific Options
2370.Bl -ohang
2371.It Cd options DISKLABEL_AHDI
2372Include support for AHDI (native Atari) disklabels.
2373.It Cd options DISKLABEL_NBDA
2374Include support for
2375.Nx Ns /atari
2376labels.
2377If you don't set this option, it will be set automatically.
2378.Nx Ns /atari
2379will not work without it.
2380.It Cd options FALCON_SCSI
2381Include support for the 5380-SCSI configuration as found on the Falcon.
2382.It Cd options RELOC_KERNEL
2383If set, the kernel will relocate itself to TT-RAM, if possible.
2384This will give you a slightly faster system.
2385.Em Beware
2386that on some TT030 systems,
2387the system will frequently dump with MMU-faults with this option enabled.
2388.It Cd options SERCONSOLE
2389Allow the modem1-port to act as the system-console.
2390A carrier should be active on modem1 during system boot to active
2391the console functionality.
2392.It Cd options TT_SCSI
2393Include support for the 5380-SCSI configuration as found on the TT030
2394and Hades.
2395.El
2396.Ss i386-specific Options
2397.Bl -ohang
2398.It Cd options CPURESET_DELAY=value
2399Specifies the time (in millisecond) to wait before doing a hardware reset
2400in the last phase of a reboot.
2401This gives the user a chance to see error messages from the shutdown
2402operations (like NFS unmounts, buffer cache flush, etc ...).
2403Setting this to 0 will disable the delay.
2404Default is 2 seconds.
2405.It Cd options USER_LDT
2406Include i386-specific system calls for modifying the local descriptor table,
2407used by Windows emulators.
2408.It Cd options PAE
2409Enable PAE (Physical Address Extension) mode.
2410PAE permits up to 36 bits physical addressing (64GB of physical
2411memory), and turns physical addresses to 64 bits entities in the
2412memory management subsystem.
2413Userland virtual address space remains at 32 bits (4GB).
2414PAE mode is required to enable the NX/XD (No-eXecute/eXecute Disable)
2415bit for pages, which allows marking certain ones as not being executable.
2416Any attempt to execute code from such a page will raise an exception.
2417.It Cd options REALBASEMEM=integer
2418Overrides the base memory size passed in from the boot block.
2419(Value given in kilobytes.)
2420Use this option only if the boot block reports the size incorrectly.
2421(Note that some BIOSes put the extended BIOS
2422data area at the top of base memory, and therefore report a smaller
2423base memory size to prevent programs overwriting it.
2424This is correct behavior, and you should not use the
2425.Em REALBASEMEM
2426option to access this memory).
2427.It Cd options SPECTRE_V2_GCC_MITIGATION=1
2428Enable GCC-specific Spectre variant 2 mitigations.
2429For 32-bit kernels this means these options:
2430.Bd -literal -offset indent
2431-mindirect-branch=thunk -mindirect-branch-register
2432.Ed
2433.Pp
2434For 64-bit kernels this means these options:
2435.Bd -literal -offset indent
2436-mindirect-branch=thunk-inline -mindirect-branch-register
2437.Ed
2438.It Cd options REALEXTMEM=integer
2439Overrides the extended memory size passed in from the boot block.
2440(Value given in kilobytes.
2441Extended memory does not include the first megabyte.)
2442Use this option only if the boot block reports the size incorrectly.
2443.It Cd options CYRIX_CACHE_WORKS
2444Relevant only to the Cyrix 486DLC CPU.
2445This option is used to turn on the cache in hold-flush mode.
2446It is not turned on by default because it is known to have problems in
2447certain motherboard implementations.
2448.It Cd options CYRIX_CACHE_REALLY_WORKS
2449Relevant only to the Cyrix 486DLC CPU.
2450This option is used to turn on the cache in write-back mode.
2451It is not turned on by default because it is known to have problems in
2452certain motherboard implementations.
2453In order for this option to take effect, option
2454.Em CYRIX_CACHE_WORKS
2455must also be specified.
2456.It Cd options PCIBIOS
2457Enable support for initializing the PCI bus using information from
2458the BIOS.
2459See
2460.Xr pcibios 4
2461for details.
2462.It Cd options MTRR
2463Include support for accessing MTRR registers from user-space.
2464See
2465.Xr i386_get_mtrr 2 .
2466.It Cd options BEEP_ONHALT
2467Make the system speaker emit several beeps when it is completely safe to
2468power down the computer after a
2469.Xr halt 8
2470command.
2471Requires
2472.Xr sysbeep 4
2473support.
2474.It Cd options BEEP_ONHALT_COUNT=times
2475Number of times to beep the speaker when
2476.Cd options BEEP_ONHALT
2477is enabled.
2478Defaults to 3.
2479.It Cd options BEEP_ONHALT_PITCH=hz
2480The tone frequency used when
2481.Cd options BEEP_ONHALT
2482option, in hertz.
2483Defaults to 1500.
2484.It Cd options BEEP_ONHALT_PERIOD=msecs
2485The duration of each beep when
2486.Cd options BEEP_ONHALT
2487is enabled, in milliseconds.
2488Defaults to 250.
2489.It Cd options MULTIBOOT
2490Makes the kernel Multiboot-compliant, allowing it to be booted through
2491a Multiboot-compliant boot manager such as GRUB.
2492See
2493.Xr multiboot 8
2494for more information.
2495.It Cd options SPLASHSCREEN
2496Display a splash screen during boot.
2497.El
2498.Ss isa-specific Options
2499Options specific to
2500.Xr isa 4
2501busses.
2502.Bl -ohang
2503.It Cd options PCIC_ISA_ALLOC_IOBASE=address, PCIC_ISA_ALLOC_IOSIZE=size
2504Control the section of IO bus space used for PCMCIA bus space mapping.
2505Ideally the probed defaults are satisfactory, however in practice
2506that is not always the case.
2507See
2508.Xr pcmcia 4
2509for details.
2510.It Cd options PCIC_ISA_INTR_ALLOC_MASK=mask
2511Controls the allowable interrupts that may be used for PCMCIA
2512devices.
2513This mask is a logical-or of power-of-2s of allowable interrupts:
2514.Bd -literal -offset 04n
2515.Em "IRQ Val      IRQ Val      IRQ Val       IRQ Val"
2516 0  0x0001    4  0x0010    8  0x0100    12  0x1000
2517 1  0x0002    5  0x0020    9  0x0200    13  0x2000
2518 2  0x0004    6  0x0040   10  0x0400    14  0x4000
2519 3  0x0008    7  0x0080   11  0x0800    15  0x8000
2520.Ed
2521.It Cd options PCKBC_CNATTACH_SELFTEST
2522Perform a self test of the keyboard controller before attaching it as a
2523console.
2524This might be necessary on machines where we boot on cold iron, and
2525pckbc refuses to talk until we request a self test.
2526Currently only the netwinder port uses it.
2527.It Cd options PCKBD_CNATTACH_MAY_FAIL
2528If this option is set the PS/2 keyboard will not be used as the console
2529if it cannot be found during boot.
2530This allows other keyboards, like USB, to be the console keyboard.
2531.It Cd options PCKBD_LAYOUT=layout
2532Sets the default keyboard layout, see
2533.Xr pckbd 4 .
2534.El
2535.Ss m68k-specific Options
2536.Bl -ohang
2537.It Cd options FPU_EMULATE
2538Include support for MC68881/MC68882 emulator.
2539.It Cd options FPSP
2540Include support for 68040 floating point.
2541.It Cd options M68020,M68030,M68040,M68060
2542Include support for a specific CPU,
2543at least one (the one you are using) should be specified.
2544.It Cd options M060SP
2545Include software support for 68060.
2546This provides emulation of unimplemented
2547integer instructions as well as emulation of unimplemented floating point
2548instructions and data types and software support for floating point traps.
2549.El
2550.Ss powerpc-specific Options (OEA Only)
2551.Bl -ohang
2552.It Cd options PMAP_MEMLIMIT=value
2553Limit the amount of memory seen by the kernel to
2554.Ar value
2555bytes.
2556.It Cd options PTEGCOUNT=value
2557Specify the size of the page table as
2558.Ar value
2559PTE groups.
2560Normally, one PTEG is allocated per physical page frame.
2561.El
2562.Ss sparc-specific Options
2563.Bl -ohang
2564.It Cd options AUDIO_DEBUG
2565Enable simple event debugging of the logging of the
2566.Xr audio 4
2567device.
2568.It Cd options BLINK
2569Enable blinking of LED.
2570Blink rate is full cycle every N seconds for
2571N < then current load average.
2572See
2573.Xr getloadavg 3 .
2574.\" .It Cd options COLORFONT_CACHE
2575.\" What does this do?
2576.It Cd options COUNT_SW_LEFTOVERS
2577Count how many times the sw SCSI device has left 3, 2, 1 and 0 in the
2578sw_3_leftover, sw_2_leftover, sw_1_leftover, and sw_0_leftover
2579variables accessible from
2580.Xr ddb 4 .
2581See
2582.Xr sw 4 .
2583.It Cd options DEBUG_ALIGN
2584Adds debugging messages calls when user-requested alignment fault
2585handling happens.
2586.It Cd options DEBUG_EMUL
2587Adds debugging messages calls for emulated floating point and
2588alignment fixing operations.
2589.It Cd options EXTREME_DEBUG
2590Adds debugging functions callable from
2591.Xr ddb 4 .
2592The debug_pagetables, test_region and print_fe_map
2593functions print information about page tables for the SUN4M
2594platforms only.
2595.It Cd options EXTREME_EXTREME_DEBUG
2596Adds extra info to
2597.Em options EXTREME_DEBUG .
2598.It Cd options FPU_CONTEXT
2599Make
2600.Em options COMPAT_SVR4
2601getcontext and setcontext include floating point registers.
2602.It Cd options MAGMA_DEBUG
2603Adds debugging messages to the
2604.Xr magma 4
2605device.
2606.It Cd options RASTERCONS_FULLSCREEN
2607Use the entire screen for the console.
2608.It Cd options RASTERCONS_SMALLFONT
2609Use the Fixed font on the console, instead of the normal font.
2610.It Cd options SUN4
2611Support sun4 class machines.
2612.It Cd options SUN4C
2613Support sun4c class machines.
2614.It Cd options SUN4M
2615Support sun4m class machines.
2616.It Cd options SUN4_MMU3L
2617.\" XXX ???
2618Enable support for sun4 3-level MMU machines.
2619.It Cd options V9
2620Enable SPARC V9 assembler in
2621.Xr ddb 4 .
2622.El
2623.Ss sparc64-specific Options
2624.Bl -ohang
2625.It Cd options AUDIO_DEBUG
2626Enable simple event debugging of the logging of the
2627.Xr audio 4
2628device.
2629.It Cd options BLINK
2630Enable blinking of LED.
2631Blink rate is full cycle every N seconds for
2632N < then current load average.
2633See
2634.Xr getloadavg 3 .
2635.El
2636.Ss x68k-specific Options
2637.Bl -ohang
2638.It Cd options EXTENDED_MEMORY
2639Include support for extended memory, e.g., TS-6BE16 and 060turbo on-board.
2640.It Cd options JUPITER
2641Include support for Jupiter-X MPU accelerator
2642.It Cd options ZSCONSOLE,ZSCN_SPEED=value
2643Use the built-in serial port as the system-console.
2644Speed is specified in bps, defaults to 9600.
2645.It Cd options ITE_KERNEL_ATTR=value
2646Set the kernel message attribute for ITE.
2647Value, an integer, is a logical or of the following values:
2648.Bl -tag -width 4n -compact -offset indent
2649.It 1
2650color inversed
2651.It 2
2652underlined
2653.It 4
2654bolded
2655.El
2656.El
2657.Ss x86-specific Options
2658.Bl -ohang
2659.It Cd options NO_PCI_MSI_MSIX
2660Disable support for MSI/MSIX in the kernel.
2661See
2662.Xr pci_msi 9
2663for details of MSI/MSIX support
2664.It Cd options NO_PREEMPTION
2665Disables
2666.Xr kpreempt 9
2667support in the kernel.
2668.El
2669.\" The following requests should be uncommented and used where appropriate.
2670.\" .Sh FILES
2671.\" .Sh EXAMPLES
2672.Sh SEE ALSO
2673.Xr config 1 ,
2674.Xr gcc 1 ,
2675.Xr gdb 1 ,
2676.Xr ktrace 1 ,
2677.Xr quota 1 ,
2678.Xr vndcompress 1 ,
2679.Xr gettimeofday 2 ,
2680.Xr i386_get_mtrr 2 ,
2681.Xr i386_iopl 2 ,
2682.Xr msgctl 2 ,
2683.Xr msgget 2 ,
2684.Xr msgrcv 2 ,
2685.Xr msgsnd 2 ,
2686.Xr ntp_adjtime 2 ,
2687.Xr ntp_gettime 2 ,
2688.Xr reboot 2 ,
2689.Xr semctl 2 ,
2690.Xr semget 2 ,
2691.Xr semop 2 ,
2692.Xr shmat 2 ,
2693.Xr shmctl 2 ,
2694.Xr shmdt 2 ,
2695.Xr shmget 2 ,
2696.Xr sysctl 3 ,
2697.Xr apm 4 ,
2698.Xr ddb 4 ,
2699.Xr inet 4 ,
2700.Xr md 4 ,
2701.Xr pcibios 4 ,
2702.Xr pcmcia 4 ,
2703.Xr ppp 4 ,
2704.Xr userconf 4 ,
2705.Xr vnd 4 ,
2706.Xr wscons 4 ,
2707.Xr config 5 ,
2708.Xr edquota 8 ,
2709.Xr init 8 ,
2710.Xr mdsetimage 8 ,
2711.Xr mount_cd9660 8 ,
2712.Xr mount_fdesc 8 ,
2713.Xr mount_kernfs 8 ,
2714.Xr mount_lfs 8 ,
2715.Xr mount_mfs 8 ,
2716.Xr mount_msdos 8 ,
2717.Xr mount_nfs 8 ,
2718.Xr mount_ntfs 8 ,
2719.Xr mount_null 8 ,
2720.Xr mount_portal 8 ,
2721.Xr mount_procfs 8 ,
2722.Xr mount_udf 8 ,
2723.Xr mount_umap 8 ,
2724.Xr mount_union 8 ,
2725.Xr mrouted 8 ,
2726.Xr newfs_lfs 8 ,
2727.Xr ntpd 8 ,
2728.Xr quotaon 8 ,
2729.Xr rpc.rquotad 8 ,
2730.Xr sysctl 8 ,
2731.Xr in_getifa 9 ,
2732.Xr kernhist 9
2733.Sh HISTORY
2734The
2735.Nm
2736man page first appeared in
2737.Nx 1.3 .
2738