The general format of a configuration file is quite simple. Each line contains a
keyword and one or more arguments. For simplicity, most lines only contain one argument.
Anything following a # is considered a comment and ignored.
The following sections describe each keyword, generally in the order they are listed in
GENERIC, although some related keywords have been grouped
together in a single section (such as Networking) even though they are actually scattered
throughout the GENERIC file. An exhaustive list of options and more detailed
explanations of the device lines is present in the LINT
configuration file, located in the same directory as GENERIC.
If you are in doubt as to the purpose or necessity of a line, check first in LINT.
Note: In FreeBSD 5.X and above the LINT is
non-existent. See the NOTES file for architecture dependent
options. Some options, mainly architecture independent ones, are stored in the /usr/src/sys/conf/NOTES file. It is advisable to review the options
in here also.
The following is an example GENERIC kernel configuration
file with various additional comments where needed for clarity. This example should match
your copy in /usr/src/sys/i386/conf/GENERIC fairly closely. For
details of all the possible kernel options, see /usr/src/sys/i386/conf/LINT.
# GENERIC -- Generic kernel configuration file for FreeBSD/i386
# For more information on this file, please read the handbook section on
# Kernel Configuration Files:
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
# latest information.
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.380 2003/03/29 13:36:41 mdodd Exp $
The following are the mandatory keywords required in every kernel you build:
This is the machine architecture. It must be either i386,
pc98, sparc64, alpha, ia64, amd64, or powerpc.
The above option specifies the type of CPU you have in your system. You may have
multiple instances of the CPU line (i.e., you are not sure whether you should use I586_CPU or I686_CPU), however, for a
custom kernel, it is best to specify only the CPU you have. If you are unsure of your CPU
type, you can check the /var/run/dmesg.boot file to view your
boot up messages.
Support for I386_CPU is still provided in the source of
FreeBSD, but it is disabled by default in both -STABLE and -CURRENT. This means that to
install FreeBSD with a 386-class cpu, you now have the following options:
Install an older FreeBSD release and rebuild from source as described in Section 9.3.
Build the userland and kernel on a newer machine and install on the 386 using the
precompiled /usr/obj files (see Section 21.5 for details).
Roll your own release of FreeBSD which includes I386_CPU
support in the kernels of the installation CD-ROM.
The first of these options is probably the easiest of all, but you will need a lot of
disk space on a 386-class machine which may be difficult to find.
This is the identification of the kernel. You should change this to whatever you named
your kernel, i.e. MYKERNEL if you have followed the
instructions of the previous examples. The value you put in the ident string will print when you boot up the kernel, so it is
useful to give the new kernel a different name if you want to keep it separate from your
usual kernel (i.e. you want to build an experimental kernel).
The maxusers option sets the size of a number of important
system tables. This number is supposed to be roughly equal to the number of simultaneous
users you expect to have on your machine.
Starting with FreeBSD 4.5, the system will auto-tune this setting for you if you
explicitly set it to 0. In FreeBSD 5.X, maxusers will default to 0 if not
specified. If you are using an version of FreeBSD earlier than 4.5, or you want to manage
it yourself you will want to set maxusers to at least 4,
especially if you are using the X Window System or compiling software. The reason is that
the most important table set by maxusers is the maximum number
of processes, which is set to 20 + 16 * maxusers, so if you
set maxusers to 1, then you can only have 36 simultaneous
processes, including the 18 or so that the system starts up at boot time, and the 15 or
so you will probably create when you start the X Window System. Even a simple task like
reading a manual page will start up nine processes to filter, decompress, and view it.
Setting maxusers to 64 will allow you to have up to 1044
simultaneous processes, which should be enough for nearly all uses. If, however, you see
the dreaded proc table full error when trying to start
another program, or are running a server with a large number of simultaneous users (like
ftp.FreeBSD.org), you can always increase the number and
Note: maxusers does not limit the number of users which can log into your
machine. It simply sets various table sizes to reasonable values considering the maximum
number of users you will likely have on your system and how many processes each of them
will be running. One keyword which does limit the number of simultaneous remote logins and X terminal windows is
pty 16. With FreeBSD 5.X, you do not have to worry about this number since
the pty(4) driver is
``auto-cloning'', and you have to use the line device pty in
your configuration file.
# Floating point support - do not disable.
device npx0 at nexus? port IO_NPX irq 13
npx0 is the interface to the floating point math unit in
FreeBSD, which is either the hardware co-processor or the software math emulator. This is
# Pseudo devices - the number indicates how many units to allocate.
device loop # Network loopback
This is the generic loopback device for TCP/IP. If you telnet or FTP to localhost (a.k.a., 127.0.0.1) it will come
back at you through this device. This is mandatory. Under FreeBSD 4.X you have to use the line
Everything that follows is more or less optional. See the notes underneath or next to
each option for more information.
#To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" #Default places to look for devices.
In FreeBSD 5.X and newer versions the
is used to configure options of the device drivers. The default location that loader(8) will check
at boot time is /boot/device.hints. Using the hints option you can compile these hints statically into your
kernel. Then there is no need to create a device.hints file in
#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
The normal build process of the FreeBSD does not include debugging information when
building the kernel and strips most symbols after the resulting kernel is linked, to save
some space at the install location. If you are going to do tests of kernels in the
-CURRENT branch or develop changes of your own for the FreeBSD kernel, you might want to
uncomment this line. It will enable the use of the -g option
which enables debugging information when passed to gcc(1). The same can
be accomplished by the config(8) -g option, if you are using the ``traditional'' way for building
your kernels (See the Section 9.3 for more
options MATH_EMULATE #Support for x87 emulation
This line allows the kernel to simulate a math co-processor if your computer does not
have one (386 or 486SX). If you have a 486DX, or a 386 or 486SX (with a separate 387 or
487 chip), or higher (Pentium®, Pentium II, etc.), you can comment this line out.
Note: The normal math co-processor emulation routines that come with FreeBSD
are not very accurate. If you do
not have a math co-processor, and you need the best accuracy, it is recommended that you
change this option to GPL_MATH_EMULATE to use the GNU math
support, which is not included by default for licensing reasons.
In FreeBSD 5.X, math emulation is disabled by default, as older CPUs that do not have
native floating point math support are far less common, and in many cases not supported
by the GENERIC kernel without other additional options.
options INET #InterNETworking
Networking support. Leave this in, even if you do not plan to be connected to a
network. Most programs require at least loopback networking (i.e., making network
connections within your PC), so this is essentially mandatory.
options INET6 #IPv6 communications protocols
This enables the IPv6 communication protocols.
options FFS #Berkeley Fast Filesystem
options FFS_ROOT #FFS usable as root device [keep this!]
This is the basic hard drive Filesystem. Leave it in if you boot from the hard
Note: In FreeBSD 5.X, FFS_ROOT is no longer
options UFS_ACL #Support for access control lists
This option, present only in FreeBSD 5.X, enables kernel support for access
control lists. This relies on the use of extended attributes and UFS2, and the feature is described in detail in the Section 10.13. ACLs are enabled
by default, and should not be disabled in the kernel if they have been used previously on
a file system, as this will remove the access control lists changing the way files are
protected in unpredictable ways.
options UFS_DIRHASH #Improve performance on big directories
This option includes functionality to speed up disk operations on large directories,
at the expense of using additional memory. You would normally keep this for a large
server, or interactive workstation, and remove it if you are using FreeBSD on a smaller
system where memory is at a premium and disk access speed is less important, such as a
options SOFTUPDATES #Enable FFS Soft Updates support
This option enables Soft Updates in the kernel, this will help speed up write access
on the disks. Even when this functionality is provided by the kernel, it must be turned
on for specific disks. Review the output from mount(8) to see if
Soft Updates is enabled for your system disks. If you do not see the soft-updates option then you will need to activate it using the tunefs(8) (for
existing filesystems) or newfs(8) (for new
options MFS #Memory Filesystem
options MD_ROOT #MD is a potential root device
This is the memory-mapped Filesystem. This is basically a RAM disk for fast storage of
temporary files, useful if you have a lot of swap space that you want to take advantage
of. A perfect place to mount an MFS partition is on the /tmp
directory, since many programs store temporary data here. To mount an MFS RAM disk on /tmp, add the following line to /etc/fstab:
/dev/ad1s2b /tmp mfs rw 0 0
Now you simply need to either reboot, or run the command mount
Note: In FreeBSD 5.X, md(4)-backed UFS file
systems are used for memory file systems rather than MFS. Information on configuring
memory-backed file systems may be found in the manual pages for mdconfig(8) and mdmfs(8), and in Section 12.11. As a result, the MFS option is no longer supported.
options NFS #Network Filesystem
options NFS_ROOT #NFS usable as root device, NFS required
The network Filesystem. Unless you plan to mount partitions from a UNIX® file server over TCP/IP, you can comment these
options MSDOSFS #MSDOS Filesystem
The MS-DOS® Filesystem. Unless you plan to mount a
DOS formatted hard drive partition at boot time, you can safely comment this out. It will
be automatically loaded the first time you mount a DOS partition, as described above.
Also, the excellent mtools software (in the ports collection)
allows you to access DOS floppies without having to mount and unmount them (and does not
require MSDOSFS at all).
options CD9660 #ISO 9660 Filesystem
options CD9660_ROOT #CD-ROM usable as root, CD9660 required
The ISO 9660 Filesystem for CDROMs. Comment it out if you do not have a CDROM drive or
only mount data CDs occasionally (since it will be dynamically loaded the first time you
mount a data CD). Audio CDs do not need this Filesystem.
options PROCFS #Process filesystem
The process filesystem. This is a ``pretend'' filesystem mounted on /proc which allows programs like ps(1) to give you more
information on what processes are running. In FreeBSD 5.X, use of PROCFS is not required under most circumstances, as most debugging
and monitoring tools have been adapted to run without PROCFS.
In addition, 5.X-CURRENT kernels making use of PROCFS must now
also include support for PSEUDOFS:
options PSEUDOFS #Pseudo-filesystem framework
PSEUDOFS is not available in FreeBSD 4.X. Unlike in FreeBSD
4.X, new installations of FreeBSD 5.X will not mount the process file system by
options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
Compatibility with 4.3BSD. Leave this in; some programs will act strangely if you
comment this out.
options COMPAT_FREEBSD4 #Compatible with FreeBSD4
This option is required on FreeBSD 5.X i386™
and Alpha systems to support applications compiled on older versions of FreeBSD that use
older system call interfaces. It is recommended that this option be used on all i386 and Alpha systems that may run older applications;
platforms that gained support only in 5.X, such as ia64 and Sparc64®, do not require this option.
options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI
This causes the kernel to pause for 15 seconds before probing each SCSI device in your
system. If you only have IDE hard drives, you can ignore this, otherwise you will
probably want to lower this number, perhaps to 5 seconds, to speed up booting. Of course,
if you do this, and FreeBSD has trouble recognizing your SCSI devices, you will have to
raise it back up.
options UCONSOLE #Allow users to grab the console
Allow users to grab the console, which is useful for X users. For example, you can
create a console xterm by typing xterm
-C, which will display any write(1), talk(1), and any other
messages you receive, as well as any console messages sent by the kernel.
Note: In FreeBSD 5.X, UCONSOLE is no longer
options USERCONFIG #boot -c editor
This option allows you to boot the configuration editor from the boot menu.
options VISUAL_USERCONFIG #visual boot -c editor
This option allows you to boot the visual configuration editor from the boot menu.
Note: From FreeBSD versions 5.0 and later, the USERCONFIG options has been deprecated in favor of the new
method. For more information on
please visit Section 7.5.
options KTRACE #ktrace(1) support
This enables kernel process tracing, which is useful in debugging.
options SYSVSHM #SYSV-style shared memory
This option provides for System V shared memory. The most common use of this is the
XSHM extension in X, which many graphics-intensive programs will automatically take
advantage of for extra speed. If you use X, you will definitely want to include this.
options SYSVSEM #SYSV-style semaphores
Support for System V semaphores. Less commonly used but only adds a few hundred bytes
to the kernel.
options SYSVMSG #SYSV-style message queues
Support for System V messages. Again, only adds a few hundred bytes to the kernel.
Note: The ipcs(1) command will
list any processes using each of these System V facilities.
options P1003_1B #Posix P1003_1B real-time extensions
Real-time extensions added in the 1993 POSIX®.
Certain applications in the ports collection use these (such as StarOffice™).
Note: In FreeBSD 5.X, all of this functionality is now provided by the _KPOSIX_PRIORITY_SCHEDULING option, and P1003_1B is no longer required.
options ICMP_BANDLIM #Rate limit bad replies
This option enables ICMP error response bandwidth limiting. You typically want this
option as it will help protect the machine from denial of service packet attacks.
Note: In FreeBSD 5.X, this feature is enabled by default and the ICMP_BANDLIM option is not required.
# To make an SMP kernel, the next two are needed
#options SMP # Symmetric MultiProcessor Kernel
#options APIC_IO # Symmetric (APIC) I/O
The above are both required for SMP support.
All PCs supported by FreeBSD have one of these. Do not remove, even if you have no ISA
slots. If you have an IBM PS/2 (Micro Channel Architecture), FreeBSD provides some
limited support at this time. For more information about the MCA support, see /usr/src/sys/i386/conf/LINT.
Include this if you have an EISA motherboard. This enables auto-detection and
configuration support for all devices on the EISA bus.
Include this if you have a PCI motherboard. This enables auto-detection of PCI cards
and gatewaying from the PCI to ISA bus.
Include this if you have an AGP card in the system. This will enable support for AGP,
and AGP GART for boards which have these features.
# Floppy drives
device fdc0 at isa? port IO_FD1 irq 6 drq 2
device fd0 at fdc0 drive 0
device fd1 at fdc0 drive 1
This is the floppy drive controller. fd0 is the A: floppy drive, and fd1 is the B: drive.
This driver supports all ATA and ATAPI devices. You only need one device ata line for the kernel to detect all PCI ATA/ATAPI devices
on modern machines.
device atadisk # ATA disk drives
This is needed along with device ata for ATA disk
device atapicd # ATAPI CDROM drives
This is needed along with device ata for ATAPI CDROM
device atapifd # ATAPI floppy drives
This is needed along with device ata for ATAPI floppy
device atapist # ATAPI tape drives
This is needed along with device ata for ATAPI tape
options ATA_STATIC_ID #Static device numbering
This makes the controller number static (like the old driver) or else the device
numbers are dynamically allocated.
# ATA and ATAPI devices
device ata0 at isa? port IO_WD1 irq 14
device ata1 at isa? port IO_WD2 irq 15
Use the above for older, non-PCI systems.
# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
device amd # AMD 53C974 (Teckram DC-390(T))
device dpt # DPT Smartcache - See LINT for options!
device isp # Qlogic family
device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets)
device adv0 at isa?
device bt0 at isa?
device aha0 at isa?
device aic0 at isa?
SCSI controllers. Comment out any you do not have in your system. If you have an IDE
only system, you can remove these altogether.
# SCSI peripherals
device scbus # SCSI bus (required)
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI
SCSI peripherals. Again, comment out any you do not have, or if you have only IDE
hardware, you can remove them completely.
Note: The USB umass(4) driver (and a
few other drivers) use the SCSI subsystem even though they are not real SCSI devices.
Therefore make sure not to remove SCSI support, if any such drivers are included in the
# RAID controllers
device ida # Compaq Smart RAID
device amr # AMI MegaRAID
device mlx # Mylex DAC960 family
Supported RAID controllers. If you do not have any of these, you can comment them out
or remove them.
# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc0 at isa? port IO_KBD
The keyboard controller (atkbdc) provides I/O services for
the AT keyboard and PS/2 style pointing devices. This controller is required by the
keyboard driver (atkbd) and the PS/2 pointing device driver
device atkbd0 at atkbdc? irq 1
The atkbd driver, together with atkbdc controller, provides access to the AT 84 keyboard or the AT
enhanced keyboard which is connected to the AT keyboard controller.
device psm0 at atkbdc? irq 12
Use this device if your mouse plugs into the PS/2 mouse port.
device vga0 at isa?
The video card driver.
# splash screen/screen saver
Splash screen at start up! Screen savers require this too. Use the line pseudo-device splash with FreeBSD 4.X.
# syscons is the default console driver, resembling an SCO console
device sc0 at isa?
sc0 is the default console driver, which resembles a SCO
console. Since most full-screen programs access the console through a terminal database
library like termcap, it should not matter whether you use this
or vt0, the VT220 compatible
console driver. When you log in, set your TERM variable to scoansi if full-screen programs have trouble running under this
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device vt0 at isa?
#options XSERVER # support for X server on a vt console
#options FAT_CURSOR # start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options PCVT_SCANSET=2 # IBM keyboards are non-std
This is a VT220-compatible console driver, backward compatible to VT100/102. It works
well on some laptops which have hardware incompatibilities with sc0. Also set your TERM variable to vt100 or vt220 when you log in. This
driver might also prove useful when connecting to a large number of different machines
over the network, where termcap or terminfo entries for the sc0 device are
often not available -- vt100 should be available on virtually
# Power management support (see LINT for more options)
device apm0 at nexus? disable flags 0x20 # Advanced Power Management
Advanced Power Management support. Useful for laptops.
# PCCARD (PCMCIA) support
device pcic0 at isa? irq 10 port 0x3e0 iomem 0xd0000
device pcic1 at isa? irq 11 port 0x3e2 iomem 0xd4000 disable
PCMCIA support. You want this if you are using a laptop.
# Serial (COM) ports
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
device sio1 at isa? port IO_COM2 irq 3
device sio2 at isa? disable port IO_COM3 irq 5
device sio3 at isa? disable port IO_COM4 irq 9
These are the four serial ports referred to as COM1 through COM4 in the MS-DOS/Windows® world.
Note: If you have an internal modem on COM4 and a serial port at COM2, you will
have to change the IRQ of the modem to 2 (for obscure technical reasons, IRQ2 = IRQ 9) in
order to access it from FreeBSD. If you have a multiport serial card, check the manual
page for sio(4) for more
information on the proper values for these lines. Some video cards (notably those based
on S3 chips) use IO addresses in the form of 0x*2e8, and since
many cheap serial cards do not fully decode the 16-bit IO address space, they clash with
these cards making the COM4 port practically unavailable.
Each serial port is required to have a unique IRQ (unless you are using one of the
multiport cards where shared interrupts are supported), so the default IRQs for COM3 and
COM4 cannot be used.
# Parallel port
device ppc0 at isa? irq 7
This is the ISA-bus parallel port interface.
device ppbus # Parallel port bus (required)
Provides support for the parallel port bus.
device lpt # Printer
Support for parallel port printers.
Note: All three of the above are required to enable parallel printer
device plip # TCP/IP over parallel
This is the driver for the parallel network interface.
device ppi # Parallel port interface device
The general-purpose I/O (``geek port'') + IEEE1284 I/O.
#device vpo # Requires scbus and da
This is for an Iomega Zip drive. It requires scbus and da support. Best performance is achieved with ports in EPP 1.9
# PCI Ethernet NICs.
device de # DEC/Intel DC21x4x (``Tulip'')
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device tx # SMC 9432TX (83c170 ``EPIC'')
device vx # 3Com 3c590, 3c595 (``Vortex'')
device wx # Intel Gigabit Ethernet Card (``Wiseman'')
Various PCI network card drivers. Comment out or remove any of these not present in
# PCI Ethernet NICs that use the common MII bus controller code.
device miibus # MII bus support
MII bus support is required for some PCI 10/100 Ethernet NICs, namely those which use
MII-compliant transceivers or implement transceiver control interfaces that operate like
an MII. Adding device miibus to the kernel config pulls in
support for the generic miibus API and all of the PHY drivers, including a generic one
for PHYs that are not specifically handled by an individual driver.
device dc # DEC/Intel 21143 and various workalikes
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (``Starfire'')
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device ste # Sundance ST201 (D-Link DFE-550TX)
device tl # Texas Instruments ThunderLAN
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
Drivers that use the MII bus controller code.
# ISA Ethernet NICs.
device ed0 at isa? port 0x280 irq 10 iomem 0xd8000
# WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really
# exists only as a PCMCIA device, so there is no ISA attachment needed
# and resources will always be dynamically assigned by the pccard code.
# Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will
# work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP
# mode (the factory default). If you set the switches on your ISA
# card for a manually chosen I/O address and IRQ, you must specify
# those parameters here.
# The probe order of these is presently determined by i386/isa/isa_compat.c.
device ie0 at isa? port 0x300 irq 10 iomem 0xd0000
device fe0 at isa? port 0x300
device le0 at isa? port 0x300 irq 5 iomem 0xd0000
device lnc0 at isa? port 0x280 irq 10 drq 0
device cs0 at isa? port 0x300
device sn0 at isa? port 0x300 irq 10
# requires PCCARD (PCMCIA) support to be activated
#device xe0 at isa?
ISA Ethernet drivers. See /usr/src/sys/i386/conf/LINT for
which cards are supported by which driver.
device ether # Ethernet support
ether is only needed if you have an Ethernet card. It
includes generic Ethernet protocol code. Under FreeBSD 4.X use the line pseudo-device ether.
device sl 1 # Kernel SLIP
sl is for SLIP support. This has been almost entirely
supplanted by PPP, which is easier to set up, better suited for modem-to-modem
connection, and more powerful. The number after sl specifies how many simultaneous SLIP sessions to support. With
FreeBSD 4.X use the line pseudo-device sl.
device ppp 1 # Kernel PPP
This is for kernel PPP support for dial-up connections. There is also a version of PPP
implemented as a userland application that uses tun and offers
more flexibility and features such as demand dialing. The number after ppp specifies how many
simultaneous PPP connections to support. With FreeBSD 4.X use the line pseudo-device ppp.
device tun # Packet tunnel.
This is used by the userland PPP software. A number
after tun specifies the number of simultaneous PPP sessions to
support. See the PPP section of this book for more
information. With FreeBSD 4.X use the line pseudo-device
device pty # Pseudo-ttys (telnet etc)
This is a ``pseudo-terminal'' or simulated login port. It is used by incoming telnet and rlogin sessions, xterm, and some other applications such as Emacs. Under FreeBSD 4.X, you have to use the line pseudo-device pty number. The number after pty indicates the
number of ptys to create. If you need more than the default of
16 simultaneous xterm windows and/or remote logins, be sure to
increase this number accordingly, up to a maximum of 256.
device md # Memory ``disks''
Memory disk pseudo-devices. With FreeBSD 4.X use the line pseudo-device md.
device gif # IPv6 and IPv4 tunneling
This implements IPv6 over IPv4 tunneling, IPv4 over IPv6 tunneling, IPv4 over IPv4
tunneling, and IPv6 over IPv6 tunneling. Beginning with FreeBSD 4.4 the gif device is ``auto-cloning'', and you should use the line pseudo-device gif. Earlier versions of FreeBSD 4.X require a
number, for example pseudo-device gif 4.
device faith # IPv6-to-IPv4 relaying (translation)
This pseudo-device captures packets that are sent to it and diverts them to the
IPv4/IPv6 translation daemon. With FreeBSD 4.X use the line pseudo-device faith 1.
# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
device bpf # Berkeley packet filter
This is the Berkeley Packet Filter. This pseudo-device allows network interfaces to be
placed in promiscuous mode, capturing every packet on a broadcast network (e.g., an
Ethernet). These packets can be captured to disk and or examined with the tcpdump(1) program.
With FreeBSD 4.X use the line pseudo-device bpf.
Note: The bpf(4) device is also
used by dhclient(8) to obtain
the IP address of the default router (gateway) and so on. If you use DHCP, leave this
# USB support
#device uhci # UHCI PCI->USB interface
#device ohci # OHCI PCI->USB interface
#device usb # USB Bus (required)
#device ugen # Generic
#device uhid # ``Human Interface Devices''
#device ukbd # Keyboard
#device ulpt # Printer
#device umass # Disks/Mass storage - Requires scbus and da
#device ums # Mouse
# USB Ethernet, requires mii
#device aue # ADMtek USB ethernet
#device cue # CATC USB ethernet
#device kue # Kawasaki LSI USB ethernet
Support for various USB devices.
For more information and additional devices supported by FreeBSD, see /usr/src/sys/i386/conf/LINT.
Large memory configuration machines require access to more than the 4 gigabyte limit
on User+Kernel Virtual Address (KVA) space. Due to
this limitation, Intel added support for 36-bit physical address space access in the
Pentium Pro and later line of CPUs.
The Physical Address Extension (PAE) capability of
the Intel® Pentium Pro
and later CPUs allows memory configurations of up to 64 gigabytes. FreeBSD provides
support for this capability via the PAE kernel configuration
option, available in the 4.X series of FreeBSD beginning with 4.9-RELEASE and in the 5.X
series of FreeBSD beginning with 5.1-RELEASE. Due to the limitations of the Intel memory
architecture, no distinction is made for memory above or below 4 gigabytes. Memory
allocated above 4 gigabytes is simply added to the pool of available memory.
To enable PAE support in the kernel, simply add the
following line to your kernel configuration file:
Note: The PAE support in FreeBSD is only
available for Intel IA-32 processors. It should also be
noted, that the PAE support in FreeBSD has not
received wide testing, and should be considered beta quality compared to other stable
features of FreeBSD.
PAE support in FreeBSD has a few limitations:
A process is not able to access more than 4 gigabytes of VM space.
KLD modules cannot be loaded into a PAE enabled kernel, due to the differences in the build
framework of a module and the kernel.
Device drivers that do not use the bus_dma(9) interface
will cause data corruption in a PAE enabled kernel and
are not recommended for use. For this reason, the PAE kernel
configuration file is provided in FreeBSD 5.X, which excludes all drivers not known to
work in a PAE enabled kernel.
Some system tunables determine memory resource usage by the amount of available
physical memory. Such tunables can unnecessarily over-allocate due to the large memory
nature of a PAE system. One such example is the kern.maxvnodes sysctl, which controls the maximum number of vnodes
allowed in the kernel. It is advised to adjust this and other such tunables to a
It might be necessary to increase the kernel virtual address (KVA) space or to reduce the amount of specific kernel resource
that is heavily used (see above) in order to avoid KVA
exhaustion. The KVA_PAGES kernel option can be used for
increasing the KVA space.
For performance and stability concerns, it is advised to consult the tuning(7) manual page.
The pae(4) manual page
contains up-to-date information on FreeBSD's PAE