UPDATING revision 256198
1Updating Information for FreeBSD current users 2 3This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>. 4See end of file for further details. For commonly done items, please see the 5COMMON ITEMS: section later in the file. These instructions assume that you 6basically know what you are doing. If not, then please consult the FreeBSD 7handbook: 8 9 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html 10 11Items affecting the ports and packages system can be found in 12/usr/ports/UPDATING. Please read that file before running portupgrade. 13 14NOTE: FreeBSD has switched from gcc to clang. If you have trouble bootstrapping 15from older versions of FreeBSD, try WITHOUT_CLANG to bootstrap to the tip of 16head, and then rebuild without this option. The bootstrap process from 17older version of current is a bit fragile. 18 19NOTE TO PEOPLE WHO THINK THAT FreeBSD 10.x IS SLOW: 20 FreeBSD 10.x has many debugging features turned on, in both the kernel 21 and userland. These features attempt to detect incorrect use of 22 system primitives, and encourage loud failure through extra sanity 23 checking and fail stop semantics. They also substantially impact 24 system performance. If you want to do performance measurement, 25 benchmarking, and optimization, you'll want to turn them off. This 26 includes various WITNESS- related kernel options, INVARIANTS, malloc 27 debugging flags in userland, and various verbose features in the 28 kernel. Many developers choose to disable these features on build 29 machines to maximize performance. (To completely disable malloc 30 debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely 31 disable the most expensive debugging functionality run 32 "ln -s 'abort:false,junk:false' /etc/malloc.conf".) 33 3420130930: 35 BIND has been removed from the base system. If all you need 36 is a local resolver, simply enable and start the local_unbound 37 service instead. Otherwise, several versions of BIND are 38 available in the ports tree. 39 4020130916: 41 With the addition of unbound(8), a new unbound user is now 42 required during installworld. "mergemaster -p" can be used to 43 add the user prior to installworld, as documented in the handbook. 44 4520130911: 46 OpenSSH is now built with DNSSEC support, and will by default 47 silently trust signed SSHFP records. This can be controlled with 48 the VerifyHostKeyDNS client configuration setting. DNSSEC support 49 can be disabled entirely with the WITHOUT_LDNS option in src.conf. 50 5120130906: 52 The GNU Compiler Collection and C++ standard library (libstdc++) 53 are no longer built by default on platforms where clang is the system 54 compiler. You can enable them with the WITH_GCC and WITH_GNUCXX 55 options in src.conf. 56 5720130905: 58 The PROCDESC kernel option is now part of the GENERIC kernel 59 configuration and is required for the rwhod(8) to work. 60 If you are using custom kernel configuration, you should include 61 'options PROCDESC'. 62 6320130905: 64 The API and ABI related to the Capsicum framework was modified 65 in backward incompatible way. The userland libraries and programs 66 have to be recompiled to work with the new kernel. This includes the 67 following libraries and programs, but the whole buildworld is 68 advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl, 69 kdump, procstat, rwho, rwhod, uniq. 70 7120130903: 72 AES-NI intrinsic support has been added to gcc. The AES-NI module 73 has been updated to use this support. A new gcc is required to build 74 the aesni module on both i386 and amd64. 75 7620130821: 77 The PADLOCK_RNG and RDRAND_RNG kernel options are now devices. 78 Thus "device padlock_rng" and "device rdrand_rng" should be 79 used instead of "options PADLOCK_RNG" & "options RDRAND_RNG". 80 8120130813: 82 WITH_ICONV has been split into two feature sets. WITH_ICONV now 83 enables just the iconv* functionality and is now on by default. 84 WITH_LIBICONV_COMPAT enables the libiconv api and link time 85 compatability. Set WITHOUT_ICONV to build the old way. 86 If you have been using WITH_ICONV before, you will very likely 87 need to turn on WITH_LIBICONV_COMPAT. 88 8920130806: 90 INVARIANTS option now enables DEBUG for code with OpenSolaris and 91 Illumos origin, including ZFS. If you have INVARIANTS in your 92 kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG 93 explicitly. 94 DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS) 95 locks if WITNESS option was set. Because that generated a lot of 96 witness(9) reports and all of them were believed to be false 97 positives, this is no longer done. New option OPENSOLARIS_WITNESS 98 can be used to achieve the previous behavior. 99 10020130806: 101 Timer values in IPv6 data structures now use time_uptime instead 102 of time_second. Although this is not a user-visible functional 103 change, userland utilities which directly use them---ndp(8), 104 rtadvd(8), and rtsold(8) in the base system---need to be updated 105 to r253970 or later. 106 10720130802: 108 find -delete can now delete the pathnames given as arguments, 109 instead of only files found below them or if the pathname did 110 not contain any slashes. Formerly, the following error message 111 would result: 112 113 find: -delete: <path>: relative path potentially not safe 114 115 Deleting the pathnames given as arguments can be prevented 116 without error messages using -mindepth 1 or by changing 117 directory and passing "." as argument to find. This works in the 118 old as well as the new version of find. 119 12020130726: 121 Behavior of devfs rules path matching has been changed. 122 Pattern is now always matched against fully qualified devfs 123 path and slash characters must be explicitly matched by 124 slashes in pattern (FNM_PATHNAME). Rulesets involving devfs 125 subdirectories must be reviewed. 126 12720130716: 128 The default ARM ABI has changed to the ARM EABI. The old ABI is 129 incompatible with the ARM EABI and all programs and modules will 130 need to be rebuilt to work with a new kernel. 131 132 To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set. 133 134 NOTE: Support for the old ABI will be removed in the future and 135 users are advised to upgrade. 136 13720130709: 138 pkg_install has been disconnected from the build if you really need it 139 you should add WITH_PKGTOOLS in your src.conf(5). 140 14120130709: 142 Most of network statistics structures were changed to be able 143 keep 64-bits counters. Thus all tools, that work with networking 144 statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.) 145 14620130629: 147 Fix targets that run multiple make's to use && rather than ; 148 so that subsequent steps depend on success of previous. 149 150 NOTE: if building 'universe' with -j* on stable/8 or stable/9 151 it would be better to start the build using bmake, to avoid 152 overloading the machine. 153 15420130618: 155 Fix a bug that allowed a tracing process (e.g. gdb) to write 156 to a memory-mapped file in the traced process's address space 157 even if neither the traced process nor the tracing process had 158 write access to that file. 159 16020130615: 161 CVS has been removed from the base system. An exact copy 162 of the code is available from the devel/cvs port. 163 16420130613: 165 Some people report the following error after the switch to bmake: 166 167 make: illegal option -- J 168 usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable] 169 ... 170 *** [buildworld] Error code 2 171 172 this likely due to an old instance of make in 173 ${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE}) 174 which src/Makefile will use that blindly, if it exists, so if 175 you see the above error: 176 177 rm -rf `make -V MAKEPATH` 178 179 should resolve it. 180 18120130516: 182 Use bmake by default. 183 Whereas before one could choose to build with bmake via 184 -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old 185 make. The goal is to remove these knobs for 10-RELEASE. 186 187 It is worth noting that bmake (like gmake) treats the command 188 line as the unit of failure, rather than statements within the 189 command line. Thus '(cd some/where && dosomething)' is safer 190 than 'cd some/where; dosomething'. The '()' allows consistent 191 behavior in parallel build. 192 19320130429: 194 Fix a bug that allows NFS clients to issue READDIR on files. 195 19620130426: 197 The WITHOUT_IDEA option has been removed because 198 the IDEA patent expired. 199 20020130426: 201 The sysctl which controls TRIM support under ZFS has been renamed 202 from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been 203 enabled by default. 204 20520130425: 206 The mergemaster command now uses the default MAKEOBJDIRPREFIX 207 rather than creating it's own in the temporary directory in 208 order allow access to bootstrapped versions of tools such as 209 install and mtree. When upgrading from version of FreeBSD where 210 the install command does not support -l, you will need to 211 install a new mergemaster command if mergemaster -p is required. 212 This can be accomplished with the command (cd src/usr.sbin/mergemaster 213 && make install). 214 21520130404: 216 Legacy ATA stack, disabled and replaced by new CAM-based one since 217 FreeBSD 9.0, completely removed from the sources. Kernel modules 218 atadisk and atapi*, user-level tools atacontrol and burncd are 219 removed. Kernel option `options ATA_CAM` is now permanently enabled 220 and removed. 221 22220130319: 223 SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2) 224 and socketpair(2). Software, in particular Kerberos, may 225 automatically detect and use these during building. The resulting 226 binaries will not work on older kernels. 227 22820130308: 229 CTL_DISABLE has also been added to the sparc64 GENERIC (for further 230 information, see the respective 20130304 entry). 231 23220130304: 233 Recent commits to callout(9) changed the size of struct callout, 234 so the KBI is probably heavily disturbed. Also, some functions 235 in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced 236 by macros. Every kernel module using it won't load, so rebuild 237 is requested. 238 239 The ctl device has been re-enabled in GENERIC for i386 and amd64, 240 but does not initialize by default (because of the new CTL_DISABLE 241 option) to save memory. To re-enable it, remove the CTL_DISABLE 242 option from the kernel config file or set kern.cam.ctl.disable=0 243 in /boot/loader.conf. 244 24520130301: 246 The ctl device has been disabled in GENERIC for i386 and amd64. 247 This was done due to the extra memory being allocated at system 248 initialisation time by the ctl driver which was only used if 249 a CAM target device was created. This makes a FreeBSD system 250 unusable on 128MB or less of RAM. 251 25220130208: 253 A new compression method (lz4) has been merged to -HEAD. Please 254 refer to zpool-features(7) for more information. 255 256 Please refer to the "ZFS notes" section of this file for information 257 on upgrading boot ZFS pools. 258 25920130129: 260 A BSD-licensed patch(1) variant has been added and is installed 261 as bsdpatch, being the GNU version the default patch. 262 To inverse the logic and use the BSD-licensed one as default, 263 while having the GNU version installed as gnupatch, rebuild 264 and install world with the WITH_BSD_PATCH knob set. 265 26620130121: 267 Due to the use of the new -l option to install(1) during build 268 and install, you must take care not to directly set the INSTALL 269 make variable in your /etc/make.conf, /etc/src.conf, or on the 270 command line. If you wish to use the -C flag for all installs 271 you may be able to add INSTALL+=-C to /etc/make.conf or 272 /etc/src.conf. 273 27420130118: 275 The install(1) option -M has changed meaning and now takes an 276 argument that is a file or path to append logs to. In the 277 unlikely event that -M was the last option on the command line 278 and the command line contained at least two files and a target 279 directory the first file will have logs appended to it. The -M 280 option served little practical purpose in the last decade so its 281 use is expected to be extremely rare. 282 28320121223: 284 After switching to Clang as the default compiler some users of ZFS 285 on i386 systems started to experience stack overflow kernel panics. 286 Please consider using 'options KSTACK_PAGES=4' in such configurations. 287 28820121222: 289 GEOM_LABEL now mangles label names read from file system metadata. 290 Mangling affect labels containing spaces, non-printable characters, 291 '%' or '"'. Device names in /etc/fstab and other places may need to 292 be updated. 293 29420121217: 295 By default, only the 10 most recent kernel dumps will be saved. To 296 restore the previous behaviour (no limit on the number of kernel dumps 297 stored in the dump directory) add the following line to /etc/rc.conf: 298 299 savecore_flags="" 300 30120121201: 302 With the addition of auditdistd(8), a new auditdistd user is now 303 required during installworld. "mergemaster -p" can be used to 304 add the user prior to installworld, as documented in the handbook. 305 30620121117: 307 The sin6_scope_id member variable in struct sockaddr_in6 is now 308 filled by the kernel before passing the structure to the userland via 309 sysctl or routing socket. This means the KAME-specific embedded scope 310 id in sin6_addr.s6_addr[2] is always cleared in userland application. 311 This behavior can be controlled by net.inet6.ip6.deembed_scopeid. 312 __FreeBSD_version is bumped to 1000025. 313 31420121105: 315 On i386 and amd64 systems WITH_CLANG_IS_CC is now the default. 316 This means that the world and kernel will be compiled with clang 317 and that clang will be installed as /usr/bin/cc, /usr/bin/c++, 318 and /usr/bin/cpp. To disable this behavior and revert to building 319 with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions 320 of current may need to bootstrap WITHOUT_CLANG first if the clang 321 build fails (its compatibility window doesn't extend to the 9 stable 322 branch point). 323 32420121102: 325 The IPFIREWALL_FORWARD kernel option has been removed. Its 326 functionality now turned on by default. 327 32820121023: 329 The ZERO_COPY_SOCKET kernel option has been removed and 330 split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP. 331 NB: SOCKET_SEND_COW uses the VM page based copy-on-write 332 mechanism which is not safe and may result in kernel crashes. 333 NB: The SOCKET_RECV_PFLIP mechanism is useless as no current 334 driver supports disposeable external page sized mbuf storage. 335 Proper replacements for both zero-copy mechanisms are under 336 consideration and will eventually lead to complete removal 337 of the two kernel options. 338 33920121023: 340 The IPv4 network stack has been converted to network byte 341 order. The following modules need to be recompiled together 342 with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4), 343 pf(4), ipfw(4), ng_ipfw(4), stf(4). 344 34520121022: 346 Support for non-MPSAFE filesystems was removed from VFS. The 347 VFS_VERSION was bumped, all filesystem modules shall be 348 recompiled. 349 35020121018: 351 All the non-MPSAFE filesystems have been disconnected from 352 the build. The full list includes: codafs, hpfs, ntfs, nwfs, 353 portalfs, smbfs, xfs. 354 35520121016: 356 The interface cloning API and ABI has changed. The following 357 modules need to be recompiled together with kernel: 358 ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4), 359 vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4), 360 faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4). 361 36220121015: 363 The sdhci driver was split in two parts: sdhci (generic SD Host 364 Controller logic) and sdhci_pci (actual hardware driver). 365 No kernel config modifications are required, but if you 366 load sdhc as a module you must switch to sdhci_pci instead. 367 36820121014: 369 Import the FUSE kernel and userland support into base system. 370 37120121013: 372 The GNU sort(1) program has been removed since the BSD-licensed 373 sort(1) has been the default for quite some time and no serious 374 problems have been reported. The corresponding WITH_GNU_SORT 375 knob has also gone. 376 37720121006: 378 The pfil(9) API/ABI for AF_INET family has been changed. Packet 379 filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled 380 with new kernel. 381 38220121001: 383 The net80211(4) ABI has been changed to allow for improved driver 384 PS-POLL and power-save support. All wireless drivers need to be 385 recompiled to work with the new kernel. 386 38720120913: 388 The random(4) support for the VIA hardware random number 389 generator (`PADLOCK') is no longer enabled unconditionally. 390 Add the padlock_rng device in the custom kernel config if 391 needed. The GENERIC kernels on i386 and amd64 do include the 392 device, so the change only affects the custom kernel 393 configurations. 394 39520120908: 396 The pf(4) packet filter ABI has been changed. pfctl(8) and 397 snmp_pf module need to be recompiled to work with new kernel. 398 39920120828: 400 A new ZFS feature flag "com.delphix:empty_bpobj" has been merged 401 to -HEAD. Pools that have empty_bpobj in active state can not be 402 imported read-write with ZFS implementations that do not support 403 this feature. For more information read the zpool-features(5) 404 manual page. 405 40620120727: 407 The sparc64 ZFS loader has been changed to no longer try to auto- 408 detect ZFS providers based on diskN aliases but now requires these 409 to be explicitly listed in the OFW boot-device environment variable. 410 41120120712: 412 The OpenSSL has been upgraded to 1.0.1c. Any binaries requiring 413 libcrypto.so.6 or libssl.so.6 must be recompiled. Also, there are 414 configuration changes. Make sure to merge /etc/ssl/openssl.cnf. 415 41620120712: 417 The following sysctls and tunables have been renamed for consistency 418 with other variables: 419 kern.cam.da.da_send_ordered -> kern.cam.da.send_ordered 420 kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered 421 42220120628: 423 The sort utility has been replaced with BSD sort. For now, GNU sort 424 is also available as "gnusort" or the default can be set back to 425 GNU sort by setting WITH_GNU_SORT. In this case, BSD sort will be 426 installed as "bsdsort". 427 42820120611: 429 A new version of ZFS (pool version 5000) has been merged to -HEAD. 430 Starting with this version the old system of ZFS pool versioning 431 is superseded by "feature flags". This concept enables forward 432 compatibility against certain future changes in functionality of ZFS 433 pools. The first read-only compatible "feature flag" for ZFS pools 434 is named "com.delphix:async_destroy". For more information 435 read the new zpool-features(5) manual page. 436 Please refer to the "ZFS notes" section of this file for information 437 on upgrading boot ZFS pools. 438 43920120417: 440 The malloc(3) implementation embedded in libc now uses sources imported 441 as contrib/jemalloc. The most disruptive API change is to 442 /etc/malloc.conf. If your system has an old-style /etc/malloc.conf, 443 delete it prior to installworld, and optionally re-create it using the 444 new format after rebooting. See malloc.conf(5) for details 445 (specifically the TUNING section and the "opt.*" entries in the MALLCTL 446 NAMESPACE section). 447 44820120328: 449 Big-endian MIPS TARGET_ARCH values no longer end in "eb". mips64eb 450 is now spelled mips64. mipsn32eb is now spelled mipsn32. mipseb is 451 now spelled mips. This is to aid compatibility with third-party 452 software that expects this naming scheme in uname(3). Little-endian 453 settings are unchanged. If you are updating a big-endian mips64 machine 454 from before this change, you may need to set MACHINE_ARCH=mips64 in 455 your environment before the new build system will recognize your machine. 456 45720120306: 458 Disable by default the option VFS_ALLOW_NONMPSAFE for all supported 459 platforms. 460 46120120229: 462 Now unix domain sockets behave "as expected" on nullfs(5). Previously 463 nullfs(5) did not pass through all behaviours to the underlying layer, 464 as a result if we bound to a socket on the lower layer we could connect 465 only to the lower path; if we bound to the upper layer we could connect 466 only to the upper path. The new behavior is one can connect to both the 467 lower and the upper paths regardless what layer path one binds to. 468 46920120211: 470 The getifaddrs upgrade path broken with 20111215 has been restored. 471 If you have upgraded in between 20111215 and 20120209 you need to 472 recompile libc again with your kernel. You still need to recompile 473 world to be able to configure CARP but this restriction already 474 comes from 20111215. 475 47620120114: 477 The set_rcvar() function has been removed from /etc/rc.subr. All 478 base and ports rc.d scripts have been updated, so if you have a 479 port installed with a script in /usr/local/etc/rc.d you can either 480 hand-edit the rcvar= line, or reinstall the port. 481 482 An easy way to handle the mass-update of /etc/rc.d: 483 rm /etc/rc.d/* && mergemaster -i 484 48520120109: 486 panic(9) now stops other CPUs in the SMP systems, disables interrupts 487 on the current CPU and prevents other threads from running. 488 This behavior can be reverted using the kern.stop_scheduler_on_panic 489 tunable/sysctl. 490 The new behavior can be incompatible with kern.sync_on_panic. 491 49220111215: 493 The carp(4) facility has been changed significantly. Configuration 494 of the CARP protocol via ifconfig(8) has changed, as well as format 495 of CARP events submitted to devd(8) has changed. See manual pages 496 for more information. The arpbalance feature of carp(4) is currently 497 not supported anymore. 498 499 Size of struct in_aliasreq, struct in6_aliasreq has changed. User 500 utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8), 501 need to be recompiled. 502 50320111122: 504 The acpi_wmi(4) status device /dev/wmistat has been renamed to 505 /dev/wmistat0. 506 50720111108: 508 The option VFS_ALLOW_NONMPSAFE option has been added in order to 509 explicitely support non-MPSAFE filesystems. 510 It is on by default for all supported platform at this present 511 time. 512 51320111101: 514 The broken amd(4) driver has been replaced with esp(4) in the amd64, 515 i386 and pc98 GENERIC kernel configuration files. 516 51720110930: 518 sysinstall has been removed 519 52020110923: 521 The stable/9 branch created in subversion. This corresponds to the 522 RELENG_9 branch in CVS. 523 52420110913: 525 This commit modifies vfs_register() so that it uses a hash 526 calculation to set vfc_typenum, which is enabled by default. 527 The first time a system is booted after this change, the 528 vfc_typenum values will change for all file systems. The 529 main effect of this is a change to the NFS server file handles 530 for file systems that use vfc_typenum in their fsid, such as ZFS. 531 It will, however, prevent vfc_typenum from changing when file 532 systems are loaded in a different order for subsequent reboots. 533 To disable this, you can set vfs.typenumhash=0 in /boot/loader.conf 534 until you are ready to remount all NFS clients after a reboot. 535 53620110828: 537 Bump the shared library version numbers for libraries that 538 do not use symbol versioning, have changed the ABI compared 539 to stable/8 and which shared library version was not bumped. 540 Done as part of 9.0-RELEASE cycle. 541 54220110815: 543 During the merge of Capsicum features, the fget(9) KPI was modified. 544 This may require the rebuilding of out-of-tree device drivers -- 545 issues have been reported specifically with the nVidia device driver. 546 __FreeBSD_version is bumped to 900041. 547 548 Also, there is a period between 20110811 and 20110814 where the 549 special devices /dev/{stdin,stdout,stderr} did not work correctly. 550 Building world from a kernel during that window may not work. 551 55220110628: 553 The packet filter (pf) code has been updated to OpenBSD 4.5. 554 You need to update userland tools to be in sync with kernel. 555 This update breaks backward compatibility with earlier pfsync(4) 556 versions. Care must be taken when updating redundant firewall setups. 557 55820110608: 559 The following sysctls and tunables are retired on x86 platforms: 560 machdep.hlt_cpus 561 machdep.hlt_logical_cpus 562 The following sysctl is retired: 563 machdep.hyperthreading_allowed 564 The sysctls were supposed to provide a way to dynamically offline and 565 online selected CPUs on x86 platforms, but the implementation has not 566 been reliable especially with SCHED_ULE scheduler. 567 machdep.hyperthreading_allowed tunable is still available to ignore 568 hyperthreading CPUs at OS level. 569 Individual CPUs can be disabled using hint.lapic.X.disabled tunable, 570 where X is an APIC ID of a CPU. Be advised, though, that disabling 571 CPUs in non-uniform fashion will result in non-uniform topology and 572 may lead to sub-optimal system performance with SCHED_ULE, which is 573 a default scheduler. 574 57520110607: 576 cpumask_t type is retired and cpuset_t is used in order to describe 577 a mask of CPUs. 578 57920110531: 580 Changes to ifconfig(8) for dynamic address family detection mandate 581 that you are running a kernel of 20110525 or later. Make sure to 582 follow the update procedure to boot a new kernel before installing 583 world. 584 58520110513: 586 Support for sun4v architecture is officially dropped 587 58820110503: 589 Several KPI breaking changes have been committed to the mii(4) layer, 590 the PHY drivers and consequently some Ethernet drivers using mii(4). 591 This means that miibus.ko and the modules of the affected Ethernet 592 drivers need to be recompiled. 593 594 Note to kernel developers: Given that the OUI bit reversion problem 595 was fixed as part of these changes all mii(4) commits related to OUIs, 596 i.e. to sys/dev/mii/miidevs, PHY driver probing and vendor specific 597 handling, no longer can be merged verbatim to stable/8 and previous 598 branches. 599 60020110430: 601 Users of the Atheros AR71xx SoC code now need to add 'device ar71xx_pci' 602 into their kernel configurations along with 'device pci'. 603 60420110427: 605 The default NFS client is now the new NFS client, so fstype "newnfs" 606 is now "nfs" and the regular/old NFS client is now fstype "oldnfs". 607 Although mounts via fstype "nfs" will usually work without userland 608 changes, it is recommended that the mount(8) and mount_nfs(8) 609 commands be rebuilt from sources and that a link to mount_nfs called 610 mount_oldnfs be created. The new client is compiled into the 611 kernel with "options NFSCL" and this is needed for diskless root 612 file systems. The GENERIC kernel configs have been changed to use 613 NFSCL and NFSD (the new server) instead of NFSCLIENT and NFSSERVER. 614 To use the regular/old client, you can "mount -t oldnfs ...". For 615 a diskless root file system, you must also include a line like: 616 617 vfs.root.mountfrom="oldnfs:" 618 619 in the boot/loader.conf on the root fs on the NFS server to make 620 a diskless root fs use the old client. 621 62220110424: 623 The GENERIC kernels for all architectures now default to the new 624 CAM-based ATA stack. It means that all legacy ATA drivers were 625 removed and replaced by respective CAM drivers. If you are using 626 ATA device names in /etc/fstab or other places, make sure to update 627 them respectively (adX -> adaY, acdX -> cdY, afdX -> daY, astX -> saY, 628 where 'Y's are the sequential numbers starting from zero for each type 629 in order of detection, unless configured otherwise with tunables, 630 see cam(4)). There will be symbolic links created in /dev/ to map 631 old adX devices to the respective adaY. They should provide basic 632 compatibility for file systems mounting in most cases, but they do 633 not support old user-level APIs and do not have respective providers 634 in GEOM. Consider using updated management tools with new device names. 635 636 It is possible to load devices ahci, ata, siis and mvs as modules, 637 but option ATA_CAM should remain in kernel configuration to make ata 638 module work as CAM driver supporting legacy ATA controllers. Device ata 639 still can be used in modular fashion (atacore + ...). Modules atadisk 640 and atapi* are not used and won't affect operation in ATA_CAM mode. 641 Note that to use CAM-based ATA kernel should include CAM devices 642 scbus, pass, da (or explicitly ada), cd and optionally others. All of 643 them are parts of the cam module. 644 645 ataraid(4) functionality is now supported by the RAID GEOM class. 646 To use it you can load geom_raid kernel module and use graid(8) tool 647 for management. Instead of /dev/arX device names, use /dev/raid/rX. 648 649 No kernel config options or code have been removed, so if a problem 650 arises, please report it and optionally revert to the old ATA stack. 651 In order to do it you can remove from the kernel config: 652 options ATA_CAM 653 device ahci 654 device mvs 655 device siis 656 , and instead add back: 657 device atadisk # ATA disk drives 658 device ataraid # ATA RAID drives 659 device atapicd # ATAPI CDROM drives 660 device atapifd # ATAPI floppy drives 661 device atapist # ATAPI tape drives 662 66320110423: 664 The default NFS server has been changed to the new server, which 665 was referred to as the experimental server. If you need to switch 666 back to the old NFS server, you must now put the "-o" option on 667 both the mountd and nfsd commands. This can be done using the 668 mountd_flags and nfs_server_flags rc.conf variables until an 669 update to the rc scripts is committed, which is coming soon. 670 67120110418: 672 The GNU Objective-C runtime library (libobjc), and other Objective-C 673 related components have been removed from the base system. If you 674 require an Objective-C library, please use one of the available ports. 675 67620110331: 677 ath(4) has been split into bus- and device- modules. if_ath contains 678 the HAL, the TX rate control and the network device code. if_ath_pci 679 contains the PCI bus glue. For Atheros MIPS embedded systems, if_ath_ahb 680 contains the AHB glue. Users need to load both if_ath_pci and if_ath 681 in order to use ath on everything else. 682 683 TO REPEAT: if_ath_ahb is not needed for normal users. Normal users only 684 need to load if_ath and if_ath_pci for ath(4) operation. 685 68620110314: 687 As part of the replacement of sysinstall, the process of building 688 release media has changed significantly. For details, please re-read 689 release(7), which has been updated to reflect the new build process. 690 69120110218: 692 GNU binutils 2.17.50 (as of 2007-07-03) has been merged to -HEAD. This 693 is the last available version under GPLv2. It brings a number of new 694 features, such as support for newer x86 CPU's (with SSE-3, SSSE-3, SSE 695 4.1 and SSE 4.2), better support for powerpc64, a number of new 696 directives, and lots of other small improvements. See the ChangeLog 697 file in contrib/binutils for the full details. 698 69920110218: 700 IPsec's HMAC_SHA256-512 support has been fixed to be RFC4868 701 compliant, and will now use half of hash for authentication. 702 This will break interoperability with all stacks (including all 703 actual FreeBSD versions) who implement 704 draft-ietf-ipsec-ciph-sha-256-00 (they use 96 bits of hash for 705 authentication). 706 The only workaround with such peers is to use another HMAC 707 algorithm for IPsec ("phase 2") authentication. 708 70920110207: 710 Remove the uio_yield prototype and symbol. This function has 711 been misnamed since it was introduced and should not be 712 globally exposed with this name. The equivalent functionality 713 is now available using kern_yield(curthread->td_user_pri). 714 The function remains undocumented. 715 71620110112: 717 A SYSCTL_[ADD_]UQUAD was added for unsigned uint64_t pointers, 718 symmetric with the existing SYSCTL_[ADD_]QUAD. Type checking 719 for scalar sysctls is defined but disabled. Code that needs 720 UQUAD to pass the type checking that must compile on older 721 systems where the define is not present can check against 722 __FreeBSD_version >= 900030. 723 724 The system dialog(1) has been replaced with a new version previously 725 in ports as devel/cdialog. dialog(1) is mostly command-line compatible 726 with the previous version, but the libdialog associated with it has 727 a largely incompatible API. As such, the original version of libdialog 728 will be kept temporarily as libodialog, until its base system consumers 729 are replaced or updated. Bump __FreeBSD_version to 900030. 730 73120110103: 732 If you are trying to run make universe on a -stable system, and you get 733 the following warning: 734 "Makefile", line 356: "Target architecture for i386/conf/GENERIC 735 unknown. config(8) likely too old." 736 or something similar to it, then you must upgrade your -stable system 737 to 8.2-Release or newer (really, any time after r210146 7/15/2010 in 738 stable/8) or build the config from the latest stable/8 branch and 739 install it on your system. 740 741 Prior to this date, building a current universe on 8-stable system from 742 between 7/15/2010 and 1/2/2011 would result in a weird shell parsing 743 error in the first kernel build phase. A new config on those old 744 systems will fix that problem for older versions of -current. 745 74620101228: 747 The TCP stack has been modified to allow Khelp modules to interact with 748 it via helper hook points and store per-connection data in the TCP 749 control block. Bump __FreeBSD_version to 900029. User space tools that 750 rely on the size of struct tcpcb in tcp_var.h (e.g. sockstat) need to 751 be recompiled. 752 75320101114: 754 Generic IEEE 802.3 annex 31B full duplex flow control support has been 755 added to mii(4) and bge(4), bce(4), msk(4), nfe(4) and stge(4) along 756 with brgphy(4), e1000phy(4) as well as ip1000phy() have been converted 757 to take advantage of it instead of using custom implementations. This 758 means that these drivers now no longer unconditionally advertise 759 support for flow control but only do so if flow control is a selected 760 media option. This was implemented in the generic support that way in 761 order to allow flow control to be switched on and off via ifconfig(8) 762 with the PHY specific default to typically off in order to protect 763 from unwanted effects. Consequently, if you used flow control with 764 one of the above mentioned drivers you now need to explicitly enable 765 it, for example via: 766 ifconfig bge0 media auto mediaopt flowcontrol 767 768 Along with the above mentioned changes generic support for setting 769 1000baseT master mode also has been added and brgphy(4), ciphy(4), 770 e1000phy(4) as well as ip1000phy(4) have been converted to take 771 advantage of it. This means that these drivers now no longer take the 772 link0 parameter for selecting master mode but the master media option 773 has to be used instead, for example like in the following: 774 ifconfig bge0 media 1000baseT mediaopt full-duplex,master 775 776 Selection of master mode now is also available with all other PHY 777 drivers supporting 1000baseT. 778 77920101111: 780 The TCP stack has received a significant update to add support for 781 modularised congestion control and generally improve the clarity of 782 congestion control decisions. Bump __FreeBSD_version to 900025. User 783 space tools that rely on the size of struct tcpcb in tcp_var.h (e.g. 784 sockstat) need to be recompiled. 785 78620101002: 787 The man(1) utility has been replaced by a new version that no longer 788 uses /etc/manpath.config. Please consult man.conf(5) for how to 789 migrate local entries to the new format. 790 79120100928: 792 The copyright strings printed by login(1) and sshd(8) at the time of a 793 new connection have been removed to follow other operating systems and 794 upstream sshd. 795 79620100915: 797 A workaround for a fixed ld bug has been removed in kernel code, 798 so make sure that your system ld is built from sources after 799 revision 210245 from 2010-07-19 (r211583 if building head kernel 800 on stable/8, r211584 for stable/7; both from 2010-08-21). 801 A symptom of incorrect ld version is different addresses for 802 set_pcpu section and __start_set_pcpu symbol in kernel and/or modules. 803 80420100913: 805 The $ipv6_prefer variable in rc.conf(5) has been split into 806 $ip6addrctl_policy and $ipv6_activate_all_interfaces. 807 808 The $ip6addrctl_policy is a variable to choose a pre-defined 809 address selection policy set by ip6addrctl(8). A value 810 "ipv4_prefer", "ipv6_prefer" or "AUTO" can be specified. The 811 default is "AUTO". 812 813 The $ipv6_activate_all_interfaces specifies whether IFDISABLED 814 flag (see an entry of 20090926) is set on an interface with no 815 corresponding $ifconfig_IF_ipv6 line. The default is "NO" for 816 security reason. If you want IPv6 link-local address on all 817 interfaces by default, set this to "YES". 818 819 The old ipv6_prefer="YES" is equivalent to 820 ipv6_activate_all_interfaces="YES" and 821 ip6addrctl_policy="ipv6_prefer". 822 82320100913: 824 DTrace has grown support for userland tracing. Due to this, DTrace is 825 now i386 and amd64 only. 826 dtruss(1) is now installed by default on those systems and a new 827 kernel module is needed for userland tracing: fasttrap. 828 No changes to your kernel config file are necessary to enable 829 userland tracing, but you might consider adding 'STRIP=' and 830 'CFLAGS+=-fno-omit-frame-pointer' to your make.conf if you want 831 to have informative userland stack traces in DTrace (ustack). 832 83320100725: 834 The acpi_aiboost(4) driver has been removed in favor of the new 835 aibs(4) driver. You should update your kernel configuration file. 836 83720100722: 838 BSD grep has been imported to the base system and it is built by 839 default. It is completely BSD licensed, highly GNU-compatible, uses 840 less memory than its GNU counterpart and has a small codebase. 841 However, it is slower than its GNU counterpart, which is mostly 842 noticeable for larger searches, for smaller ones it is measurable 843 but not significant. The reason is complex, the most important factor 844 is that we lack a modern and efficient regex library and GNU 845 overcomes this by optimizing the searches internally. Future work 846 on improving the regex performance is planned, for the meantime, 847 users that need better performance, can build GNU grep instead by 848 setting the WITH_GNU_GREP knob. 849 85020100713: 851 Due to the import of powerpc64 support, all existing powerpc kernel 852 configuration files must be updated with a machine directive like this: 853 machine powerpc powerpc 854 855 In addition, an updated config(8) is required to build powerpc kernels 856 after this change. 857 85820100713: 859 A new version of ZFS (version 15) has been merged to -HEAD. 860 This version uses a python library for the following subcommands: 861 zfs allow, zfs unallow, zfs groupspace, zfs userspace. 862 For full functionality of these commands the following port must 863 be installed: sysutils/py-zfs 864 86520100429: 866 'vm_page's are now hashed by physical address to an array of mutexes. 867 Currently this is only used to serialize access to hold_count. Over 868 time the page queue mutex will be peeled away. This changes the size 869 of pmap on every architecture. And requires all callers of vm_page_hold 870 and vm_page_unhold to be updated. 871 87220100402: 873 WITH_CTF can now be specified in src.conf (not recommended, there 874 are some problems with static executables), make.conf (would also 875 affect ports which do not use GNU make and do not override the 876 compile targets) or in the kernel config (via "makeoptions 877 WITH_CTF=yes"). 878 When WITH_CTF was specified there before this was silently ignored, 879 so make sure that WITH_CTF is not used in places which could lead 880 to unwanted behavior. 881 88220100311: 883 The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32 884 to allow 32-bit compatibility on non-x86 platforms. All kernel 885 configurations on amd64 and ia64 platforms using these options must 886 be modified accordingly. 887 88820100113: 889 The utmp user accounting database has been replaced with utmpx, 890 the user accounting interface standardized by POSIX. 891 Unfortunately the semantics of utmp and utmpx don't match, 892 making it practically impossible to support both interfaces. 893 The user accounting database is used by tools like finger(1), 894 last(1), talk(1), w(1) and ac(8). 895 896 All applications in the base system use utmpx. This means only 897 local binaries (e.g. from the ports tree) may still use these 898 utmp database files. These applications must be rebuilt to make 899 use of utmpx. 900 901 After the system has been upgraded, it is safe to remove the old 902 log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*), 903 assuming their contents is of no importance anymore. Old wtmp 904 databases can only be used by last(1) and ac(8) after they have 905 been converted to the new format using wtmpcvt(1). 906 90720100108: 908 Introduce the kernel thread "deadlock resolver" (which can be enabled 909 via the DEADLKRES option, see NOTES for more details) and the 910 sleepq_type() function for sleepqueues. 911 91220091202: 913 The rc.firewall and rc.firewall6 were unified, and 914 rc.firewall6 and rc.d/ip6fw were removed. 915 According to the removal of rc.d/ip6fw, ipv6_firewall_* rc 916 variables are obsoleted. Instead, the following new rc 917 variables are added to rc.d/ipfw: 918 919 firewall_client_net_ipv6, firewall_simple_iif_ipv6, 920 firewall_simple_inet_ipv6, firewall_simple_oif_ipv6, 921 firewall_simple_onet_ipv6, firewall_trusted_ipv6 922 923 The meanings correspond to the relevant IPv4 variables. 924 92520091125: 926 8.0-RELEASE. 927 92820091113: 929 The default terminal emulation for syscons(4) has been changed 930 from cons25 to xterm on all platforms except pc98. This means 931 that the /etc/ttys file needs to be updated to ensure correct 932 operation of applications on the console. 933 934 The terminal emulation style can be toggled per window by using 935 vidcontrol(1)'s -T flag. The TEKEN_CONS25 kernel configuration 936 options can be used to change the compile-time default back to 937 cons25. 938 939 To prevent graphical artifacts, make sure the TERM environment 940 variable is set to match the terminal emulation that is being 941 performed by syscons(4). 942 94320091109: 944 The layout of the structure ieee80211req_scan_result has changed. 945 Applications that require wireless scan results (e.g. ifconfig(8)) 946 from net80211 need to be recompiled. 947 948 Applications such as wpa_supplicant(8) may require a full world 949 build without using NO_CLEAN in order to get synchronized with the 950 new structure. 951 95220091025: 953 The iwn(4) driver has been updated to support the 5000 and 5150 series. 954 There's one kernel module for each firmware. Adding "device iwnfw" 955 to the kernel configuration file means including all three firmware 956 images inside the kernel. If you want to include just the one for 957 your wireless card, use the devices iwn4965fw, iwn5000fw or 958 iwn5150fw. 959 96020090926: 961 The rc.d/network_ipv6, IPv6 configuration script has been integrated 962 into rc.d/netif. The changes are the following: 963 964 1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF 965 for IPv4. For aliases, $ifconfig_IF_aliasN should be used. 966 Note that both variables need the "inet6" keyword at the head. 967 968 Do not set $ipv6_network_interfaces manually if you do not 969 understand what you are doing. It is not needed in most cases. 970 971 $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but 972 they are obsolete. 973 974 2. $ipv6_enable is obsolete. Use $ipv6_prefer and 975 "inet6 accept_rtadv" keyword in ifconfig(8) instead. 976 977 If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and 978 all configured interfaces have "inet6 accept_rtadv" in the 979 $ifconfig_IF_ipv6. These are for backward compatibility. 980 981 3. A new variable $ipv6_prefer has been added. If NO, IPv6 982 functionality of interfaces with no corresponding 983 $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag, 984 and the default address selection policy of ip6addrctl(8) 985 is the IPv4-preferred one (see rc.d/ip6addrctl for more details). 986 Note that if you want to configure IPv6 functionality on the 987 disabled interfaces after boot, first you need to clear the flag by 988 using ifconfig(8) like: 989 990 ifconfig em0 inet6 -ifdisabled 991 992 If YES, the default address selection policy is set as 993 IPv6-preferred. 994 995 The default value of $ipv6_prefer is NO. 996 997 4. If your system need to receive Router Advertisement messages, 998 define "inet6 accept_rtadv" in $ifconfig_IF_ipv6. The rc(8) 999 scripts automatically invoke rtsol(8) when the interface becomes 1000 UP. The Router Advertisement messages are used for SLAAC 1001 (State-Less Address AutoConfiguration). 1002 100320090922: 1004 802.11s D3.03 support was committed. This is incompatible with the 1005 previous code, which was based on D3.0. 1006 100720090912: 1008 A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value 1009 of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to 1010 control whether accepting Router Advertisement messages or not. 1011 Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and 1012 a sysctl variable net.inet6.ip6.auto_linklocal is its default value. 1013 The ifconfig(8) utility now supports these flags. 1014 101520090910: 1016 ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for 1017 mount(8) and -a option for df(1) to see them. 1018 101920090825: 1020 The old tunable hw.bus.devctl_disable has been superseded by 1021 hw.bus.devctl_queue. hw.bus.devctl_disable=1 in loader.conf should be 1022 replaced by hw.bus.devctl_queue=0. The default for this new tunable 1023 is 1000. 1024 102520090813: 1026 Remove the option STOP_NMI. The default action is now to use NMI only 1027 for KDB via the newly introduced function stop_cpus_hard() and 1028 maintain stop_cpus() to just use a normal IPI_STOP on ia32 and amd64. 1029 103020090803: 1031 The stable/8 branch created in subversion. This corresponds to the 1032 RELENG_8 branch in CVS. 1033 103420090719: 1035 Bump the shared library version numbers for all libraries that do not 1036 use symbol versioning as part of the 8.0-RELEASE cycle. Bump 1037 __FreeBSD_version to 800105. 1038 103920090714: 1040 Due to changes in the implementation of virtual network stack support, 1041 all network-related kernel modules must be recompiled. As this change 1042 breaks the ABI, bump __FreeBSD_version to 800104. 1043 104420090713: 1045 The TOE interface to the TCP syncache has been modified to remove 1046 struct tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack. 1047 The cxgb driver is the only TOE consumer affected by this change, and 1048 needs to be recompiled along with the kernel. As this change breaks 1049 the ABI, bump __FreeBSD_version to 800103. 1050 105120090712: 1052 Padding has been added to struct tcpcb, sackhint and tcpstat in 1053 <netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst 1054 maintaining the ABI. However, this change breaks the ABI, so bump 1055 __FreeBSD_version to 800102. User space tools that rely on the size of 1056 any of these structs (e.g. sockstat) need to be recompiled. 1057 105820090630: 1059 The NFS_LEGACYRPC option has been removed along with the old kernel 1060 RPC implementation that this option selected. Kernel configurations 1061 may need to be adjusted. 1062 106320090629: 1064 The network interface device nodes at /dev/net/<interface> have been 1065 removed. All ioctl operations can be performed the normal way using 1066 routing sockets. The kqueue functionality can generally be replaced 1067 with routing sockets. 1068 106920090628: 1070 The documentation from the FreeBSD Documentation Project (Handbook, 1071 FAQ, etc.) is now installed via packages by sysinstall(8) and under 1072 the /usr/local/share/doc/freebsd directory instead of /usr/share/doc. 1073 107420090624: 1075 The ABI of various structures related to the SYSV IPC API have been 1076 changed. As a result, the COMPAT_FREEBSD[456] and COMPAT_43 kernel 1077 options now all require COMPAT_FREEBSD7. Bump __FreeBSD_version to 1078 800100. 1079 108020090622: 1081 Layout of struct vnet has changed as routing related variables were 1082 moved to their own Vimage module. Modules need to be recompiled. Bump 1083 __FreeBSD_version to 800099. 1084 108520090619: 1086 NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 and 1024 1087 respectively. As long as no more than 16 groups per process are used, 1088 no changes should be visible. When more than 16 groups are used, old 1089 binaries may fail if they call getgroups() or getgrouplist() with 1090 statically sized storage. Recompiling will work around this, but 1091 applications should be modified to use dynamically allocated storage 1092 for group arrays as POSIX.1-2008 does not cap an implementation's 1093 number of supported groups at NGROUPS_MAX+1 as previous versions did. 1094 1095 NFS and portalfs mounts may also be affected as the list of groups is 1096 truncated to 16. Users of NFS who use more than 16 groups, should 1097 take care that negative group permissions are not used on the exported 1098 file systems as they will not be reliable unless a GSSAPI based 1099 authentication method is used. 1100 110120090616: 1102 The compiling option ADAPTIVE_LOCKMGRS has been introduced. This 1103 option compiles in the support for adaptive spinning for lockmgrs 1104 which want to enable it. The lockinit() function now accepts the flag 1105 LK_ADAPTIVE in order to make the lock object subject to adaptive 1106 spinning when both held in write and read mode. 1107 110820090613: 1109 The layout of the structure returned by IEEE80211_IOC_STA_INFO has 1110 changed. User applications that use this ioctl need to be rebuilt. 1111 111220090611: 1113 The layout of struct thread has changed. Kernel and modules need to 1114 be rebuilt. 1115 111620090608: 1117 The layout of structs ifnet, domain, protosw and vnet_net has changed. 1118 Kernel modules need to be rebuilt. Bump __FreeBSD_version to 800097. 1119 112020090602: 1121 window(1) has been removed from the base system. It can now be 1122 installed from ports. The port is called misc/window. 1123 112420090601: 1125 The way we are storing and accessing `routing table' entries has 1126 changed. Programs reading the FIB, like netstat, need to be 1127 re-compiled. 1128 112920090601: 1130 A new netisr implementation has been added for FreeBSD 8. Network 1131 file system modules, such as igmp, ipdivert, and others, should be 1132 rebuilt. 1133 Bump __FreeBSD_version to 800096. 1134 113520090530: 1136 Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no 1137 more valid. 1138 113920090530: 1140 Add VOP_ACCESSX(9). File system modules need to be rebuilt. 1141 Bump __FreeBSD_version to 800094. 1142 114320090529: 1144 Add mnt_xflag field to 'struct mount'. File system modules need to be 1145 rebuilt. 1146 Bump __FreeBSD_version to 800093. 1147 114820090528: 1149 The compiling option ADAPTIVE_SX has been retired while it has been 1150 introduced the option NO_ADAPTIVE_SX which handles the reversed logic. 1151 The KPI for sx_init_flags() changes as accepting flags: 1152 SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag has 1153 been introduced in order to handle the reversed logic. 1154 Bump __FreeBSD_version to 800092. 1155 115620090527: 1157 Add support for hierarchical jails. Remove global securelevel. 1158 Bump __FreeBSD_version to 800091. 1159 116020090523: 1161 The layout of struct vnet_net has changed, therefore modules 1162 need to be rebuilt. 1163 Bump __FreeBSD_version to 800090. 1164 116520090523: 1166 The newly imported zic(8) produces a new format in the output. Please 1167 run tzsetup(8) to install the newly created data to /etc/localtime. 1168 116920090520: 1170 The sysctl tree for the usb stack has renamed from hw.usb2.* to 1171 hw.usb.* and is now consistent again with previous releases. 1172 117320090520: 1174 802.11 monitor mode support was revised and driver api's were changed. 1175 Drivers dependent on net80211 now support DLT_IEEE802_11_RADIO instead 1176 of DLT_IEEE802_11. No user-visible data structures were changed but 1177 applications that use DLT_IEEE802_11 may require changes. 1178 Bump __FreeBSD_version to 800088. 1179 118020090430: 1181 The layout of the following structs has changed: sysctl_oid, 1182 socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet, 1183 vnet_inet6 and vnet_ipfw. Most modules need to be rebuild or 1184 panics may be experienced. World rebuild is required for 1185 correctly checking networking state from userland. 1186 Bump __FreeBSD_version to 800085. 1187 118820090429: 1189 MLDv2 and Source-Specific Multicast (SSM) have been merged 1190 to the IPv6 stack. VIMAGE hooks are in but not yet used. 1191 The implementation of SSM within FreeBSD's IPv6 stack closely 1192 follows the IPv4 implementation. 1193 1194 For kernel developers: 1195 1196 * The most important changes are that the ip6_output() and 1197 ip6_input() paths no longer take the IN6_MULTI_LOCK, 1198 and this lock has been downgraded to a non-recursive mutex. 1199 1200 * As with the changes to the IPv4 stack to support SSM, filtering 1201 of inbound multicast traffic must now be performed by transport 1202 protocols within the IPv6 stack. This does not apply to TCP and 1203 SCTP, however, it does apply to UDP in IPv6 and raw IPv6. 1204 1205 * The KPIs used by IPv6 multicast are similar to those used by 1206 the IPv4 stack, with the following differences: 1207 * im6o_mc_filter() is analogous to imo_multicast_filter(). 1208 * The legacy KAME entry points in6_joingroup and in6_leavegroup() 1209 are shimmed to in6_mc_join() and in6_mc_leave() respectively. 1210 * IN6_LOOKUP_MULTI() has been deprecated and removed. 1211 * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs 1212 for MLDv1 have an additional 'timer' argument which is used to 1213 jitter the initial membership report for the solicited-node 1214 multicast membership on-link. 1215 * This is not strictly needed for MLDv2, which already jitters 1216 its report transmissions. However, the 'timer' argument is 1217 preserved in case MLDv1 is active on the interface. 1218 1219 * The KAME linked-list based IPv6 membership implementation has 1220 been refactored to use a vector similar to that used by the IPv4 1221 stack. 1222 Code which maintains a list of its own multicast memberships 1223 internally, e.g. carp, has been updated to reflect the new 1224 semantics. 1225 1226 * There is a known Lock Order Reversal (LOR) due to in6_setscope() 1227 acquiring the IF_AFDATA_LOCK and being called within ip6_output(). 1228 Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an 1229 implementation constraint which needs to be addressed in HEAD. 1230 1231 For application developers: 1232 1233 * The changes are broadly similar to those made for the IPv4 1234 stack. 1235 1236 * The use of IPv4 and IPv6 multicast socket options on the same 1237 socket, using mapped addresses, HAS NOT been tested or supported. 1238 1239 * There are a number of issues with the implementation of various 1240 IPv6 multicast APIs which need to be resolved in the API surface 1241 before the implementation is fully compatible with KAME userland 1242 use, and these are mostly to do with interface index treatment. 1243 1244 * The literature available discusses the use of either the delta / ASM 1245 API with setsockopt(2)/getsockopt(2), or the full-state / ASM API 1246 using setsourcefilter(3)/getsourcefilter(3). For more information 1247 please refer to RFC 3768, 'Socket Interface Extensions for 1248 Multicast Source Filters'. 1249 1250 * Applications which use the published RFC 3678 APIs should be fine. 1251 1252 For systems administrators: 1253 1254 * The mtest(8) utility has been refactored to support IPv6, in 1255 addition to IPv4. Interface addresses are no longer accepted 1256 as arguments, their names must be used instead. The utility 1257 will map the interface name to its first IPv4 address as 1258 returned by getifaddrs(3). 1259 1260 * The ifmcstat(8) utility has also been updated to print the MLDv2 1261 endpoint state and source filter lists via sysctl(3). 1262 1263 * The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable 1264 loopback of IPv6 multicast datagrams by default; it defaults to 1 1265 to preserve the existing behaviour. Disabling multicast loopback is 1266 recommended for optimal system performance. 1267 1268 * The IPv6 MROUTING code has been changed to examine this sysctl 1269 instead of attempting to perform a group lookup before looping 1270 back forwarded datagrams. 1271 1272 Bump __FreeBSD_version to 800084. 1273 127420090422: 1275 Implement low-level Bluetooth HCI API. 1276 Bump __FreeBSD_version to 800083. 1277 127820090419: 1279 The layout of struct malloc_type, used by modules to register new 1280 memory allocation types, has changed. Most modules will need to 1281 be rebuilt or panics may be experienced. 1282 Bump __FreeBSD_version to 800081. 1283 128420090415: 1285 Anticipate overflowing inp_flags - add inp_flags2. 1286 This changes most offsets in inpcb, so checking v4 connection 1287 state will require a world rebuild. 1288 Bump __FreeBSD_version to 800080. 1289 129020090415: 1291 Add an llentry to struct route and struct route_in6. Modules 1292 embedding a struct route will need to be recompiled. 1293 Bump __FreeBSD_version to 800079. 1294 129520090414: 1296 The size of rt_metrics_lite and by extension rtentry has changed. 1297 Networking administration apps will need to be recompiled. 1298 The route command now supports show as an alias for get, weighting 1299 of routes, sticky and nostick flags to alter the behavior of stateful 1300 load balancing. 1301 Bump __FreeBSD_version to 800078. 1302 130320090408: 1304 Do not use Giant for kbdmux(4) locking. This is wrong and 1305 apparently causing more problems than it solves. This will 1306 re-open the issue where interrupt handlers may race with 1307 kbdmux(4) in polling mode. Typical symptoms include (but 1308 not limited to) duplicated and/or missing characters when 1309 low level console functions (such as gets) are used while 1310 interrupts are enabled (for example geli password prompt, 1311 mountroot prompt etc.). Disabling kbdmux(4) may help. 1312 131320090407: 1314 The size of structs vnet_net, vnet_inet and vnet_ipfw has changed; 1315 kernel modules referencing any of the above need to be recompiled. 1316 Bump __FreeBSD_version to 800075. 1317 131820090320: 1319 GEOM_PART has become the default partition slicer for storage devices, 1320 replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It 1321 introduces some changes: 1322 1323 MSDOS/EBR: the devices created from MSDOS extended partition entries 1324 (EBR) can be named differently than with GEOM_MBR and are now symlinks 1325 to devices with offset-based names. fstabs may need to be modified. 1326 1327 BSD: the "geometry does not match label" warning is harmless in most 1328 cases but it points to problems in file system misalignment with 1329 disk geometry. The "c" partition is now implicit, covers the whole 1330 top-level drive and cannot be (mis)used by users. 1331 1332 General: Kernel dumps are now not allowed to be written to devices 1333 whose partition types indicate they are meant to be used for file 1334 systems (or, in case of MSDOS partitions, as something else than 1335 the "386BSD" type). 1336 1337 Most of these changes date approximately from 200812. 1338 133920090319: 1340 The uscanner(4) driver has been removed from the kernel. This follows 1341 Linux removing theirs in 2.6 and making libusb the default interface 1342 (supported by sane). 1343 134420090319: 1345 The multicast forwarding code has been cleaned up. netstat(1) 1346 only relies on KVM now for printing bandwidth upcall meters. 1347 The IPv4 and IPv6 modules are split into ip_mroute_mod and 1348 ip6_mroute_mod respectively. The config(5) options for statically 1349 compiling this code remain the same, i.e. 'options MROUTING'. 1350 135120090315: 1352 Support for the IFF_NEEDSGIANT network interface flag has been 1353 removed, which means that non-MPSAFE network device drivers are no 1354 longer supported. In particular, if_ar, if_sr, and network device 1355 drivers from the old (legacy) USB stack can no longer be built or 1356 used. 1357 135820090313: 1359 POSIX.1 Native Language Support (NLS) has been enabled in libc and 1360 a bunch of new language catalog files have also been added. 1361 This means that some common libc messages are now localized and 1362 they depend on the LC_MESSAGES environmental variable. 1363 136420090313: 1365 The k8temp(4) driver has been renamed to amdtemp(4) since 1366 support for Family 10 and Family 11 CPU families was added. 1367 136820090309: 1369 IGMPv3 and Source-Specific Multicast (SSM) have been merged 1370 to the IPv4 stack. VIMAGE hooks are in but not yet used. 1371 1372 For kernel developers, the most important changes are that the 1373 ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(), 1374 and this lock has been downgraded to a non-recursive mutex. 1375 1376 Transport protocols (UDP, Raw IP) are now responsible for filtering 1377 inbound multicast traffic according to group membership and source 1378 filters. The imo_multicast_filter() KPI exists for this purpose. 1379 Transports which do not use multicast (SCTP, TCP) already reject 1380 multicast by default. Forwarding and receive performance may improve 1381 as a mutex acquisition is no longer needed in the ip_input() 1382 low-level input path. in_addmulti() and in_delmulti() are shimmed 1383 to new KPIs which exist to support SSM in-kernel. 1384 1385 For application developers, it is recommended that loopback of 1386 multicast datagrams be disabled for best performance, as this 1387 will still cause the lock to be taken for each looped-back 1388 datagram transmission. The net.inet.ip.mcast.loop sysctl may 1389 be tuned to 0 to disable loopback by default; it defaults to 1 1390 to preserve the existing behaviour. 1391 1392 For systems administrators, to obtain best performance with 1393 multicast reception and multiple groups, it is always recommended 1394 that a card with a suitably precise hash filter is used. Hash 1395 collisions will still result in the lock being taken within the 1396 transport protocol input path to check group membership. 1397 1398 If deploying FreeBSD in an environment with IGMP snooping switches, 1399 it is recommended that the net.inet.igmp.sendlocal sysctl remain 1400 enabled; this forces 224.0.0.0/24 group membership to be announced 1401 via IGMP. 1402 1403 The size of 'struct igmpstat' has changed; netstat needs to be 1404 recompiled to reflect this. 1405 Bump __FreeBSD_version to 800070. 1406 140720090309: 1408 libusb20.so.1 is now installed as libusb.so.1 and the ports system 1409 updated to use it. This requires a buildworld/installworld in order to 1410 update the library and dependencies (usbconfig, etc). Its advisable to 1411 rebuild all ports which uses libusb. More specific directions are given 1412 in the ports collection UPDATING file. Any /etc/libmap.conf entries for 1413 libusb are no longer required and can be removed. 1414 141520090302: 1416 A workaround is committed to allow the creation of System V shared 1417 memory segment of size > 2 GB on the 64-bit architectures. 1418 Due to a limitation of the existing ABI, the shm_segsz member 1419 of the struct shmid_ds, returned by shmctl(IPC_STAT) call is 1420 wrong for large segments. Note that limits must be explicitly 1421 raised to allow such segments to be created. 1422 142320090301: 1424 The layout of struct ifnet has changed, requiring a rebuild of all 1425 network device driver modules. 1426 142720090227: 1428 The /dev handling for the new USB stack has changed, a 1429 buildworld/installworld is required for libusb20. 1430 143120090223: 1432 The new USB2 stack has now been permanently moved in and all kernel and 1433 module names reverted to their previous values (eg, usb, ehci, ohci, 1434 ums, ...). The old usb stack can be compiled in by prefixing the name 1435 with the letter 'o', the old usb modules have been removed. 1436 Updating entry 20090216 for xorg and 20090215 for libmap may still 1437 apply. 1438 143920090217: 1440 The rc.conf(5) option if_up_delay has been renamed to 1441 defaultroute_delay to better reflect its purpose. If you have 1442 customized this setting in /etc/rc.conf you need to update it to 1443 use the new name. 1444 144520090216: 1446 xorg 7.4 wants to configure its input devices via hald which does not 1447 yet work with USB2. If the keyboard/mouse does not work in xorg then 1448 add 1449 Option "AllowEmptyInput" "off" 1450 to your ServerLayout section. This will cause X to use the configured 1451 kbd and mouse sections from your xorg.conf. 1452 145320090215: 1454 The GENERIC kernels for all architectures now default to the new USB2 1455 stack. No kernel config options or code have been removed so if a 1456 problem arises please report it and optionally revert to the old USB 1457 stack. If you are loading USB kernel modules or have a custom kernel 1458 that includes GENERIC then ensure that usb names are also changed over, 1459 eg uftdi -> usb2_serial_ftdi. 1460 1461 Older programs linked against the ports libusb 0.1 need to be 1462 redirected to the new stack's libusb20. /etc/libmap.conf can 1463 be used for this: 1464 # Map old usb library to new one for usb2 stack 1465 libusb-0.1.so.8 libusb20.so.1 1466 146720090209: 1468 All USB ethernet devices now attach as interfaces under the name ueN 1469 (eg. ue0). This is to provide a predictable name as vendors often 1470 change usb chipsets in a product without notice. 1471 147220090203: 1473 The ichsmb(4) driver has been changed to require SMBus slave 1474 addresses be left-justified (xxxxxxx0b) rather than right-justified. 1475 All of the other SMBus controller drivers require left-justified 1476 slave addresses, so this change makes all the drivers provide the 1477 same interface. 1478 147920090201: 1480 INET6 statistics (struct ip6stat) was updated. 1481 netstat(1) needs to be recompiled. 1482 148320090119: 1484 NTFS has been removed from GENERIC kernel on amd64 to match 1485 GENERIC on i386. Should not cause any issues since mount_ntfs(8) 1486 will load ntfs.ko module automatically when NTFS support is 1487 actually needed, unless ntfs.ko is not installed or security 1488 level prohibits loading kernel modules. If either is the case, 1489 "options NTFS" has to be added into kernel config. 1490 149120090115: 1492 TCP Appropriate Byte Counting (RFC 3465) support added to kernel. 1493 New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to 1494 800061. User space tools that rely on the size of struct tcpcb in 1495 tcp_var.h (e.g. sockstat) need to be recompiled. 1496 149720081225: 1498 ng_tty(4) module updated to match the new TTY subsystem. 1499 Due to API change, user-level applications must be updated. 1500 New API support added to mpd5 CVS and expected to be present 1501 in next mpd5.3 release. 1502 150320081219: 1504 With __FreeBSD_version 800060 the makefs tool is part of 1505 the base system (it was a port). 1506 150720081216: 1508 The afdata and ifnet locks have been changed from mutexes to 1509 rwlocks, network modules will need to be re-compiled. 1510 151120081214: 1512 __FreeBSD_version 800059 incorporates the new arp-v2 rewrite. 1513 RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated. 1514 The new code reduced struct rtentry{} by 16 bytes on 32-bit 1515 architecture and 40 bytes on 64-bit architecture. The userland 1516 applications "arp" and "ndp" have been updated accordingly. 1517 The output from "netstat -r" shows only routing entries and 1518 none of the L2 information. 1519 152020081130: 1521 __FreeBSD_version 800057 marks the switchover from the 1522 binary ath hal to source code. Users must add the line: 1523 1524 options AH_SUPPORT_AR5416 1525 1526 to their kernel config files when specifying: 1527 1528 device ath_hal 1529 1530 The ath_hal module no longer exists; the code is now compiled 1531 together with the driver in the ath module. It is now 1532 possible to tailor chip support (i.e. reduce the set of chips 1533 and thereby the code size); consult ath_hal(4) for details. 1534 153520081121: 1536 __FreeBSD_version 800054 adds memory barriers to 1537 <machine/atomic.h>, new interfaces to ifnet to facilitate 1538 multiple hardware transmit queues for cards that support 1539 them, and a lock-less ring-buffer implementation to 1540 enable drivers to more efficiently manage queueing of 1541 packets. 1542 154320081117: 1544 A new version of ZFS (version 13) has been merged to -HEAD. 1545 This version has zpool attribute "listsnapshots" off by 1546 default, which means "zfs list" does not show snapshots, 1547 and is the same as Solaris behavior. 1548 154920081028: 1550 dummynet(4) ABI has changed. ipfw(8) needs to be recompiled. 1551 155220081009: 1553 The uhci, ohci, ehci and slhci USB Host controller drivers have 1554 been put into separate modules. If you load the usb module 1555 separately through loader.conf you will need to load the 1556 appropriate *hci module as well. E.g. for a UHCI-based USB 2.0 1557 controller add the following to loader.conf: 1558 1559 uhci_load="YES" 1560 ehci_load="YES" 1561 156220081009: 1563 The ABI used by the PMC toolset has changed. Please keep 1564 userland (libpmc(3)) and the kernel module (hwpmc(4)) in 1565 sync. 1566 156720081009: 1568 atapci kernel module now includes only generic PCI ATA 1569 driver. AHCI driver moved to ataahci kernel module. 1570 All vendor-specific code moved into separate kernel modules: 1571 ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek, 1572 atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron, 1573 atamarvell, atamicron, atanational, atanetcell, atanvidia, 1574 atapromise, ataserverworks, atasiliconimage, atasis, atavia 1575 157620080820: 1577 The TTY subsystem of the kernel has been replaced by a new 1578 implementation, which provides better scalability and an 1579 improved driver model. Most common drivers have been migrated to 1580 the new TTY subsystem, while others have not. The following 1581 drivers have not yet been ported to the new TTY layer: 1582 1583 PCI/ISA: 1584 cy, digi, rc, rp, sio 1585 1586 USB: 1587 ubser, ucycom 1588 1589 Line disciplines: 1590 ng_h4, ng_tty, ppp, sl, snp 1591 1592 Adding these drivers to your kernel configuration file shall 1593 cause compilation to fail. 1594 159520080818: 1596 ntpd has been upgraded to 4.2.4p5. 1597 159820080801: 1599 OpenSSH has been upgraded to 5.1p1. 1600 1601 For many years, FreeBSD's version of OpenSSH preferred DSA 1602 over RSA for host and user authentication keys. With this 1603 upgrade, we've switched to the vendor's default of RSA over 1604 DSA. This may cause upgraded clients to warn about unknown 1605 host keys even for previously known hosts. Users should 1606 follow the usual procedure for verifying host keys before 1607 accepting the RSA key. 1608 1609 This can be circumvented by setting the "HostKeyAlgorithms" 1610 option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh 1611 command line. 1612 1613 Please note that the sequence of keys offered for 1614 authentication has been changed as well. You may want to 1615 specify IdentityFile in a different order to revert this 1616 behavior. 1617 161820080713: 1619 The sio(4) driver has been removed from the i386 and amd64 1620 kernel configuration files. This means uart(4) is now the 1621 default serial port driver on those platforms as well. 1622 1623 To prevent collisions with the sio(4) driver, the uart(4) driver 1624 uses different names for its device nodes. This means the 1625 onboard serial port will now most likely be called "ttyu0" 1626 instead of "ttyd0". You may need to reconfigure applications to 1627 use the new device names. 1628 1629 When using the serial port as a boot console, be sure to update 1630 /boot/device.hints and /etc/ttys before booting the new kernel. 1631 If you forget to do so, you can still manually specify the hints 1632 at the loader prompt: 1633 1634 set hint.uart.0.at="isa" 1635 set hint.uart.0.port="0x3F8" 1636 set hint.uart.0.flags="0x10" 1637 set hint.uart.0.irq="4" 1638 boot -s 1639 164020080609: 1641 The gpt(8) utility has been removed. Use gpart(8) to partition 1642 disks instead. 1643 164420080603: 1645 The version that Linuxulator emulates was changed from 2.4.2 1646 to 2.6.16. If you experience any problems with Linux binaries 1647 please try to set sysctl compat.linux.osrelease to 2.4.2 and 1648 if it fixes the problem contact emulation mailing list. 1649 165020080525: 1651 ISDN4BSD (I4B) was removed from the src tree. You may need to 1652 update a your kernel configuration and remove relevant entries. 1653 165420080509: 1655 I have checked in code to support multiple routing tables. 1656 See the man pages setfib(1) and setfib(2). 1657 This is a hopefully backwards compatible version, 1658 but to make use of it you need to compile your kernel 1659 with options ROUTETABLES=2 (or more up to 16). 1660 166120080420: 1662 The 802.11 wireless support was redone to enable multi-bss 1663 operation on devices that are capable. The underlying device 1664 is no longer used directly but instead wlanX devices are 1665 cloned with ifconfig. This requires changes to rc.conf files. 1666 For example, change: 1667 ifconfig_ath0="WPA DHCP" 1668 to 1669 wlans_ath0=wlan0 1670 ifconfig_wlan0="WPA DHCP" 1671 see rc.conf(5) for more details. In addition, mergemaster of 1672 /etc/rc.d is highly recommended. Simultaneous update of userland 1673 and kernel wouldn't hurt either. 1674 1675 As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta 1676 modules were merged into the base wlan module. All references 1677 to these modules (e.g. in kernel config files) must be removed. 1678 167920080408: 1680 psm(4) has gained write(2) support in native operation level. 1681 Arbitrary commands can be written to /dev/psm%d and status can 1682 be read back from it. Therefore, an application is responsible 1683 for status validation and error recovery. It is a no-op in 1684 other operation levels. 1685 168620080312: 1687 Support for KSE threading has been removed from the kernel. To 1688 run legacy applications linked against KSE libmap.conf may 1689 be used. The following libmap.conf may be used to ensure 1690 compatibility with any prior release: 1691 1692 libpthread.so.1 libthr.so.1 1693 libpthread.so.2 libthr.so.2 1694 libkse.so.3 libthr.so.3 1695 169620080301: 1697 The layout of struct vmspace has changed. This affects libkvm 1698 and any executables that link against libkvm and use the 1699 kvm_getprocs() function. In particular, but not exclusively, 1700 it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1). 1701 The effects are minimal, but it's advisable to upgrade world 1702 nonetheless. 1703 170420080229: 1705 The latest em driver no longer has support in it for the 1706 82575 adapter, this is now moved to the igb driver. The 1707 split was done to make new features that are incompatible 1708 with older hardware easier to do. 1709 171020080220: 1711 The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4), 1712 likewise the kernel option is now GEOM_LINUX_LVM. 1713 171420080211: 1715 The default NFS mount mode has changed from UDP to TCP for 1716 increased reliability. If you rely on (insecurely) NFS 1717 mounting across a firewall you may need to update your 1718 firewall rules. 1719 172020080208: 1721 Belatedly note the addition of m_collapse for compacting 1722 mbuf chains. 1723 172420080126: 1725 The fts(3) structures have been changed to use adequate 1726 integer types for their members and so to be able to cope 1727 with huge file trees. The old fts(3) ABI is preserved 1728 through symbol versioning in libc, so third-party binaries 1729 using fts(3) should still work, although they will not take 1730 advantage of the extended types. At the same time, some 1731 third-party software might fail to build after this change 1732 due to unportable assumptions made in its source code about 1733 fts(3) structure members. Such software should be fixed 1734 by its vendor or, in the worst case, in the ports tree. 1735 FreeBSD_version 800015 marks this change for the unlikely 1736 case that a portable fix is impossible. 1737 173820080123: 1739 To upgrade to -current after this date, you must be running 1740 FreeBSD not older than 6.0-RELEASE. Upgrading to -current 1741 from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems. 1742 174320071128: 1744 The ADAPTIVE_GIANT kernel option has been retired because its 1745 functionality is the default now. 1746 174720071118: 1748 The AT keyboard emulation of sunkbd(4) has been turned on 1749 by default. In order to make the special symbols of the Sun 1750 keyboards driven by sunkbd(4) work under X these now have 1751 to be configured the same way as Sun USB keyboards driven 1752 by ukbd(4) (which also does AT keyboard emulation), f.e.: 1753 1754 Option "XkbLayout" "us" 1755 Option "XkbRules" "xorg" 1756 Option "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us" 1757 175820071024: 1759 It has been decided that it is desirable to provide ABI 1760 backwards compatibility to the FreeBSD 4/5/6 versions of the 1761 PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was 1762 broken with the introduction of PCI domain support (see the 1763 20070930 entry). Unfortunately, this required the ABI of 1764 PCIOCGETCONF to be broken again in order to be able to 1765 provide backwards compatibility to the old version of that 1766 IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled 1767 again. As for prominent ports this affects neither pciutils 1768 nor xorg-server this time, the hal port needs to be rebuilt 1769 however. 1770 177120071020: 1772 The misnamed kthread_create() and friends have been renamed 1773 to kproc_create() etc. Many of the callers already 1774 used kproc_start().. 1775 I will return kthread_create() and friends in a while 1776 with implementations that actually create threads, not procs. 1777 Renaming corresponds with version 800002. 1778 177920071010: 1780 RELENG_7 branched. 1781 1782COMMON ITEMS: 1783 1784 General Notes 1785 ------------- 1786 Avoid using make -j when upgrading. While generally safe, there are 1787 sometimes problems using -j to upgrade. If your upgrade fails with 1788 -j, please try again without -j. From time to time in the past there 1789 have been problems using -j with buildworld and/or installworld. This 1790 is especially true when upgrading between "distant" versions (eg one 1791 that cross a major release boundary or several minor releases, or when 1792 several months have passed on the -current branch). 1793 1794 Sometimes, obscure build problems are the result of environment 1795 poisoning. This can happen because the make utility reads its 1796 environment when searching for values for global variables. To run 1797 your build attempts in an "environmental clean room", prefix all make 1798 commands with 'env -i '. See the env(1) manual page for more details. 1799 1800 When upgrading from one major version to another it is generally best 1801 to upgrade to the latest code in the currently installed branch first, 1802 then do an upgrade to the new branch. This is the best-tested upgrade 1803 path, and has the highest probability of being successful. Please try 1804 this approach before reporting problems with a major version upgrade. 1805 1806 When upgrading a live system, having a root shell around before 1807 installing anything can help undo problems. Not having a root shell 1808 around can lead to problems if pam has changed too much from your 1809 starting point to allow continued authentication after the upgrade. 1810 1811 ZFS notes 1812 --------- 1813 When upgrading the boot ZFS pool to a new version, always follow 1814 these two steps: 1815 1816 1.) recompile and reinstall the ZFS boot loader and boot block 1817 (this is part of "make buildworld" and "make installworld") 1818 1819 2.) update the ZFS boot block on your boot drive 1820 1821 The following example updates the ZFS boot block on the first 1822 partition (freebsd-boot) of a GPT partitioned drive ad0: 1823 "gpart bootcode -p /boot/gptzfsboot -i 1 ad0" 1824 1825 Non-boot pools do not need these updates. 1826 1827 To build a kernel 1828 ----------------- 1829 If you are updating from a prior version of FreeBSD (even one just 1830 a few days old), you should follow this procedure. It is the most 1831 failsafe as it uses a /usr/obj tree with a fresh mini-buildworld, 1832 1833 make kernel-toolchain 1834 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE 1835 make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE 1836 1837 To test a kernel once 1838 --------------------- 1839 If you just want to boot a kernel once (because you are not sure 1840 if it works, or if you want to boot a known bad kernel to provide 1841 debugging information) run 1842 make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel 1843 nextboot -k testkernel 1844 1845 To just build a kernel when you know that it won't mess you up 1846 -------------------------------------------------------------- 1847 This assumes you are already running a CURRENT system. Replace 1848 ${arch} with the architecture of your machine (e.g. "i386", 1849 "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc). 1850 1851 cd src/sys/${arch}/conf 1852 config KERNEL_NAME_HERE 1853 cd ../compile/KERNEL_NAME_HERE 1854 make depend 1855 make 1856 make install 1857 1858 If this fails, go to the "To build a kernel" section. 1859 1860 To rebuild everything and install it on the current system. 1861 ----------------------------------------------------------- 1862 # Note: sometimes if you are running current you gotta do more than 1863 # is listed here if you are upgrading from a really old current. 1864 1865 <make sure you have good level 0 dumps> 1866 make buildworld 1867 make kernel KERNCONF=YOUR_KERNEL_HERE 1868 [1] 1869 <reboot in single user> [3] 1870 mergemaster -p [5] 1871 make installworld 1872 mergemaster -i [4] 1873 make delete-old [6] 1874 <reboot> 1875 1876 To cross-install current onto a separate partition 1877 -------------------------------------------------- 1878 # In this approach we use a separate partition to hold 1879 # current's root, 'usr', and 'var' directories. A partition 1880 # holding "/", "/usr" and "/var" should be about 2GB in 1881 # size. 1882 1883 <make sure you have good level 0 dumps> 1884 <boot into -stable> 1885 make buildworld 1886 make buildkernel KERNCONF=YOUR_KERNEL_HERE 1887 <maybe newfs current's root partition> 1888 <mount current's root partition on directory ${CURRENT_ROOT}> 1889 make installworld DESTDIR=${CURRENT_ROOT} 1890 make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd 1891 make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT} 1892 cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd 1893 <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition> 1894 <reboot into current> 1895 <do a "native" rebuild/install as described in the previous section> 1896 <maybe install compatibility libraries from ports/misc/compat*> 1897 <reboot> 1898 1899 1900 To upgrade in-place from stable to current 1901 ---------------------------------------------- 1902 <make sure you have good level 0 dumps> 1903 make buildworld [9] 1904 make kernel KERNCONF=YOUR_KERNEL_HERE [8] 1905 [1] 1906 <reboot in single user> [3] 1907 mergemaster -p [5] 1908 make installworld 1909 mergemaster -i [4] 1910 make delete-old [6] 1911 <reboot> 1912 1913 Make sure that you've read the UPDATING file to understand the 1914 tweaks to various things you need. At this point in the life 1915 cycle of current, things change often and you are on your own 1916 to cope. The defaults can also change, so please read ALL of 1917 the UPDATING entries. 1918 1919 Also, if you are tracking -current, you must be subscribed to 1920 freebsd-current@freebsd.org. Make sure that before you update 1921 your sources that you have read and understood all the recent 1922 messages there. If in doubt, please track -stable which has 1923 much fewer pitfalls. 1924 1925 [1] If you have third party modules, such as vmware, you 1926 should disable them at this point so they don't crash your 1927 system on reboot. 1928 1929 [3] From the bootblocks, boot -s, and then do 1930 fsck -p 1931 mount -u / 1932 mount -a 1933 cd src 1934 adjkerntz -i # if CMOS is wall time 1935 Also, when doing a major release upgrade, it is required that 1936 you boot into single user mode to do the installworld. 1937 1938 [4] Note: This step is non-optional. Failure to do this step 1939 can result in a significant reduction in the functionality of the 1940 system. Attempting to do it by hand is not recommended and those 1941 that pursue this avenue should read this file carefully, as well 1942 as the archives of freebsd-current and freebsd-hackers mailing lists 1943 for potential gotchas. The -U option is also useful to consider. 1944 See mergemaster(8) for more information. 1945 1946 [5] Usually this step is a noop. However, from time to time 1947 you may need to do this if you get unknown user in the following 1948 step. It never hurts to do it all the time. You may need to 1949 install a new mergemaster (cd src/usr.sbin/mergemaster && make 1950 install) after the buildworld before this step if you last updated 1951 from current before 20130425 or from -stable before 20130430. 1952 1953 [6] This only deletes old files and directories. Old libraries 1954 can be deleted by "make delete-old-libs", but you have to make 1955 sure that no program is using those libraries anymore. 1956 1957 [8] In order to have a kernel that can run the 4.x binaries needed to 1958 do an installworld, you must include the COMPAT_FREEBSD4 option in 1959 your kernel. Failure to do so may leave you with a system that is 1960 hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is 1961 required to run the 5.x binaries on more recent kernels. And so on 1962 for COMPAT_FREEBSD6 and COMPAT_FREEBSD7. 1963 1964 Make sure that you merge any new devices from GENERIC since the 1965 last time you updated your kernel config file. 1966 1967 [9] When checking out sources, you must include the -P flag to have 1968 cvs prune empty directories. 1969 1970 If CPUTYPE is defined in your /etc/make.conf, make sure to use the 1971 "?=" instead of the "=" assignment operator, so that buildworld can 1972 override the CPUTYPE if it needs to. 1973 1974 MAKEOBJDIRPREFIX must be defined in an environment variable, and 1975 not on the command line, or in /etc/make.conf. buildworld will 1976 warn if it is improperly defined. 1977FORMAT: 1978 1979This file contains a list, in reverse chronological order, of major 1980breakages in tracking -current. It is not guaranteed to be a complete 1981list of such breakages, and only contains entries since October 10, 2007. 1982If you need to see UPDATING entries from before that date, you will need 1983to fetch an UPDATING file from an older FreeBSD release. 1984 1985Copyright information: 1986 1987Copyright 1998-2009 M. Warner Losh. All Rights Reserved. 1988 1989Redistribution, publication, translation and use, with or without 1990modification, in full or in part, in any form or format of this 1991document are permitted without further permission from the author. 1992 1993THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR 1994IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1995WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1996DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT, 1997INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1998(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1999SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2000HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 2001STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 2002IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2003POSSIBILITY OF SUCH DAMAGE. 2004 2005Contact Warner Losh if you have any questions about your use of 2006this document. 2007 2008$FreeBSD: head/UPDATING 256198 2013-10-09 17:07:20Z gjb $ 2009