2e77c5abfb
re-add $ipv6_enable support for backward compatibility. From UPDATING: 1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF for IPv4. For aliases, $ifconfig_IF_aliasN should be used. Note that both variables need the "inet6" keyword at the head. Do not set $ipv6_network_interfaces manually if you do not understand what you are doing. It is not needed in most cases. $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but they are obsolete. 2. $ipv6_enable is obsolete. Use $ipv6_prefer and/or "inet6 accept_rtadv" keyword in ifconfig(8) instead. If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and all configured interfaces have "inet6 accept_rtadv" in the $ifconfig_IF_ipv6. These are for backward compatibility. 3. A new variable $ipv6_prefer has been added. If NO, IPv6 functionality of interfaces with no corresponding $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag, and the default address selection policy of ip6addrctl(8) is the IPv4-preferred one (see rc.d/ip6addrctl for more details). Note that if you want to configure IPv6 functionality on the disabled interfaces after boot, first you need to clear the flag by using ifconfig(8) like: ifconfig em0 inet6 -ifdisabled If YES, the default address selection policy is set as IPv6-preferred. The default value of $ipv6_prefer is NO. 4. If your system need to receive Router Advertisement messages, define "inet6 accept_rtadv" in $ifconfig_IF_ipv6. The rc(8) scripts automatically invoke rtsol(8) when the interface becomes UP. The Router Advertisement messages are used for SLAAC (State-Less Address AutoConfiguration).
1034 lines
40 KiB
Plaintext
1034 lines
40 KiB
Plaintext
Updating Information for FreeBSD current users
|
|
|
|
This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
|
|
See end of file for further details. For commonly done items, please see the
|
|
COMMON ITEMS: section later in the file. These instructions assume that you
|
|
basically know what you are doing. If not, then please consult the FreeBSD
|
|
handbook.
|
|
|
|
Items affecting the ports and packages system can be found in
|
|
/usr/ports/UPDATING. Please read that file before running portupgrade.
|
|
|
|
NOTE TO PEOPLE WHO THINK THAT FreeBSD 9.x IS SLOW:
|
|
FreeBSD 9.x has many debugging features turned on, in both the kernel
|
|
and userland. These features attempt to detect incorrect use of
|
|
system primitives, and encourage loud failure through extra sanity
|
|
checking and fail stop semantics. They also substantially impact
|
|
system performance. If you want to do performance measurement,
|
|
benchmarking, and optimization, you'll want to turn them off. This
|
|
includes various WITNESS- related kernel options, INVARIANTS, malloc
|
|
debugging flags in userland, and various verbose features in the
|
|
kernel. Many developers choose to disable these features on build
|
|
machines to maximize performance. (To disable malloc debugging, run
|
|
ln -s aj /etc/malloc.conf.)
|
|
|
|
20090926:
|
|
The rc.d/network_ipv6, IPv6 configuration script has been integrated
|
|
into rc.d/netif. The changes are the following:
|
|
|
|
1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF
|
|
for IPv4. For aliases, $ifconfig_IF_aliasN should be used.
|
|
Note that both variables need the "inet6" keyword at the head.
|
|
|
|
Do not set $ipv6_network_interfaces manually if you do not
|
|
understand what you are doing. It is not needed in most cases.
|
|
|
|
$ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but
|
|
they are obsolete.
|
|
|
|
2. $ipv6_enable is obsolete. Use $ipv6_prefer and
|
|
"inet6 accept_rtadv" keyword in ifconfig(8) instead.
|
|
|
|
If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and
|
|
all configured interfaces have "inet6 accept_rtadv" in the
|
|
$ifconfig_IF_ipv6. These are for backward compatibility.
|
|
|
|
3. A new variable $ipv6_prefer has been added. If NO, IPv6
|
|
functionality of interfaces with no corresponding
|
|
$ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag,
|
|
and the default address selection policy of ip6addrctl(8)
|
|
is the IPv4-preferred one (see rc.d/ip6addrctl for more details).
|
|
Note that if you want to configure IPv6 functionality on the
|
|
disabled interfaces after boot, first you need to clear the flag by
|
|
using ifconfig(8) like:
|
|
|
|
ifconfig em0 inet6 -ifdisabled
|
|
|
|
If YES, the default address selection policy is set as
|
|
IPv6-preferred.
|
|
|
|
The default value of $ipv6_prefer is NO.
|
|
|
|
4. If your system need to receive Router Advertisement messages,
|
|
define "inet6 accept_rtadv" in $ifconfig_IF_ipv6. The rc(8)
|
|
scripts automatically invoke rtsol(8) when the interface becomes
|
|
UP. The Router Advertisement messages are used for SLAAC
|
|
(State-Less Address AutoConfiguration).
|
|
|
|
20090922:
|
|
802.11s D3.03 support was committed. This is incompatible with the
|
|
previous code, which was based on D3.0.
|
|
|
|
20090912:
|
|
A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value
|
|
of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to
|
|
control whether accepting Router Advertisement messages or not.
|
|
Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and
|
|
a sysctl variable net.inet6.ip6.auto_linklocal is its default value.
|
|
The ifconfig(8) utility now supports these flags.
|
|
|
|
20090910:
|
|
ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for
|
|
mount(8) and -a option for df(1) to see them.
|
|
|
|
20090825:
|
|
The old tunable hw.bus.devctl_disable has been superseded by
|
|
hw.bus.devctl_queue. hw.bus.devctl_disable=1 in loader.conf should be
|
|
replaced by hw.bus.devctl_queue=0. The default for this new tunable
|
|
is 1000.
|
|
|
|
20090813:
|
|
Remove the option STOP_NMI. The default action is now to use NMI only
|
|
for KDB via the newly introduced function stop_cpus_hard() and
|
|
maintain stop_cpus() to just use a normal IPI_STOP on ia32 and amd64.
|
|
|
|
20090803:
|
|
The stable/8 branch created in subversion. This corresponds to the
|
|
RELENG_8 branch in CVS.
|
|
|
|
20090719:
|
|
Bump the shared library version numbers for all libraries that do not
|
|
use symbol versioning as part of the 8.0-RELEASE cycle. Bump
|
|
__FreeBSD_version to 800105.
|
|
|
|
20090714:
|
|
Due to changes in the implementation of virtual network stack support,
|
|
all network-related kernel modules must be recompiled. As this change
|
|
breaks the ABI, bump __FreeBSD_version to 800104.
|
|
|
|
20090713:
|
|
The TOE interface to the TCP syncache has been modified to remove
|
|
struct tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack.
|
|
The cxgb driver is the only TOE consumer affected by this change, and
|
|
needs to be recompiled along with the kernel. As this change breaks
|
|
the ABI, bump __FreeBSD_version to 800103.
|
|
|
|
20090712:
|
|
Padding has been added to struct tcpcb, sackhint and tcpstat in
|
|
<netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst
|
|
maintainig the ABI. However, this change breaks the ABI, so bump
|
|
__FreeBSD_version to 800102. User space tools that rely on the size of
|
|
any of these structs (e.g. sockstat) need to be recompiled.
|
|
|
|
20090630:
|
|
The NFS_LEGACYRPC option has been removed along with the old kernel
|
|
RPC implementation that this option selected. Kernel configurations
|
|
may need to be adjusted.
|
|
|
|
20090629:
|
|
The network interface device nodes at /dev/net/<interface> have been
|
|
removed. All ioctl operations can be performed the normal way using
|
|
routing sockets. The kqueue functionality can generally be replaced
|
|
with routing sockets.
|
|
|
|
20090628:
|
|
The documentation from the FreeBSD Documentation Project (Handbook,
|
|
FAQ, etc.) is now installed via packages by sysinstall(8) and under
|
|
the /usr/local/share/doc/freebsd directory instead of /usr/share/doc.
|
|
|
|
20090624:
|
|
The ABI of various structures related to the SYSV IPC API have been
|
|
changed. As a result, the COMPAT_FREEBSD[456] and COMPAT_43 kernel
|
|
options now all require COMPAT_FREEBSD7. Bump __FreeBSD_version to
|
|
800100.
|
|
|
|
20090622:
|
|
Layout of struct vnet has changed as routing related variables were
|
|
moved to their own Vimage module. Modules need to be recompiled. Bump
|
|
__FreeBSD_version to 800099.
|
|
|
|
20090619:
|
|
NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 and 1024
|
|
respectively. As long as no more than 16 groups per process are used,
|
|
no changes should be visible. When more than 16 groups are used, old
|
|
binaries may fail if they call getgroups() or getgrouplist() with
|
|
statically sized storage. Recompiling will work around this, but
|
|
applications should be modified to use dynamically allocated storage
|
|
for group arrays as POSIX.1-2008 does not cap an implementation's
|
|
number of supported groups at NGROUPS_MAX+1 as previous versions did.
|
|
|
|
NFS and portalfs mounts may also be affected as the list of groups is
|
|
truncated to 16. Users of NFS who use more than 16 groups, should
|
|
take care that negative group permissions are not used on the exported
|
|
file systems as they will not be reliable unless a GSSAPI based
|
|
authentication method is used.
|
|
|
|
20090616:
|
|
The compiling option ADAPTIVE_LOCKMGRS has been introduced. This
|
|
option compiles in the support for adaptive spinning for lockmgrs
|
|
which want to enable it. The lockinit() function now accepts the flag
|
|
LK_ADAPTIVE in order to make the lock object subject to adaptive
|
|
spinning when both held in write and read mode.
|
|
|
|
20090613:
|
|
The layout of the structure returned by IEEE80211_IOC_STA_INFO has
|
|
changed. User applications that use this ioctl need to be rebuilt.
|
|
|
|
20090611:
|
|
The layout of struct thread has changed. Kernel and modules need to
|
|
be rebuilt.
|
|
|
|
20090608:
|
|
The layout of structs ifnet, domain, protosw and vnet_net has changed.
|
|
Kernel modules need to be rebuilt. Bump __FreeBSD_version to 800097.
|
|
|
|
20090602:
|
|
window(1) has been removed from the base system. It can now be
|
|
installed from ports. The port is called misc/window.
|
|
|
|
20090601:
|
|
The way we are storing and accessing `routing table' entries has
|
|
changed. Programs reading the FIB, like netstat, need to be
|
|
re-compiled.
|
|
|
|
20090601:
|
|
A new netisr implementation has been added for FreeBSD 8. Network
|
|
file system modules, such as igmp, ipdivert, and others, should be
|
|
rebuilt.
|
|
Bump __FreeBSD_version to 800096.
|
|
|
|
20090530:
|
|
Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no
|
|
more valid.
|
|
|
|
20090530:
|
|
Add VOP_ACCESSX(9). File system modules need to be rebuilt.
|
|
Bump __FreeBSD_version to 800094.
|
|
|
|
20090529:
|
|
Add mnt_xflag field to 'struct mount'. File system modules need to be
|
|
rebuilt.
|
|
Bump __FreeBSD_version to 800093.
|
|
|
|
20090528:
|
|
The compiling option ADAPTIVE_SX has been retired while it has been
|
|
introduced the option NO_ADAPTIVE_SX which handles the reversed logic.
|
|
The KPI for sx_init_flags() changes as accepting flags:
|
|
SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag has
|
|
been introduced in order to handle the reversed logic.
|
|
Bump __FreeBSD_version to 800092.
|
|
|
|
20090527:
|
|
Add support for hierarchical jails. Remove global securelevel.
|
|
Bump __FreeBSD_version to 800091.
|
|
|
|
20090523:
|
|
The layout of struct vnet_net has changed, therefore modules
|
|
need to be rebuilt.
|
|
Bump __FreeBSD_version to 800090.
|
|
|
|
20090523:
|
|
The newly imported zic(8) produces a new format in the output. Please
|
|
run tzsetup(8) to install the newly created data to /etc/localtime.
|
|
|
|
20090520:
|
|
The sysctl tree for the usb stack has renamed from hw.usb2.* to
|
|
hw.usb.* and is now consistent again with previous releases.
|
|
|
|
20090520:
|
|
802.11 monitor mode support was revised and driver api's were changed.
|
|
Drivers dependent on net80211 now support DLT_IEEE802_11_RADIO instead
|
|
of DLT_IEEE802_11. No user-visible data structures were changed but
|
|
applications that use DLT_IEEE802_11 may require changes.
|
|
Bump __FreeBSD_version to 800088.
|
|
|
|
20090430:
|
|
The layout of the following structs has changed: sysctl_oid,
|
|
socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet,
|
|
vnet_inet6 and vnet_ipfw. Most modules need to be rebuild or
|
|
panics may be experienced. World rebuild is required for
|
|
correctly checking networking state from userland.
|
|
Bump __FreeBSD_version to 800085.
|
|
|
|
20090429:
|
|
MLDv2 and Source-Specific Multicast (SSM) have been merged
|
|
to the IPv6 stack. VIMAGE hooks are in but not yet used.
|
|
The implementation of SSM within FreeBSD's IPv6 stack closely
|
|
follows the IPv4 implementation.
|
|
|
|
For kernel developers:
|
|
|
|
* The most important changes are that the ip6_output() and
|
|
ip6_input() paths no longer take the IN6_MULTI_LOCK,
|
|
and this lock has been downgraded to a non-recursive mutex.
|
|
|
|
* As with the changes to the IPv4 stack to support SSM, filtering
|
|
of inbound multicast traffic must now be performed by transport
|
|
protocols within the IPv6 stack. This does not apply to TCP and
|
|
SCTP, however, it does apply to UDP in IPv6 and raw IPv6.
|
|
|
|
* The KPIs used by IPv6 multicast are similar to those used by
|
|
the IPv4 stack, with the following differences:
|
|
* im6o_mc_filter() is analogous to imo_multicast_filter().
|
|
* The legacy KAME entry points in6_joingroup and in6_leavegroup()
|
|
are shimmed to in6_mc_join() and in6_mc_leave() respectively.
|
|
* IN6_LOOKUP_MULTI() has been deprecated and removed.
|
|
* IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs
|
|
for MLDv1 have an additional 'timer' argument which is used to
|
|
jitter the initial membership report for the solicited-node
|
|
multicast membership on-link.
|
|
* This is not strictly needed for MLDv2, which already jitters
|
|
its report transmissions. However, the 'timer' argument is
|
|
preserved in case MLDv1 is active on the interface.
|
|
|
|
* The KAME linked-list based IPv6 membership implementation has
|
|
been refactored to use a vector similar to that used by the IPv4
|
|
stack.
|
|
Code which maintains a list of its own multicast memberships
|
|
internally, e.g. carp, has been updated to reflect the new
|
|
semantics.
|
|
|
|
* There is a known Lock Order Reversal (LOR) due to in6_setscope()
|
|
acquiring the IF_AFDATA_LOCK and being called within ip6_output().
|
|
Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an
|
|
implementation constraint which needs to be addressed in HEAD.
|
|
|
|
For application developers:
|
|
|
|
* The changes are broadly similar to those made for the IPv4
|
|
stack.
|
|
|
|
* The use of IPv4 and IPv6 multicast socket options on the same
|
|
socket, using mapped addresses, HAS NOT been tested or supported.
|
|
|
|
* There are a number of issues with the implementation of various
|
|
IPv6 multicast APIs which need to be resolved in the API surface
|
|
before the implementation is fully compatible with KAME userland
|
|
use, and these are mostly to do with interface index treatment.
|
|
|
|
* The literature available discusses the use of either the delta / ASM
|
|
API with setsockopt(2)/getsockopt(2), or the full-state / ASM API
|
|
using setsourcefilter(3)/getsourcefilter(3). For more information
|
|
please refer to RFC 3768, 'Socket Interface Extensions for
|
|
Multicast Source Filters'.
|
|
|
|
* Applications which use the published RFC 3678 APIs should be fine.
|
|
|
|
For systems administrators:
|
|
|
|
* The mtest(8) utility has been refactored to support IPv6, in
|
|
addition to IPv4. Interface addresses are no longer accepted
|
|
as arguments, their names must be used instead. The utility
|
|
will map the interface name to its first IPv4 address as
|
|
returned by getifaddrs(3).
|
|
|
|
* The ifmcstat(8) utility has also been updated to print the MLDv2
|
|
endpoint state and source filter lists via sysctl(3).
|
|
|
|
* The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable
|
|
loopback of IPv6 multicast datagrams by default; it defaults to 1
|
|
to preserve the existing behaviour. Disabling multicast loopback is
|
|
recommended for optimal system performance.
|
|
|
|
* The IPv6 MROUTING code has been changed to examine this sysctl
|
|
instead of attempting to perform a group lookup before looping
|
|
back forwarded datagrams.
|
|
|
|
Bump __FreeBSD_version to 800084.
|
|
|
|
20090422:
|
|
Implement low-level Bluetooth HCI API.
|
|
Bump __FreeBSD_version to 800083.
|
|
|
|
20090419:
|
|
The layout of struct malloc_type, used by modules to register new
|
|
memory allocation types, has changed. Most modules will need to
|
|
be rebuilt or panics may be experienced.
|
|
Bump __FreeBSD_version to 800081.
|
|
|
|
20090415:
|
|
Anticipate overflowing inp_flags - add inp_flags2.
|
|
This changes most offsets in inpcb, so checking v4 connection
|
|
state will require a world rebuild.
|
|
Bump __FreeBSD_version to 800080.
|
|
|
|
20090415:
|
|
Add an llentry to struct route and struct route_in6. Modules
|
|
embedding a struct route will need to be recompiled.
|
|
Bump __FreeBSD_version to 800079.
|
|
|
|
20090414:
|
|
The size of rt_metrics_lite and by extension rtentry has changed.
|
|
Networking administration apps will need to be recompiled.
|
|
The route command now supports show as an alias for get, weighting
|
|
of routes, sticky and nostick flags to alter the behavior of stateful
|
|
load balancing.
|
|
Bump __FreeBSD_version to 800078.
|
|
|
|
20090408:
|
|
Do not use Giant for kbdmux(4) locking. This is wrong and
|
|
apparently causing more problems than it solves. This will
|
|
re-open the issue where interrupt handlers may race with
|
|
kbdmux(4) in polling mode. Typical symptoms include (but
|
|
not limited to) duplicated and/or missing characters when
|
|
low level console functions (such as gets) are used while
|
|
interrupts are enabled (for example geli password prompt,
|
|
mountroot prompt etc.). Disabling kbdmux(4) may help.
|
|
|
|
20090407:
|
|
The size of structs vnet_net, vnet_inet and vnet_ipfw has changed;
|
|
kernel modules referencing any of the above need to be recompiled.
|
|
Bump __FreeBSD_version to 800075.
|
|
|
|
20090320:
|
|
GEOM_PART has become the default partition slicer for storage devices,
|
|
replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It
|
|
introduces some changes:
|
|
|
|
MSDOS/EBR: the devices created from MSDOS extended partition entries
|
|
(EBR) can be named differently than with GEOM_MBR and are now symlinks
|
|
to devices with offset-based names. fstabs may need to be modified.
|
|
|
|
BSD: the "geometry does not match label" warning is harmless in most
|
|
cases but it points to problems in file system misalignment with
|
|
disk geometry. The "c" partition is now implicit, covers the whole
|
|
top-level drive and cannot be (mis)used by users.
|
|
|
|
General: Kernel dumps are now not allowed to be written to devices
|
|
whose partition types indicate they are meant to be used for file
|
|
systems (or, in case of MSDOS partitions, as something else than
|
|
the "386BSD" type).
|
|
|
|
Most of these changes date approximately from 200812.
|
|
|
|
20090319:
|
|
The uscanner(4) driver has been removed from the kernel. This follows
|
|
Linux removing theirs in 2.6 and making libusb the default interface
|
|
(supported by sane).
|
|
|
|
20090319:
|
|
The multicast forwarding code has been cleaned up. netstat(1)
|
|
only relies on KVM now for printing bandwidth upcall meters.
|
|
The IPv4 and IPv6 modules are split into ip_mroute_mod and
|
|
ip6_mroute_mod respectively. The config(5) options for statically
|
|
compiling this code remain the same, i.e. 'options MROUTING'.
|
|
|
|
20090315:
|
|
Support for the IFF_NEEDSGIANT network interface flag has been
|
|
removed, which means that non-MPSAFE network device drivers are no
|
|
longer supported. In particular, if_ar, if_sr, and network device
|
|
drivers from the old (legacy) USB stack can no longer be built or
|
|
used.
|
|
|
|
20090313:
|
|
POSIX.1 Native Language Support (NLS) has been enabled in libc and
|
|
a bunch of new language catalog files have also been added.
|
|
This means that some common libc messages are now localized and
|
|
they depend on the LC_MESSAGES environmental variable.
|
|
|
|
20090313:
|
|
The k8temp(4) driver has been renamed to amdtemp(4) since
|
|
support for K10 and K11 CPU families was added.
|
|
|
|
20090309:
|
|
IGMPv3 and Source-Specific Multicast (SSM) have been merged
|
|
to the IPv4 stack. VIMAGE hooks are in but not yet used.
|
|
|
|
For kernel developers, the most important changes are that the
|
|
ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(),
|
|
and this lock has been downgraded to a non-recursive mutex.
|
|
|
|
Transport protocols (UDP, Raw IP) are now responsible for filtering
|
|
inbound multicast traffic according to group membership and source
|
|
filters. The imo_multicast_filter() KPI exists for this purpose.
|
|
Transports which do not use multicast (SCTP, TCP) already reject
|
|
multicast by default. Forwarding and receive performance may improve
|
|
as a mutex acquisition is no longer needed in the ip_input()
|
|
low-level input path. in_addmulti() and in_delmulti() are shimmed
|
|
to new KPIs which exist to support SSM in-kernel.
|
|
|
|
For application developers, it is recommended that loopback of
|
|
multicast datagrams be disabled for best performance, as this
|
|
will still cause the lock to be taken for each looped-back
|
|
datagram transmission. The net.inet.ip.mcast.loop sysctl may
|
|
be tuned to 0 to disable loopback by default; it defaults to 1
|
|
to preserve the existing behaviour.
|
|
|
|
For systems administrators, to obtain best performance with
|
|
multicast reception and multiple groups, it is always recommended
|
|
that a card with a suitably precise hash filter is used. Hash
|
|
collisions will still result in the lock being taken within the
|
|
transport protocol input path to check group membership.
|
|
|
|
If deploying FreeBSD in an environment with IGMP snooping switches,
|
|
it is recommended that the net.inet.igmp.sendlocal sysctl remain
|
|
enabled; this forces 224.0.0.0/24 group membership to be announced
|
|
via IGMP.
|
|
|
|
The size of 'struct igmpstat' has changed; netstat needs to be
|
|
recompiled to reflect this.
|
|
Bump __FreeBSD_version to 800070.
|
|
|
|
20090309:
|
|
libusb20.so.1 is now installed as libusb.so.1 and the ports system
|
|
updated to use it. This requires a buildworld/installworld in order to
|
|
update the library and dependencies (usbconfig, etc). Its advisable to
|
|
rebuild all ports which uses libusb. More specific directions are given
|
|
in the ports collection UPDATING file. Any /etc/libmap.conf entries for
|
|
libusb are no longer required and can be removed.
|
|
|
|
20090302:
|
|
A workaround is committed to allow the creation of System V shared
|
|
memory segment of size > 2 GB on the 64-bit architectures.
|
|
Due to a limitation of the existing ABI, the shm_segsz member
|
|
of the struct shmid_ds, returned by shmctl(IPC_STAT) call is
|
|
wrong for large segments. Note that limits must be explicitly
|
|
raised to allow such segments to be created.
|
|
|
|
20090301:
|
|
The layout of struct ifnet has changed, requiring a rebuild of all
|
|
network device driver modules.
|
|
|
|
20090227:
|
|
The /dev handling for the new USB stack has changed, a
|
|
buildworld/installworld is required for libusb20.
|
|
|
|
20090223:
|
|
The new USB2 stack has now been permanently moved in and all kernel and
|
|
module names reverted to their previous values (eg, usb, ehci, ohci,
|
|
ums, ...). The old usb stack can be compiled in by prefixing the name
|
|
with the letter 'o', the old usb modules have been removed.
|
|
Updating entry 20090216 for xorg and 20090215 for libmap may still
|
|
apply.
|
|
|
|
20090217:
|
|
The rc.conf(5) option if_up_delay has been renamed to
|
|
defaultroute_delay to better reflect its purpose. If you have
|
|
customized this setting in /etc/rc.conf you need to update it to
|
|
use the new name.
|
|
|
|
20090216:
|
|
xorg 7.4 wants to configure its input devices via hald which does not
|
|
yet work with USB2. If the keyboard/mouse does not work in xorg then
|
|
add
|
|
Option "AllowEmptyInput" "off"
|
|
to your ServerLayout section. This will cause X to use the configured
|
|
kbd and mouse sections from your xorg.conf.
|
|
|
|
20090215:
|
|
The GENERIC kernels for all architectures now default to the new USB2
|
|
stack. No kernel config options or code have been removed so if a
|
|
problem arises please report it and optionally revert to the old USB
|
|
stack. If you are loading USB kernel modules or have a custom kernel
|
|
that includes GENERIC then ensure that usb names are also changed over,
|
|
eg uftdi -> usb2_serial_ftdi.
|
|
|
|
Older programs linked against the ports libusb 0.1 need to be
|
|
redirected to the new stack's libusb20. /etc/libmap.conf can
|
|
be used for this:
|
|
# Map old usb library to new one for usb2 stack
|
|
libusb-0.1.so.8 libusb20.so.1
|
|
|
|
20090203:
|
|
The ichsmb(4) driver has been changed to require SMBus slave
|
|
addresses be left-justified (xxxxxxx0b) rather than right-justified.
|
|
All of the other SMBus controller drivers require left-justified
|
|
slave addresses, so this change makes all the drivers provide the
|
|
same interface.
|
|
|
|
20090201:
|
|
INET6 statistics (struct ip6stat) was updated.
|
|
netstat(1) needs to be recompiled.
|
|
|
|
20090119:
|
|
NTFS has been removed from GENERIC kernel on amd64 to match
|
|
GENERIC on i386. Should not cause any issues since mount_ntfs(8)
|
|
will load ntfs.ko module automatically when NTFS support is
|
|
actually needed, unless ntfs.ko is not installed or security
|
|
level prohibits loading kernel modules. If either is the case,
|
|
"options NTFS" has to be added into kernel config.
|
|
|
|
20090115:
|
|
TCP Appropriate Byte Counting (RFC 3465) support added to kernel.
|
|
New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to
|
|
800061. User space tools that rely on the size of struct tcpcb in
|
|
tcp_var.h (e.g. sockstat) need to be recompiled.
|
|
|
|
20081225:
|
|
ng_tty(4) module updated to match the new TTY subsystem.
|
|
Due to API change, user-level applications must be updated.
|
|
New API support added to mpd5 CVS and expected to be present
|
|
in next mpd5.3 release.
|
|
|
|
20081219:
|
|
With __FreeBSD_version 800060 the makefs tool is part of
|
|
the base system (it was a port).
|
|
|
|
20081216:
|
|
The afdata and ifnet locks have been changed from mutexes to
|
|
rwlocks, network modules will need to be re-compiled.
|
|
|
|
20081214:
|
|
__FreeBSD_version 800059 incorporates the new arp-v2 rewrite.
|
|
RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated.
|
|
The new code reduced struct rtentry{} by 16 bytes on 32-bit
|
|
architecture and 40 bytes on 64-bit architecture. The userland
|
|
applications "arp" and "ndp" have been updated accordingly.
|
|
The output from "netstat -r" shows only routing entries and
|
|
none of the L2 information.
|
|
|
|
20081130:
|
|
__FreeBSD_version 800057 marks the switchover from the
|
|
binary ath hal to source code. Users must add the line:
|
|
|
|
options AH_SUPPORT_AR5416
|
|
|
|
to their kernel config files when specifying:
|
|
|
|
device ath_hal
|
|
|
|
The ath_hal module no longer exists; the code is now compiled
|
|
together with the driver in the ath module. It is now
|
|
possible to tailor chip support (i.e. reduce the set of chips
|
|
and thereby the code size); consult ath_hal(4) for details.
|
|
|
|
20081121:
|
|
__FreeBSD_version 800054 adds memory barriers to
|
|
<machine/atomic.h>, new interfaces to ifnet to facilitate
|
|
multiple hardware transmit queues for cards that support
|
|
them, and a lock-less ring-buffer implementation to
|
|
enable drivers to more efficiently manage queueing of
|
|
packets.
|
|
|
|
20081117:
|
|
A new version of ZFS (version 13) has been merged to -HEAD.
|
|
This version has zpool attribute "listsnapshots" off by
|
|
default, which means "zfs list" does not show snapshots,
|
|
and is the same as Solaris behavior.
|
|
|
|
20081028:
|
|
dummynet(4) ABI has changed. ipfw(8) needs to be recompiled.
|
|
|
|
20081009:
|
|
The uhci, ohci, ehci and slhci USB Host controller drivers have
|
|
been put into separate modules. If you load the usb module
|
|
separately through loader.conf you will need to load the
|
|
appropriate *hci module as well. E.g. for a UHCI-based USB 2.0
|
|
controller add the following to loader.conf:
|
|
|
|
uhci_load="YES"
|
|
ehci_load="YES"
|
|
|
|
20081009:
|
|
The ABI used by the PMC toolset has changed. Please keep
|
|
userland (libpmc(3)) and the kernel module (hwpmc(4)) in
|
|
sync.
|
|
|
|
20080820:
|
|
The TTY subsystem of the kernel has been replaced by a new
|
|
implementation, which provides better scalability and an
|
|
improved driver model. Most common drivers have been migrated to
|
|
the new TTY subsystem, while others have not. The following
|
|
drivers have not yet been ported to the new TTY layer:
|
|
|
|
PCI/ISA:
|
|
cy, digi, rc, rp, sio
|
|
|
|
USB:
|
|
ubser, ucycom
|
|
|
|
Line disciplines:
|
|
ng_h4, ng_tty, ppp, sl, snp
|
|
|
|
Adding these drivers to your kernel configuration file shall
|
|
cause compilation to fail.
|
|
|
|
20080818:
|
|
ntpd has been upgraded to 4.2.4p5.
|
|
|
|
20080801:
|
|
OpenSSH has been upgraded to 5.1p1.
|
|
|
|
For many years, FreeBSD's version of OpenSSH preferred DSA
|
|
over RSA for host and user authentication keys. With this
|
|
upgrade, we've switched to the vendor's default of RSA over
|
|
DSA. This may cause upgraded clients to warn about unknown
|
|
host keys even for previously known hosts. Users should
|
|
follow the usual procedure for verifying host keys before
|
|
accepting the RSA key.
|
|
|
|
This can be circumvented by setting the "HostKeyAlgorithms"
|
|
option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh
|
|
command line.
|
|
|
|
Please note that the sequence of keys offered for
|
|
authentication has been changed as well. You may want to
|
|
specify IdentityFile in a different order to revert this
|
|
behavior.
|
|
|
|
20080713:
|
|
The sio(4) driver has been removed from the i386 and amd64
|
|
kernel configuration files. This means uart(4) is now the
|
|
default serial port driver on those platforms as well.
|
|
|
|
To prevent collisions with the sio(4) driver, the uart(4) driver
|
|
uses different names for its device nodes. This means the
|
|
onboard serial port will now most likely be called "ttyu0"
|
|
instead of "ttyd0". You may need to reconfigure applications to
|
|
use the new device names.
|
|
|
|
When using the serial port as a boot console, be sure to update
|
|
/boot/device.hints and /etc/ttys before booting the new kernel.
|
|
If you forget to do so, you can still manually specify the hints
|
|
at the loader prompt:
|
|
|
|
set hint.uart.0.at="isa"
|
|
set hint.uart.0.port="0x3F8"
|
|
set hint.uart.0.flags="0x10"
|
|
set hint.uart.0.irq="4"
|
|
boot -s
|
|
|
|
20080609:
|
|
The gpt(8) utility has been removed. Use gpart(8) to partition
|
|
disks instead.
|
|
|
|
20080603:
|
|
The version that Linuxulator emulates was changed from 2.4.2
|
|
to 2.6.16. If you experience any problems with Linux binaries
|
|
please try to set sysctl compat.linux.osrelease to 2.4.2 and
|
|
if it fixes the problem contact emulation mailing list.
|
|
|
|
20080525:
|
|
ISDN4BSD (I4B) was removed from the src tree. You may need to
|
|
update a your kernel configuration and remove relevant entries.
|
|
|
|
20080509:
|
|
I have checked in code to support multiple routing tables.
|
|
See the man pages setfib(1) and setfib(2).
|
|
This is a hopefully backwards compatible version,
|
|
but to make use of it you need to compile your kernel
|
|
with options ROUTETABLES=2 (or more up to 16).
|
|
|
|
20080420:
|
|
The 802.11 wireless support was redone to enable multi-bss
|
|
operation on devices that are capable. The underlying device
|
|
is no longer used directly but instead wlanX devices are
|
|
cloned with ifconfig. This requires changes to rc.conf files.
|
|
For example, change:
|
|
ifconfig_ath0="WPA DHCP"
|
|
to
|
|
wlans_ath0=wlan0
|
|
ifconfig_wlan0="WPA DHCP"
|
|
see rc.conf(5) for more details. In addition, mergemaster of
|
|
/etc/rc.d is highly recommended. Simultaneous update of userland
|
|
and kernel wouldn't hurt either.
|
|
|
|
As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta
|
|
modules were merged into the base wlan module. All references
|
|
to these modules (e.g. in kernel config files) must be removed.
|
|
|
|
20080408:
|
|
psm(4) has gained write(2) support in native operation level.
|
|
Arbitrary commands can be written to /dev/psm%d and status can
|
|
be read back from it. Therefore, an application is responsible
|
|
for status validation and error recovery. It is a no-op in
|
|
other operation levels.
|
|
|
|
20080312:
|
|
Support for KSE threading has been removed from the kernel. To
|
|
run legacy applications linked against KSE libmap.conf may
|
|
be used. The following libmap.conf may be used to ensure
|
|
compatibility with any prior release:
|
|
|
|
libpthread.so.1 libthr.so.1
|
|
libpthread.so.2 libthr.so.2
|
|
libkse.so.3 libthr.so.3
|
|
|
|
20080301:
|
|
The layout of struct vmspace has changed. This affects libkvm
|
|
and any executables that link against libkvm and use the
|
|
kvm_getprocs() function. In particular, but not exclusively,
|
|
it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1).
|
|
The effects are minimal, but it's advisable to upgrade world
|
|
nonetheless.
|
|
|
|
20080229:
|
|
The latest em driver no longer has support in it for the
|
|
82575 adapter, this is now moved to the igb driver. The
|
|
split was done to make new features that are incompatible
|
|
with older hardware easier to do.
|
|
|
|
20080220:
|
|
The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4),
|
|
likewise the kernel option is now GEOM_LINUX_LVM.
|
|
|
|
20080211:
|
|
The default NFS mount mode has changed from UDP to TCP for
|
|
increased reliability. If you rely on (insecurely) NFS
|
|
mounting across a firewall you may need to update your
|
|
firewall rules.
|
|
|
|
20080208:
|
|
Belatedly note the addition of m_collapse for compacting
|
|
mbuf chains.
|
|
|
|
20080126:
|
|
The fts(3) structures have been changed to use adequate
|
|
integer types for their members and so to be able to cope
|
|
with huge file trees. The old fts(3) ABI is preserved
|
|
through symbol versioning in libc, so third-party binaries
|
|
using fts(3) should still work, although they will not take
|
|
advantage of the extended types. At the same time, some
|
|
third-party software might fail to build after this change
|
|
due to unportable assumptions made in its source code about
|
|
fts(3) structure members. Such software should be fixed
|
|
by its vendor or, in the worst case, in the ports tree.
|
|
FreeBSD_version 800015 marks this change for the unlikely
|
|
case that a portable fix is impossible.
|
|
|
|
20080123:
|
|
To upgrade to -current after this date, you must be running
|
|
FreeBSD not older than 6.0-RELEASE. Upgrading to -current
|
|
from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems.
|
|
|
|
20071128:
|
|
The ADAPTIVE_GIANT kernel option has been retired because its
|
|
functionality is the default now.
|
|
|
|
20071118:
|
|
The AT keyboard emulation of sunkbd(4) has been turned on
|
|
by default. In order to make the special symbols of the Sun
|
|
keyboards driven by sunkbd(4) work under X these now have
|
|
to be configured the same way as Sun USB keyboards driven
|
|
by ukbd(4) (which also does AT keyboard emulation), f.e.:
|
|
|
|
Option "XkbLayout" "us"
|
|
Option "XkbRules" "xorg"
|
|
Option "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us"
|
|
|
|
20071024:
|
|
It has been decided that it is desirable to provide ABI
|
|
backwards compatibility to the FreeBSD 4/5/6 versions of the
|
|
PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was
|
|
broken with the introduction of PCI domain support (see the
|
|
20070930 entry). Unfortunately, this required the ABI of
|
|
PCIOCGETCONF to be broken again in order to be able to
|
|
provide backwards compatibility to the old version of that
|
|
IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled
|
|
again. As for prominent ports this affects neither pciutils
|
|
nor xorg-server this time, the hal port needs to be rebuilt
|
|
however.
|
|
|
|
20071020:
|
|
The misnamed kthread_create() and friends have been renamed
|
|
to kproc_create() etc. Many of the callers already
|
|
used kproc_start()..
|
|
I will return kthread_create() and friends in a while
|
|
with implementations that actually create threads, not procs.
|
|
Renaming corresponds with version 800002.
|
|
|
|
20071010:
|
|
RELENG_7 branched.
|
|
|
|
COMMON ITEMS:
|
|
|
|
General Notes
|
|
-------------
|
|
Avoid using make -j when upgrading. While generally safe, there are
|
|
sometimes problems using -j to upgrade. If your upgrade fails with
|
|
-j, please try again wtihout -j. From time to time in the past there
|
|
have been problems using -j with buildworld and/or installworld. This
|
|
is especially true when upgrading between "distant" versions (eg one
|
|
that cross a major release boundary or several minor releases, or when
|
|
several months have passed on the -current branch).
|
|
|
|
Sometimes, obscure build problems are the result of environment
|
|
poisoning. This can happen because the make utility reads its
|
|
environment when searching for values for global variables. To run
|
|
your build attempts in an "environmental clean room", prefix all make
|
|
commands with 'env -i '. See the env(1) manual page for more details.
|
|
|
|
When upgrading from one major version to another it is generally best
|
|
to upgrade to the latest code in the currently installed branch first,
|
|
then do an upgrade to the new branch. This is the best-tested upgrade
|
|
path, and has the highest probability of being successful. Please try
|
|
this approach before reporting problems with a major version upgrade.
|
|
|
|
To build a kernel
|
|
-----------------
|
|
If you are updating from a prior version of FreeBSD (even one just
|
|
a few days old), you should follow this procedure. It is the most
|
|
failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
|
|
|
|
make kernel-toolchain
|
|
make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
|
|
make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
|
|
|
|
To test a kernel once
|
|
---------------------
|
|
If you just want to boot a kernel once (because you are not sure
|
|
if it works, or if you want to boot a known bad kernel to provide
|
|
debugging information) run
|
|
make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
|
|
nextboot -k testkernel
|
|
|
|
To just build a kernel when you know that it won't mess you up
|
|
--------------------------------------------------------------
|
|
This assumes you are already running a CURRENT system. Replace
|
|
${arch} with the architecture of your machine (e.g. "i386",
|
|
"arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc).
|
|
|
|
cd src/sys/${arch}/conf
|
|
config KERNEL_NAME_HERE
|
|
cd ../compile/KERNEL_NAME_HERE
|
|
make depend
|
|
make
|
|
make install
|
|
|
|
If this fails, go to the "To build a kernel" section.
|
|
|
|
To rebuild everything and install it on the current system.
|
|
-----------------------------------------------------------
|
|
# Note: sometimes if you are running current you gotta do more than
|
|
# is listed here if you are upgrading from a really old current.
|
|
|
|
<make sure you have good level 0 dumps>
|
|
make buildworld
|
|
make kernel KERNCONF=YOUR_KERNEL_HERE
|
|
[1]
|
|
<reboot in single user> [3]
|
|
mergemaster -p [5]
|
|
make installworld
|
|
make delete-old
|
|
mergemaster [4]
|
|
<reboot>
|
|
|
|
|
|
To cross-install current onto a separate partition
|
|
--------------------------------------------------
|
|
# In this approach we use a separate partition to hold
|
|
# current's root, 'usr', and 'var' directories. A partition
|
|
# holding "/", "/usr" and "/var" should be about 2GB in
|
|
# size.
|
|
|
|
<make sure you have good level 0 dumps>
|
|
<boot into -stable>
|
|
make buildworld
|
|
make buildkernel KERNCONF=YOUR_KERNEL_HERE
|
|
<maybe newfs current's root partition>
|
|
<mount current's root partition on directory ${CURRENT_ROOT}>
|
|
make installworld DESTDIR=${CURRENT_ROOT}
|
|
make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
|
|
make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
|
|
cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd
|
|
<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
|
|
<reboot into current>
|
|
<do a "native" rebuild/install as described in the previous section>
|
|
<maybe install compatibility libraries from ports/misc/compat*>
|
|
<reboot>
|
|
|
|
|
|
To upgrade in-place from 8.x-stable to current
|
|
----------------------------------------------
|
|
<make sure you have good level 0 dumps>
|
|
make buildworld [9]
|
|
make kernel KERNCONF=YOUR_KERNEL_HERE [8]
|
|
[1]
|
|
<reboot in single user> [3]
|
|
mergemaster -p [5]
|
|
make installworld
|
|
make delete-old
|
|
mergemaster -i [4]
|
|
<reboot>
|
|
|
|
Make sure that you've read the UPDATING file to understand the
|
|
tweaks to various things you need. At this point in the life
|
|
cycle of current, things change often and you are on your own
|
|
to cope. The defaults can also change, so please read ALL of
|
|
the UPDATING entries.
|
|
|
|
Also, if you are tracking -current, you must be subscribed to
|
|
freebsd-current@freebsd.org. Make sure that before you update
|
|
your sources that you have read and understood all the recent
|
|
messages there. If in doubt, please track -stable which has
|
|
much fewer pitfalls.
|
|
|
|
[1] If you have third party modules, such as vmware, you
|
|
should disable them at this point so they don't crash your
|
|
system on reboot.
|
|
|
|
[3] From the bootblocks, boot -s, and then do
|
|
fsck -p
|
|
mount -u /
|
|
mount -a
|
|
cd src
|
|
adjkerntz -i # if CMOS is wall time
|
|
Also, when doing a major release upgrade, it is required that
|
|
you boot into single user mode to do the installworld.
|
|
|
|
[4] Note: This step is non-optional. Failure to do this step
|
|
can result in a significant reduction in the functionality of the
|
|
system. Attempting to do it by hand is not recommended and those
|
|
that pursue this avenue should read this file carefully, as well
|
|
as the archives of freebsd-current and freebsd-hackers mailing lists
|
|
for potential gotchas.
|
|
|
|
[5] Usually this step is a noop. However, from time to time
|
|
you may need to do this if you get unknown user in the following
|
|
step. It never hurts to do it all the time. You may need to
|
|
install a new mergemaster (cd src/usr.sbin/mergemaster && make
|
|
install) after the buildworld before this step if you last updated
|
|
from current before 20020224 or from -stable before 20020408.
|
|
|
|
[8] In order to have a kernel that can run the 4.x binaries needed to
|
|
do an installworld, you must include the COMPAT_FREEBSD4 option in
|
|
your kernel. Failure to do so may leave you with a system that is
|
|
hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
|
|
required to run the 5.x binaries on more recent kernels. And so on
|
|
for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
|
|
|
|
Make sure that you merge any new devices from GENERIC since the
|
|
last time you updated your kernel config file.
|
|
|
|
[9] When checking out sources, you must include the -P flag to have
|
|
cvs prune empty directories.
|
|
|
|
If CPUTYPE is defined in your /etc/make.conf, make sure to use the
|
|
"?=" instead of the "=" assignment operator, so that buildworld can
|
|
override the CPUTYPE if it needs to.
|
|
|
|
MAKEOBJDIRPREFIX must be defined in an environment variable, and
|
|
not on the command line, or in /etc/make.conf. buildworld will
|
|
warn if it is improperly defined.
|
|
FORMAT:
|
|
|
|
This file contains a list, in reverse chronological order, of major
|
|
breakages in tracking -current. Not all things will be listed here,
|
|
and it only starts on October 16, 2004. Updating files can found in
|
|
previous releases if your system is older than this.
|
|
|
|
Copyright information:
|
|
|
|
Copyright 1998-2009 M. Warner Losh. All Rights Reserved.
|
|
|
|
Redistribution, publication, translation and use, with or without
|
|
modification, in full or in part, in any form or format of this
|
|
document are permitted without further permission from the author.
|
|
|
|
THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
|
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
|
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
Contact Warner Losh if you have any questions about your use of
|
|
this document.
|
|
|
|
$FreeBSD$
|