RELEASE NOTES FreeBSD Release 3.0-SNAPSHOT This is a SNAPSHOT release of FreeBSD 3.0-CURRENT and is aimed primarily at release testers. Some parts of the documentation may not be updated yet and should be reported if and when seen. Naturally, any installation failures or crashes should also be reported ASAP by sending mail to freebsd-bugs@FreeBSD.org or using the send-pr command (those preferring a WEB based interface can also see http://www.freebsd.org/send-pr.html). For information about FreeBSD and the layout of the 3.0-SNAPSHOT release directory (especially if you're installing from floppies!), see ABOUT.TXT. For installation instructions, see the INSTALL.TXT and HARDWARE.TXT files. And for the latest 3.0-current (HEAD branch) snapshot releases, please install from: ftp://current.freebsd.org/pub/FreeBSD Many many bugs fixed and security enhancements made. 1. What's new since 2.2.X-RELEASE ------------------------------------ KERNEL CHANGES: o The code from 4.4BSD-Lite2 has been (finally) merged. o The SMP (Symmetric MultiProcessing) branch has been merged. The kernel is mostly non-reentrant as yet, but work is under way. o Secure RPC is now supported (and usable with NFS et al). o Sun's WEBNFS standard is now supported. o The MSDOS filesystem code now handles VFAT and FAT32 partitions. o The ed0 (wd8xxxx, 3c503, NE2000, HP Lan+) Ethernet device's default IRQ has changed from IRQ 5 to IRQ 10. The ed1 Ethernet device has been removed. Use the Userconfig utility to change ed0's values to match your network card's settings. o Use the new if_multiaddrs list for multicast addresses rather than the previous hackery involving struct in_ifaddr and arpcom. Get rid of the abominable multi_kludge. o The new if_media selection method for ethernet drivers has been brought in, obtained from Jason Thorpe's implementation for NetBSD. o Multi-session ISO-9660 CD-ROMs are now fully supported. By default, the last session will be mounted (including for root mounts). For non-root mounts, mount_cd9660(8) can take an argument to mount a particular session instead of the default one. o The UPAGES are gone from the per-process address space which allows complete address space and page table sharing by reference count. o Newly forked child processes return directly to user mode rather than return up through the fork() syscall tree. This eliminates the kernel stack copy at fork time and simplifies certain other internal operations. It is also needed to support the removal of the UPAGES. (The idea for this originally came from NetBSD, but we did it for different reasons.) o vfork() is now fully functional by taking advantage of the new sharing semantics and a significant speedup has been measured. This can be disabled via the kern.fast_vfork sysctl variable in case of problems. Statically linked binaries from older releases and other BSD platforms are a problem since there was a bug in the 4.4BSD (net2, Lite and Lite2) popen() implementation. rfork() also has access to these facilities, intended for supporting kernel assisted threads. o With the contribution of Berkeley Software Design, Inc., Jonathan Lemmon, Mike Smith, Sean Eric Fagan, and John Dyson, VM86 support has been added to the kernel, and BSD/OS's contributed dosemu has been ported. o The SA_NOCLDWAIT flags has been implemented, featuring the System V option where a process can express its wish to never get zombies or SIGCHLD for dead children. o An implementation of poll(2) is in place, the core of which is derived from the NetBSD implementation. Both the select() and poll() syscalls use the poll device, file and vnode ops routines. o An implementation of issetugid(2) that is similar to the OpenBSD call of the same name. We set the flag in more cases than OpenBSD - our implementation is slightly more paranoid. o Async IO is implemented (under non-SMP at this stage) with additional support for kernel assisted threads. o Some other misc syscalls for compatability with other systems: getsid(2), setpgid(2), nanosleep(2). o A new syscall signanosleep(2) which is like nanosleep(2), but a specific signal mask is used to determine which signals will wake the sleep. In a nutshell this is 'wait for a given set of signals for up to a certain amount of time'. o sleep(3) and usleep(3) are now implemented in terms of signanosleep(2) and now have correct SIGALRM interaction semantics and sleep(3) correctly returns the time remaining. Some programs (notably apache httpd) bogusly depend on a sleep() "absorbing" a SIGALRM from a timer that expires during the life of the sleep. o An in-kernel linker is implemented and intended to replace the lkm system with the bogosity that goes with it. o All supported network protocols have been updated to avoid the ``big switch'' pr_usrreq(), and to pass a process pointer down to each user request that might need process credentials or want to sleep, replacing the previous hodgepodge of inspecting curproc (which only occasionally did the right thing) and the SS_PRIV socket state flag. The latter has now been eliminated, along with the SO_PRIVSTATE socket option which cleared it. Protocols are now also given the opportunity to override the generic send, receive, and poll routines, which will make it possible for a more efficient, protocol-specific implementation of these entry points in later releases. Finally, many parts of the network code have been modified to cease storing socket addresses and other metainformation in mbufs, in preparation for the eventual elimination thereof. The mechanism by which socket addresses are now returned is still highly subject to change as we experiment to discover the most efficient method. o Responses to multicast ICMP ECHO REQUEST (``ping'') and ADDRESS MASK REQUEST packets can now be disabled via sysctl. The netstat program will print out statistics on how many times this happens. o It is possible to compile in a font for syscons. o The bootblocks can set VESA videomode 0x102 (800x600x16) before loading the kernel, this allows XFree86 to work in this resolution on most moderately recent graphics hardware, including many laptops. A set of patches are making their way to -current that allows syscons to operate in this mode too; contact phk@FreeBSD.org. o A subtle and seldom bug in ffs has been fixed. o The VFS name cache has been reworked to be more accountable and efficient. o The generic part of VOP_LOOKUP() has been put it in system-wide function which filesystems can rely on for the canonical stuff. o Vnode freelist handling has been hauled over. Vnodes are only on the freelist if nobody care about them. o The kernel provides assistance to getcwd() from data stored in the name cache if possible. o An interrupt driven configuration hook mechanism has been implemented. This allows drivers to postpone part of their configuration until after interrupts are fully enabled. This speeds booting because busy-waiting is avoided for things like sub device probing (eg: SCSI bus probes). o The timeout(9) system in the kernel has been overhauled. This gives O(1) insertion and removal of callouts and an O(hash chain length) amount of work to be performed in softclock. The original paper is at: http://www.cs.berkeley.edu/~amc/research/timer/ o Changes in driver buffer queuing to deal with ordered transactions. This is intended for sequencing data and metadata writes in the filesystem code once fully supported. o EISA Shared interrupts are now supported, working with the framework originally for supporting PCI shared interrupts. o Support for the Comtrol Rocketport card. o New Plug and Play (PnP) support that allows you to (re)configure PnP devices. Also support modems being detected by the PnP part and automatically attached. o Import of new sound code from Luigi Rizzo. This code is still being developed, but has support for a number of different cards. o The psm, mse and sysmouse drivers are improved to provide better mouse support. In particular, the psm driver now supports various ``wheeled'' mice. o Added support for SMC EtherPower II 10/100 Fast Ethernet card (aka SMC9432TX based on SMC83c170 EPIC chip). o Added support for ATAPI floppy drives (LS-120). SECURITY CHANGES: 97/7/29 Lots of lpr/lpd security fixes merged from OpenBSD. 97/8/22 buffer overflows in tip corrected (benign since tip isn't set[ug]id) 97/8/26 buffer overflow in glob fixed, no know exploits 97/8/27 vacation security problem with sendmail corrected (SNI) 97/8/29 inetd sleeps less when children exit, making DoS attacks much harder. 97/8/29 fts now race-proof and find -execdir added (-current only) 97/8/31 games setuid -> setgid. Makes any games exploits benign (only score files vulnerable). Please report any problems to eivind@FreeBSD.org (score-file ownership problems are known) 97/12/3 Add Intel's suggested fix for the F00F bug. If you don't have a Pentium, the NO_F00F_HACK kernel option will disable it. 98/1/20 More robust protection against LAND attacks now incorporated. The suidperl vulnerability mentioned in the CERT advisory CA-97.17 is also believed to be fixed. KerberosIV is now merged. USERLAND CHANGES: The default username length has increased to 16 characters. Caution: Old utmp/wtmp files will NOT work with this change since the data records will be of the old size. For a conversion utility to aid with this, see /usr/src/tools/3.0-upgrade. /etc/sysconfig now replaced by more compact /etc/rc.conf file (new since 2.2.1). fdisk(8) now numbers disk slices from 1 to 4 rather than from 0 to 3. This brings it in line with the numbers used in the device names in /dev. When operating over the network, finger(1) no longer closes the socket immediately after sending its request, but instead waits for the remote end to close first. (The specification is ambiguous, so we are following the behavior which interoperates with the most servers.) This means that it is now possible to use the MIT directory and finger people at certain broken Linux machines. There is a new flag to fetch(1) which allows it to talk to certain broken HTTP implementations which react badly to a request message immediately followed by a close of the connection. netstat(1) now uses sysctl(3) to retrieve more statitistics groups, and uses the correct, unsigned format for printing most of them out. A new VGA library (/usr/src/lib/libvgl) now exists for doing simple VGA graphics to syscons ttys (sort of like Linux's libSVGA). Xntpd's syslogging has been moved out into a facility of its own (LOG_NTP, userland name "ntp"). A new pair of ioctl's has been added: SIOC[SG]IFGENERIC. The intent is to provide for a hook to pass arbitrary ioctl subcommands down to a network interface driver. This is for example necesseray for PPP drivers to communicate things like CHAP names and secrets, or variable options between the driver and a userland utility. sppp(4) has been improved a fair bit since FreeBSD 2.2.X. It now employs a full-fledged PPP state machine, offers a lot more of LCP and IPCP negotiation, making it ready for dial-on-demand connections (like those that are often running over ISDN). It also offers PAP or CHAP authentication. The userland counterpart spppcontrol(8) is also the first program that utilizes the abovementioned SIOC[SG]IFGENERIC ioctl commands. moused(8) has been modified to support various mice with a ``wheel''. It also automatically recognizes mice which support the PnP COM device standard, so that the user is no longer required to supply a mouse protocol type on the command line. 2. Supported Configurations --------------------------- FreeBSD currently runs on a wide variety of ISA, VLB, EISA and PCI bus based PC's, ranging from 386sx to Pentium class machines (though the 386sx is not recommended). Support for generic IDE or ESDI drive configurations, various SCSI controller, network and serial cards is also provided. What follows is a list of all peripherals currently known to work with FreeBSD. Other configurations may also work, we have simply not as yet received confirmation of this. 2.1. Disk Controllers --------------------- WD1003 (any generic MFM/RLL) WD1007 (any generic IDE/ESDI) IDE ATA Adaptec 1535 ISA SCSI controllers Adaptec 154x series ISA SCSI controllers Adaptec 174x series EISA SCSI controller in standard and enhanced mode. Adaptec 274X/284X/2940/3940 (Narrow/Wide/Twin) series ISA/EISA/PCI SCSI controllers. Adaptec AIC7850 on-board SCSI controllers. ** Note: You cannot boot from the SoundBlaster cards as they have no on-board BIOS, such being necessary for mapping the boot device into the system BIOS I/O vectors. They're perfectly usable for external tapes, CDROMs, etc, however. The same goes for any other AIC-6x60 based card without a boot ROM. Some systems DO have a boot ROM, which is generally indicated by some sort of message when the system is first powered up or reset, and in such cases you *will* also be able to boot from them. Check your system/board documentation for more details. Buslogic 545S & 545c Buslogic 445S/445c VLB SCSI controller Buslogic 742A, 747S, 747c EISA SCSI controller. Buslogic 946c PCI SCSI controller Buslogic 956c PCI SCSI controller SymBios (formerly NCR) 53C810, 53C825, 53c860 and 53c875 PCI SCSI controllers: ASUS SC-200 Data Technology DTC3130 (all variants) NCR cards (all) Symbios cards (all) Tekram DC390W, 390U and 390F Tyan S1365 Tekram DC390 and DC390T controllers (maybe other cards based on the AMD 53c974 as well). NCR5380/NCR53400 ("ProAudio Spectrum") SCSI controller. DTC 3290 EISA SCSI controller in 1542 emulation mode. UltraStor 14F, 24F and 34F SCSI controllers. Seagate ST01/02 SCSI controllers. Future Domain 8xx/950 series SCSI controllers. WD7000 SCSI controller. With all supported SCSI controllers, full support is provided for SCSI-I & SCSI-II peripherals, including Disks, tape drives (including DAT and 8mm Exabyte) and CD ROM drives. The following CD-ROM type systems are supported at this time: (cd) SCSI interface (also includes ProAudio Spectrum and SoundBlaster SCSI) (matcd) Matsushita/Panasonic (Creative SoundBlaster) proprietary interface (562/563 models) (scd) Sony proprietary interface (all models) (wcd) ATAPI IDE interface Unmaintained drivers, they might or might not work for your hardware: Adaptec 1510 series ISA SCSI controllers (not for bootable devices) Adaptec 152x series ISA SCSI controllers Adaptec AIC-6260 and AIC-6360 based boards, which includes the AHA-152x and SoundBlaster SCSI cards. Floppy tape interface (Colorado/Mountain/Insight) (mcd) Mitsumi proprietary CD-ROM interface (all models) 2.2. Ethernet cards ------------------- Allied-Telesis AT1700 and RE2000 cards AMD PCnet/PCI (79c970 & 53c974 or 79c974) SMC Elite 16 WD8013 ethernet interface, and most other WD8003E, WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT and WD8013EBT based clones. SMC Elite Ultra. SMC Etherpower II. DEC EtherWORKS III NICs (DE203, DE204, and DE205) DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422) DEC DC21040, DC21041, or DC21140 based NICs (SMC Etherpower 8432T, DE245, etc) DEC FDDI (DEFPA/DEFEA) NICs Fujitsu MB86960A/MB86965A HP PC Lan+ cards (model numbers: 27247B and 27252A). Intel EtherExpress (not recommended due to driver instability) Intel EtherExpress Pro/10 Intel EtherExpress Pro/100B PCI Fast Ethernet Isolan AT 4141-0 (16 bit) Isolink 4110 (8 bit) Novell NE1000, NE2000, and NE2100 ethernet interface. 3Com 3C501 cards 3Com 3C503 Etherlink II 3Com 3c505 Etherlink/+ 3Com 3C507 Etherlink 16/TP 3Com 3C509, 3C579, 3C589 (PCMCIA), 3C590/592/595/900/905 PCI and EISA (Fast) Etherlink III / (Fast) Etherlink XL Toshiba ethernet cards PCMCIA ethernet cards from IBM and National Semiconductor are also supported. Note that NO token ring cards are supported at this time as we're still waiting for someone to donate a driver for one of them. Any takers? 2.3. Misc --------- AST 4 port serial card using shared IRQ. ARNET 8 port serial card using shared IRQ. ARNET (now Digiboard) Sync 570/i high-speed serial. Boca BB1004 4-Port serial card (Modems NOT supported) Boca IOAT66 6-Port serial card (Modems supported) Boca BB1008 8-Port serial card (Modems NOT supported) Boca BB2016 16-Port serial card (Modems supported) Comtrol Rocketport card. Cyclades Cyclom-y Serial Board. STB 4 port card using shared IRQ. SDL Communications Riscom/8 Serial Board. SDL Communications RISCom/N2 and N2pci high-speed sync serial boards. Stallion multiport serial boards: EasyIO, EasyConnection 8/32 & 8/64, ONboard 4/16 and Brumby. Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound and Roland MPU-401 sound cards. Connectix QuickCam Matrox Meteor Video frame grabber Creative Labs Video Spigot frame grabber Cortex1 frame grabber Hauppauge Wincast/TV boards (PCI) STB TV PCI Intel Smart Video Recorder III Various Frame grabbers based on Brooktree Bt848 chip. HP4020, HP6020, Philips CDD2000/CDD2660 and Plasmon CD-R drives. PS/2 mice Standard PC Joystick X-10 power controllers GPIB and Transputer drivers. Genius and Mustek hand scanners. FreeBSD currently does NOT support IBM's microchannel (MCA) bus. 3. Obtaining FreeBSD -------------------- You may obtain FreeBSD in a variety of ways: 3.1. FTP/Mail ------------- You can ftp FreeBSD and any or all of its optional packages from `ftp.freebsd.org' - the official FreeBSD release site. For other locations that mirror the FreeBSD software see the file MIRROR.SITES. Please ftp the distribution from the site closest (in networking terms) to you. Additional mirror sites are always welcome! Contact freebsd-admin@FreeBSD.org for more details if you'd like to become an official mirror site. If you do not have access to the Internet and electronic mail is your only recourse, then you may still fetch the files by sending mail to `ftpmail@ftpmail.vix.com' - putting the keyword "help" in your message to get more information on how to fetch files using this mechanism. Please do note, however, that this will end up sending many *tens of megabytes* through the mail and should only be employed as an absolute LAST resort! 3.2. CDROM ---------- FreeBSD 3.0-SNAP and 2.2.x-RELEASE CDs may be ordered on CDROM from: Walnut Creek CDROM 4041 Pike Lane, Suite D Concord CA 94520 1-800-786-9907, +1-510-674-0783, +1-510-674-0821 (FAX) Or via the Internet from orders@cdrom.com or http://www.cdrom.com. Their current catalog can be obtained via ftp from: ftp://ftp.cdrom.com/cdrom/catalog Cost per -RELEASE CD is $39.95 or $24.95 with a FreeBSD subscription. FreeBSD 3.0-SNAP CDs are $39.95 or $14.95 with a FreeBSD-SNAP subscription (-RELEASE and -SNAP subscriptions are entirely separate). With a subscription, you will automatically receive updates as they are released. Your credit card will be billed when each disk is shipped and you may cancel your subscription at any time without further obligation. Shipping (per order not per disc) is $5 in the US, Canada or Mexico and $9.00 overseas. They accept Visa, Mastercard, Discover, American Express or checks in U.S. Dollars and ship COD within the United States. California residents please add 8.25% sales tax. Should you be dissatisfied for any reason, the CD comes with an unconditional return policy. 4. Reporting problems, making suggestions, submitting code. ----------------------------------------------------------- Your suggestions, bug reports and contributions of code are always valued - please do not hesitate to report any problems you may find (preferably with a fix attached, if you can!). The preferred method to submit bug reports from a machine with Internet mail connectivity is to use the send-pr command or use the CGI script at http://www.freebsd.org/send-pr.html. Bug reports will be dutifully filed by our faithful bugfiler program and you can be sure that we'll do our best to respond to all reported bugs as soon as possible. Bugs filed in this way are also visible on our WEB site in the support section and are therefore valuable both as bug reports and as "signposts" for other users concerning potential problems to watch out for. If, for some reason, you are unable to use the send-pr command to submit a bug report, you can try to send it to: freebsd-bugs@FreeBSD.org Note that send-pr itself is a shell script that should be easy to move even onto a totally different system. We much prefer if you could use this interface, since it make it easier to keep track of the problem reports. However, before submitting, please try to make sure whether the problem might have already been fixed since. Otherwise, for any questions or tech support issues, please send mail to: freebsd-questions@FreeBSD.org Additionally, being a volunteer effort, we are always happy to have extra hands willing to help - there are already far more desired enhancements than we'll ever be able to manage by ourselves! To contact us on technical matters, or with offers of help, please send mail to: freebsd-hackers@FreeBSD.org Please note that these mailing lists can experience *significant* amounts of traffic and if you have slow or expensive mail access and are only interested in keeping up with significant FreeBSD events, you may find it preferable to subscribe instead to: freebsd-announce@FreeBSD.org All of the mailing lists can be freely joined by anyone wishing to do so. Send mail to MajorDomo@FreeBSD.org and include the keyword `help' on a line by itself somewhere in the body of the message. This will give you more information on joining the various lists, accessing archives, etc. There are a number of mailing lists targeted at special interest groups not mentioned here, so send mail to majordomo and ask about them! 5. Acknowledgements ------------------- FreeBSD represents the cumulative work of many dozens, if not hundreds, of individuals from around the world who have worked very hard to bring you this release. For a complete list of FreeBSD project staffers, please see: http://www.freebsd.org/handbook/staff.html or, if you've loaded the doc distribution: file:/usr/share/doc/handbook/staff.html Special mention to: The donors listed at http://www.freebsd.org/handbook/donors.html Everyone at Montana State University for their initial support. And to the many thousands of FreeBSD users and testers all over the world, without whom this release simply would not have been possible. We sincerely hope you enjoy this release of FreeBSD! The FreeBSD Project