Updated for FreeBSD 6.X by Joel
Dahl.
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, in the order they are listed in GENERIC. For an exhaustive list of architecture dependent options
and devices, see the NOTES file in the same directory as the
GENERIC file. For architecture independent options, see /usr/src/sys/conf/NOTES.
Note: To build a file which contains all available options, as normally done
for testing purposes, run the following command as root:
# cd /usr/src/sys/i386/conf && make LINT
The following is an example of the 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.
machine i386
This is the machine architecture. It must be either alpha,
amd64, i386, ia64, pc98, powerpc, or sparc64.
cpu I486_CPU
cpu I586_CPU
cpu I686_CPU
The above option specifies the type of CPU you have in your system. You may have
multiple instances of the CPU line (if, for example, you are not sure whether you should
use I586_CPU or I686_CPU), but 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 messages.
ident GENERIC
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 (e.g., you want to build an experimental kernel).
#To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.
The
device.hints(5)
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
/boot.
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
The normal build process of FreeBSD includes debugging information when building the
kernel with the the -g
option, which enables debugging
information when passed to gcc(1).
options SCHED_4BSD # 4BSD scheduler
The traditional and default system scheduler for FreeBSD. Keep this.
options PREEMPTION # Enable kernel thread preemption
Allows threads that are in the kernel to be preempted by higher priority threads. It
helps with interactivity and allows interrupt threads to run sooner rather than
waiting.
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
This is the basic hard drive file system. Leave it in if you boot from the hard
disk.
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 file systems) or newfs(8) (for new file
systems) commands.
options UFS_ACL # Support for access control lists
This option 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 Section 14.12. 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
firewall.
options MD_ROOT # MD is a potential root device
This option enables support for a memory backed virtual disk used as a root
device.
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFS_ROOT # NFS usable as /, requires NFSCLIENT
The network file system. Unless you plan to mount partitions from a UNIX® file server over TCP/IP, you can comment these
out.
options MSDOSFS # MSDOS Filesystem
The MS-DOS® file system. 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 emulators/mtools software 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
The ISO 9660 file system 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 file system.
options PROCFS # Process filesystem (requires PSEUDOFS)
The process file system. This is a “pretend” file system mounted on /proc which allows programs like ps(1) to give you more
information on what processes are running. Use of PROCFS is not
required under most circumstances, as most debugging and monitoring tools have been
adapted to run without PROCFS: installs will not mount this file
system by default.
options PSEUDOFS # Pseudo-filesystem framework
6.X kernels making use of PROCFS must also include support
for PSEUDOFS.
options GEOM_GPT # GUID Partition Tables.
This option brings the ability to have a large number of partitions on a single
disk.
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 COMPAT_FREEBSD5 # Compatible with FreeBSD5
This option is required on FreeBSD 6.X and above to support applications compiled
on FreeBSD 5.X versions that use FreeBSD 5.X system call interfaces.
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
This causes the kernel to pause for 5 seconds before probing each SCSI device in your
system. If you only have IDE hard drives, you can ignore this, otherwise you can try to
lower this number, to speed up booting. Of course, if you do this and FreeBSD has trouble
recognizing your SCSI devices, you will have to raise it again.
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 SYSVMSG # SYSV-style message queues
Support for System V messages. This option only adds a few hundred bytes to the
kernel.
options SYSVSEM # SYSV-style semaphores
Support for System V semaphores. Less commonly used but only adds a few hundred
bytes to the kernel.
Note: The -p
option of the ipcs(1) command will
list any processes using each of these System V facilities.
options _KPOSIX_PRIORITY_SCHEDULING # 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™).
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
This option is required to allow the creation of keyboard device nodes in /dev.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
Giant is the name of a mutual exclusion mechanism (a sleep mutex) that protects a
large set of kernel resources. Today, this is an unacceptable performance bottleneck
which is actively being replaced with locks that protect individual resources. The ADAPTIVE_GIANT option causes Giant to be included in the set of
mutexes adaptively spun on. That is, when a thread wants to lock the Giant mutex, but it
is already locked by a thread on another CPU, the first thread will keep running and wait
for the lock to be released. Normally, the thread would instead go back to sleep and wait
for its next chance to run. If you are not sure, leave this in.
Note: Note that on FreeBSD 8.0-CURRENT and later versions, all mutexes are
adaptive by default, unless explicitly set to non-adaptive by compiling with the NO_ADAPTIVE_MUTEXES option. As a result, Giant is adaptive by
default now, and the ADAPTIVE_GIANT option has been removed from
the kernel configuration.
device apic # I/O APIC
The apic device enables the use of the I/O APIC for interrupt delivery. The apic
device can be used in both UP and SMP kernels, but is required for SMP kernels. Add options SMP to include support for multiple processors.
Note: The apic device exists only on the i386 architecture, this configuration
line should not be used on other architectures.
device eisa
Include this if you have an EISA motherboard. This enables auto-detection and
configuration support for all devices on the EISA bus.
device pci
Include this if you have a PCI motherboard. This enables auto-detection of PCI cards
and gatewaying from the PCI to ISA bus.
# Floppy drives
device fdc
This is the floppy drive controller.
# ATA and ATAPI devices
device ata
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 drives.
device ataraid # ATA RAID drives
This is needed along with device ata for ATA RAID drives.
device atapicd # ATAPI CDROM drives
This is needed along with device ata for ATAPI CDROM
drives.
device atapifd # ATAPI floppy drives
This is needed along with device ata for ATAPI floppy
drives.
device atapist # ATAPI tape drives
This is needed along with device ata for ATAPI tape
drives.
options ATA_STATIC_ID # Static device numbering
This makes the controller number static; without this, the device numbers are
dynamically allocated.
# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters
device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters
device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50
SCSI controllers. Comment out any you do not have in your system. If you have an IDE
only system, you can remove these altogether. The *_REG_PRETTY_PRINT lines are debugging options for their respective
drivers.
# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)
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
kernel configuration.
# RAID controllers interfaced to the SCSI subsystem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device rr232x # Highpoint RocketRAID 232x
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID
# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 family
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAID
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 atkbdc # AT keyboard controller
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 (psm).
device atkbd # AT keyboard
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 psm # PS/2 mouse
Use this device if your mouse plugs into the PS/2 mouse port.
device kbdmux # keyboard multiplexer
Basic support for keyboard multiplexing. If you do not plan to use more than one
keyboard on the system, you can safely remove that line.
device vga # VGA video card driver
The video card driver.
device splash # Splash screen and screen saver support
Splash screen at start up! Screen savers require this too.
# syscons is the default console driver, resembling an SCO console
device sc
sc is the default console driver and 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 vt, the VT220 compatible console driver.
When you log in, set your TERM variable to scoansi if full-screen programs have trouble running under this
console.
# Enable this for the pcvt (VT220 compatible) console driver
#device vt
#options XSERVER # support for X server on a vt console
#options FAT_CURSOR # start with block cursor
This is a VT220-compatible console driver, backward compatible to VT100/102. It works
well on some laptops which have hardware incompatibilities with sc. 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 sc device are often not available -- vt100 should be available on virtually any platform.
device agp
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.
# Power management support (see NOTES for more options)
#device apm
Advanced Power Management support. Useful for laptops, although this is disabled in
GENERIC by default.
# Add suspend/resume support for the i8254.
device pmtimer
Timer device driver for power management events, such as APM and ACPI.
# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) bus
PCMCIA support. You want this if you are using a laptop.
# Serial (COM) ports
device sio # 8250, 16[45]50 based serial ports
These are the serial ports referred to as COM ports 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 to add to your /boot/device.hints. 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 ppc
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
support.
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
mode.
#device puc
Uncomment this device if you have a “dumb” serial or parallel PCI card
that is supported by the puc(4) glue
driver.
# PCI Ethernet NICs.
device de # DEC/Intel DC21x4x (“Tulip”)
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
device ixgb # Intel PRO/10GbE Ethernet Card
device txp # 3Com 3cR990 (“Typhoon”)
device vx # 3Com 3c590, 3c595 (“Vortex”)
Various PCI network card drivers. Comment out or remove any of these not present in
your system.
# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
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 bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit Ethernet
device dc # DEC/Intel 21143 and various workalikes
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device lge # Level 1 LXT1001 gigabit ethernet
device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
device nge # NatSemi DP83820 gigabit ethernet
device nve # nVidia nForce MCP on-board Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (“Starfire”)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device stge # Sundance/Tamarack TC9021 gigabit Ethernet
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 “EPIC”)
device vge # VIA VT612x gigabit ethernet
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. pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device ex # Intel EtherExpress Pro/10 and Pro/10+
device ep # Etherlink III based cards
device fe # Fujitsu MB8696x based cards
device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device lnc # NE2100, NE32-VL Lance Ethernet cards
device sn # SMC's 9000 series of Ethernet chips
device xe # Xircom pccard Ethernet
# ISA devices that use the old ISA shims
#device le
ISA Ethernet drivers. See /usr/src/sys/i386/conf/NOTES for details of which cards are
supported by which driver.
# Wireless NIC cards
device wlan # 802.11 support
Generic 802.11 support. This line is required for wireless networking.
device wlan_wep # 802.11 WEP support
device wlan_ccmp # 802.11 CCMP support
device wlan_tkip # 802.11 TKIP support
Crypto support for 802.11 devices. These lines are needed if you intend to use
encryption and 802.11i security protocols.
device an # Aironet 4500/4800 802.11 wireless NICs.
device ath # Atheros pci/cardbus NIC's
device ath_hal # Atheros HAL (Hardware Access Layer)
device ath_rate_sample # SampleRate tx rate control for ath
device awi # BayStack 660 and others
device ral # Ralink Technology RT2500 wireless NICs.
device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device wl # Older non 802.11 Wavelan wireless NIC.
Support for various wireless cards.
# Pseudo devices
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.
device random # Entropy device
Cryptographically secure random number generator.
device ether # Ethernet support
ether is only needed if you have an Ethernet card. It
includes generic Ethernet protocol code.
device sl # 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.
device ppp # 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.
device tun # Packet tunnel.
This is used by the userland PPP software. See the PPP
section of this book for more information.
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.
device md # Memory “disks”
Memory disk pseudo-devices.
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. The gif device is
“auto-cloning”, and will create device nodes as needed.
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.
# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
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.
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
uncommented.
# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
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
device ural # Ralink Technology RT2500USB wireless NICs
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
# USB Ethernet, requires mii
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB Ethernet
Support for various USB devices.
# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)
Support for various Firewire devices.
For more information and additional devices supported by FreeBSD, see /usr/src/sys/i386/conf/NOTES.
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 all current release versions of FreeBSD. 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:
options PAE
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, a PAE kernel
configuration file is provided in FreeBSD 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
reasonable value.
-
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
support.