Index: head/en_US.ISO8859-1/books/handbook/bsdinstall/chapter.xml
===================================================================
--- head/en_US.ISO8859-1/books/handbook/bsdinstall/chapter.xml (revision 52158)
+++ head/en_US.ISO8859-1/books/handbook/bsdinstall/chapter.xml (revision 52159)
@@ -1,2790 +1,2794 @@
Installing &os;JimMockRestructured, reorganized, and parts rewritten
by GavinAtkinsonUpdated for bsdinstall by WarrenBlockAllanJudeUpdated for root-on-ZFS by SynopsisinstallationThere are several different ways of getting &os; to run,
depending on the environment. Those are:
- Virtual Machine images, to download and
- import on a virtual environment of choice.
- These can be downloaded from the
- Download FreeBSD
- page. There are images for KVM (qcow2),
- VMWare (vmdk), Hyper-V (vhd),
- and raw device images that are universally supported.
- These are not installation images, but rather the
- preconfigured (already installed) instances,
- ready to run and perform post-installation tasks.
+ Virtual Machine images, to download and import on a
+ virtual environment of choice. These can be downloaded from
+ the Download
+ FreeBSD page. There are images for KVM
+ (qcow2), VMWare (vmdk),
+ Hyper-V (vhd), and raw device images that are
+ universally supported. These are not installation images,
+ but rather the preconfigured (already
+ installed) instances, ready to run and perform
+ post-installation tasks.
- Virtual Machine images available at Amazon's
- AWS Marketplace,
- Microsoft Azure Marketplace,
- and Google Cloud Platform,
- to run on their respective hosting services.
- For more information on deploying &os;
- on Azure please consult the relevant chapter in the
- Azure Documentation.
+ Virtual Machine images available at Amazon's AWS
+ Marketplace, Microsoft
+ Azure Marketplace, and Google
+ Cloud Platform, to run on their respective hosting
+ services. For more information on deploying &os; on Azure
+ please consult the relevant chapter in the Azure
+ Documentation.
- SD card images, for embedded systems such
- as Raspberry Pi or BeagleBone Black. These can be
- downloaded from the
- Download FreeBSD
- page. These files must be uncompressed and written
- as a raw image to an SD card, from which the board will
- then boot.
+ SD card images, for embedded systems such as Raspberry
+ Pi or BeagleBone Black. These can be downloaded from the
+ Download
+ FreeBSD page. These files must be uncompressed and
+ written as a raw image to an SD card, from which the board
+ will then boot.Installation images, to install &os; on
a hard drive for the usual desktop, laptop, or server
systems.The rest of this chapter describes the fourth case,
explaining how to install &os; using the text-based
installation program named
bsdinstall.In general, the installation instructions in this chapter
are written for the &i386; and AMD64
architectures. Where applicable, instructions specific to other
platforms will be listed. There may be minor differences
between the installer and what is shown here, so use this
chapter as a general guide rather than as a set of literal
instructions.Users who prefer to install &os; using a graphical
installer may be interested in
pc-sysinstall, the installer used
by the TrueOS Project. It can be used to install either a
graphical desktop (TrueOS) or a command line version of &os;.
Refer to the TrueOS Users Handbook for details (https://www.trueos.org/handbook/trueos.html).After reading this chapter, you will know:The minimum hardware requirements and &os; supported
architectures.How to create the &os; installation media.How to start
bsdinstall.The questions bsdinstall will
ask, what they mean, and how to answer them.How to troubleshoot a failed installation.How to access a live version of &os; before committing
to an installation.Before reading this chapter, you should:Read the supported hardware list that shipped with the
version of &os; to be installed and verify that the system's
hardware is supported.Minimum Hardware RequirementsThe hardware requirements to install &os; vary by
architecture. Hardware architectures and devices supported by a
&os; release are listed on the &os; Release
Information page. The &os; download page
also has recommendations for choosing the correct image for
different architectures.A &os; installation requires a minimum of 96 MB of
RAM and 1.5 GB of free hard drive space.
However, such small amounts of memory and disk space are really
only suitable for custom applications like embedded appliances.
General-purpose desktop systems need more resources.
2-4 GB RAM and at least 8 GB hard drive space is a
good starting point.These are the processor requirements for each
architecture:&arch.amd64;This is the most common desktop and laptop processor
type, used in most modern systems. &intel; calls it
Intel64. Other manufacturers sometimes
call it x86-64.Examples of &arch.amd64; compatible processors
include: &amd.athlon;64, &amd.opteron;,
multi-core &intel; &xeon;, and
&intel; &core; 2 and later processors.&arch.i386;Older desktops and laptops often use this 32-bit, x86
architecture.Almost all i386-compatible processors with a floating
point unit are supported. All &intel; processors 486 or
higher are supported.&os; will take advantage of Physical Address
Extensions (PAE) support on
CPUs with this feature. A kernel with
the PAE feature enabled will detect
memory above 4 GB and allow it to be used by the
system. However, using PAE places
constraints on device drivers and other features of &os;.
Refer to &man.pae.4; for details.ia64Currently supported processors are the &itanium; and
the &itanium; 2. Supported chipsets include the HP zx1,
&intel; 460GX, and &intel; E8870. Both Uniprocessor
(UP) and Symmetric Multi-processor
(SMP) configurations are
supported.pc98NEC PC-9801/9821 series with almost all
i386-compatible processors, including 80486, &pentium;,
&pentium; Pro, and &pentium; II, are all supported. All
i386-compatible processors by AMD, Cyrix, IBM, and IDT are
also supported. EPSON PC-386/486/586 series, which are
compatible with NEC PC-9801 series, are supported. The
NEC FC-9801/9821 and NEC SV-98 series should be
supported.High-resolution mode is not supported. NEC
PC-98XA/XL/RL/XL^2, and NEC PC-H98 series are supported in
normal (PC-9801 compatible) mode only. The
SMP-related features of &os; are not
supported. The New Extend Standard Architecture
(NESA) bus used in the PC-H98, SV-H98,
and FC-H98 series, is not supported.&arch.powerpc;All New World ROM &apple;
&mac; systems with built-in USB
are supported. SMP is supported on
machines with multiple CPUs.A 32-bit kernel can only use the first 2 GB of
RAM.&arch.sparc64;Systems supported by &os;/&arch.sparc64; are listed at
the FreeBSD/sparc64
Project.SMP is supported on all systems
with more than 1 processor. A dedicated disk is required
as it is not possible to share a disk with another
operating system at this time.Pre-Installation TasksOnce it has been determined that the system meets the
minimum hardware requirements for installing &os;, the
installation file should be downloaded and the installation
media prepared. Before doing this, check that the system is
ready for an installation by verifying the items in this
checklist:Back Up Important DataBefore installing any operating system,
always backup all important data first.
Do not store the backup on the system being installed.
Instead, save the data to a removable disk such as a
USB drive, another system on the network,
or an online backup service. Test the backup before
starting the installation to make sure it contains all of
the needed files. Once the installer formats the system's
disk, all data stored on that disk will be lost.Decide Where to Install &os;If &os; will be the only operating system installed,
this step can be skipped. But if &os; will share the disk
with another operating system, decide which disk or
partition will be used for &os;.In the &arch.i386; and &arch.amd64; architectures, disks
can be divided into multiple partitions using one of two
partitioning schemes. A traditional Master Boot
Record (MBR) holds a
partition table defining up to four primary
partitions. For historical reasons, &os;
calls these primary partition
slices. One of these primary
partitions can be made into an extended
partition containing multiple
logical partitions. The
GUID Partition Table
(GPT) is a newer and simpler method of
partitioning a disk. Common GPT
implementations allow up to 128 partitions per disk,
eliminating the need for logical partitions.Some older operating systems, like &windows; XP,
are not compatible with the GPT
partition scheme. If &os; will be sharing a disk with
such an operating system, MBR
partitioning is required.The &os; boot loader requires either a primary or
GPT partition. If all of the primary or
GPT partitions are already in use, one
must be freed for &os;. To create a partition without
deleting existing data, use a partition resizing tool to
shrink an existing partition and create a new partition
using the freed space.A variety of free and commercial partition resizing
tools are listed at http://en.wikipedia.org/wiki/List_of_disk_partitioning_software.
GParted Live (http://gparted.sourceforge.net/livecd.php)
is a free live CD which includes the
GParted partition editor.
GParted is also included with
many other Linux live CD
distributions.When used properly, disk shrinking utilities can
safely create space for creating a new partition. Since
the possibility of selecting the wrong partition exists,
always backup any important data and verify the integrity
of the backup before modifying disk partitions.Disk partitions containing different operating systems
make it possible to install multiple operating systems on
one computer. An alternative is to use virtualization
() which allows multiple
operating systems to run at the same time without modifying
any disk partitions.Collect Network InformationSome &os; installation methods require a network
connection in order to download the installation files.
After any installation, the installer will offer to setup
the system's network interfaces.If the network has a DHCP server, it
can be used to provide automatic network configuration. If
DHCP is not available, the following
network information for the system must be obtained from the
local network administrator or Internet service
provider:Required Network InformationIP addressSubnet maskIP address of default
gatewayDomain name of the networkIP addresses of the network's
DNS serversCheck for &os; ErrataAlthough the &os; Project strives to ensure that
each release of &os; is as stable as possible, bugs
occasionally creep into the process. On very rare occasions
those bugs affect the installation process. As these
problems are discovered and fixed, they are noted in the
&os; Errata (https://www.freebsd.org/releases/&rel.current;R/errata.html)
on the &os; web site. Check the errata before installing to
make sure that there are no problems that might affect the
installation.Information and errata for all the releases can be found
on the release information section of the &os; web site
(https://www.freebsd.org/releases/index.html).Prepare the Installation MediaThe &os; installer is not an application that can be run
from within another operating system. Instead, download a
&os; installation file, burn it to the media associated with
its file type and size (CD,
DVD, or USB), and boot
the system to install from the inserted media.&os; installation files are available at www.freebsd.org/where.html#download.
Each installation file's name includes the release version of
&os;, the architecture, and the type of file. For example, to
install &os; 10.2 on an &arch.amd64; system from a
DVD, download
FreeBSD-10.2-RELEASE-amd64-dvd1.iso, burn
this file to a DVD, and boot the system
with the DVD inserted.Installation files are available in several formats.
The formats vary depending on computer architecture and media
type.Additional
installation files are included for computers that boot with
UEFI (Unified Extensible Firmware
Interface). The names of these files include the string
uefi.File types:-bootonly.iso: This is the smallest
installation file as it only contains the installer. A
working Internet connection is required during
installation as the installer will download the files it
needs to complete the &os; installation. This file should
be burned to a CD using a
CD burning application.-disc1.iso: This file contains all
of the files needed to install &os;, its source, and the
Ports Collection. It should be burned to a
CD using a CD
burning application.-dvd1.iso: This file contains all
of the files needed to install &os;, its source, and the
Ports Collection. It also contains a set of popular
binary packages for installing a window manager and some
applications so that a complete system can be installed
from media without requiring a connection to the Internet.
This file should be burned to a DVD
using a DVD burning application.-memstick.img: This file contains
all of the files needed to install &os;, its source, and
the Ports Collection. It should be burned to a
USB stick using the instructions
below.
-
+
-mini-memstick.img: Like
-bootonly.iso, does not include
installation files, but downloads them as needed. A
working internet connection is required during
installation. Write this file to a USB
stick as shown in .After downloading the image file, download
CHECKSUM.SHA256 from
the same directory. Calculate a
checksum for the image file.
&os; provides &man.sha256.1; for this, used as sha256
imagefilename.
Other operating systems have similar programs.Compare the calculated checksum with the one shown in
CHECKSUM.SHA256. The checksums must
match exactly. If the checksums do not match, the image file
is corrupt and must be downloaded again.Writing an Image File to USBThe *.img file is an
image of the complete contents of a
memory stick. It cannot be copied to
the target device as a file. Several applications are
available for writing the *.img to a
USB stick. This section describes two of
these utilities.Before proceeding, back up any important data on the
USB stick. This procedure will erase
the existing data on the stick.Using dd to Write the
ImageThis example uses /dev/da0 as
the target device where the image will be written. Be
very careful that the correct
device is used as this command will destroy the existing
data on the specified target device.The &man.dd.1; command-line utility is
available on BSD, &linux;, and &macos; systems. To burn
the image using dd, insert the
USB stick and determine its device
name. Then, specify the name of the downloaded
installation file and the device name for the
USB stick. This example burns the
&arch.amd64; installation image to the first
USB device on an existing &os;
system.&prompt.root; dd if=FreeBSD-10.2-RELEASE-amd64-memstick.img of=/dev/da0 bs=1M conv=syncIf this command fails, verify that the
USB stick is not mounted and that the
device name is for the disk, not a partition. Some
operating systems might require this command to be run
with &man.sudo.8;. Systems like &linux; might buffer
writes. To force all writes to complete, use
&man.sync.8;.Using &windows; to Write the ImageBe sure to give the correct drive letter as the
existing data on the specified drive will be overwritten
and destroyed.Obtaining Image Writer for
&windows;Image Writer for
&windows; is a free application that can
correctly write an image file to a memory stick.
Download it from https://sourceforge.net/projects/win32diskimager/
and extract it into a folder.Writing the Image with Image WriterDouble-click the
Win32DiskImager icon to start
the program. Verify that the drive letter shown under
Device is the drive
with the memory stick. Click the folder icon and select
the image to be written to the memory stick. Click
[ Save ] to accept the
image file name. Verify that everything is correct, and
that no folders on the memory stick are open in other
windows. When everything is ready, click
[ Write ] to write the
image file to the memory stick.You are now ready to start installing &os;.Starting the InstallationBy default, the installation will not make any changes to
the disk(s) before the following message:Your changes will now be written to disk. If you
have chosen to overwrite existing data, it will
be PERMANENTLY ERASED. Are you sure you want to
commit your changes?The install can be exited at any time prior to this
warning. If
there is a concern that something is incorrectly configured,
just turn the computer off before this point and no changes
will be made to the system's disks.This section describes how to boot the system from the
installation media which was prepared using the instructions in
. When using a
bootable USB stick, plug in the USB stick
before turning on the computer. When booting from
CD or DVD, turn on the
computer and insert the media at the first opportunity. How to
configure the system to boot from the inserted media depends
upon the architecture.Booting on &i386; and &arch.amd64;These architectures provide a BIOS
menu for selecting the boot device. Depending upon the
installation media being used, select the
CD/DVD or
USB device as the first boot device. Most
systems also provide a key for selecting the boot device
during startup without having to enter the
BIOS. Typically, the key is either
F10, F11,
F12, or Escape.If the computer loads the existing operating system
instead of the &os; installer, then either:The installation media was not inserted early enough
in the boot process. Leave the media inserted and try
restarting the computer.The BIOS changes were incorrect or
not saved. Double-check that the right boot device is
selected as the first boot device.This system is too old to support booting from the
chosen media. In this case, the Plop Boot
Manager ()
can be used to boot the system from the selected
media.Booting on &powerpc;On most machines, holding C on the
keyboard during boot will boot from the CD.
Otherwise, hold CommandOptionOF, or
WindowsAltOF on non-&apple; keyboards. At the
0 > prompt, enterboot cd:,\ppc\loader cd:0Booting on &sparc64;Most &sparc64; systems are set up to boot automatically
from disk. To install &os; from a CD
requires a break into the PROM.To do this, reboot the system and wait until the boot
message appears. The message depends on the model, but should
look something like this:Sun Blade 100 (UltraSPARC-IIe), Keyboard Present
Copyright 1998-2001 Sun Microsystems, Inc. All rights reserved.
OpenBoot 4.2, 128 MB memory installed, Serial #51090132.
Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.If the system proceeds to boot from disk at this point,
press L1A
or StopA
on the keyboard, or send a BREAK over the
serial console. When using tip or
cu, ~# will
issue a BREAK. The PROM prompt will be
ok on systems with one
CPU and ok {0} on
SMP systems, where the digit indicates the
number of the active CPU.At this point, place the CD into the
drive and type boot cdrom from the
PROM prompt.&os; Boot MenuOnce the system boots from the installation media, a menu
similar to the following will be displayed:&os; Boot Loader MenuBy default, the menu will wait ten seconds for user input
before booting into the &os; installer or, if &os; is already
installed, before booting into &os;. To pause the boot timer
in order to review the selections, press
Space. To select an option, press its
highlighted number, character, or key. The following options
are available.Boot Multi User: This will
continue the &os; boot process. If the boot timer has
been paused, press 1, upper- or
lower-case B, or
Enter.Boot Single User: This mode can be
used to fix an existing &os; installation as described in
. Press
2 or the upper- or lower-case
S to enter this mode.Escape to loader prompt: This will
boot the system into a repair prompt that contains a
limited number of low-level commands. This prompt is
described in . Press
3 or Esc to boot into
this prompt.Reboot: Reboots the system.Configure Boot Options: Opens the
menu shown in, and described under, .&os; Boot Options MenuThe boot options menu is divided into two sections. The
first section can be used to either return to the main boot
menu or to reset any toggled options back to their
defaults.The next section is used to toggle the available options
to On or Off by pressing
the option's highlighted number or character. The system will
always boot using the settings for these options until they
are modified. Several options can be toggled using this
menu:ACPI Support: If the system hangs
during boot, try toggling this option to
Off.Safe Mode: If the system still
hangs during boot even with ACPI
Support set to Off, try
setting this option to On.Single User: Toggle this option to
On to fix an existing &os; installation
as described in . Once
the problem is fixed, set it back to
Off.Verbose: Toggle this option to
On to see more detailed messages during
the boot process. This can be useful when troubleshooting
a piece of hardware.After making the needed selections, press
1 or Backspace to return to
the main boot menu, then press Enter to
continue booting into &os;. A series of boot messages will
appear as &os; carries out its hardware device probes and
loads the installation program. Once the boot is complete,
the welcome menu shown in will be displayed.Welcome MenuPress Enter to select the default of
[ Install ] to enter the
installer. The rest of this chapter describes how to use this
installer. Otherwise, use the right or left arrows or the
colorized letter to select the desired menu item. The
[ Shell ] can be used to
access a &os; shell in order to use command line utilities to
prepare the disks before installation. The
[ Live CD ] option can be
used to try out &os; before installing it. The live version
is described in .To review the boot messages, including the hardware
device probe, press the upper- or lower-case
S and then Enter to access
a shell. At the shell prompt, type more
/var/run/dmesg.boot and use the space bar to
scroll through the messages. When finished, type
exit to return to the welcome
menu.Using bsdinstallThis section shows the order of the
bsdinstall menus and the type of
information that will be asked before the system is installed.
Use the arrow keys to highlight a menu option, then
Space to select or deselect that menu item.
When finished, press Enter to save the
selection and move onto the next screen.Selecting the Keymap MenuDepending on the system console being used,
bsdinstall may initially display
the menu shown in .Keymap SelectionTo configure the keyboard layout, press
Enter with
[ YES ] selected, which will
display the menu shown in . To instead use the
default layout, use the arrow key to select
[ NO ] and press
Enter to skip this menu screen.Selecting Keyboard MenuWhen configuring the keyboard layout, use the up and down
arrows to select the keymap that most closely represents the
mapping of the keyboard attached to the system. Press
Enter to save the selection.Pressing Esc will exit this menu and
use the default keymap. If the choice of keymap is not
clear, United States of America
ISO-8859-1 is also a safe option.In &os; 10.0-RELEASE and later, this menu has been
enhanced. The full selection of keymaps is shown, with the
default preselected. In addition, when selecting a different
keymap, a dialog is displayed that allows the user to try the
keymap and ensure it is correct before proceeding.Enhanced Keymap MenuSetting the HostnameThe next bsdinstall menu is
used to set the hostname for the newly installed
system.Setting the HostnameType in a hostname that is unique for the network. It
should be a fully-qualified hostname, such as machine3.example.com.Selecting Components to InstallNext, bsdinstall will prompt to
select optional components to install.Selecting Components to InstallDeciding which components to install will depend largely
on the intended use of the system and the amount of disk space
available. The &os; kernel and userland, collectively known
as the base system, are always
installed. Depending on the architecture, some of these
components may not appear:doc - Additional documentation,
mostly of historical interest, to install into
/usr/share/doc. The documentation
provided by the FreeBSD Documentation Project may be
installed later using the instructions in .games - Several traditional
BSD games, including
fortune,
rot13, and others.lib32 - Compatibility libraries for
running 32-bit applications on a 64-bit version of
&os;.ports - The &os; Ports Collection
is a collection of files which automates the downloading,
compiling and installation of third-party software
packages. discusses how to use
the Ports Collection.The installation program does not check for
adequate disk space. Select this option only if
sufficient hard disk space is available. The &os; Ports
Collection takes up about &ports.size; of disk
space.src - The complete &os; source code
for both the kernel and the userland. Although not
required for the majority of applications, it may be
required to build device drivers, kernel modules, or some
applications from the Ports Collection. It is also used
for developing &os; itself. The full source tree requires
1 GB of disk space and recompiling the entire &os;
system requires an additional 5 GB of space.Installing from the NetworkThe menu shown in only appears when
installing from a -bootonly.iso
CD as this installation media does not hold
copies of the installation files. Since the installation
files must be retrieved over a network connection, this menu
indicates that the network interface must be first
configured.Installing from the NetworkTo configure the network connection, press
Enter and follow the instructions in . Once the
interface is configured, select a mirror site that is
located in the same region of the world as the computer on
which &os; is being installed. Files can be retrieved more
quickly when the mirror is close to the target computer,
reducing installation time.Choosing a MirrorInstallation will then continue as if the installation
files were located on the local installation media.Allocating Disk SpaceThe next menu is used to determine the method for
allocating disk space. The options available in the menu
depend upon the version of &os; being installed.Partitioning Choices on &os; 9.xPartitioning Choices on &os; 10.x and HigherGuided partitioning automatically sets up
the disk partitions, Manual partitioning
allows advanced users to create customized partitions from menu
options, and Shell opens a shell prompt where
advanced users can create customized partitions using
command-line utilities like &man.gpart.8;, &man.fdisk.8;, and
&man.bsdlabel.8;. ZFS partitioning, only
available in &os; 10 and later, creates an optionally encrypted
root-on-ZFS system with support for boot
environments.This section describes what to consider when laying out the
disk partitions. It then demonstrates how to use the different
partitioning methods.Designing the Partition Layoutpartition layout/etc/var/usrWhen laying out file systems, remember that hard drives
transfer data faster from the outer tracks to the inner.
Thus, smaller and heavier-accessed file systems should be
closer to the outside of the drive, while larger partitions
like /usr should be placed toward the
inner parts of the disk. It is a good idea to create
partitions in an order similar to: /,
swap, /var, and
/usr.The size of the /var partition
reflects the intended machine's usage. This partition is
used to hold mailboxes, log files, and printer spools.
Mailboxes and log files can grow to unexpected sizes
depending on the number of users and how long log files are
kept. On average, most users rarely need more than about a
gigabyte of free disk space in
/var.Sometimes, a lot of disk space is required in
/var/tmp. When new software is
installed, the packaging tools extract a temporary copy of
the packages under /var/tmp. Large
software packages, like Firefox,
Apache OpenOffice or
LibreOffice may be tricky to
install if there is not enough disk space under
/var/tmp.The /usr partition holds many of the
files which support the system, including the &os; Ports
- Collection and system source code. At least 2 gigabytes of space is
- recommended for this partition.
+ Collection and system source code. At least 2 gigabytes of
+ space is recommended for this partition.
When selecting partition sizes, keep the space
requirements in mind. Running out of space in one partition
while barely using another can be a hassle.swap sizingswap partitionAs a rule of thumb, the swap partition should be about
double the size of physical memory (RAM).
Systems with minimal RAM may perform
better with more swap. Configuring too little swap can lead
to inefficiencies in the VM page scanning
code and might create issues later if more memory is
added.On larger systems with multiple SCSI
disks or multiple IDE disks operating on
different controllers, it is recommended that swap be
configured on each drive, up to four drives. The swap
partitions should be approximately the same size. The
kernel can handle arbitrary sizes but internal data structures
scale to 4 times the largest swap partition. Keeping the swap
partitions near the same size will allow the kernel to
optimally stripe swap space across disks. Large swap sizes
are fine, even if swap is not used much. It might be easier
to recover from a runaway program before being forced to
reboot.By properly partitioning a system, fragmentation
introduced in the smaller write heavy partitions will not
bleed over into the mostly read partitions. Keeping the
write loaded partitions closer to the disk's edge will
increase I/O performance in the
partitions where it occurs the most. While
I/O performance in the larger partitions
may be needed, shifting them more toward the edge of the disk
will not lead to a significant performance improvement over
moving /var to the edge.Guided PartitioningWhen this method is selected, a menu will display the
available disk(s). If multiple disks are connected, choose
the one where &os; is to be installed.Selecting from Multiple DisksOnce the disk is selected, the next menu prompts to
install to either the entire disk or to create a partition
using free space. If
[ Entire Disk ] is
chosen, a general partition layout filling the whole disk is
automatically created. Selecting
[ Partition ] creates a
partition layout from the unused space on the disk.Selecting Entire Disk or PartitionAfter the partition layout has been created, review it to
ensure it meets the needs of the installation. Selecting
[ Revert ] will reset the
partitions to their original values and pressing
[ Auto ] will recreate the
automatic &os; partitions. Partitions can also be manually
created, modified, or deleted. When the partitioning is
correct, select [ Finish ] to
continue with the installation.Review Created PartitionsManual PartitioningSelecting this method opens the partition editor:Manually Create PartitionsHighlight the installation drive
(ada0 in this example) and select
[ Create ] to display a menu
of available partition schemes:Manually Create PartitionsGPT is usually the most appropriate
choice for &arch.amd64; computers. Older computers that are
not compatible with GPT should use
MBR. The other partition schemes are
generally used for uncommon or older computers.
Partitioning SchemesAbbreviationDescriptionAPMApple Partition Map, used by &powerpc;.BSDBSD label without an
MBR, sometimes called
dangerously dedicated mode as
non-BSD disk utilities may not
recognize it.GPTGUID Partition Table (http://en.wikipedia.org/wiki/GUID_Partition_Table).MBRMaster Boot Record (http://en.wikipedia.org/wiki/Master_boot_record).PC98MBR variant used by NEC PC-98
computers (http://en.wikipedia.org/wiki/Pc9801).VTOC8Volume Table Of Contents used by Sun SPARC64 and
UltraSPARC computers.
After the partitioning scheme has been selected and
created, select [ Create ]
again to create the partitions.Manually Create PartitionsA standard &os; GPT installation uses
at least three partitions:freebsd-boot - Holds the &os; boot
code.freebsd-ufs - A &os;
UFS file system.freebsd-swap - &os; swap
space.Another partition type worth noting is
freebsd-zfs, used for partitions that will
contain a &os; ZFS file system (). Refer to &man.gpart.8; for
descriptions of the available GPT partition
types.Multiple file system partitions can be created and some
people prefer a traditional layout with separate partitions
for /, /var,
/tmp, and /usr. See
for an
example.The Size may be entered with common
abbreviations: K for kilobytes,
M for megabytes, or
G for gigabytes.Proper sector alignment provides the best performance,
and making partition sizes even multiples of 4K bytes helps
to ensure alignment on drives with either 512-byte or
4K-byte sectors. Generally, using partition sizes that are
even multiples of 1M or 1G is the easiest way to make sure
every partition starts at an even multiple of 4K. There is
one exception: the freebsd-boot
partition should be no larger than 512K due to current boot
code limitations.A Mountpoint is needed if the partition
will contain a file system. If only a single
UFS partition will be created, the
mountpoint should be /.The Label is a name by which the
partition will be known. Drive names or numbers can change if
the drive is connected to a different controller or port, but
the partition label does not change. Referring to labels
instead of drive names and partition numbers in files like
/etc/fstab makes the system more tolerant
to hardware changes. GPT labels appear in
/dev/gpt/ when a disk is attached. Other
partitioning schemes have different label capabilities and
their labels appear in different directories in
/dev/.Use a unique label on every partition to avoid
conflicts from identical labels. A few letters from the
computer's name, use, or location can be added to the label.
For instance, use labroot or
rootfslab for the UFS
root partition on the computer named
lab.Creating Traditional Split File System
PartitionsFor a traditional partition layout where the
/, /var,
/tmp, and /usr
directories are separate file systems on their own
partitions, create a GPT partitioning
scheme, then create the partitions as shown. Partition
sizes shown are typical for a 20G target disk. If more
space is available on the target disk, larger swap or
/var partitions may be useful. Labels
shown here are prefixed with ex for
example, but readers should use other unique
label values as described above.By default, &os;'s gptboot expects
the first UFS partition to be the
/ partition.Partition TypeSizeMountpointLabelfreebsd-boot512Kfreebsd-ufs2G/exrootfsfreebsd-swap4Gexswapfreebsd-ufs2G/varexvarfsfreebsd-ufs1G/tmpextmpfsfreebsd-ufsaccept the default (remainder of the
disk)/usrexusrfsAfter the custom partitions have been created, select
[ Finish ] to continue with
the installation.Root-on-ZFS Automatic PartitioningSupport for automatic creation of root-on-ZFS
installations was added in &os; 10.0-RELEASE. This
partitioning mode only works with whole disks and will erase
the contents of the entire disk. The installer will
automatically create partitions aligned to 4k boundaries and
force ZFS to use 4k sectors. This is safe
even with 512 byte sector disks, and has the added benefit of
ensuring that pools created on 512 byte disks will be able to
have 4k sector disks added in the future, either as additional
storage space or as replacements for failed disks. The
installer can also optionally employ GELI
disk encryption as described in .
If encryption is enabled, a 2 GB unencrypted boot pool
containing the /boot directory is
created. It holds the kernel and other files necessary to
boot the system. A swap partition of a user selectable size
is also created, and all remaining space is used for the
ZFS pool.The main ZFS configuration menu offers
a number of options to control the creation of the
pool.ZFS Partitioning MenuSelect T to configure the Pool
Type and the disk(s) that will constitute the
pool. The automatic ZFS installer
currently only supports the creation of a single top level
vdev, except in stripe mode. To create more complex pools,
use the instructions in to create the pool. The
installer supports the creation of various pool types,
including stripe (not recommended, no redundancy), mirror
(best performance, least usable space), and RAID-Z 1, 2, and 3
(with the capability to withstand the concurrent failure of 1,
2, and 3 disks, respectively). While selecting the pool type,
a tooltip is displayed across the bottom of the screen with
advice about the number of required disks, and in the case of
RAID-Z, the optimal number of disks for each
configuration.ZFS Pool TypeOnce a Pool Type has been selected, a
list of available disks is displayed, and the user is prompted
to select one or more disks to make up the pool. The
configuration is then validated, to ensure enough disks are
selected. If not, select <Change
Selection> to return to the list of disks, or
<Cancel> to change the pool
type.Disk SelectionInvalid SelectionIf one or more disks are missing from the list, or if
disks were attached after the installer was started, select
- Rescan Devices to repopulate the list
of available disks.
To avoid accidentally erasing the wrong disk, the
- Disk Info menu can be used to inspect
each disk, including its partition table and various other
information such as the device model number and serial number,
if available.Analyzing a DiskThe main ZFS configuration menu also
allows the user to enter a pool name, disable forcing 4k
sectors, enable or disable encryption, switch between
GPT (recommended) and
MBR partition table types, and select the
amount of swap space. Once all options have been set to the
desired values, select the
>>> Install option at the
top of the menu.If GELI disk encryption was enabled,
the installer will prompt twice for the passphrase to be used
to encrypt the disks.Disk Encryption PasswordThe installer then offers a last chance to cancel before
the contents of the selected drives are destroyed to create
the ZFS pool.Last ChanceThe installation then proceeds normally.Shell Mode PartitioningWhen creating advanced installations, the
bsdinstall partitioning menus may
not provide the level of flexibility required. Advanced users
can select the Shell option from the
partitioning menu in order to manually partition the drives,
create the file system(s), populate
/tmp/bsdinstall_etc/fstab, and mount the
file systems under /mnt. Once this is
done, type exit to return to
bsdinstall and continue the
installation.Committing to the InstallationOnce the disks are configured, the next menu provides the
last chance to make changes before the selected hard drive(s)
are formatted. If changes need to be made, select
[ Back ] to return to the main
partitioning menu.
[ Revert & Exit ]
will exit the installer without making any changes to the hard
drive.Final ConfirmationTo instead start the actual installation, select
[ Commit ] and press
Enter.Installation time will vary depending on the distributions
chosen, installation media, and speed of the computer. A series
of messages will indicate the progress.First, the installer formats the selected disk(s) and
initializes the partitions. Next, in the case of a bootonly
media, it downloads the selected components:Fetching Distribution FilesNext, the integrity of the distribution files is verified
to ensure they have not been corrupted during download or
misread from the installation media:Verifying Distribution FilesFinally, the verified distribution files are extracted to
the disk:Extracting Distribution FilesOnce all requested distribution files have been extracted,
bsdinstall displays the first
post-installation configuration screen. The available
post-configuration options are described in the next
section.Post-InstallationOnce &os; is installed,
bsdinstall will prompt to configure
several options before booting into the newly installed system.
This section describes these configuration options.Once the system has booted,
bsdconfig provides a menu-driven method for
configuring the system using these and additional
options.Setting the
root
PasswordFirst, the root
password must be set. While entering the password, the
characters being typed are not displayed on the screen. After
the password has been entered, it must be entered again. This
helps prevent typing errors.Setting the root PasswordConfiguring Network InterfacesNext, a list of the network interfaces found on the
computer is shown. Select the interface to configure.The network configuration menus will be skipped if the
network was previously configured as part of a
bootonly installation.Choose a Network InterfaceIf an Ethernet interface is selected, the installer will
skip ahead to the menu shown in . If a wireless
network interface is chosen, the system will instead scan for
wireless access points:Scanning for Wireless Access PointsWireless networks are identified by a Service Set
Identifier (SSID), a short, unique name
given to each network. SSIDs found during
the scan are listed, followed by a description of the
encryption types available for that network. If the desired
SSID does not appear in the list, select
[ Rescan ] to scan again. If
the desired network still does not appear, check for problems
with antenna connections or try moving the computer closer to
the access point. Rescan after each change is made.Choosing a Wireless NetworkNext, enter the encryption information for connecting to
the selected wireless network. WPA2
encryption is strongly recommended as older encryption types,
like WEP, offer little security. If the
network uses WPA2, input the password, also
known as the Pre-Shared Key (PSK). For
security reasons, the characters typed into the input box are
displayed as asterisks.WPA2 SetupNext, choose whether or not an IPv4
address should be configured on the Ethernet or wireless
interface:Choose IPv4 NetworkingThere are two methods of IPv4
configuration. DHCP will automatically
configure the network interface correctly and should be used
if the network provides a DHCP server.
Otherwise, the addressing information needs to be input
manually as a static configuration.Do not enter random network information as it will not
work. If a DHCP server is not available,
obtain the information listed in from
the network administrator or Internet service
provider.If a DHCP server is available, select
[ Yes ] in the next menu to
automatically configure the network interface. The installer
will appear to pause for a minute or so as it finds the
DHCP server and obtains the addressing
information for the system.Choose IPv4 DHCP
ConfigurationIf a DHCP server is not available,
select [ No ] and input the
following addressing information in this menu:IPv4 Static ConfigurationIP Address - The
IPv4 address assigned to this computer.
The address must be unique and not already in use by
another piece of equipment on the local network.Subnet Mask - The subnet mask for
the network.Default Router - The
IP address of the network's default
gateway.The next screen will ask if the interface should be
configured for IPv6. If
IPv6 is available and desired, choose
[ Yes ] to select it.Choose IPv6 NetworkingIPv6 also has two methods of
configuration. StateLess Address AutoConfiguration
(SLAAC) will automatically request the
correct configuration information from a local router. Refer
to http://tools.ietf.org/html/rfc4862
for more information. Static configuration requires manual
entry of network information.If an IPv6 router is available, select
[ Yes ] in the next menu to
automatically configure the network interface. The installer
will appear to pause for a minute or so as it finds the router
and obtains the addressing information for the system.Choose IPv6 SLAAC ConfigurationIf an IPv6 router is not available,
select [ No ] and input the
following addressing information in this menu:IPv6 Static ConfigurationIPv6 Address - The
IPv6 address assigned to this computer.
The address must be unique and not already in use by
another piece of equipment on the local network.Default Router - The
IPv6 address of the network's default
gateway.The last network configuration menu is used to configure
the Domain Name System (DNS) resolver,
which converts hostnames to and from network addresses. If
DHCP or SLAAC was used
to autoconfigure the network interface, the Resolver
Configuration values may already be filled in.
Otherwise, enter the local network's domain name in the
Search field. DNS #1
and DNS #2 are the IPv4
and/or IPv6 addresses of the
DNS servers. At least one
DNS server is required.DNS ConfigurationSetting the Time ZoneThe next menu asks if the system clock uses
UTC or local time. When in doubt, select
[ No ] to choose the more
commonly-used local time.Select Local or UTC ClockThe next series of menus are used to determine the correct
local time by selecting the geographic region, country, and
time zone. Setting the time zone allows the system to
automatically correct for regional time changes, such as
daylight savings time, and perform other time zone related
functions properly.The example shown here is for a machine located in the
Eastern time zone of the United States. The selections will
vary according to the geographical location.Select a RegionThe appropriate region is selected using the arrow keys
and then pressing Enter.Select a CountrySelect the appropriate country using the arrow keys and
press Enter.Select a Time ZoneThe appropriate time zone is selected using the arrow keys
and pressing Enter.Confirm Time ZoneConfirm the abbreviation for the time zone is correct. If
it is, press Enter to continue with the
post-installation configuration.Enabling ServicesThe next menu is used to configure which system services
will be started whenever the system boots. All of these
services are optional. Only start the services that are
needed for the system to function.Selecting Additional Services to EnableHere is a summary of the services which can be enabled in
this menu:sshd - The Secure Shell
(SSH) daemon is used to remotely access
a system over an encrypted connection. Only enable this
service if the system should be available for remote
logins.moused - Enable this service if the
mouse will be used from the command-line system
console.ntpd - The Network Time Protocol
(NTP) daemon for automatic clock
synchronization. Enable this service if there is a
&windows;, Kerberos, or LDAP server on
the network.powerd - System power control
utility for power control and energy saving.Enabling Crash DumpsThe next menu is used to configure whether or not crash
dumps should be enabled. Enabling crash dumps can be useful
in debugging issues with the system, so users are encouraged
to enable crash dumps.Enabling Crash DumpsAdd UsersThe next menu prompts to create at least one user account.
It is recommended to login to the system using a user account
rather than as root.
When logged in as root, there are essentially no
limits or protection on what can be done. Logging in as a
normal user is safer and more secure.Select [ Yes ] to add new
users.Add User AccountsFollow the prompts and input the requested information for
the user account. The example shown in creates the asample user account.Enter User InformationHere is a summary of the information to input:Username - The name the user will
enter to log in. A common convention is to use the first
letter of the first name combined with the last name, as
long as each username is unique for the system. The
username is case sensitive and should not contain any
spaces.Full name - The user's full name.
This can contain spaces and is used as a description for
the user account.Uid - User ID.
Typically, this is left blank so the system will assign a
value.Login group - The user's group.
Typically this is left blank to accept the default.Invite user into
other groups? - Additional groups to which the
user will be added as a member. If the user needs
administrative access, type wheel
here.Login class - Typically left blank
for the default.Shell - Type in one of the listed
values to set the interactive shell for the user. Refer
to for more information about
shells.Home directory - The user's home
directory. The default is usually correct.Home directory permissions -
Permissions on the user's home directory. The default is
usually correct.Use password-based authentication?
- Typically yes so that the user is
prompted to input their password at login.Use an empty password? -
Typically no as it is insecure to have
a blank password.Use a random password? - Typically
no so that the user can set their own
password in the next prompt.Enter password - The password for
this user. Characters typed will not show on the
screen.Enter password again - The password
must be typed again for verification.Lock out the account after
creation? - Typically no so
that the user can login.After entering everything, a summary is shown for review.
If a mistake was made, enter no and try
again. If everything is correct, enter yes
to create the new user.Exit User and Group ManagementIf there are more users to add, answer the Add
another user? question with
yes. Enter no to finish
adding users and continue the installation.For more information on adding users and user management,
see .Final ConfigurationAfter everything has been installed and configured, a
final chance is provided to modify settings.Final ConfigurationUse this menu to make any changes or do any additional
configuration before completing the installation.Add User - Described in .Root Password - Described in .Hostname - Described in .Network - Described in .Services - Described in .Time Zone - Described in .Handbook - Download and install the
&os; Handbook.After any final configuration is complete, select
Exit.Manual Configurationbsdinstall will prompt if there
are any additional configuration that needs to be done before
rebooting into the new system. Select
[ Yes ] to exit to a shell
within the new system or
[ No ] to proceed to the last
step of the installation.Complete the InstallationIf further configuration or special setup is needed,
select [ Live CD ] to
boot the install media into Live CD
mode.If the installation is complete, select
[ Reboot ] to reboot the
computer and start the new &os; system. Do not forget to
remove the &os; install media or the computer may boot from it
again.As &os; boots, informational messages are displayed.
After the system finishes booting, a login prompt is
displayed. At the login: prompt, enter the
username added during the installation. Avoid logging in as
root. Refer to
for instructions on how to
become the superuser when administrative access is
needed.The messages that appeared during boot can be reviewed by
pressing Scroll-Lock to turn on the
scroll-back buffer. The PgUp,
PgDn, and arrow keys can be used to scroll
back through the messages. When finished, press
Scroll-Lock again to unlock the display and
return to the console. To review these messages once the
system has been up for some time, type less
/var/run/dmesg.boot from a command prompt. Press
q to return to the command line after
viewing.If sshd was enabled in , the first boot may be
a bit slower as the system will generate the
RSA and DSA keys.
Subsequent boots will be faster. The fingerprints of the keys
will be displayed, as seen in this example:Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@machine3.example.com
The key's randomart image is:
+--[RSA1 1024]----+
| o.. |
| o . . |
| . o |
| o |
| o S |
| + + o |
|o . + * |
|o+ ..+ . |
|==o..o+E |
+-----------------+
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@machine3.example.com
The key's randomart image is:
+--[ DSA 1024]----+
| .. . .|
| o . . + |
| . .. . E .|
| . . o o . . |
| + S = . |
| + . = o |
| + . * . |
| . . o . |
| .o. . |
+-----------------+
Starting sshd.Refer to for more information
about fingerprints and SSH.&os; does not install a graphical environment by default.
Refer to for more information about
installing and configuring a graphical window manager.Proper shutdown of a &os; computer helps protect data and
hardware from damage. Do not turn off the power
before the system has been properly shut down! If
the user is a member of the wheel group, become the
superuser by typing su at the command line
and entering the root password. Then, type
shutdown -p now and the system will shut
down cleanly, and if the hardware supports it, turn itself
off.TroubleshootinginstallationtroubleshootingThis section covers basic installation
troubleshooting, such as common problems people have
reported.Check the Hardware Notes (https://www.freebsd.org/releases/index.html)
document for the version of &os; to make sure the hardware is
supported. If the hardware is supported and lock-ups or other
problems occur, build a custom kernel using the instructions in
to add support for devices which
are not present in the GENERIC kernel. The
default kernel assumes that most hardware devices are in their
factory default configuration in terms of
IRQs, I/O addresses, and
DMA channels. If the hardware has been
reconfigured, a custom kernel configuration file can tell &os;
where to find things.Some installation problems can be avoided or alleviated by
updating the firmware on various hardware components, most
notably the motherboard. Motherboard firmware is usually
referred to as the BIOS. Most motherboard
and computer manufacturers have a website for upgrades and
upgrade information.Manufacturers generally advise against upgrading the
motherboard BIOS unless there is a good
reason for doing so, like a critical update. The upgrade
process can go wrong, leaving the
BIOS incomplete and the computer
inoperative.If the system hangs while probing hardware during boot, or
it behaves strangely during install, ACPI may
be the culprit. &os; makes extensive use of the system
ACPI service on the &arch.i386;,
&arch.amd64;, and ia64 platforms to aid in system configuration
if it is detected during boot. Unfortunately, some bugs still
exist in both the ACPI driver and within
system motherboards and BIOS firmware.
ACPI can be disabled by setting the
hint.acpi.0.disabled hint in the third stage
boot loader:set hint.acpi.0.disabled="1"This is reset each time the system is booted, so it is
necessary to add hint.acpi.0.disabled="1" to
the file /boot/loader.conf. More
information about the boot loader can be found in .Using the Live CDThe welcome menu of bsdinstall,
shown in , provides a
[ Live CD ] option. This
is useful for those who are still wondering whether &os; is the
right operating system for them and want to test some of the
features before installing.The following points should be noted before using the
[ Live CD ]:To gain access to the system, authentication is
required. The username is root and the password is
blank.As the system runs directly from the installation media,
performance will be significantly slower than that of a
system installed on a hard disk.This option only provides a command prompt and not a
graphical interface.
Index: head/en_US.ISO8859-1/books/handbook/config/chapter.xml
===================================================================
--- head/en_US.ISO8859-1/books/handbook/config/chapter.xml (revision 52158)
+++ head/en_US.ISO8859-1/books/handbook/config/chapter.xml (revision 52159)
@@ -1,3524 +1,3524 @@
Configuration and TuningChernLeeWritten by MikeSmithBased on a tutorial written by MattDillonAlso based on tuning(7) written by Synopsissystem configurationsystem optimizationOne of the important aspects of &os; is proper system
configuration. This chapter explains much of the &os;
configuration process, including some of the parameters which
can be set to tune a &os; system.After reading this chapter, you will know:The basics of rc.conf configuration
and /usr/local/etc/rc.d startup
scripts.How to configure and test a network card.How to configure virtual hosts on network
devices.How to use the various configuration files in
/etc.How to tune &os; using &man.sysctl.8; variables.How to tune disk performance and modify kernel
limitations.Before reading this chapter, you should:Understand &unix; and &os; basics
().Be familiar with the basics of kernel configuration and
compilation ().Starting ServicesTomRhodesContributed by servicesMany users install third party software on &os; from the
Ports Collection and require the installed services to be
started upon system initialization. Services, such as
mail/postfix or
www/apache22 are just two of the many
software packages which may be started during system
initialization. This section explains the procedures available
for starting third party software.In &os;, most included services, such as &man.cron.8;, are
started through the system startup scripts.Extended Application ConfigurationNow that &os; includes rc.d,
configuration of application startup is easier and provides
more features. Using the key words discussed in
, applications can be set to
start after certain other services and extra flags can be
passed through /etc/rc.conf in place of
hard coded flags in the startup script. A basic script may
look similar to the following:#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# KEYWORD: shutdown
. /etc/rc.subr
name=utility
rcvar=utility_enable
command="/usr/local/sbin/utility"
load_rc_config $name
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
# SET THEM IN THE /etc/rc.conf FILE
#
utility_enable=${utility_enable-"NO"}
pidfile=${utility_pidfile-"/var/run/utility.pid"}
run_rc_command "$1"This script will ensure that the provided
utility will be started after the
DAEMON pseudo-service. It also provides a
method for setting and tracking the process ID
(PID).This application could then have the following line placed
in /etc/rc.conf:utility_enable="YES"This method allows for easier manipulation of command
line arguments, inclusion of the default functions provided
in /etc/rc.subr, compatibility with
&man.rcorder.8;, and provides for easier configuration via
rc.conf.Using Services to Start ServicesOther services can be started using &man.inetd.8;.
Working with &man.inetd.8; and its configuration is
described in depth in
.In some cases, it may make more sense to use
&man.cron.8; to start system services. This approach
has a number of advantages as &man.cron.8; runs these
processes as the owner of the &man.crontab.5;. This allows
regular users to start and maintain their own
applications.The @reboot feature of &man.cron.8;,
may be used in place of the time specification. This causes
the job to run when &man.cron.8; is started, normally during
system initialization.Configuring &man.cron.8;TomRhodesContributed by cronconfigurationOne of the most useful utilities in &os; is
cron. This utility runs in the
background and regularly checks
/etc/crontab for tasks to execute and
searches /var/cron/tabs for custom crontab
files. These files are used to schedule tasks which
cron runs at the specified times.
Each entry in a crontab defines a task to run and is known as a
cron job.Two different types of configuration files are used: the
system crontab, which should not be modified, and user crontabs,
which can be created and edited as needed. The format used by
these files is documented in &man.crontab.5;. The format of the
system crontab, /etc/crontab includes a
who column which does not exist in user
crontabs. In the system crontab,
cron runs the command as the user
specified in this column. In a user crontab, all commands run
as the user who created the crontab.User crontabs allow individual users to schedule their own
tasks. The root user
can also have a user crontab which can be
used to schedule tasks that do not exist in the system
crontab.Here is a sample entry from the system crontab,
/etc/crontab:# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD$
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
#
#minute hour mday month wday who command
#
*/5 * * * * root /usr/libexec/atrun Lines that begin with the # character
are comments. A comment can be placed in the file as a
reminder of what and why a desired action is performed.
Comments cannot be on the same line as a command or else
they will be interpreted as part of the command; they must
be on a new line. Blank lines are ignored.The equals (=) character is used to
define any environment settings. In this example, it is
used to define the SHELL and
PATH. If the SHELL is
omitted, cron will use the
default Bourne shell. If the PATH is
omitted, the full path must be given to the command or
script to run.This line defines the seven fields used in a system
crontab: minute, hour,
mday, month,
wday, who, and
command. The minute
field is the time in minutes when the specified command will
be run, the hour is the hour when the
specified command will be run, the mday
is the day of the month, month is the
month, and wday is the day of the week.
These fields must be numeric values, representing the
twenty-four hour clock, or a *,
representing all values for that field. The
who field only exists in the system
crontab and specifies which user the command should be run
as. The last field is the command to be executed.This entry defines the values for this cron job. The
*/5, followed by several more
* characters, specifies that
/usr/libexec/atrun is invoked by
root every five
minutes of every hour, of every day and day of the week, of
every month.Commands can include any number of switches. However,
commands which extend to multiple lines need to be broken
with the backslash \ continuation
character.Creating a User CrontabTo create a user crontab, invoke
crontab in editor mode:&prompt.user; crontab -eThis will open the user's crontab using the default text
editor. The first time a user runs this command, it will open
an empty file. Once a user creates a crontab, this command
will open that file for editing.It is useful to add these lines to the top of the crontab
file in order to set the environment variables and to remember
the meanings of the fields in the crontab:SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# Order of crontab fields
# minute hour mday month wday commandThen add a line for each command or script to run,
specifying the time to run the command. This example runs the
specified custom Bourne shell script every day at two in the
afternoon. Since the path to the script is not specified in
PATH, the full path to the script is
given:0 14 * * * /usr/home/dru/bin/mycustomscript.shBefore using a custom script, make sure it is executable
and test it with the limited set of environment variables
set by cron. To replicate the environment that would be
used to run the above cron entry, use:env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/dru LOGNAME=dru/usr/home/dru/bin/mycustomscript.shThe environment set by cron is discussed in
&man.crontab.5;. Checking that scripts operate correctly in
a cron environment is especially important if they include
any commands that delete files using wildcards.When finished editing the crontab, save the file. It
will automatically be installed and
cron will read the crontab and run
its cron jobs at their specified times. To list the cron jobs
in a crontab, use this command:&prompt.user; crontab -l
0 14 * * * /usr/home/dru/bin/mycustomscript.shTo remove all of the cron jobs in a user crontab:&prompt.user; crontab -r
remove crontab for dru? yManaging Services in &os;TomRhodesContributed by &os; uses the &man.rc.8; system of startup scripts during
system initialization and for managing services. The scripts
listed in /etc/rc.d provide basic services
which can be controlled with the ,
, and options to
&man.service.8;. For instance, &man.sshd.8; can be restarted
with the following command:&prompt.root; service sshd restartThis procedure can be used to start services on a running
system. Services will be started automatically at boot time
as specified in &man.rc.conf.5;. For example, to enable
&man.natd.8; at system startup, add the following line to
/etc/rc.conf:natd_enable="YES"If a line is already
present, change the NO to
YES. The &man.rc.8; scripts will
automatically load any dependent services during the next boot,
as described below.Since the &man.rc.8; system is primarily intended to start
and stop services at system startup and shutdown time, the
, and
options will only perform their action
if the appropriate /etc/rc.conf variable
is set. For instance, sshd restart will
only work if sshd_enable is set to
in /etc/rc.conf.
To , or
a service regardless of the settings
in /etc/rc.conf, these commands should be
prefixed with one. For instance, to restart
&man.sshd.8; regardless of the current
/etc/rc.conf setting, execute the following
command:&prompt.root; service sshd onerestartTo check if a service is enabled in
/etc/rc.conf, run the appropriate
&man.rc.8; script with . This example
checks to see if &man.sshd.8; is enabled in
/etc/rc.conf:&prompt.root; service sshd rcvar
# sshd
#
sshd_enable="YES"
# (default: "")The # sshd line is output from the
above command, not a
root console.To determine whether or not a service is running, use
. For instance, to verify that
&man.sshd.8; is running:&prompt.root; service sshd status
sshd is running as pid 433.In some cases, it is also possible to
a service. This attempts to send a
signal to an individual service, forcing the service to reload
its configuration files. In most cases, this means sending
the service a SIGHUP signal. Support for
this feature is not included for every service.The &man.rc.8; system is used for network services and it
also contributes to most of the system initialization. For
instance, when the
/etc/rc.d/bgfsck script is executed, it
prints out the following message:Starting background file system checks in 60 seconds.This script is used for background file system checks,
which occur only during system initialization.Many system services depend on other services to function
properly. For example, &man.yp.8; and other
RPC-based services may fail to start until
after the &man.rpcbind.8; service has started. To resolve this
issue, information about dependencies and other meta-data is
included in the comments at the top of each startup script.
The &man.rcorder.8; program is used to parse these comments
during system initialization to determine the order in which
system services should be invoked to satisfy the
dependencies.The following key word must be included in all startup
scripts as it is required by &man.rc.subr.8; to
enable the startup script:PROVIDE: Specifies the services this
file provides.The following key words may be included at the top of each
startup script. They are not strictly necessary, but are
useful as hints to &man.rcorder.8;:REQUIRE: Lists services which are
required for this service. The script containing this key
word will run after the specified
services.BEFORE: Lists services which depend
on this service. The script containing this key word will
run before the specified
services.By carefully setting these keywords for each startup script,
an administrator has a fine-grained level of control of the
startup order of the scripts, without the need for
runlevels used by some &unix; operating
systems.Additional information can be found in &man.rc.8; and
&man.rc.subr.8;. Refer to this article
for instructions on how to create custom &man.rc.8;
scripts.Managing System-Specific Configurationrc filesrc.confThe principal location for system configuration
information is /etc/rc.conf. This file
contains a wide range of configuration information and it is
read at system startup to configure the system. It provides
the configuration information for the
rc* files.The entries in /etc/rc.conf override
the default settings in
/etc/defaults/rc.conf. The file
containing the default settings should not be edited.
Instead, all system-specific changes should be made to
/etc/rc.conf.A number of strategies may be applied in clustered
applications to separate site-wide configuration from
system-specific configuration in order to reduce
administration overhead. The recommended approach is to place
system-specific configuration into
/etc/rc.conf.local. For example, these
entries in /etc/rc.conf apply to all
systems:sshd_enable="YES"
keyrate="fast"
defaultrouter="10.1.1.254"Whereas these entries in
/etc/rc.conf.local apply to this system
only:hostname="node1.example.org"
ifconfig_fxp0="inet 10.1.1.1/8"Distribute /etc/rc.conf to every
system using an application such as
rsync or
puppet, while
/etc/rc.conf.local remains
unique.Upgrading the system will not overwrite
/etc/rc.conf, so system configuration
information will not be lost.Both /etc/rc.conf and
/etc/rc.conf.local
are parsed by &man.sh.1;. This allows system operators to
create complex configuration scenarios. Refer to
&man.rc.conf.5; for further information on this
topic.Setting Up Network Interface CardsMarcFonvieilleContributed by network cardsconfigurationAdding and configuring a network interface card
(NIC) is a common task for any &os;
administrator.Locating the Correct Drivernetwork cardsdriverFirst, determine the model of the NIC
and the chip it uses. &os; supports a wide variety of
NICs. Check the Hardware Compatibility
List for the &os; release to see if the NIC
is supported.If the NIC is supported, determine
the name of the &os; driver for the NIC.
Refer to /usr/src/sys/conf/NOTES and
/usr/src/sys/arch/conf/NOTES
for the list of NIC drivers with some
information about the supported chipsets. When in doubt, read
the manual page of the driver as it will provide more
information about the supported hardware and any known
limitations of the driver.The drivers for common NICs are already
present in the GENERIC kernel, meaning
the NIC should be probed during boot. The
system's boot messages can be viewed by typing
more /var/run/dmesg.boot and using the
spacebar to scroll through the text. In this example, two
Ethernet NICs using the &man.dc.4; driver
are present on the system:dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 at device 11.0 on pci0
miibus0: <MII bus> on dc0
bmtphy0: <BCM5201 10/100baseTX PHY> PHY 1 on miibus0
bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc0: Ethernet address: 00:a0:cc:da:da:da
dc0: [ITHREAD]
dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 at device 12.0 on pci0
miibus1: <MII bus> on dc1
bmtphy1: <BCM5201 10/100baseTX PHY> PHY 1 on miibus1
bmtphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc1: Ethernet address: 00:a0:cc:da:da:db
dc1: [ITHREAD]If the driver for the NIC is not
present in GENERIC, but a driver is
available, the driver will need to be loaded before the
NIC can be configured and used. This may
be accomplished in one of two ways:The easiest way is to load a kernel module for the
NIC using &man.kldload.8;. To also
automatically load the driver at boot time, add the
appropriate line to
/boot/loader.conf. Not all
NIC drivers are available as
modules.Alternatively, statically compile support for the
NIC into a custom kernel. Refer to
/usr/src/sys/conf/NOTES,
/usr/src/sys/arch/conf/NOTES
and the manual page of the driver to determine which line
to add to the custom kernel configuration file. For more
information about recompiling the kernel, refer to . If the NIC
was detected at boot, the kernel does not need to be
recompiled.Using &windows; NDIS DriversNDISNDISulator&windows; driversµsoft.windows;device driversKLD (kernel loadable
object)Unfortunately, there are still many vendors that do not
provide schematics for their drivers to the open source
community because they regard such information as trade
secrets. Consequently, the developers of &os; and other
operating systems are left with two choices: develop the
drivers by a long and pain-staking process of reverse
engineering or using the existing driver binaries available
for µsoft.windows; platforms.&os; provides native support for the
Network Driver Interface Specification
(NDIS). It includes &man.ndisgen.8;
which can be used to convert a &windowsxp; driver into a
format that can be used on &os;. Because the &man.ndis.4;
driver uses a &windowsxp; binary, it only runs on &i386;
and amd64 systems. PCI, CardBus,
PCMCIA, and USB
devices are supported.To use &man.ndisgen.8;, three things are needed:&os; kernel sources.A &windowsxp; driver binary with a
.SYS extension.A &windowsxp; driver configuration file with a
.INF extension.Download the .SYS and
.INF files for the specific
NIC. Generally, these can be found on
the driver CD or at the vendor's website. The following
examples use W32DRIVER.SYS and
W32DRIVER.INF.The driver bit width must match the version of &os;.
For &os;/i386, use a &windows; 32-bit driver. For
&os;/amd64, a &windows; 64-bit driver is needed.The next step is to compile the driver binary into a
loadable kernel module. As
root, use
&man.ndisgen.8;:&prompt.root; ndisgen /path/to/W32DRIVER.INF/path/to/W32DRIVER.SYSThis command is interactive and prompts for any extra
information it requires. A new kernel module will be
generated in the current directory. Use &man.kldload.8;
to load the new module:&prompt.root; kldload ./W32DRIVER_SYS.koIn addition to the generated kernel module, the
ndis.ko and
if_ndis.ko modules must be loaded.
This should happen automatically when any module that
depends on &man.ndis.4; is loaded. If not, load them
manually, using the following commands:&prompt.root; kldload ndis
&prompt.root; kldload if_ndisThe first command loads the &man.ndis.4; miniport driver
wrapper and the second loads the generated
NIC driver.Check &man.dmesg.8; to see if there were any load
errors. If all went well, the output should be similar to
the following:ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
ndis0: NDIS API version: 5.0
ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5
ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54MbpsFrom here, ndis0 can be
configured like any other NIC.To configure the system to load the &man.ndis.4; modules
at boot time, copy the generated module,
W32DRIVER_SYS.ko, to
/boot/modules. Then, add the following
line to /boot/loader.conf:W32DRIVER_SYS_load="YES"Configuring the Network Cardnetwork cardsconfigurationOnce the right driver is loaded for the
NIC, the card needs to be configured. It
may have been configured at installation time by
&man.bsdinstall.8;.To display the NIC configuration,
enter the following command:&prompt.user; ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
ether 00:a0:cc:da:da:da
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
dc1: flags=8802<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
ether 00:a0:cc:da:da:db
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
media: Ethernet 10baseT/UTP
status: no carrier
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
nd6 options=3<PERFORMNUD,ACCEPT_RTADV>In this example, the following devices were
displayed:dc0: The first Ethernet
interface.dc1: The second Ethernet
interface.lo0: The loopback
device.&os; uses the driver name followed by the order in which
the card is detected at boot to name the
NIC. For example,
sis2 is the third
NIC on the system using the &man.sis.4;
driver.In this example, dc0 is up and
running. The key indicators are:UP means that the card is
configured and ready.The card has an Internet (inet)
address, 192.168.1.3.It has a valid subnet mask
(netmask), where
0xffffff00 is the
same as 255.255.255.0.It has a valid broadcast address, 192.168.1.255.The MAC address of the card
(ether) is 00:a0:cc:da:da:da.The physical media selection is on autoselection mode
(media: Ethernet autoselect (100baseTX
<full-duplex>)). In this example,
dc1 is configured to run with
10baseT/UTP media. For more
information on available media types for a driver, refer
to its manual page.The status of the link (status) is
active, indicating that the carrier
signal is detected. For dc1, the
status: no carrier status is normal
when an Ethernet cable is not plugged into the
card.If the &man.ifconfig.8; output had shown something similar
to:dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
ether 00:a0:cc:da:da:da
media: Ethernet autoselect (100baseTX <full-duplex>)
status: activeit would indicate the card has not been configured.The card must be configured as
root. The
NIC configuration can be performed from the
command line with &man.ifconfig.8; but will not persist after
a reboot unless the configuration is also added to
/etc/rc.conf. If a
DHCP server is present on the LAN,
just add this line:ifconfig_dc0="DHCP"
- Replace dc0 with the correct value
- for the system.
+ Replace dc0 with the correct
+ value for the system.The line added, then, follow the instructions given in
.If the network was configured during installation, some
entries for the NIC(s) may be already
present. Double check /etc/rc.conf
before adding any lines.In the case, there is no DHCP server,
the NIC(s) have to be configured manually.
Add a line for each NIC present on the
system, as seen in this example:ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"Replace dc0 and
dc1 and the IP
address information with the correct values for the system.
Refer to the man page for the driver, &man.ifconfig.8;, and
&man.rc.conf.5; for more details about the allowed options and
the syntax of /etc/rc.conf.If the network is not using DNS, edit
/etc/hosts to add the names and
IP addresses of the hosts on the
LAN, if they are not already there. For
more information, refer to &man.hosts.5; and to
/usr/share/examples/etc/hosts.If there is no DHCP server and
access to the Internet is needed, manually configure the
default gateway and the nameserver:&prompt.root; echo 'defaultrouter="your_default_router"' >> /etc/rc.conf
&prompt.root; echo 'nameserver your_DNS_server' >> /etc/resolv.confTesting and TroubleshootingOnce the necessary changes to
/etc/rc.conf are saved, a reboot can be
used to test the network configuration and to verify that the
system restarts without any configuration errors.
Alternatively, apply the settings to the networking system
with this command:&prompt.root; service netif restartIf a default gateway has been set in
/etc/rc.conf, also issue this
command:&prompt.root; service routing restartOnce the networking system has been relaunched, test the
NICs.Testing the Ethernet Cardnetwork cardstestingTo verify that an Ethernet card is configured correctly,
&man.ping.8; the interface itself, and then &man.ping.8;
another machine on the LAN:&prompt.user; ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms
--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms&prompt.user; ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms
--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 msTo test network resolution, use the host name instead
of the IP address. If there is no
DNS server on the network,
/etc/hosts must first be
configured. To this purpose, edit
/etc/hosts to add the names and
IP addresses of the hosts on the
LAN, if they are not already there. For
more information, refer to &man.hosts.5; and to
/usr/share/examples/etc/hosts.Troubleshootingnetwork cardstroubleshootingWhen troubleshooting hardware and software
configurations, check the simple things first. Is the
network cable plugged in? Are the network services properly
configured? Is the firewall configured correctly? Is the
NIC supported by &os;? Before sending
a bug report, always check the Hardware Notes, update the
version of &os; to the latest STABLE version, check the
mailing list archives, and search the Internet.If the card works, yet performance is poor, read
through &man.tuning.7;. Also, check the network
configuration as incorrect network settings can cause slow
connections.Some users experience one or two
device timeout messages, which is
normal for some cards. If they continue, or are bothersome,
determine if the device is conflicting with another device.
Double check the cable connections. Consider trying another
card.To resolve watchdog timeout
errors, first check the network cable. Many cards
require a PCI slot which supports bus
mastering. On some old motherboards, only one
PCI slot allows it, usually slot 0.
Check the NIC and the motherboard
documentation to determine if that may be the
problem.No route to host messages occur
if the system is unable to route a packet to the destination
host. This can happen if no default route is specified or
if a cable is unplugged. Check the output of
netstat -rn and make sure there is a
valid route to the host. If there is not, read
.ping: sendto: Permission denied
error messages are often caused by a misconfigured firewall.
If a firewall is enabled on &os; but no rules have been
defined, the default policy is to deny all traffic, even
&man.ping.8;. Refer to
for more information.Sometimes performance of the card is poor or below
average. In these cases, try setting the media
selection mode from autoselect to the
correct media selection. While this works for most
hardware, it may or may not resolve the issue. Again,
check all the network settings, and refer to
&man.tuning.7;.Virtual Hostsvirtual hostsIP
aliasesA common use of &os; is virtual site hosting, where one
server appears to the network as many servers. This is achieved
by assigning multiple network addresses to a single
interface.A given network interface has one real
address, and may have any number of alias
addresses. These aliases are normally added by placing alias
entries in /etc/rc.conf, as seen in this
example:ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"Alias entries must start with
alias0 using a
sequential number such as
alias0, alias1,
and so on. The configuration process will stop at the first
missing number.The calculation of alias netmasks is important. For a
given interface, there must be one address which correctly
represents the network's netmask. Any other addresses which
fall within this network must have a netmask of all
1s, expressed as either
255.255.255.255 or
0xffffffff.For example, consider the case where the
fxp0 interface is connected to two
networks: 10.1.1.0
with a netmask of
255.255.255.0 and
202.0.75.16 with a
netmask of
255.255.255.240. The
system is to be configured to appear in the ranges
10.1.1.1 through
10.1.1.5 and
202.0.75.17 through
202.0.75.20. Only
the first address in a given network range should have a real
netmask. All the rest
(10.1.1.2 through
10.1.1.5 and
202.0.75.18 through
202.0.75.20) must be
configured with a netmask of
255.255.255.255.The following /etc/rc.conf entries
configure the adapter correctly for this scenario:ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"A simpler way to express this is with a space-separated list
of IP address ranges. The first address
will be given the
indicated subnet mask and the additional addresses will have a
subnet mask of 255.255.255.255.ifconfig_fxp0_aliases="inet 10.1.1.1-5/24 inet 202.0.75.17-20/28"Configuring System LoggingNiclasZeisingContributed by system loggingsyslog&man.syslogd.8;Generating and reading system logs is an important aspect of
system administration. The information in system logs can be
used to detect hardware and software issues as well as
application and system configuration errors. This information
also plays an important role in security auditing and incident
response. Most system daemons and applications will generate
log entries.&os; provides a system logger,
syslogd, to manage logging. By
default, syslogd is started when the
system boots. This is controlled by the variable
syslogd_enable in
/etc/rc.conf. There are numerous
application arguments that can be set using
syslogd_flags in
/etc/rc.conf. Refer to &man.syslogd.8; for
more information on the available arguments.This section describes how to configure the &os; system
logger for both local and remote logging and how to perform log
rotation and log management.Configuring Local Loggingsyslog.confThe configuration file,
/etc/syslog.conf, controls what
syslogd does with log entries as
they are received. There are several parameters to control
the handling of incoming events. The
facility describes which subsystem
generated the message, such as the kernel or a daemon, and the
level describes the severity of the
event that occurred. This makes it possible to configure if
and where a log message is logged, depending on the facility
and level. It is also possible to take action depending on
the application that sent the message, and in the case of
remote logging, the hostname of the machine generating the
logging event.This configuration file contains one line per action,
where the syntax for each line is a selector field followed by
an action field. The syntax of the selector field is
facility.level which will match log
messages from facility at level
level or higher. It is also
possible to add an optional comparison flag before the level
to specify more precisely what is logged. Multiple selector
fields can be used for the same action, and are separated with
a semicolon (;). Using
* will match everything. The action field
denotes where to send the log message, such as to a file or
remote log host. As an example, here is the default
syslog.conf from &os;:# $&os;$
#
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
auth.info;authpriv.info /var/log/auth.log
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
ftp.info /var/log/xferlog
cron.* /var/log/cron
!-devd
*.=debug /var/log/debug.log
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
#*.* /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.* @loghost
# uncomment these if you're running inn
# news.crit /var/log/news/news.crit
# news.err /var/log/news/news.err
# news.notice /var/log/news/news.notice
# Uncomment this if you wish to see messages produced by devd
# !devd
# *.>=info
!ppp
*.* /var/log/ppp.log
!*In this example:Line 8 matches all messages with a level of
err or higher, as well as
kern.warning,
auth.notice and
mail.crit, and sends these log messages
to the console
(/dev/console).Line 12 matches all messages from the
mail facility at level
info or above and logs the messages to
/var/log/maillog.Line 17 uses a comparison flag (=)
to only match messages at level debug
and logs them to
/var/log/debug.log.Line 33 is an example usage of a program
specification. This makes the rules following it only
valid for the specified program. In this case, only the
messages generated by ppp are
logged to /var/log/ppp.log.The available levels, in order from most to least
critical are emerg,
alert, crit,
err, warning,
notice, info, and
debug.The facilities, in no particular order, are
auth, authpriv,
console, cron,
daemon, ftp,
kern, lpr,
mail, mark,
news, security,
syslog, user,
uucp, and local0 through
local7. Be aware that other operating
systems might have different facilities.To log everything of level notice and
higher to /var/log/daemon.log, add the
following entry:daemon.notice /var/log/daemon.logFor more information about the different levels and
facilities, refer to &man.syslog.3; and &man.syslogd.8;.
For more information about
/etc/syslog.conf, its syntax, and more
advanced usage examples, see &man.syslog.conf.5;.Log Management and Rotationnewsyslognewsyslog.conflog rotationlog managementLog files can grow quickly, taking up disk space and
making it more difficult to locate useful information. Log
management attempts to mitigate this. In &os;,
newsyslog is used to manage log
files. This built-in program periodically rotates and
compresses log files, and optionally creates missing log files
and signals programs when log files are moved. The log files
may be generated by syslogd or by
any other program which generates log files. While
newsyslog is normally run from
&man.cron.8;, it is not a system daemon. In the default
configuration, it runs every hour.To know which actions to take,
newsyslog reads its configuration
file, /etc/newsyslog.conf. This file
contains one line for each log file that
newsyslog manages. Each line
states the file owner, permissions, when to rotate that file,
optional flags that affect log rotation, such as compression,
and programs to signal when the log is rotated. Here is the
default configuration in &os;:# configuration file for newsyslog
# $FreeBSD$
#
# Entries which do not specify the '/pid_file' field will cause the
# syslogd process to be signalled when that log file is rotated. This
# action is only appropriate for log files which are written to by the
# syslogd process (ie, files listed in /etc/syslog.conf). If there
# is no process which needs to be signalled when a given log file is
# rotated, then the entry for that file should include the 'N' flag.
#
# The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'.
#
# Note: some sites will want to select more restrictive protections than the
# defaults. In particular, it may be desirable to switch many of the 644
# entries to 640 or 600. For example, some sites will consider the
# contents of maillog, messages, and lpd-errs to be confidential. In the
# future, these defaults may change to more conservative ones.
#
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/all.log 600 7 * @T00 J
/var/log/amd.log 644 7 100 * J
/var/log/auth.log 600 7 100 @0101T JC
/var/log/console.log 600 5 100 * J
/var/log/cron 600 3 100 * JC
/var/log/daily.log 640 7 * @T00 JN
/var/log/debug.log 600 7 100 * JC
/var/log/kerberos.log 600 7 100 * J
/var/log/lpd-errs 644 7 100 * JC
/var/log/maillog 640 7 * @T00 JC
/var/log/messages 644 5 100 @0101T JC
/var/log/monthly.log 640 12 * $M1D0 JN
/var/log/pflog 600 3 100 * JB /var/run/pflogd.pid
/var/log/ppp.log root:network 640 3 100 * JC
/var/log/devd.log 644 3 100 * JC
/var/log/security 600 10 100 * JC
/var/log/sendmail.st 640 10 * 168 B
/var/log/utx.log 644 3 * @01T05 B
/var/log/weekly.log 640 5 1 $W6D0 JN
/var/log/xferlog 600 7 100 * JCEach line starts with the name of the log to be rotated,
optionally followed by an owner and group for both rotated and
newly created files. The mode field sets
the permissions on the log file and count
denotes how many rotated log files should be kept. The
size and when fields
tell newsyslog when to rotate the
file. A log file is rotated when either its size is larger
than the size field or when the time in the
when field has passed. An asterisk
(*) means that this field is ignored. The
flags field gives further
instructions, such as how to compress the rotated file or to
create the log file if it is missing. The last two fields are
optional and specify the name of the Process ID
(PID) file of a process and a signal number
to send to that process when the file is rotated.For more information on all fields, valid flags, and how
to specify the rotation time, refer to &man.newsyslog.conf.5;.
Since newsyslog is run from
&man.cron.8;, it cannot rotate files more often than it is
scheduled to run from &man.cron.8;.Configuring Remote LoggingTomRhodesContributed by Monitoring the log files of multiple hosts can become
unwieldy as the number of systems increases. Configuring
centralized logging can reduce some of the administrative
burden of log file administration.In &os;, centralized log file aggregation, merging, and
rotation can be configured using
syslogd and
newsyslog. This section
demonstrates an example configuration, where host
A, named logserv.example.com, will
collect logging information for the local network. Host
B, named logclient.example.com,
will be configured to pass logging information to the logging
server.Log Server ConfigurationA log server is a system that has been configured to
accept logging information from other hosts. Before
configuring a log server, check the following:If there is a firewall between the logging server
and any logging clients, ensure that the firewall
ruleset allows UDP port 514 for both
the clients and the server.The logging server and all client machines must
have forward and reverse entries in the local
DNS. If the network does not have a
DNS server, create entries in each
system's /etc/hosts. Proper name
resolution is required so that log entries are not
rejected by the logging server.On the log server, edit
/etc/syslog.conf to specify the name of
the client to receive log entries from, the logging facility
to be used, and the name of the log to store the host's log
entries. This example adds the hostname of
B, logs all facilities, and stores
the log entries in
/var/log/logclient.log.Sample Log Server Configuration+logclient.example.com
*.* /var/log/logclient.logWhen adding multiple log clients, add a similar two-line
entry for each client. More information about the available
facilities may be found in &man.syslog.conf.5;.Next, configure
/etc/rc.conf:syslogd_enable="YES"
syslogd_flags="-a logclient.example.com -v -v"The first entry starts
syslogd at system boot. The
second entry allows log entries from the specified client.
The increases the verbosity of logged
messages. This is useful for tweaking facilities as
administrators are able to see what type of messages are
being logged under each facility.Multiple options may be specified to
allow logging from multiple clients. IP
addresses and whole netblocks may also be specified. Refer
to &man.syslogd.8; for a full list of possible
options.Finally, create the log file:&prompt.root; touch /var/log/logclient.logAt this point, syslogd should
be restarted and verified:&prompt.root; service syslogd restart
&prompt.root; pgrep syslogIf a PID is returned, the server
restarted successfully, and client configuration can begin.
If the server did not restart, consult
/var/log/messages for the error.Log Client ConfigurationA logging client sends log entries to a logging server
on the network. The client also keeps a local copy of its
own logs.Once a logging server has been configured, edit
/etc/rc.conf on the logging
client:syslogd_enable="YES"
syslogd_flags="-s -v -v"The first entry enables
syslogd on boot up. The second
entry prevents logs from being accepted by this client from
other hosts () and increases the
verbosity of logged messages.Next, define the logging server in the client's
/etc/syslog.conf. In this example, all
logged facilities are sent to a remote system, denoted by
the @ symbol, with the specified
hostname:*.* @logserv.example.comAfter saving the edit, restart
syslogd for the changes to take
effect:&prompt.root; service syslogd restartTo test that log messages are being sent across the
network, use &man.logger.1; on the client to send a message
to syslogd:&prompt.root; logger "Test message from logclient"This message should now exist both in
/var/log/messages on the client and
/var/log/logclient.log on the log
server.Debugging Log ServersIf no messages are being received on the log server, the
cause is most likely a network connectivity issue, a
hostname resolution issue, or a typo in a configuration
file. To isolate the cause, ensure that both the logging
server and the logging client are able to
ping each other using the hostname
specified in their /etc/rc.conf. If
this fails, check the network cabling, the firewall ruleset,
and the hostname entries in the DNS
server or /etc/hosts on both the
logging server and clients. Repeat until the
ping is successful from both
hosts.If the ping succeeds on both hosts
but log messages are still not being received, temporarily
increase logging verbosity to narrow down the configuration
issue. In the following example,
/var/log/logclient.log on the logging
server is empty and /var/log/messages
on the logging client does not indicate a reason for the
failure. To increase debugging output, edit the
syslogd_flags entry on the logging server
and issue a restart:syslogd_flags="-d -a logclient.example.com -v -v"&prompt.root; service syslogd restartDebugging data similar to the following will flash on
the console immediately after the restart:logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
syslogd: restarted
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
Logging to FILE /var/log/messages
syslogd: kernel boot file is /boot/kernel/kernel
cvthname(192.168.1.10)
validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
rejected in rule 0 due to name mismatch.In this example, the log messages are being rejected due
to a typo which results in a hostname mismatch. The
client's hostname should be logclient,
not logclien. Fix the typo, issue a
restart, and verify the results:&prompt.root; service syslogd restart
logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
syslogd: restarted
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
syslogd: kernel boot file is /boot/kernel/kernel
logmsg: pri 166, flags 17, from logserv.example.com,
msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2
cvthname(192.168.1.10)
validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
accepted in rule 0.
logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2
Logging to FILE /var/log/logclient.log
Logging to FILE /var/log/messagesAt this point, the messages are being properly received
and placed in the correct file.Security ConsiderationsAs with any network service, security requirements
should be considered before implementing a logging server.
Log files may contain sensitive data about services enabled
on the local host, user accounts, and configuration data.
Network data sent from the client to the server will not be
encrypted or password protected. If a need for encryption
exists, consider using security/stunnel,
which will transmit the logging data over an encrypted
tunnel.Local security is also an issue. Log files are not
encrypted during use or after log rotation. Local users may
access log files to gain additional insight into system
configuration. Setting proper permissions on log files is
critical. The built-in log rotator,
newsyslog, supports setting
permissions on newly created and rotated log files. Setting
log files to mode 600 should prevent
unwanted access by local users. Refer to
&man.newsyslog.conf.5; for additional information.Configuration Files/etc
LayoutThere are a number of directories in which configuration
information is kept. These include:/etcGeneric system-specific configuration
information./etc/defaultsDefault versions of system configuration
files./etc/mailExtra &man.sendmail.8; configuration and other
MTA configuration files./etc/pppConfiguration for both user- and kernel-ppp
programs./usr/local/etcConfiguration files for installed applications.
May contain per-application subdirectories./usr/local/etc/rc.d&man.rc.8; scripts for installed
applications./var/dbAutomatically generated system-specific database
files, such as the package database and the
&man.locate.1; database.HostnameshostnameDNS/etc/resolv.confresolv.confHow a &os; system accesses the Internet Domain Name
System (DNS) is controlled by
&man.resolv.conf.5;.The most common entries to
/etc/resolv.conf are:nameserverThe IP address of a name
server the resolver should query. The servers are
queried in the order listed with a maximum of
three.searchSearch list for hostname lookup. This is
normally determined by the domain of the local
hostname.domainThe local domain name.A typical /etc/resolv.conf looks
like this:search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30Only one of the search and
domain options should be used.When using DHCP, &man.dhclient.8;
usually rewrites /etc/resolv.conf
with information received from the DHCP
server./etc/hostshosts/etc/hosts is a simple text
database which works in conjunction with
DNS and
NIS to provide host name to
IP address mappings. Entries for local
computers connected via a LAN can be
added to this file for simplistic naming purposes instead
of setting up a &man.named.8; server. Additionally,
/etc/hosts can be used to provide a
local record of Internet names, reducing the need to query
external DNS servers for commonly
accessed names.# $&os;$
#
#
# Host Database
#
# This file should contain the addresses and aliases for local hosts that
# share this file. Replace 'my.domain' below with the domainname of your
# machine.
#
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
::1 localhost localhost.my.domain
127.0.0.1 localhost localhost.my.domain
#
# Imaginary network.
#10.0.0.2 myname.my.domain myname
#10.0.0.3 myfriend.my.domain myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
# 10.0.0.0 - 10.255.255.255
# 172.16.0.0 - 172.31.255.255
# 192.168.0.0 - 192.168.255.255
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers. Do not try to invent your own network
# numbers but instead get one from your network provider (if any) or
# from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.)
#The format of /etc/hosts is as
follows:[Internet address] [official hostname] [alias1] [alias2] ...For example:10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2Consult &man.hosts.5; for more information.Tuning with &man.sysctl.8;sysctltuningwith sysctl&man.sysctl.8; is used to make changes to a running &os;
system. This includes many advanced options of the
TCP/IP stack and virtual memory system
that can dramatically improve performance for an experienced
system administrator. Over five hundred system variables can
be read and set using &man.sysctl.8;.At its core, &man.sysctl.8; serves two functions: to read
and to modify system settings.To view all readable variables:&prompt.user; sysctl -aTo read a particular variable, specify its name:&prompt.user; sysctl kern.maxproc
kern.maxproc: 1044To set a particular variable, use the
variable=value
syntax:&prompt.root; sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000Settings of sysctl variables are usually either strings,
numbers, or booleans, where a boolean is 1
for yes or 0 for no.To automatically set some variables each time the machine
boots, add them to /etc/sysctl.conf. For
more information, refer to &man.sysctl.conf.5; and
.sysctl.confsysctl.confsysctlThe configuration file for &man.sysctl.8;,
/etc/sysctl.conf, looks much like
/etc/rc.conf. Values are set in a
variable=value form. The specified values
are set after the system goes into multi-user mode. Not all
variables are settable in this mode.For example, to turn off logging of fatal signal exits
and prevent users from seeing processes started by other
users, the following tunables can be set in
/etc/sysctl.conf:# Do not log fatal signal exits (e.g., sig 11)
kern.logsigexit=0
# Prevent users from seeing information about processes that
# are being run under another UID.
security.bsd.see_other_uids=0&man.sysctl.8; Read-onlyTomRhodesContributed by In some cases it may be desirable to modify read-only
&man.sysctl.8; values, which will require a reboot of the
system.For instance, on some laptop models the &man.cardbus.4;
device will not probe memory ranges and will fail with errors
similar to:cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12The fix requires the modification of a read-only
&man.sysctl.8; setting. Add
to
/boot/loader.conf and reboot. Now
&man.cardbus.4; should work properly.Tuning DisksThe following section will discuss various tuning
mechanisms and options which may be applied to disk
devices. In many cases, disks with mechanical parts,
such as SCSI drives, will be the
bottleneck driving down the overall system performance. While
a solution is to install a drive without mechanical parts,
such as a solid state drive, mechanical drives are not
going away anytime in the near future. When tuning disks,
it is advisable to utilize the features of the &man.iostat.8;
command to test various changes to the system. This
command will allow the user to obtain valuable information
on system IO.Sysctl Variablesvfs.vmiodirenablevfs.vmiodirenableThe vfs.vmiodirenable &man.sysctl.8;
variable
may be set to either 0 (off) or
1 (on). It is set to
1 by default. This variable controls
how directories are cached by the system. Most directories
are small, using just a single fragment (typically 1 K)
in the file system and typically 512 bytes in the
buffer cache. With this variable turned off, the buffer
cache will only cache a fixed number of directories, even
if the system has a huge amount of memory. When turned on,
this &man.sysctl.8; allows the buffer cache to use the
VM page cache to cache the directories,
making all the memory available for caching directories.
However, the minimum in-core memory used to cache a
directory is the physical page size (typically 4 K)
rather than 512 bytes. Keeping this option enabled
is recommended if the system is running any services which
manipulate large numbers of files. Such services can
include web caches, large mail systems, and news systems.
Keeping this option on will generally not reduce
performance, even with the wasted memory, but one should
experiment to find out.vfs.write_behindvfs.write_behindThe vfs.write_behind &man.sysctl.8;
variable
defaults to 1 (on). This tells the file
system to issue media writes as full clusters are collected,
which typically occurs when writing large sequential files.
This avoids saturating the buffer cache with dirty buffers
when it would not benefit I/O performance. However, this
may stall processes and under certain circumstances should
be turned off.vfs.hirunningspacevfs.hirunningspaceThe vfs.hirunningspace &man.sysctl.8;
variable determines how much outstanding write I/O may be
queued to disk controllers system-wide at any given
instance. The default is usually sufficient, but on
machines with many disks, try bumping it up to four or five
megabytes. Setting too high a value
which exceeds the buffer cache's write threshold can lead
to bad clustering performance. Do not set this value
arbitrarily high as higher write values may add latency to
reads occurring at the same time.There are various other buffer cache and
VM page cache related &man.sysctl.8;
values. Modifying these values is not recommended as the
VM system does a good job of
automatically tuning itself.vm.swap_idle_enabledvm.swap_idle_enabledThe vm.swap_idle_enabled
&man.sysctl.8; variable is useful in large multi-user
systems with many active login users and lots of idle
processes. Such systems tend to generate continuous
pressure on free memory reserves. Turning this feature on
and tweaking the swapout hysteresis (in idle seconds) via
vm.swap_idle_threshold1 and
vm.swap_idle_threshold2 depresses the
priority of memory pages associated with idle processes more
quickly then the normal pageout algorithm. This gives a
helping hand to the pageout daemon. Only turn this option
on if needed, because the tradeoff is essentially pre-page
memory sooner rather than later which eats more swap and
disk bandwidth. In a small system this option will have a
determinable effect, but in a large system that is already
doing moderate paging, this option allows the
VM system to stage whole processes into
and out of memory easily.hw.ata.wchw.ata.wcTurning off IDE write caching reduces
write bandwidth to IDE disks, but may
sometimes be necessary due to data consistency issues
introduced by hard drive vendors. The problem is that
some IDE drives lie about when a write
completes. With IDE write caching
turned on, IDE hard drives write data
to disk out of order and will sometimes delay writing some
blocks indefinitely when under heavy disk load. A crash or
power failure may cause serious file system corruption.
Check the default on the system by observing the
hw.ata.wc &man.sysctl.8; variable. If
IDE write caching is turned off, one can
set this read-only variable to
1 in
/boot/loader.conf in order to enable
it at boot time.For more information, refer to &man.ata.4;.SCSI_DELAY
(kern.cam.scsi_delay)kern.cam.scsi_delaykernel optionsSCSI DELAYThe SCSI_DELAY kernel configuration
option may be used to reduce system boot times. The
defaults are fairly high and can be responsible for
15 seconds of delay in the boot process.
Reducing it to 5 seconds usually works
with modern drives. The
kern.cam.scsi_delay boot time tunable
should be used. The tunable and kernel configuration
option accept values in terms of
milliseconds and
notseconds.Soft UpdatesSoft Updates&man.tunefs.8;To fine-tune a file system, use &man.tunefs.8;. This
program has many different options. To toggle Soft Updates
on and off, use:&prompt.root; tunefs -n enable /filesystem
&prompt.root; tunefs -n disable /filesystemA file system cannot be modified with &man.tunefs.8; while
it is mounted. A good time to enable Soft Updates is before
any partitions have been mounted, in single-user mode.Soft Updates is recommended for UFS
file systems as it drastically improves meta-data performance,
mainly file creation and deletion, through the use of a memory
cache. There are two downsides to Soft Updates to be aware
of. First, Soft Updates guarantee file system consistency
in the case of a crash, but could easily be several seconds
or even a minute behind updating the physical disk. If the
system crashes, unwritten data may be lost. Secondly, Soft
Updates delay the freeing of file system blocks. If the
root file system is almost full, performing a major update,
such as make installworld, can cause the
file system to run out of space and the update to fail.More Details About Soft UpdatesSoft UpdatesdetailsMeta-data updates are updates to non-content data like
inodes or directories. There are two traditional approaches
to writing a file system's meta-data back to disk.Historically, the default behavior was to write out
meta-data updates synchronously. If a directory changed,
the system waited until the change was actually written to
disk. The file data buffers (file contents) were passed
through the buffer cache and backed up to disk later on
asynchronously. The advantage of this implementation is
that it operates safely. If there is a failure during an
update, meta-data is always in a consistent state. A
file is either created completely or not at all. If the
data blocks of a file did not find their way out of the
buffer cache onto the disk by the time of the crash,
&man.fsck.8; recognizes this and repairs the file system
by setting the file length to 0.
Additionally, the implementation is clear and simple. The
disadvantage is that meta-data changes are slow. For
example, rm -r touches all the files in a
directory sequentially, but each directory change will be
written synchronously to the disk. This includes updates to
the directory itself, to the inode table, and possibly to
indirect blocks allocated by the file. Similar
considerations apply for unrolling large hierarchies using
tar -x.The second approach is to use asynchronous meta-data
updates. This is the default for a UFS
file system mounted with mount -o async.
Since all meta-data updates are also passed through the
buffer cache, they will be intermixed with the updates of
the file content data. The advantage of this
implementation is there is no need to wait until each
meta-data update has been written to disk, so all operations
which cause huge amounts of meta-data updates work much
faster than in the synchronous case. This implementation
is still clear and simple, so there is a low risk for bugs
creeping into the code. The disadvantage is that there is
no guarantee for a consistent state of the file system.
If there is a failure during an operation that updated
large amounts of meta-data, like a power failure or someone
pressing the reset button, the file system will be left
in an unpredictable state. There is no opportunity to
examine the state of the file system when the system comes
up again as the data blocks of a file could already have
been written to the disk while the updates of the inode
table or the associated directory were not. It is
impossible to implement a &man.fsck.8; which is able to
clean up the resulting chaos because the necessary
information is not available on the disk. If the file
system has been damaged beyond repair, the only choice
is to reformat it and restore from backup.The usual solution for this problem is to implement
dirty region logging, which is also
referred to as journaling.
Meta-data updates are still written synchronously, but only
into a small region of the disk. Later on, they are moved
to their proper location. Because the logging area is a
small, contiguous region on the disk, there are no long
distances for the disk heads to move, even during heavy
operations, so these operations are quicker than synchronous
updates. Additionally, the complexity of the implementation
is limited, so the risk of bugs being present is low. A
disadvantage is that all meta-data is written twice, once
into the logging region and once to the proper location, so
performance pessimization might result. On
the other hand, in case of a crash, all pending meta-data
operations can be either quickly rolled back or completed
from the logging area after the system comes up again,
resulting in a fast file system startup.Kirk McKusick, the developer of Berkeley
FFS, solved this problem with Soft
Updates. All pending meta-data updates are kept in memory
and written out to disk in a sorted sequence
(ordered meta-data updates). This has the
effect that, in case of heavy meta-data operations, later
updates to an item catch the earlier ones
which are still in memory and have not already been written
to disk. All operations are generally performed in memory
before the update is written to disk and the data blocks are
sorted according to their position so that they will not be
on the disk ahead of their meta-data. If the system
crashes, an implicit log rewind causes all
operations which were not written to the disk appear as if
they never happened. A consistent file system state is
maintained that appears to be the one of 30 to 60 seconds
earlier. The algorithm used guarantees that all resources
in use are marked as such in their blocks and inodes.
After a crash, the only resource allocation error that
occurs is that resources are marked as used
which are actually free. &man.fsck.8;
recognizes this situation, and frees the resources that
are no longer used. It is safe to ignore the dirty state
of the file system after a crash by forcibly mounting it
with mount -f. In order to free
resources that may be unused, &man.fsck.8; needs to be run
at a later time. This is the idea behind the
background &man.fsck.8;: at system
startup time, only a snapshot of the
file system is recorded and &man.fsck.8; is run afterwards.
All file systems can then be mounted
dirty, so the system startup proceeds in
multi-user mode. Then, background &man.fsck.8; is
scheduled for all file systems where this is required, to
free resources that may be unused. File systems that do
not use Soft Updates still need the usual foreground
&man.fsck.8;.The advantage is that meta-data operations are nearly
as fast as asynchronous updates and are faster than
logging, which has to write the
meta-data twice. The disadvantages are the complexity of
the code, a higher memory consumption, and some
idiosyncrasies. After a crash, the state of the file
system appears to be somewhat older. In
situations where the standard synchronous approach would
have caused some zero-length files to remain after the
&man.fsck.8;, these files do not exist at all with Soft
Updates because neither the meta-data nor the file contents
have been written to disk. Disk space is not released until
the updates have been written to disk, which may take place
some time after running &man.rm.1;. This may cause problems
when installing large amounts of data on a file system
that does not have enough free space to hold all the files
twice.Tuning Kernel Limitstuningkernel limitsFile/Process Limitskern.maxfileskern.maxfilesThe kern.maxfiles &man.sysctl.8;
variable can be raised or lowered based upon system
requirements. This variable indicates the maximum number
of file descriptors on the system. When the file descriptor
table is full, file: table is full
will show up repeatedly in the system message buffer, which
can be viewed using &man.dmesg.8;.Each open file, socket, or fifo uses one file
descriptor. A large-scale production server may easily
require many thousands of file descriptors, depending on the
kind and number of services running concurrently.In older &os; releases, the default value of
kern.maxfiles is derived from
in the kernel configuration file.
kern.maxfiles grows proportionally to the
value of . When compiling a custom
kernel, consider setting this kernel configuration option
according to the use of the system. From this number, the
kernel is given most of its pre-defined limits. Even though
a production machine may not have 256 concurrent users, the
resources needed may be similar to a high-scale web
server.The read-only &man.sysctl.8; variable
kern.maxusers is automatically sized at
boot based on the amount of memory available in the system,
and may be determined at run-time by inspecting the value
of kern.maxusers. Some systems require
larger or smaller values of
kern.maxusers and values of
64, 128, and
256 are not uncommon. Going above
256 is not recommended unless a huge
number of file descriptors is needed. Many of the tunable
values set to their defaults by
kern.maxusers may be individually
overridden at boot-time or run-time in
/boot/loader.conf. Refer to
&man.loader.conf.5; and
/boot/defaults/loader.conf for more
details and some hints.In older releases, the system will auto-tune
maxusers if it is set to
0.
The auto-tuning algorithm sets
maxusers equal to the amount of
memory in the system, with a minimum of
32, and a maximum of
384.. When
setting this option, set maxusers to
at least 4, especially if the system
runs &xorg; or is used to
compile software. The most important table set by
maxusers is the maximum number of
processes, which is set to
20 + 16 * maxusers. If
maxusers is set to 1,
there can only be
36 simultaneous processes, including
the 18 or so that the system starts up
at boot time and the 15 or so used by
&xorg;. Even a simple task like
reading a manual page will start up nine processes to
filter, decompress, and view it. Setting
maxusers to 64 allows
up to 1044 simultaneous processes, which
should be enough for nearly all uses. If, however, the
proc table full error is displayed
when trying to start another program, or a server is
running with a large number of simultaneous users, increase
the number and rebuild.maxusers does
not limit the number of users which
can log into the machine. It instead sets various table
sizes to reasonable values considering the maximum number
of users on the system and how many processes each user
will be running.kern.ipc.soacceptqueuekern.ipc.soacceptqueueThe kern.ipc.soacceptqueue
&man.sysctl.8; variable limits the size of the listen queue
for accepting new TCP connections. The
default value of 128 is typically too low
for robust handling of new connections on a heavily loaded
web server. For such environments, it is recommended to
increase this value to 1024 or higher. A
service such as &man.sendmail.8;, or
Apache may itself limit the
listen queue size, but will often have a directive in its
configuration file to adjust the queue size. Large listen
queues do a better job of avoiding Denial of Service
(DoS) attacks.Network LimitsThe NMBCLUSTERS kernel configuration
option dictates the amount of network Mbufs available to the
system. A heavily-trafficked server with a low number of
Mbufs will hinder performance. Each cluster represents
approximately 2 K of memory, so a value of
1024 represents 2
megabytes of kernel memory reserved for network buffers. A
simple calculation can be done to figure out how many are
needed. A web server which maxes out at
1000 simultaneous connections where each
connection uses a 6 K receive and 16 K send buffer,
requires approximately 32 MB worth of network buffers
to cover the web server. A good rule of thumb is to multiply
by 2, so
2x32 MB / 2 KB =
64 MB / 2 kB =
32768. Values between
4096 and 32768 are
recommended for machines with greater amounts of memory.
Never specify an arbitrarily high value for this parameter
as it could lead to a boot time crash. To observe network
cluster usage, use with
&man.netstat.1;.The kern.ipc.nmbclusters loader tunable
should be used to tune this at boot time. Only older versions
of &os; will require the use of the
NMBCLUSTERS kernel &man.config.8;
option.For busy servers that make extensive use of the
&man.sendfile.2; system call, it may be necessary to increase
the number of &man.sendfile.2; buffers via the
NSFBUFS kernel configuration option or by
setting its value in /boot/loader.conf
(see &man.loader.8; for details). A common indicator that
this parameter needs to be adjusted is when processes are seen
in the sfbufa state. The &man.sysctl.8;
variable kern.ipc.nsfbufs is read-only.
This parameter nominally scales with
kern.maxusers, however it may be necessary
to tune accordingly.Even though a socket has been marked as non-blocking,
calling &man.sendfile.2; on the non-blocking socket may
result in the &man.sendfile.2; call blocking until enough
struct sf_buf's are made
available.net.inet.ip.portrange.*net.inet.ip.portrange.*The net.inet.ip.portrange.*
&man.sysctl.8; variables control the port number ranges
automatically bound to TCP and
UDP sockets. There are three ranges: a
low range, a default range, and a high range. Most network
programs use the default range which is controlled by
net.inet.ip.portrange.first and
net.inet.ip.portrange.last, which default
to 1024 and 5000,
respectively. Bound port ranges are used for outgoing
connections and it is possible to run the system out of
ports under certain circumstances. This most commonly
occurs when running a heavily loaded web proxy. The port
range is not an issue when running a server which handles
mainly incoming connections, such as a web server, or has
a limited number of outgoing connections, such as a mail
relay. For situations where there is a shortage of ports,
it is recommended to increase
net.inet.ip.portrange.last modestly. A
value of 10000, 20000
or 30000 may be reasonable. Consider
firewall effects when changing the port range. Some
firewalls may block large ranges of ports, usually
low-numbered ports, and expect systems to use higher ranges
of ports for outgoing connections. For this reason, it
is not recommended that the value of
net.inet.ip.portrange.first be
lowered.TCP Bandwidth Delay ProductTCP Bandwidth Delay Product
Limitingnet.inet.tcp.inflight.enableTCP bandwidth delay product limiting
can be enabled by setting the
net.inet.tcp.inflight.enable
&man.sysctl.8; variable to 1. This
instructs the system to attempt to calculate the bandwidth
delay product for each connection and limit the amount of
data queued to the network to just the amount required to
maintain optimum throughput.This feature is useful when serving data over modems,
Gigabit Ethernet, high speed WAN links,
or any other link with a high bandwidth delay product,
especially when also using window scaling or when a large
send window has been configured. When enabling this option,
also set net.inet.tcp.inflight.debug to
0 to disable debugging. For production
use, setting net.inet.tcp.inflight.min
to at least 6144 may be beneficial.
Setting high minimums may effectively disable bandwidth
limiting, depending on the link. The limiting feature
reduces the amount of data built up in intermediate route
and switch packet queues and reduces the amount of data
built up in the local host's interface queue. With fewer
queued packets, interactive connections, especially over
slow modems, will operate with lower
Round Trip Times. This feature only
effects server side data transmission such as uploading.
It has no effect on data reception or downloading.Adjusting net.inet.tcp.inflight.stab
is not recommended. This parameter
defaults to 20, representing 2 maximal
packets added to the bandwidth delay product window
calculation. The additional window is required to stabilize
the algorithm and improve responsiveness to changing
conditions, but it can also result in higher &man.ping.8;
times over slow links, though still much lower than without
the inflight algorithm. In such cases, try reducing this
parameter to 15, 10,
or 5 and reducing
net.inet.tcp.inflight.min to a value such
as 3500 to get the desired effect.
Reducing these parameters should be done as a last resort
only.Virtual Memorykern.maxvnodesA vnode is the internal representation of a file or
directory. Increasing the number of vnodes available to
the operating system reduces disk I/O. Normally, this is
handled by the operating system and does not need to be
changed. In some cases where disk I/O is a bottleneck and
the system is running out of vnodes, this setting needs
to be increased. The amount of inactive and free
RAM will need to be taken into
account.To see the current number of vnodes in use:&prompt.root; sysctl vfs.numvnodes
vfs.numvnodes: 91349To see the maximum vnodes:&prompt.root; sysctl kern.maxvnodes
kern.maxvnodes: 100000If the current vnode usage is near the maximum, try
increasing kern.maxvnodes by a value of
1000. Keep an eye on the number of
vfs.numvnodes. If it climbs up to the
maximum again, kern.maxvnodes will need
to be increased further. Otherwise, a shift in memory
usage as reported by &man.top.1; should be visible and
more memory should be active.Adding Swap SpaceSometimes a system requires more swap space. This section
describes two methods to increase swap space: adding swap to an
existing partition or new hard drive, and creating a swap file
on an existing partition.For information on how to encrypt swap space, which options
exist, and why it should be done, refer to .Swap on a New Hard Drive or Existing PartitionAdding a new hard drive for swap gives better performance
than using a partition on an existing drive. Setting up
partitions and hard drives is explained in while discusses partition layouts
and swap partition size considerations.Use swapon to add a swap partition to
the system. For example:&prompt.root; swapon /dev/ada1s1bIt is possible to use any partition not currently
mounted, even if it already contains data. Using
swapon on a partition that contains data
will overwrite and destroy that data. Make sure that the
partition to be added as swap is really the intended
partition before running swapon.To automatically add this swap partition on boot, add an
entry to /etc/fstab:/dev/ada1s1b none swap sw 0 0See &man.fstab.5; for an explanation of the entries in
/etc/fstab. More information about
swapon can be found in
&man.swapon.8;.Creating a Swap FileThese examples create a 64M swap file called
/usr/swap0 instead of using a
partition.Using swap files requires that the module needed by
&man.md.4; has either been built into the kernel or has been
loaded before swap is enabled. See
for information about building
a custom kernel.Creating a Swap File on
&os; 10.X and LaterCreate the swap file:&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1m count=64Set the proper permissions on the new file:&prompt.root; chmod 0600 /usr/swap0Inform the system about the swap file by adding a
line to /etc/fstab:md99 none swap sw,file=/usr/swap0,late 0 0The &man.md.4; device md99 is
used, leaving lower device numbers available for
interactive use.Swap space will be added on system startup. To add
swap space immediately, use &man.swapon.8;:&prompt.root; swapon -aLCreating a Swap File on
&os; 9.X and EarlierCreate the swap file,
/usr/swap0:&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1m count=64Set the proper permissions on
/usr/swap0:&prompt.root; chmod 0600 /usr/swap0Enable the swap file in
/etc/rc.conf:swapfile="/usr/swap0" # Set to name of swap fileSwap space will be added on system startup. To
enable the swap file immediately, specify a free memory
device. Refer to for
more information about memory devices.&prompt.root; mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0Power and Resource ManagementHitenPandyaWritten by TomRhodesIt is important to utilize hardware resources in an
efficient manner. Power and resource management allows the
operating system to monitor system limits and to possibly
provide an alert if the system temperature increases
unexpectedly. An early specification for providing power
management was the Advanced Power Management
(APM) facility. APM
controls the power usage of a system based on its activity.
However, it was difficult and inflexible for operating systems
to manage the power usage and thermal properties of a system.
The hardware was managed by the BIOS and the
user had limited configurability and visibility into the power
management settings. The APM
BIOS is supplied by the vendor and is
specific to the hardware platform. An APM
driver in the operating system mediates access to the
APM Software Interface, which allows
management of power levels.There are four major problems in APM.
First, power management is done by the vendor-specific
BIOS, separate from the operating system.
For example, the user can set idle-time values for a hard drive
in the APM BIOS so that,
when exceeded, the BIOS spins down the hard
drive without the consent of the operating system. Second, the
APM logic is embedded in the
BIOS, and it operates outside the scope of
the operating system. This means that users can only fix
problems in the APM
BIOS by flashing a new one into the
ROM, which is a dangerous procedure with the
potential to leave the system in an unrecoverable state if it
fails. Third, APM is a vendor-specific
technology, meaning that there is a lot of duplication of
efforts and bugs found in one vendor's BIOS
may not be solved in others. Lastly, the APM
BIOS did not have enough room to implement a
sophisticated power policy or one that can adapt well to the
purpose of the machine.The Plug and Play BIOS
(PNPBIOS) was unreliable in many situations.
PNPBIOS is 16-bit technology, so the
operating system has to use 16-bit emulation in order to
interface with PNPBIOS methods. &os;
provides an APM driver as
APM should still be used for systems
manufactured at or before the year 2000. The driver is
documented in &man.apm.4;.ACPIAPMThe successor to APM is the Advanced
Configuration and Power Interface (ACPI).
ACPI is a standard written by an alliance of
vendors to provide an interface for hardware resources and power
management. It is a key element in Operating
System-directed configuration and Power Management
as it provides more control and flexibility to the operating
system.This chapter demonstrates how to configure
ACPI on &os;. It then offers some tips on
how to debug ACPI and how to submit a problem
report containing debugging information so that developers can
diagnosis and fix ACPI issues.Configuring ACPIIn &os; the &man.acpi.4; driver is loaded by default at
system boot and should not be compiled
into the kernel. This driver cannot be unloaded after boot
because the system bus uses it for various hardware
interactions. However, if the system is experiencing
problems, ACPI can be disabled altogether
by rebooting after setting
hint.acpi.0.disabled="1" in
/boot/loader.conf or by setting this
variable at the loader prompt, as described in .ACPI and APM
cannot coexist and should be used separately. The last one
to load will terminate if the driver notices the other is
running.ACPI can be used to put the system into
a sleep mode with acpiconf, the
flag, and a number from
1 to 5. Most users only
need 1 (quick suspend to
RAM) or 3 (suspend to
RAM). Option 5 performs
a soft-off which is the same as running
halt -p.Other options are available using
sysctl. Refer to &man.acpi.4; and
&man.acpiconf.8; for more information.Common ProblemsACPIACPI is present in all modern computers
that conform to the ia32 (x86), ia64 (Itanium), and amd64
(AMD) architectures. The full standard has
many features including CPU performance
management, power planes control, thermal zones, various
battery systems, embedded controllers, and bus enumeration.
Most systems implement less than the full standard. For
instance, a desktop system usually only implements bus
enumeration while a laptop might have cooling and battery
management support as well. Laptops also have suspend and
resume, with their own associated complexity.An ACPI-compliant system has various
components. The BIOS and chipset vendors
provide various fixed tables, such as FADT,
in memory that specify things like the APIC
map (used for SMP), config registers, and
simple configuration values. Additionally, a bytecode table,
the Differentiated System Description Table
DSDT, specifies a tree-like name space of
devices and methods.The ACPI driver must parse the fixed
tables, implement an interpreter for the bytecode, and modify
device drivers and the kernel to accept information from the
ACPI subsystem. For &os;, &intel; has
provided an interpreter (ACPI-CA) that is
shared with &linux; and NetBSD. The path to the
ACPI-CA source code is
src/sys/contrib/dev/acpica. The glue
code that allows ACPI-CA to work on &os; is
in src/sys/dev/acpica/Osd. Finally,
drivers that implement various ACPI devices
are found in src/sys/dev/acpica.ACPIproblemsFor ACPI to work correctly, all the
parts have to work correctly. Here are some common problems,
in order of frequency of appearance, and some possible
workarounds or fixes. If a fix does not resolve the issue,
refer to for instructions
on how to submit a bug report.Mouse IssuesIn some cases, resuming from a suspend operation will
cause the mouse to fail. A known work around is to add
hint.psm.0.flags="0x3000" to
/boot/loader.conf.Suspend/ResumeACPI has three suspend to
RAM (STR) states,
S1-S3, and one suspend
to disk state (STD), called
S4. STD can be
implemented in two separate ways. The
S4BIOS is a
BIOS-assisted suspend to disk and
S4OS is implemented
entirely by the operating system. The normal state the
system is in when plugged in but not powered up is
soft off (S5).Use sysctl hw.acpi to check for the
suspend-related items. These example results are from a
Thinkpad:hw.acpi.supported_sleep_state: S3 S4 S5
hw.acpi.s4bios: 0Use acpiconf -s to test
S3, S4, and
S5. An of one
(1) indicates
S4BIOS support instead
of S4 operating system support.When testing suspend/resume, start with
S1, if supported. This state is most
likely to work since it does not require much driver
support. No one has implemented S2,
which is similar to S1. Next, try
S3. This is the deepest
STR state and requires a lot of driver
support to properly reinitialize the hardware.A common problem with suspend/resume is that many device
drivers do not save, restore, or reinitialize their
firmware, registers, or device memory properly. As a first
attempt at debugging the problem, try:&prompt.root; sysctl debug.bootverbose=1
&prompt.root; sysctl debug.acpi.suspend_bounce=1
&prompt.root; acpiconf -s 3This test emulates the suspend/resume cycle of all
device drivers without actually going into
S3 state. In some cases, problems such
as losing firmware state, device watchdog time out, and
retrying forever, can be captured with this method. Note
that the system will not really enter S3
state, which means devices may not lose power, and many
will work fine even if suspend/resume methods are totally
missing, unlike real S3 state.Harder cases require additional hardware, such as a
serial port and cable for debugging through a serial
console, a Firewire port and cable for using &man.dcons.4;,
and kernel debugging skills.To help isolate the problem, unload as many drivers as
possible. If it works, narrow down which driver is the
problem by loading drivers until it fails again. Typically,
binary drivers like nvidia.ko, display
drivers, and USB will have the most
problems while Ethernet interfaces usually work fine. If
drivers can be properly loaded and unloaded, automate this
by putting the appropriate commands in
/etc/rc.suspend and
/etc/rc.resume. Try setting
to 1
if the display is messed up after resume. Try setting
longer or shorter values for
to see if that
helps.Try loading a recent &linux; distribution to see if
suspend/resume works on the same hardware. If it works on
&linux;, it is likely a &os; driver problem. Narrowing down
which driver causes the problem will assist developers in
fixing the problem. Since the ACPI
maintainers rarely maintain other drivers, such as sound
or ATA, any driver problems should also
be posted to the &a.current.name; list and mailed to the
driver maintainer. Advanced users can include debugging
&man.printf.3;s in a problematic driver to track down where
in its resume function it hangs.Finally, try disabling ACPI and
enabling APM instead. If suspend/resume
works with APM, stick with
APM, especially on older hardware
(pre-2000). It took vendors a while to get
ACPI support correct and older hardware
is more likely to have BIOS problems with
ACPI.System HangsMost system hangs are a result of lost interrupts or an
interrupt storm. Chipsets may have problems based on boot,
how the BIOS configures interrupts before
correctness of the APIC
(MADT) table, and routing of the System
Control Interrupt (SCI).interrupt stormsInterrupt storms can be distinguished from lost
interrupts by checking the output of
vmstat -i and looking at the line that
has acpi0. If the counter is increasing
at more than a couple per second, there is an interrupt
storm. If the system appears hung, try breaking to
DDB (CTRLALTESC on console) and type
show interrupts.APICdisablingWhen dealing with interrupt problems, try disabling
APIC support with
hint.apic.0.disabled="1" in
/boot/loader.conf.PanicsPanics are relatively rare for ACPI
and are the top priority to be fixed. The first step is to
isolate the steps to reproduce the panic, if possible, and
get a backtrace. Follow the advice for enabling
options DDB and setting up a serial
console in or setting
up a dump partition. To get a backtrace in
DDB, use tr. When
handwriting the backtrace, get at least the last five and
the top five lines in the trace.Then, try to isolate the problem by booting with
ACPI disabled. If that works, isolate
the ACPI subsystem by using various
values of . See
&man.acpi.4; for some examples.System Powers Up After Suspend or ShutdownFirst, try setting
hw.acpi.disable_on_poweroff="0" in
/boot/loader.conf. This keeps
ACPI from disabling various events during
the shutdown process. Some systems need this value set to
1 (the default) for the same reason.
This usually fixes the problem of a system powering up
spontaneously after a suspend or poweroff.BIOS Contains Buggy BytecodeACPIASLSome BIOS vendors provide incorrect
or buggy bytecode. This is usually manifested by kernel
console messages like this:ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\
(Node 0xc3f6d160), AE_NOT_FOUNDOften, these problems may be resolved by updating the
BIOS to the latest revision. Most
console messages are harmless, but if there are other
problems, like the battery status is not working, these
messages are a good place to start looking for
problems.Overriding the Default AMLThe BIOS bytecode, known as
ACPI Machine Language
(AML), is compiled from a source language
called ACPI Source Language
(ASL). The AML is
found in the table known as the Differentiated System
Description Table (DSDT).ACPIASLThe goal of &os; is for everyone to have working
ACPI without any user intervention.
Workarounds are still being developed for common mistakes made
by BIOS vendors. The µsoft;
interpreter (acpi.sys and
acpiec.sys) does not strictly check for
adherence to the standard, and thus many
BIOS vendors who only test
ACPI under &windows; never fix their
ASL. &os; developers continue to identify
and document which non-standard behavior is allowed by
µsoft;'s interpreter and replicate it so that &os; can
work without forcing users to fix the
ASL.To help identify buggy behavior and possibly fix it
manually, a copy can be made of the system's
ASL. To copy the system's
ASL to a specified file name, use
acpidump with , to show
the contents of the fixed tables, and , to
disassemble the AML:&prompt.root; acpidump -td > my.aslSome AML versions assume the user is
running &windows;. To override this, set
hw.acpi.osname="Windows
2009" in
/boot/loader.conf, using the most recent
&windows; version listed in the ASL.Other workarounds may require my.asl
to be customized. If this file is edited, compile the new
ASL using the following command. Warnings
can usually be ignored, but errors are bugs that will usually
prevent ACPI from working correctly.&prompt.root; iasl -f my.aslIncluding forces creation of the
AML, even if there are errors during
compilation. Some errors, such as missing return statements,
are automatically worked around by the &os;
interpreter.The default output filename for iasl is
DSDT.aml. Load this file instead of the
BIOS's buggy copy, which is still present
in flash memory, by editing
/boot/loader.conf as follows:acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/DSDT.aml"Be sure to copy DSDT.aml to
/boot, then reboot the system. If this
fixes the problem, send a &man.diff.1; of the old and new
ASL to &a.acpi.name; so that developers can
work around the buggy behavior in
acpica.Getting and Submitting Debugging InfoNateLawsonWritten by PeterSchultzWith contributions from TomRhodesACPIproblemsACPIdebuggingThe ACPI driver has a flexible
debugging facility. A set of subsystems and the level of
verbosity can be specified. The subsystems to debug are
specified as layers and are broken down into components
(ACPI_ALL_COMPONENTS) and
ACPI hardware support
(ACPI_ALL_DRIVERS). The verbosity of
debugging output is specified as the level and ranges from
just report errors (ACPI_LV_ERROR) to
everything (ACPI_LV_VERBOSE). The level is
a bitmask so multiple options can be set at once, separated by
spaces. In practice, a serial console should be used to log
the output so it is not lost as the console message buffer
flushes. A full list of the individual layers and levels is
found in &man.acpi.4;.Debugging output is not enabled by default. To enable it,
add options ACPI_DEBUG to the custom kernel
configuration file if ACPI is compiled into
the kernel. Add ACPI_DEBUG=1 to
/etc/make.conf to enable it globally. If
a module is used instead of a custom kernel, recompile just
the acpi.ko module as follows:&prompt.root; cd /sys/modules/acpi/acpi && make clean && make ACPI_DEBUG=1Copy the compiled acpi.ko to
/boot/kernel and add the desired level
and layer to /boot/loader.conf. The
entries in this example enable debug messages for all
ACPI components and hardware drivers and
output error messages at the least verbose level:debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
debug.acpi.level="ACPI_LV_ERROR"If the required information is triggered by a specific
event, such as a suspend and then resume, do not modify
/boot/loader.conf. Instead, use
sysctl to specify the layer and level after
booting and preparing the system for the specific event. The
variables which can be set using sysctl are
named the same as the tunables in
/boot/loader.conf.ACPIproblemsOnce the debugging information is gathered, it can be sent
to &a.acpi.name; so that it can be used by the &os;
ACPI maintainers to identify the root cause
of the problem and to develop a solution.Before submitting debugging information to this mailing
list, ensure the latest BIOS version is
installed and, if available, the embedded controller
firmware version.When submitting a problem report, include the following
information:Description of the buggy behavior, including system
type, model, and anything that causes the bug to appear.
Note as accurately as possible when the bug began
occurring if it is new.The output of dmesg after running
boot -v, including any error messages
generated by the bug.The dmesg output from boot
-v with ACPI disabled,
if disabling ACPI helps to fix the
problem.Output from sysctl hw.acpi. This
lists which features the system offers.The URL to a pasted version of the
system's ASL. Do
not send the ASL
directly to the list as it can be very large. Generate a
copy of the ASL by running this
command:&prompt.root; acpidump -dt > name-system.aslSubstitute the login name for
name and manufacturer/model for
system. For example, use
njl-FooCo6000.asl.Most &os; developers watch the &a.current;, but one should
submit problems to &a.acpi.name; to be sure it is seen. Be
patient when waiting for a response. If the bug is not
immediately apparent, submit a bug report.
When entering a PR,
include the same information as requested above. This helps
developers to track the problem and resolve it. Do not send a
PR without emailing &a.acpi.name; first as
it is likely that the problem has been reported before.ReferencesMore information about ACPI may be
found in the following locations:The &os; ACPI Mailing List Archives
(https://lists.freebsd.org/pipermail/freebsd-acpi/)The ACPI 2.0 Specification (http://acpi.info/spec.htm)&man.acpi.4;, &man.acpi.thermal.4;, &man.acpidump.8;,
&man.iasl.8;, and &man.acpidb.8;
Index: head/en_US.ISO8859-1/books/handbook/eresources/chapter.xml
===================================================================
--- head/en_US.ISO8859-1/books/handbook/eresources/chapter.xml (revision 52158)
+++ head/en_US.ISO8859-1/books/handbook/eresources/chapter.xml (revision 52159)
@@ -1,2442 +1,2449 @@
Resources on the InternetThe rapid pace of &os; progress makes print media
impractical as a means of following the latest developments.
Electronic resources are the best, if not often the only, way to
stay informed of the latest advances. Since &os; is a volunteer
effort, the user community itself also generally serves as a
technical support department of sorts, with
electronic mail, web forums, and USENET news being the most
effective way of reaching that community.The most important points of contact with the &os; user
community are outlined below. Please send other resources not
mentioned here to the &a.doc; so that they may also be
included.WebsitesThe
&os; Forums provide a web based discussion forum
for &os; questions and technical
discussion.Planet
&os; offers an aggregation feed of dozens of blogs
written by &os; developers. Many developers use this to
post quick notes about what they are working on, new
patches, and other works in progress.The BSDConferences
YouTube Channel provides a collection of high
quality videos from BSD conferences around the world.
This is a great way to watch key developers give
presentations about new work in &os;.Mailing ListsThe mailing lists are the most direct way of addressing
questions or opening a technical discussion to a concentrated
&os; audience. There are a wide variety of lists on a number of
different &os; topics. Sending questions to the most
appropriate mailing list will invariably assure a faster and
more accurate response.The charters for the various lists are given at the bottom
of this document. Please read the charter before
joining or sending mail to any list. Most list
subscribers receive many hundreds of &os; related messages every
day, and the charters and rules for use are meant to keep the
signal-to-noise ratio of the lists high. To do less would see
the mailing lists ultimately fail as an effective communications
medium for the Project.To test the ability to send email to &os; lists,
send a test message to &a.test.name;. Please do
not send test messages to any other list.When in doubt about what list to post a question to, see
How to get
best results from the FreeBSD-questions mailing
list.Before posting to any list, please learn about how to best
use the mailing lists, such as how to help avoid
frequently-repeated discussions, by reading the
Mailing List
Frequently Asked Questions (FAQ) document.Archives are kept for all of the mailing lists and can be
searched using the
&os; World Wide
Web server. The keyword searchable archive offers an
excellent way of finding answers to frequently asked questions
and should be consulted before posting a question. Note that
this also means that messages sent to &os; mailing lists are
archived in perpetuity. When protecting privacy is a concern,
consider using a disposable secondary email address and posting
only public information.List SummaryGeneral lists: The following are
general lists which anyone is free (and encouraged) to
join:ListPurpose&a.advocacy.name;&os; Evangelism&a.announce.name;Important events and Project milestones
(moderated)&a.arch.name;Architecture and design discussions&a.bugbusters.name;Discussions pertaining to the maintenance of
the &os; problem report database and related
tools&a.bugs.name;Bug reports&a.chat.name;Non-technical items related to the &os;
community&a.chromium.name;&os;-specific Chromium issues&a.current.name;Discussion concerning the use of
&os.current;&a.isp.name;Issues for Internet Service Providers using
&os;&a.jobs.name;&os; employment and consulting
opportunities&a.questions.name;User questions and technical support&a.security-notifications.name;Security notifications (moderated)&a.stable.name;Discussion concerning the use of
&os.stable;&a.test.name;Where to send test messages instead of to
one of the actual lists&a.women.name;FreeBSD advocacy for womenTechnical lists: The following lists
are for technical discussion. Read the charter for each list
carefully before joining or sending mail to one as there are
firm guidelines for their use and content.ListPurpose&a.acpi.name;ACPI and power management development&a.afs.name;Porting AFS to &os;&a.amd64.name;Porting &os; to AMD64 systems (moderated)&a.apache.name;Discussion about
Apache related
ports&a.arm.name;Porting &os; to &arm; processors&a.atm.name;Using ATM networking with &os;&a.bluetooth.name;Using &bluetooth; technology in &os;&a.cloud.name;&os; on cloud platforms (EC2, GCE, Azure,
etc.)&a.cluster.name;Using &os; in a clustered environment&a.database.name;Discussing database use and development under
&os;&a.desktop.name;Using and improving &os; on the desktop&a.dev-ci.name;
- Build and test reports from the Continuous Integration servers
+ Build and test reports from the Continuous
+ Integration servers&a.dev-reviews.name;
- Notifications of the FreeBSD review system
+ Notifications of the FreeBSD review
+ system&a.doc.name;Creating &os; related documents&a.drivers.name;Writing device drivers for &os;&a.dtrace.name;Using and working on DTrace in &os;&a.eclipse.name;&os; users of Eclipse IDE, tools, rich client
applications and ports.&a.elastic.name;&os;-specific ElasticSearch discussions&a.embedded.name;Using &os; in embedded applications&a.eol.name;Peer support of &os;-related software that
is no longer supported by the &os; Project.&a.emulation.name;Emulation of other systems such as
Linux/&ms-dos;/&windows;&a.enlightenment.name;Porting Enlightenment
and Enlightenment
applications&a.erlang.name;&os;-specific Erlang discussions&a.firewire.name;&os; &firewire; (iLink, IEEE 1394) technical
discussion&a.fortran.name;Fortran on &os;&a.fs.name;File systems&a.games.name;Support for Games on &os;&a.gecko.name;Gecko Rendering
Engine issues&a.geom.name;GEOM-specific discussions and
implementations&a.git.name;Discussion of git use in the &os; project&a.gnome.name;Porting GNOME and
GNOME applications&a.hackers.name;General technical discussion
-
+ &a.haskell.name;
- &os;-specific Haskell issues and discussions
-
+ &os;-specific Haskell issues and
+ discussions
+ &a.hardware.name;General discussion of hardware for running
&os;&a.i18n.name;&os; Internationalization&a.ia32.name;&os; on the IA-32 (&intel; x86)
platform&a.ia64.name;Porting &os; to &intel;'s upcoming IA64
systems&a.infiniband.name;Infiniband on &os;&a.ipfw.name;Technical discussion concerning the redesign
of the IP firewall code&a.isdn.name;ISDN developers&a.jail.name;Discussion about the &man.jail.8;
facility&a.java.name;&java; developers and people porting &jdk;s to
&os;&a.lfs.name;Porting LFS to &os;&a.mips.name;Porting &os; to &mips;&a.mobile.name;Discussions about mobile computing&a.mono.name;Mono and C# applications on &os;&a.multimedia.name;Multimedia applications&a.newbus.name;Technical discussions about bus
architecture&a.net.name;Networking discussion and TCP/IP source
code&a.numerics.name;Discussions of high quality implementation of
libm functions&a.office.name;Office applications on &os;&a.performance.name;Performance tuning questions for high
performance/load installations&a.perl.name;Maintenance of a number of
Perl-related ports&a.pf.name;Discussion and questions about the packet filter
firewall system&a.pkg.name;Binary package management and package
tools discussion&a.pkg-fallout.name;Fallout logs from package building&a.pkgbase.name;Packaging the &os; base system&a.platforms.name;Concerning ports to non &intel; architecture
platforms&a.ports.name;Discussion of the Ports Collection&a.ports-announce.name;Important news and instructions about the Ports
Collection (moderated)&a.ports-bugs.name;Discussion of the ports bugs/PRs&a.ppc.name;Porting &os; to the &powerpc;&a.proliant.name;Technical discussion of &os; on HP ProLiant
server platforms&a.python.name;&os;-specific Python issues&a.rc.name;Discussion related to the
rc.d system and its
development&a.realtime.name;Development of realtime extensions to
&os;&a.ruby.name;&os;-specific Ruby discussions&a.scsi.name;The SCSI subsystem&a.security.name;Security issues affecting &os;&a.small.name;Using &os; in embedded applications
(obsolete; use &a.embedded.name; instead)&a.snapshots.name;&os; Development Snapshot Announcements&a.sparc.name;Porting &os; to &sparc; based systems&a.standards.name;&os;'s conformance to the C99 and the &posix;
standards&a.sysinstall.name;&man.sysinstall.8; development&a.tcltk.name;&os;-specific Tcl/Tk discussions&a.testing.name;Testing on &os;&a.tex.name;Porting TeX and its
applications to &os;&a.threads.name;Threading in &os;&a.tilera.name;Porting &os; to the Tilera family of
CPUs&a.tokenring.name;Support Token Ring in &os;&a.toolchain.name;Maintenance of &os;'s integrated
toolchain&a.translators.name;Translating &os; documents and programs&a.transport.name;Discussions of transport level network protocols
in &os;&a.usb.name;Discussing &os; support for USB&a.virtualization.name;Discussion of various virtualization techniques
supported by &os;&a.vuxml.name;Discussion on VuXML infrastructure&a.x11.name;Maintenance and support of X11 on &os;&a.xen.name;Discussion of the &os; port to &xen; —
implementation and usage&a.xfce.name;XFCE for &os; —
porting and maintaining&a.zope.name;Zope for &os; —
porting and maintainingLimited lists: The following lists
are for more specialized (and demanding) audiences and are
probably not of interest to the general public. It is also a
good idea to establish a presence in the technical lists
before joining one of these limited lists in order to
understand the communications etiquette involved.ListPurpose&a.hubs.name;People running mirror sites (infrastructural
support)&a.usergroups.name;User group coordination&a.wip-status.name;&os; Work-In-Progress Status&a.wireless.name;Discussions of 802.11 stack, tools, device driver
developmentDigest lists: All of the above lists
are available in a digest format. Once subscribed to a list,
the digest options can be changed in the account options
section.SVN lists: The following lists are
for people interested in seeing the log messages for changes
to various areas of the source tree. They are
Read-Only lists and should not have mail
sent to them.ListSource areaArea Description (source for)&a.svn-doc-all.name;/usr/docAll changes to the doc Subversion repository
(except for user,
projects and
translations)&a.svn-doc-head.name;/usr/docAll changes to the head branch of
the doc Subversion repository&a.svn-doc-projects.name;/usr/doc/projectsAll changes to the projects
area of the doc Subversion repository&a.svn-doc-svnadmin.name;/usr/docAll changes to the administrative scripts, hooks,
and other configuration data of the doc Subversion
repository&a.svn-ports-all.name;/usr/portsAll changes to the ports Subversion
repository&a.svn-ports-head.name;/usr/portsAll changes to the head branch
of the ports Subversion repository&a.svn-ports-svnadmin.name;/usr/portsAll changes to the administrative scripts, hooks,
and other configuration data of the ports Subversion
repository&a.svn-src-all.name;/usr/srcAll changes to the src Subversion repository
(except for user
and projects)&a.svn-src-head.name;/usr/srcAll changes to the head branch
of the src Subversion repository (the &os;-CURRENT
branch)&a.svn-src-projects.name;/usr/projectsAll changes to the projects
area of the src Subversion repository&a.svn-src-release.name;/usr/srcAll changes to the releases
area of the src Subversion repository&a.svn-src-releng.name;/usr/srcAll changes to the releng
branches of the src Subversion repository (the
security / release engineering branches)&a.svn-src-stable.name;/usr/srcAll changes to the all stable branches of the src
Subversion repository&a.svn-src-stable-6.name;/usr/srcAll changes to the stable/6
branch of the src Subversion repository&a.svn-src-stable-7.name;/usr/srcAll changes to the stable/7
branch of the src Subversion repository&a.svn-src-stable-8.name;/usr/srcAll changes to the stable/8
branch of the src Subversion repository&a.svn-src-stable-9.name;/usr/srcAll changes to the stable/9
branch of the src Subversion repository&a.svn-src-stable-10.name;/usr/srcAll changes to the stable/10
branch of the src Subversion repository&a.svn-src-stable-11.name;/usr/srcAll changes to the stable/11
branch of the src Subversion repository&a.svn-src-stable-other.name;/usr/srcAll changes to the
older stable branches of the src
Subversion repository&a.svn-src-svnadmin.name;/usr/srcAll changes to the administrative scripts, hooks,
and other configuration data of the src Subversion
repository&a.svn-src-user.name;/usr/srcAll changes to the
experimental user area of the src
Subversion repository&a.svn-src-vendor.name;/usr/srcAll changes to the vendor work area of the src
Subversion repositoryHow to SubscribeTo subscribe to a list, click the list name at
&a.mailman.lists.link;. The page that is displayed should
contain all of the necessary subscription instructions for
that list.To actually post to a given list, send mail to
listname@FreeBSD.org.
It will then be redistributed to mailing list members
world-wide.To unsubscribe from a list, click on the URL found at the
bottom of every email received from the list. It is also
possible to send an email to
listname-unsubscribe@FreeBSD.org
to unsubscribe.It is important to keep discussion in the technical
mailing lists on a technical track. To only receive important
announcements, instead join the &a.announce;, which is
intended for infrequent traffic.List ChartersAll &os; mailing lists have certain
basic rules which must be adhered to by anyone using them.
Failure to comply with these guidelines will result in two (2)
written warnings from the &os; Postmaster
postmaster@FreeBSD.org, after which, on a third
offense, the poster will removed from all &os; mailing lists
and filtered from further posting to them. We regret that
such rules and measures are necessary at all, but today's
Internet is a pretty harsh environment, it would seem, and
many fail to appreciate just how fragile some of its
mechanisms are.Rules of the road:The topic of any posting should adhere to the basic
charter of the list it is posted to. If the list is about
technical issues, the posting should contain technical
discussion. Ongoing irrelevant chatter or flaming only
detracts from the value of the mailing list for everyone
on it and will not be tolerated. For free-form discussion
on no particular topic, the &a.chat; is freely available
and should be used instead.No posting should be made to more than 2 mailing
lists, and only to 2 when a clear and obvious need to post
to both lists exists. For most lists, there is already a
great deal of subscriber overlap and except for the most
esoteric mixes (say -stable & -scsi),
there really is no reason to post to more than one list at
a time. If a message is received with multiple mailing
lists on the Cc line, trim the
Cc line before replying. The
person who replies is still responsible for
cross-posting, no matter who the originator might have
been.Personal attacks and profanity (in the context of an
argument) are not allowed, and that includes users and
developers alike. Gross breaches of netiquette, like
excerpting or reposting private mail when permission to do
so was not and would not be forthcoming, are frowned upon
but not specifically enforced.
However, there are also very few
cases where such content would fit within the charter of a
list and it would therefore probably rate a warning (or
ban) on that basis alone.Advertising of non-&os; related products or services
is strictly prohibited and will result in an immediate ban
if it is clear that the offender is advertising by
spam.Individual list charters:&a.acpi.name;ACPI and power management
development&a.afs.name;Andrew File SystemThis list is for discussion on porting and using
AFS from CMU/Transarc&a.announce.name;Important events /
milestonesThis is the mailing list for people interested only
in occasional announcements of significant &os; events.
This includes announcements about snapshots and other
releases. It contains announcements of new &os;
capabilities. It may contain calls for volunteers etc.
This is a low volume, strictly moderated mailing
list.&a.arch.name;Architecture and design
discussionsThis list is for discussion of the &os;
architecture. Messages will mostly be kept strictly
technical in nature. Examples of suitable topics
are:How to re-vamp the build system to have several
customized builds running at the same time.What needs to be fixed with VFS to make
Heidemann layers work.How do we change the device driver interface
to be able to use the same drivers cleanly on many
buses and architectures.How to write a network driver.&a.bluetooth.name;&bluetooth; in &os;This is the forum where &os;'s &bluetooth; users
congregate. Design issues, implementation details,
patches, bug reports, status reports, feature requests,
and all matters related to &bluetooth; are fair
game.&a.bugbusters.name;Coordination of the Problem Report
handling effortThe purpose of this list is to serve as a
coordination and discussion forum for the Bugmeister,
his Bugbusters, and any other parties who have a genuine
interest in the PR database. This list is not for
discussions about specific bugs, patches or PRs.&a.bugs.name;Bug reportsThis is the mailing list for reporting bugs in &os;.
Whenever possible, bugs should be submitted using the
web
interface to it.&a.chat.name;Non technical items related to the &os;
communityThis list contains the overflow from the other lists
about non-technical, social information. It includes
discussion about whether Jordan looks like a toon ferret
or not, whether or not to type in capitals, who is
drinking too much coffee, where the best beer is brewed,
who is brewing beer in their basement, and so on.
Occasional announcements of important events (such as
upcoming parties, weddings, births, new jobs, etc) can
be made to the technical lists, but the follow ups
should be directed to this -chat list.&a.chromium.name;&os;-specific Chromium
issuesThis is a list for the discussion of Chromium
support for &os;. This is a technical list to
discuss development and installation of Chromium.&a.cloud.name;Running &os; on various cloud
platformsThis list discusses running &os; on Amazon EC2,
Google Compute Engine, Microsoft Azure, and other cloud
computing platforms.&a.core.name;&os; core teamThis is an internal mailing list for use by the core
members. Messages can be sent to it when a serious
&os;-related matter requires arbitration or
high-level scrutiny.&a.current.name;Discussions about the use of
&os.current;This is the mailing list for users of &os.current;.
It includes warnings about new features coming out in
-CURRENT that will affect the users, and instructions
on steps that must be taken to remain -CURRENT. Anyone
running CURRENT must subscribe to this
list. This is a technical mailing list for which
strictly technical content is expected.&a.desktop.name;Using and improving &os; on the
desktopThis is a forum for discussion of &os; on the
desktop. It is primarily a place for desktop porters
and users to discuss issues and improve &os;'s desktop
support.&a.dev-ci.name;
- Continuous Integration reports of build and test results
+ Continuous Integration reports of build
+ and test results
- All Continuous Integration reports of build and test results
+ All Continuous Integration reports of build and test
+ results&a.dev-reviews.name;
- Notifications of work in progress in FreeBSD's review tool
+ Notifications of work in progress in
+ FreeBSD's review tool
- Automated notifications of work in progress for review in FreeBSD's review tools, including
+ Automated notifications of work in progress for
+ review in FreeBSD's review tools, including
patches.&a.doc.name;Documentation ProjectThis mailing list is for the discussion of issues
and projects related to the creation of documentation
for &os;. The members of this mailing list are
collectively referred to as The &os;
Documentation Project. It is an open list; feel
free to join and contribute!&a.drivers.name;Writing device drivers for
&os;This is a forum for technical discussions related to
device drivers on &os;. It is primarily a place for
device driver writers to ask questions about how to
write device drivers using the APIs in the &os;
kernel.&a.dtrace.name;Using and working on DTrace in
&os;DTrace is an integrated component of &os; that
provides a framework for understanding the kernel as
well as user space programs at run time. The mailing
list is an archived discussion for developers of the
code as well as those using it.&a.eclipse.name;&os; users of Eclipse IDE, tools, rich
client applications and ports.The intention of this list is to provide mutual
support for everything to do with choosing, installing,
using, developing and maintaining the Eclipse IDE,
tools, rich client applications on the &os; platform and
assisting with the porting of Eclipse IDE and plugins to
the &os; environment.The intention is also to facilitate exchange of
information between the Eclipse community and the &os;
community to the mutual benefit of both.Although this list is focused primarily on the needs
of Eclipse users it will also provide a forum for those
who would like to develop &os; specific applications
using the Eclipse framework.&a.embedded.name;Using &os; in embedded
applicationsThis list discusses topics related to using &os; in
embedded systems. This is a technical mailing list for
which strictly technical content is expected. For the
purpose of this list, embedded systems are those
computing devices which are not desktops and which
usually serve a single purpose as opposed to being
general computing environments. Examples include, but
are not limited to, all kinds of phone handsets, network
equipment such as routers, switches and PBXs, remote
measuring equipment, PDAs, Point Of Sale systems, and so
on.&a.emulation.name;Emulation of other systems such as
Linux/&ms-dos;/&windows;This is a forum for technical discussions related
to running programs written for other operating systems
on &os;.&a.enlightenment.name;EnlightenmentDiscussions concerning the
Enlightenment Desktop
Environment for &os; systems. This is a technical
mailing list for which strictly technical content is
expected.&a.eol.name;Peer support of &os;-related software
that is no longer supported by the &os;
Project.This list is for those interested in providing or
making use of peer support of &os;-related software for
which the &os; Project no longer provides official
support in the form of security advisories and
patches.&a.firewire.name;&firewire; (iLink, IEEE
1394)This is a mailing list for discussion of the design
and implementation of a &firewire; (aka IEEE 1394 aka
iLink) subsystem for &os;. Relevant topics specifically
include the standards, bus devices and their protocols,
adapter boards/cards/chips sets, and the architecture
and implementation of code for their proper
support.&a.fortran.name;Fortran on &os;This is the mailing list for discussion of Fortran
related ports on &os;: compilers, libraries, scientific
and engineering applications from laptops to HPC
clusters.&a.fs.name;File systemsDiscussions concerning &os; filesystems. This is a
technical mailing list for which strictly technical
content is expected.&a.games.name;Games on &os;This is a technical list for discussions related to
bringing games to &os;. It is for individuals actively
working on porting games to &os;, to bring up problems
or discuss alternative solutions. Individuals
interested in following the technical discussion are
also welcome.&a.gecko.name;Gecko Rendering EngineThis is a forum about
Gecko applications using
&os;.Discussion centers around Gecko Ports applications,
their installation, their development and their support
within &os;.&a.geom.name;GEOMDiscussions specific to GEOM and related
implementations. This is a technical mailing list for
which strictly technical content is expected.&a.git.name;Use of git in the &os;
projectDiscussions of how to use git in &os;
infrastructure including the github mirror and other
uses of git for project collaboration. Discussion area
for people using git against the &os; github mirror.
People wanting to get started with the mirror or git
in general on &os; can ask here.&a.gnome.name;GNOMEDiscussions concerning The
GNOME Desktop Environment
for &os; systems. This is a technical mailing list
for which strictly technical content is expected.&a.infiniband.name;Infiniband on &os;Technical mailing list discussing Infiniband, OFED,
and OpenSM on &os;.&a.ipfw.name;IP FirewallThis is the forum for technical discussions
concerning the redesign of the IP firewall code in
&os;. This is a technical mailing list for which
strictly technical content is expected.&a.ia64.name;Porting &os; to IA64This is a technical mailing list for individuals
actively working on porting &os; to the IA-64 platform
from &intel;, to bring up problems or discuss
alternative solutions. Individuals interested in
following the technical discussion are also
welcome.&a.isdn.name;ISDN CommunicationsThis is the mailing list for people discussing the
development of ISDN support for &os;.&a.java.name;&java; DevelopmentThis is the mailing list for people discussing the
development of significant &java; applications for &os;
and the porting and maintenance of &jdk;s.&a.jobs.name;Jobs offered and soughtThis is a forum for posting employment notices
specifically related to &os; and resumes from those
seeking &os;-related employment. This is
not a mailing list for general
employment issues since adequate forums for that already
exist elsewhere.Note that this list, like other FreeBSD.org
mailing lists, is distributed worldwide. Be clear about
the geographic location and the extent to which
telecommuting or assistance with relocation is
available.Email should use open formats only —
preferably plain text, but basic Portable Document
Format (PDF), HTML, and a few others
are acceptable to many readers. Closed formats such as
µsoft; Word (.doc) will be
rejected by the mailing list server.&a.kde.name;KDEDiscussions concerning
KDE on &os; systems.
This is a technical mailing list for which strictly
technical content is expected.&a.hackers.name;Technical discussionsThis is a forum for technical discussions related
to &os;. This is the primary technical mailing list.
It is for individuals actively working on &os;, to bring
up problems or discuss alternative solutions.
Individuals interested in following the technical
discussion are also welcome. This is a technical
mailing list for which strictly technical content is
expected.&a.hardware.name;General discussion of &os;
hardwareGeneral discussion about the types of hardware that
&os; runs on, various problems and suggestions
concerning what to buy or avoid.&a.hubs.name;Mirror sitesAnnouncements and discussion for people who run &os;
mirror sites.&a.isp.name;Issues for Internet Service
ProvidersThis mailing list is for discussing topics relevant
to Internet Service Providers (ISPs) using &os;. This
is a technical mailing list for which strictly technical
content is expected.&a.mono.name;Mono and C# applications on
&os;This is a list for discussions related to the Mono
development framework on &os;. This is a technical
mailing list. It is for individuals actively working on
porting Mono or C# applications to &os;, to bring up
problems or discuss alternative solutions. Individuals
interested in following the technical discussion are
also welcome.&a.office.name;Office applications on
&os;Discussion centers around office applications, their
installation, their development and their support within
&os;.&a.ops-announce.name;Project Infrastructure
AnnouncementsThis is the mailing list for people interested in
changes and issues related to the FreeBSD.org Project
infrastructure.This moderated list is strictly for announcements:
no replies, requests, discussions, or opinions.&a.performance.name;Discussions about tuning or speeding up
&os;This mailing list exists to provide a place for
hackers, administrators, and/or concerned parties to
discuss performance related topics pertaining to &os;.
Acceptable topics includes talking about &os;
installations that are either under high load, are
experiencing performance problems, or are pushing the
limits of &os;. Concerned parties that are willing to
work toward improving the performance of &os; are highly
encouraged to subscribe to this list. This is a highly
technical list ideally suited for experienced &os;
users, hackers, or administrators interested in keeping
&os; fast, robust, and scalable. This list is not a
question-and-answer list that replaces reading through
documentation, but it is a place to make contributions
or inquire about unanswered performance related
topics.&a.pf.name;Discussion and questions about the packet
filter firewall systemDiscussion concerning the packet filter (pf)
firewall system in terms of &os;. Technical discussion
and user questions are both welcome. This list is also
a place to discuss the ALTQ QoS framework.&a.pkg.name;Binary package management and package
tools discussionDiscussion of all aspects of managing &os; systems
by using binary packages to install software, including
binary package toolkits and formats, their development
and support within &os;, package repository management,
and third party packages.Note that discussion of ports which fail to generate
packages correctly should generally be considered as
ports problems, and so inappropriate for this
list.&a.pkg-fallout.name;Fallout logs from package
buildingAll packages building failures logs from the package
building clusters&a.pkgbase.name;Packaging the &os; base
system.Discussions surrounding implementation and issues
regarding packaging the &os; base system.&a.platforms.name;Porting to Non &intel;
platformsCross-platform &os; issues, general discussion and
proposals for non &intel; &os; ports. This is a
technical mailing list for which strictly technical
content is expected.&a.ports.name;Discussion of
portsDiscussions concerning &os;'s ports
collection (/usr/ports),
ports infrastructure, and general ports coordination
efforts. This is a technical mailing list for which
strictly technical content is expected.&a.ports-announce.name;Important news and instructions about the
&os; Ports
CollectionImportant news for developers, porters, and users of
the Ports Collection
(/usr/ports), including
architecture/infrastructure changes, new capabilities,
critical upgrade instructions, and release engineering
information. This is a low-volume mailing list,
intended for announcements.&a.ports-bugs.name;Discussion of
ports bugsDiscussions concerning problem reports for &os;'s
ports collection
(/usr/ports), proposed ports, or
modifications to ports. This is a technical mailing
list for which strictly technical content is
expected.&a.proliant.name;Technical discussion of &os; on HP
ProLiant server platformsThis mailing list is to be used for the technical
discussion of the usage of &os; on HP ProLiant servers,
including the discussion of ProLiant-specific drivers,
management software, configuration tools, and BIOS
updates. As such, this is the primary place to discuss
the hpasmd, hpasmcli, and hpacucli modules.&a.python.name;Python on &os;This is a list for discussions related to improving
Python-support on &os;. This is a technical mailing
list. It is for individuals working on porting Python,
its third party modules and
Zope stuff to &os;.
Individuals interested in following the technical
discussion are also welcome.&a.questions.name;User questionsThis is the mailing list for questions about &os;.
Do not send how to questions to the
technical lists unless the question is quite
technical.&a.ruby.name;&os;-specific Ruby
discussionsThis is a list for discussions related to the Ruby
support on &os;. This is a technical mailing list. It
is for individuals working on Ruby ports, third party
libraries and frameworks.Individuals interested in the technical discussion
are also welcome.&a.scsi.name;SCSI subsystemThis is the mailing list for people working on the
SCSI subsystem for &os;. This is a technical mailing
list for which strictly technical content is
expected.&a.security.name;Security issues&os; computer security issues (DES, Kerberos, known
security holes and fixes, etc). This is a technical
mailing list for which strictly technical discussion is
expected. Note that this is not a question-and-answer
list, but that contributions (BOTH question AND answer)
to the FAQ are welcome.&a.security-notifications.name;Security NotificationsNotifications of &os; security problems and fixes.
This is not a discussion list. The discussion list is
FreeBSD-security.&a.small.name;Using &os; in embedded
applicationsThis list discusses topics related to unusually
small and embedded &os; installations. This is a
technical mailing list for which strictly technical
content is expected.This list has been obsoleted by
&a.embedded.name;.&a.snapshots.name;&os; Development Snapshot
AnnouncementsThis list provides notifications about the
availability of new &os; development snapshots for the
head/ and stable/ branches.&a.stable.name;Discussions about the use of
&os.stable;This is the mailing list for users of &os.stable;.
STABLE is the branch where development
continues after a RELEASE, including bug fixes and new
features. The ABI is kept stable for binary
compatibility. It includes warnings about new features
coming out in -STABLE that will affect the users, and
instructions on steps that must be taken to remain
-STABLE. Anyone running STABLE should
subscribe to this list. This is a technical mailing
list for which strictly technical content is
expected.&a.standards.name;C99 & POSIX
ConformanceThis is a forum for technical discussions related to
&os; Conformance to the C99 and the POSIX
standards.&a.teaching.name;Teaching with &os;Non technical mailing list discussing teaching
with &os;.&a.testing.name;Testing on &os;Technical mailing list discussing testing on &os;,
including ATF/Kyua, test build infrastructure, port
tests to &os; from other operating systems (NetBSD,
...), etc.&a.tex.name;Porting TeX and
its applications to &os;This is a technical mailing list for discussions
related to TeX and its applications on &os;. It is for
individuals actively working on porting TeX to FreeBSD,
to bring up problems or discuss alternative solutions.
Individuals interested in following the technical
discussion are also welcome.&a.toolchain.name;Maintenance of &os;'s integrated
toolchainThis is the mailing list for discussions related to
the maintenance of the toolchain shipped with &os;.
This could include the state of Clang and GCC, but also
pieces of software such as assemblers, linkers and
debuggers.&a.transport.name;Discussions of transport level network
protocols in &os;The transport mailing list exists for the discussion
of issues and designs around the transport level
protocols in the &os; network stack, including TCP,
SCTP and UDP. Other networking topics, including
driver specific and network protocol issues should be
discussed on the &a.net;.&a.translators.name;Translating &os; documents and
programsA discussion list where translators of &os;
documents from English into other languages can talk
about translation methods and tools. New members are
asked to introduce themselves and mention the languages
they are interested in translating.&a.usb.name;Discussing &os; support for
USBThis is a mailing list for technical discussions
related to &os; support for USB.&a.usergroups.name;User Group Coordination
ListThis is the mailing list for the coordinators from
each of the local area Users Groups to discuss matters
with each other and a designated individual from the
Core Team. This mail list should be limited to meeting
synopsis and coordination of projects that span User
Groups.&a.virtualization.name;Discussion of various virtualization
techniques supported by &os;A list to discuss the various virtualization
techniques supported by &os;. On one hand the focus
will be on the implementation of the basic functionality
as well as adding new features. On the other hand users
will have a forum to ask for help in case of problems or
to discuss their use cases.&a.wip-status.name;&os; Work-In-Progress
StatusThis mailing list can be used by developers to
announce the creation and progress of &os; related work.
Messages will be moderated. It is suggested to send the
message "To:" a more topical &os; list and only "BCC:"
this list. This way the WIP can also be discussed on
the topical list, as no discussion is allowed on this
list.Look inside the archives for examples of suitable
messages.An editorial digest of the messages to this list
might be posted to the &os; website every few months as
part of the Status Reports
https://www.freebsd.org/news/status/.
Past reports are archived.&a.wireless.name;Discussions of 802.11 stack, tools device
driver developmentThe FreeBSD-wireless list focuses on 802.11 stack
(sys/net80211), device driver and tools development.
This includes bugs, new features and maintenance.&a.xen.name;Discussion of the &os; port to &xen;
— implementation and usageA list that focuses on the &os; &xen; port. The
anticipated traffic level is small enough that it is
intended as a forum for both technical discussions of
the implementation and design details as well as
administrative deployment issues.&a.xfce.name;XFCEThis is a forum for discussions related to bring the
XFCE environment to &os;.
This is a technical mailing list. It is for individuals
actively working on porting
XFCE to &os;, to bring up
problems or discuss alternative solutions. Individuals
interested in following the technical discussion are
also welcome.&a.zope.name;ZopeThis is a forum for discussions related to bring the
Zope environment to &os;.
This is a technical mailing list. It is for individuals
actively working on porting
Zope to &os;, to bring up
problems or discuss alternative solutions. Individuals
interested in following the technical discussion are
also welcome.Filtering on the Mailing ListsThe &os; mailing lists are filtered in multiple ways to
avoid the distribution of spam, viruses, and other unwanted
emails. The filtering actions described in this section do
not include all those used to protect the mailing
lists.Only certain types of attachments are allowed on the
mailing lists. All attachments with a MIME content type not
found in the list below will be stripped before an email is
distributed on the mailing lists.application/octet-streamapplication/pdfapplication/pgp-signatureapplication/x-pkcs7-signaturemessage/rfc822multipart/alternativemultipart/relatedmultipart/signedtext/htmltext/plaintext/x-difftext/x-patchSome of the mailing lists might allow attachments of
other MIME content types, but the above list should be
applicable for most of the mailing lists.If an email contains both an HTML and a plain text
version, the HTML version will be removed. If an email
contains only an HTML version, it will be converted to plain
text.Usenet NewsgroupsIn addition to two &os; specific newsgroups, there are
many others in which &os; is discussed or are otherwise
relevant to &os; users.BSD Specific Newsgroupscomp.unix.bsd.freebsd.announcecomp.unix.bsd.freebsd.miscde.comp.os.unix.bsd
(German)fr.comp.os.bsd
(French)Other &unix; Newsgroups of Interestcomp.unixcomp.unix.questionscomp.unix.admincomp.unix.programmercomp.unix.shellcomp.unix.misccomp.unix.bsdX Window Systemcomp.windows.xOfficial Mirrors
&chap.eresources.www.index.inc;
&chap.mirrors.lastmod.inc;
&chap.eresources.www.inc;