Announcing NetBSD 7.0

Introduction The NetBSD Project is pleased to announce NetBSD 7.0, the fifteenth major release of the NetBSD operating system. This release brings stability improvements, hundreds of bug fixes, and many new features. Some highlights of the NetBSD 7.0 release are: DRM/KMS support brings accelerated graphics to x86 systems using modern Intel and Radeon devices.

Multiprocessor ARM support.

Support for many new ARM boards: Raspberry Pi 2 ODROID-C1 BeagleBoard, BeagleBone, BeagleBone Black MiraBox Allwinner A20, A31: Cubieboard2, Cubietruck, Banana Pi, etc. Freescale i.MX50, i.MX51: Kobo Touch, Netwalker Xilinx Zynq: Parallella, ZedBoard

Major NPF improvements: BPF with just-in-time (JIT) compilation by default. Support for dynamic rules. Support for static (stateless) NAT. Support for IPv6-to-IPv6 Network Prefix Translation (NPTv6) as per RFC 6296. Support for CDB based tables (uses perfect hashing and guarantees lock-free O(1) lookups).

Multiprocessor support in the USB subsystem.

blacklistd(8), a new daemon that integrates with packet filters to dynamically protect other network daemons such as ssh, named, and ftpd from network break-in attempts.

Numerous improvements in the handling of disk wedges (see dkctl(8) for information about wedges).

GPT support in sysinst via the extended partitioning menu.

Lua kernel scripting.

epoc32, a new port which supports Psion EPOC PDAs.

GCC 4.8.4, which brings support for C++11.

Optional fully BSD-licensed C/C++ runtime env: compiler_rt, libc++, libcxxrt. Please read below for a full list of changes in NetBSD 7.0. Complete source and binaries for NetBSD 7.0 are available for download at many sites around the world. A list of download sites providing FTP, AnonCVS, SUP, and other services may be found at https://www.NetBSD.org/mirrors/. We encourage users who wish to install via ISO or USB disk images to download via BitTorrent by using the torrent files supplied in the images area. A list of hashes for the NetBSD 7.0 distribution has been signed with the well-connected PGP key for the NetBSD Security Officer: https://ftp.NetBSD.org/pub/NetBSD/security/hashes/NetBSD-7.0_hashes.asc NetBSD is free. All of the code is under non-restrictive licenses, and may be used without paying royalties to anyone. Free support services are available via our mailing lists and website. Commercial support is available from a variety of sources. More extensive information on NetBSD is available from our website: www.NetBSD.org

Major Changes Between 6.0 and 7.0 The complete list of changes can be found in the CHANGES and CHANGES-7.0 files in the top level directory of the NetBSD 7.0 release tree. An abbreviated version is below: General kernel Add sendmmsg(2) and recvmmsg(2) support.

Add BPF coprocessor support (BPF_COP/BPF_COPX instructions).

Add fdiscard(2) and posix_fallocate(2) system calls.

Add a new RLIMIT_NTHR limit to limit the number of processes per user and the corresponding kern.maxlwp sysctl.

Import sljit and add BPF JIT compiler.

Expose kern.uidinfo.* via sysctl.

Create an "options MODULAR_DEFAULT_AUTOLOAD" config option and add it to all kernel configs that contain "options MODULAR". This option turns on module autoloading by default (which is the current default). This allows people who don't want module autoloading on by default to disable it by simply removing/commenting this line.

kqueue(2): on NOTE_EXIT, put the exit code of the process in "data".

sysmon_pswitch(9): Introduce a new switch type, PSWITCH_TYPE_RADIO, to be used to report to userland hardware radio switch changes. powerd(8) will call a "radio_button" script to handle the event.

envsys(4): Add %rH (relative Humidity) to sensor framework. Networking Add sysctls to avoid IPv6 DoS attacks (from OpenBSD): net.inet6.ip6.neighborgcthresh = 2048 net.inet6.ip6.maxifprefixes = 16 net.inet6.ip6.maxifdefrouters = 16 net.inet6.ip6.maxdynroutes = 4096

Make shmif(4) work with bridges.

Add net.inet6.ip6.prefer_tempaddr sysctl knob to prefer IPv6 temporary addresses as the source address.

Add support for the TCP_INFO socket option, which permits the caller to query certain information about a TCP connection. File systems ptyfs: Allow multiple mounts and support proper device visibility in chroots.

Enable support for UFS1 extended attributes in GENERIC and GENERIC-like kernels.

FFS: Don't fail mounting the root filesystem if the WAPBL log is corrupt.

Add experimental support for the (mostly SSD specific) "discard", or ATA "TRIM" command to wd(4) and FFS. Security rnd(4): Sensors can now be a source of entropy. Gather much more entropy early in boot and thereafter: autoconf timings, all sysctl settings (including hostname), contents of early network packets, environmental sensor values generically rather than as per-driver special cases.

rnd(9): Add explicit enable/disable hooks for callout-driven sources (be more power friendly). Make "skew" source polled so it runs only when there is entropy demand. Adjust entropy collection from polled sources so it's processed sooner.

Add viornd(4), a driver for the VirtIO entropy source available on QEMU, KVM, and Google Compute Engine.

cprng_fast(9): Replace slow/broken mutex-protected kernel _arc4random() with new cprng_fast implementation using per-cpu instances of chacha8. Drivers Audio: ess(4): Add support for Spatializer, 3D audio effects embedded in ES1869 and ES1879.

Graphics and Video: Add accelerated support for modern Intel and Radeon devices on x86 through a port of the Linux 3.15 DRM/KMS code. genfb(4): Add support for 32bit framebuffers. Add gffb, a driver for NVIDIA GeForce2 MX graphics controllers. Add gmafb, a framebuffer driver for Intel Graphics Add tifb, an experimental driver for the Texas Instruments AM335x SoC's graphic controller. Add tdvfb(4), a 3Dfx Voodoo1 and Voodoo2 driver. udl(4): Add support for the BUFFALO GX-DVI/U2B DisplayLink USB-DVI box.

Storage: Recognize the Apple disk partitioning scheme, and auto-discover wedges. Fix iPod disk mounting. Add mpii(4), a driver for LSI Logic Fusion-MPT Message Passing Interface II SAS controllers. ata(4): Add support for SATA Port MultiPliers (PMP). mfi(4): Add tagged queuing support. Add support for LSI SAS2208-based controllers. Make it possible to use the LSI MegaCLI Linux binary on NetBSD. Add support for the bio(4) API to the mpt(4) driver. Make ccd(4) work with component and total sizes greater than 2TB.

Networking: Add axen(4), a driver for ASIX AX88178a and AX88179 Ethernet devices. Ported from OpenBSD. Add malo(4), a driver for Marvell Libertas IEEE 802.11b/g wireless network devices. Ported from OpenBSD. Add run(4), a driver for Ralink Technology RT2700U/RT2800U/RT3000U USB IEEE 802.11a/b/g/n wireless network devices. Ported from OpenBSD. Add usmsc(4), a driver for SMSC LAN95xx USB LAN devices. From FreeBSD/OpenBSD. Add vmx(4), a VMware VMXNET3 driver. Ported from OpenBSD. alc(4): Add support for AR816x/AR817x chipsets. bge(4): Add support for Altima AC1003, Apple BCM5701, Broadcom BCM5787F, BCM5787G, BCM5787F, BCM5719, BCM5720, BCM57762 (Apple Thunderbolt Gigabit Ethernet Adapter), BCM57766, BCM57782 and BCM57786. brgphy(4): Add support for BCM5756, BCM5717C, BCM5719C, BCM5720C and BCM57780. iwn(4): Add support for Centrino Wireless-N 100/105/130/135/1030/2200/2230 and Centrino Advanced-N 6230. ixg(4): Add support for X540, TSO6 and 100BaseTx. micphy(4): Add Micrel PHY (KSZ9021RN) support. rgephy(4): Add support for RTL8211F and RTL8251. u3g(4): Add Huawei E353 support. urtwn(4): Add support for Realtek RTL8188EUS and RTL8188ETV chipsets. wm(4): Add support for I210, I211, I217, I218, and I354.

USB: Add support for SMP to the USB subsytem. Add dwctwo(4), a driver for Synopsys DesignWare High Speed USB controllers. Add uatp(4), a driver for USB Apple trackpads. uftdi(4): Add BUFFALO PC-OP-RS1 support. uhidev(4): Add support for Xbox One controllers. umcs(4) Fix support for two-port variants.

Miscellaneous: Add hythygtemp(4), a driver for HYT-221/271/939 humidity and temperature I2C sensors. Add ibmcd(4), a driver for the IBM 4810 BSP cash drawer port. Add mcp23s17gpio(4), a driver for Microchip MCP23S17 16-bit GPIO chips. Add mcp980x(4), a driver for Microchip MCP9800/1/2/3 I2C temperature sensors. Add mpl115a(4), a driver for Freescale MPL115A2 I2C absolute pressure sensors. Add msm6242b(4), a driver for MI OKI MSM6242B time-of-day clocks. Add mcp48x1dac, a driver with preliminary support for the Microchip MCP48x1 family of Digital-to-Analog converters. Add ptcd(4), a driver for the Protech PS3100 cash drawer port. Add rtsx(4), a driver for Realtek RTL8402/RTL8411/RTL8411B/RTS5209/RTS5227/RTS5229 card readers. ubsec(4): Add support for AES-CBC modes and BCM586x chips. vmt(4): Synchronize the clock periodically to ensure it remains up-to-date even when the host is suspended. wskbd(4): Add belgian keyboard layouts (KB_BE) to pckbd(4) and ukbd(4).

Platforms alpha: Add support for AlphaStation DS15.

amd64: Add support for up to 256 CPUs. Add drivers for the Apple System Management Controller.

amiga: Add clockport(4) layer and a driver for A1200 on-board clockport a1k2cp(4). Rework X-Surf driver as xsurf(4). Add support for clockport(4) on top of xsurf. A2000-style RTCs are now driven by the msm6242b(4) driver. Add empm, a driver for the power manager present on Mediator 1200 TX and SX bridges. Support software power-off with empm(4). Add initial support for Thylacine USB cards using slhci(4). gayle(4): Add support for newer 1200 models. Add xsh(4), a driver for the Individual Computers X-Surf 100 network interface card. Add empb(4), an ELBOX Mediator PCI 1200 driver. Add z3rambd(4), a Zorro III RAM board driver. Add em4k(4), a Mediator 4000 PCI bridge driver. Add acafh(4), an Individual Computers ACA500 driver.

ARM: Add support for SMP. Add Cortex-A9 support. ARMFPE support has been removed. Add NEON userland support. Userland FPA support replaced with VFP. All arm ports with a common MACHINE_ARCH now generate the same userspace. All sets are the same except for etc.tgz. Switched to EABI.

epoc32: Add a new port, epoc32, supporting 32bit Psion EPOC PDAs, primarily the Series 5 (CL PS-711x), Series 5mx (Windermere) and Series 7 (StrongARM) models.

evbarm: Full Raspberry Pi support, including VideoCore IV GPU and audio support. Add support for the Raspberry Pi 2. Add support for the ODROID-C1. Add support for the BeagleBone (TI AM335x-based) board. Add support for the BeagleBoard-xM (TI DM37XX) board. Add support for the Kobo Touch (Freescale i.MX50). Add support for the BCM5301X SoC. Add support for OMAP4430. Add support for Freescale i.MX6. Add support for Marvell Armada XP SoCs. Add tps65217pmic(4), a driver with support for TPS65217 PMIC, as found on BeagleBone and other AM335x based boards. Add tiotg, a driver for the Texas Instruments AM335x SoC's USB OTG controller. Add bcmgpio, a BCM2835 GPIO obio driver. Add trng, an AM335x TRNG driver. Add bcmdmac, a BCM2835 dma controller driver. Add edma, a driver for the Enhanced Direct Memory Access controller found in the AM335x SoC. Add Zynq (Xilinx) support.

evbmips: Add support for Lemote Yeeloong Notebooks.

hppa: Renamed the hp700 port to hppa. Add ohci(4) support for the National Semiconductor PC87560, as found in many hppa machines. Add fenv(3) support.

hp300: Add arcofi(4), which supports the HP "Audio1" device found on HP9000/425e machines. Fixed broken apci console support in the bootloader. Add sti(4) at sgc screen console support to bootloader. Add HP9000/425e RTC support. Add proper consinit(9) support for sti(4) at sgc framebuffer on HP9000/425e. Add support for sti(4) framebuffer at sgc bus on some 425t. The Apollo Domain keyboard now works.

i386: Add a soekrisgpio driver for Soekris net6501 machines. Disable COMPAT_FREEBSD by default. Remove vga@isa and pcdisplay@isa from GENERIC, and create a new LEGACY kernel config that includes them instead.

luna68k: Add preliminary support for 4bpp framebuffers. Add a native bootloader based on the 4.4BSD-Lite2/luna68k "Stinger" loader. Add netboot support. sysinst now creates a boot UFS partition and installs the native bootloader during installation. Add ANSI text color support for 8bpp color framebuffers. The wsfb(4) Xserver now works as monochrome server even with 4bpp/8bpp color framebuffers. The console ANSI color palette is now reset properly after returning to WSDISPLAYIO_MODE_EMUL (e.g., when exiting the Xserver).

macppc: Add support for ppc601-based machines.

m68k: Add inverse trigonometric functions, hyperbolic arctangent, exponential and power functions to m68k floating point emulation.

sparc: Add hardware acceleration for cgfourteen(4) using SX.

sparc64: Switch to TOPDOWN_VM.

x68k: Add a network bootloader for Neptune-X and Nereid Ethernet. The bootloader now probes the actual memory size and warns if the memory size value stored in SRAM is different. Add a 'switch' command to the bootloader to display and modify SRAM parameters as NetBSD's memswitch(8) and Human68k's SWITCH.X commands. Switched to X.Org, including the X68k monolithic server. Add support for up to 1008 MB of extended memory on the XM6i emulator. Add support for formatting floppies.

xen: Add MODULAR infrastructure for Xen kernels.

Userland Add blacklistd(8), a daemon that integrates with packet filters to dynamically protect other network daemons such as ssh, named, and ftpd from network break-in attempts.

Add ekermit(1), which is BSD-licenced. Replaces gkermit.

Add flock(1), a utility to provide locks to shell scripts similar to shlock(1).

Add getaddrinfo(1), a utility for querying the system's name resolver.

Add midirecord(1), a program for recording MIDI files.

Add a service(8) command, based on the FreeBSD script.

Add timeout(1), a command to run a command with a time limit.

Add support for named wedges to the following commands: ccdconfig(8), installboot(8), fsck(8), newfs(8).

atactl(8): Add support for ATA SECURITY commands including setting firmware passwords and erasing disks.

cksum(1): Add a -q option for quiet operation.

dbsym(8): Add the -p option, to report the size of the kernel symbol table and the size of the db_symtab space.

dd(1): Add iflag and oflag operands.

dkctl(8): Add makewedges option to autodiscover wedges from a changed label.

etcupdate(8): A colon-separated list of tgz files is no longer accepted; you must use multiple -s options instead.

etcupdate(8): Add destdir support.

fstab(5): Add NAME=wedgename for fs_spec and routines to parse it. Now wedges can be used in /etc/fstab, even in dynamic environments where disks come and go and wedges get renumbered.

ftp(1): Add HTTPS support.

gpt(8): Complete overhaul, including adding following subcommands: type, resize, set, unset, backup, restore, and resizedisk.

httpd(8): Add Lua scripting for content creation.

indent(1): Add -ut / -nut options for tab treatment, as in FreeBSD.

makefs(8): Add support for msdos and UDF, creating file systems at an offset, and merging directories with common files.

mkdep(1): Add the -P option to prepend the string given to every target filename.

netstat(1): Accept -faddress_family[,family ...].

patch(1): Drop SCCS support.

pcictl(8): Add "read" and "write" subcommands.

pr(1): Add support for POSIX -f and -p options.

resize_ffs(8): Add -c to check to see if grow/shrink is required. Add a -p flag, which displays a progress bar.

systat(1): Accept shell patterns to select drives.

tetris(6): Add a 'down' key, defaulting to 'n'. It moves the block down a line, if it fits. Add support for colors.

tset(1): Restore logic for setting the VERASE character. Use terminfo _unless_ the terminal does overstrike, and use terminfo data not only for an unset tty.

units(1): Add -l and -L options to list known units.

vndcompress(1) Add support for restarting after interrupt. Add support for constant memory, so 32-bit systems should be able to compress or uncompress multi-terabyte disks.

zgrep(1): suppress the prefixing of filename on output when only one file is specified, to match grep(1)'s output.

Libraries: libc: Add a murmurhash2 function. Add consttime_memequal(3) and explicit_memset(3) for crypto applications. Add strtoi(3) and strtou(3). arc4random(3): Use ChaCha20 instead of RC4. libm: Add basic long double support for elementary functions. Most transcendent functions are stubbed out. librt: Add shm_open(3) and shm_unlink(3). ossaudio(3): Add initial OSSv4 support. Implement FUSE direct I/O. Add PUFFS support for fallocate and fdiscard operations, and add FUSE fallocate support. puffs(3): Add PUFFS_KFLAG_NOFLUSH_META to prevent sending metadata flush to FUSE.

3rd party software updates: BIND 9.10.2-P4 IPFilter 5.1.1 LLVM 3.6.1 OpenLDAP 2.4.39 OpenSSH 6.8 OpenSSL 1.0.1p SQLite 3.8.3.1 atf(7) 0.20 binutils 2.23.2 byacc 20130304 bzip2(1) 1.0.6 dhcp 4.3.0 dhcpcd(8) 6.7.1 file(1) 5.19 flex 2.5.39 gcc(1) 4.8.4 gdb(1) 7.7.1 kerberos(8) Heimdal-1-5-branch less(1) 458 libevent 2.0.22-stable libpcap 1.5.2 lua(1) 5.3.0 mDNSResponder 258.14 ntp 4.2.8p2 openpam(3) 20140912 (Ourouparia) openresolv 3.6.0 pcc 1.1.0.DEVEL 20120325 pppd 2.4.7 pigz(1) 2.3.1 postfix(1) 2.11.4 tcpdump(8) 4.5.1 tmux(1) 1.9a tzdata 2015f wpa_supplicant/hostapd 2.4

Miscellaneous /usr/share/doc: Install formatted docs instead of nroff sources, and reorganize.

New BUILDINFO variable may be passed to build.sh, and exposed in /etc/release, as well as in sysctl kern.buildinfo.

Process /etc/modules.conf (if present) at startup, before securelevel is raised, to allow module loading on ports without a module aware bootloader.

Add a resize_root rc.d script. If resize_root=YES in rc.conf (the default is NO) then the system attempts to resize the root file system to fill its partition prior to mounting read-write. Components removed from NetBSD In this release of NetBSD, the following software components have been removed from the system. Some were not useful anymore, or their utility did not justify the maintenance overhead. Others were not working properly and there was a lack of interest in fixing them. The window utility was removed in favor of tmux. window can be found in pkgsrc/misc/window.

OSI network stack support was removed.

FAST_IPSEC is now named IPSEC. The old KAME IPSEC code is gone.

System families supported by NetBSD 7.0 The NetBSD 7.0 release provides supported binary distributions for the following systems: NetBSD/acorn26 Acorn Archimedes, A-series and R-series systems NetBSD/acorn32 Acorn RiscPC/A7000, VLSI RC7500 NetBSD/algor Algorithmics, Ltd. MIPS evaluation boards NetBSD/alpha Digital/Compaq Alpha (64-bit) NetBSD/amd64 AMD family processors like Opteron, Athlon64, and Intel CPUs with EM64T extension NetBSD/amiga Commodore Amiga and MacroSystem DraCo NetBSD/amigappc PowerPC-based Amiga boards. NetBSD/arc MIPS-based machines following the Advanced RISC Computing spec NetBSD/atari Atari TT030, Falcon, Hades NetBSD/bebox Be Inc's BeBox NetBSD/cats Chalice Technology's CATS and Intel's EBSA-285 evaluation boards NetBSD/cesfic CES FIC8234 VME processor board NetBSD/cobalt Cobalt Networks' MIPS-based Microservers NetBSD/dreamcast Sega Dreamcast game console NetBSD/emips The Extensible MIPS architecture from Microsoft Research NetBSD/epoc32 Psion EPOC PDAs NetBSD/evbarm Various ARM-based evaluation boards and appliances NetBSD/evbmips Various MIPS-based evaluation boards and appliances NetBSD/evbppc Various PowerPC-based evaluation boards and appliances NetBSD/evbsh3 Various Hitachi Super-H SH3 and SH4-based evaluation boards and appliances NetBSD/ews4800mips NEC's MIPS-based EWS4800 workstation NetBSD/hp300 Hewlett-Packard 9000/300 and 400 series NetBSD/hppa Hewlett-Packard 9000 Series 700 workstations NetBSD/hpcarm StrongARM based Windows CE PDA machines NetBSD/hpcmips MIPS-based Windows CE PDA machines NetBSD/hpcsh Hitachi Super-H based Windows CE PDA machines NetBSD/i386 IBM PCs and PC clones with i486-family processors and up NetBSD/ibmnws IBM Network Station 1000 NetBSD/iyonix Castle Technology's Iyonix ARM based PCs NetBSD/landisk SH4 processor based NAS appliances NetBSD/luna68k OMRON Tateisi Electric's LUNA series NetBSD/mac68k Apple Macintosh with Motorola 68k CPU NetBSD/macppc Apple PowerPC-based Macintosh and clones NetBSD/mipsco MIPS Computer Systems Inc. family of workstations and servers NetBSD/mmeye Brains mmEye multimedia server NetBSD/mvme68k Motorola MVME 68k Single Board Computers NetBSD/mvmeppc Motorola PowerPC VME Single Board Computers NetBSD/netwinder StrongARM based NetWinder machines NetBSD/news68k Sony's 68k-based “ NET WORK STATION ” series NetBSD/newsmips Sony's MIPS-based “ NET WORK STATION ” series NetBSD/next68k NeXT 68k “ black ” hardware NetBSD/ofppc OpenFirmware PowerPC machines NetBSD/pmax Digital MIPS-based DECstations and DECsystems NetBSD/prep PReP (PowerPC Reference Platform) and CHRP machines NetBSD/rs6000 IBM RS/6000 MCA-based PowerPC machines. NetBSD/sandpoint Motorola Sandpoint reference platform, including many PPC-based NAS boxes NetBSD/sbmips Broadcom SiByte evaluation boards NetBSD/sgimips Silicon Graphics' MIPS-based workstations NetBSD/shark Digital DNARD ( “ shark ” ) NetBSD/sparc Sun SPARC (32-bit) and UltraSPARC (in 32-bit mode) NetBSD/sparc64 Sun UltraSPARC (in native 64-bit mode) NetBSD/sun2 Sun Microsystems Sun 2 machines with Motorola 68010 CPU NetBSD/sun3 Motorola 68020 and 030 based Sun 3 and 3x machines NetBSD/vax Digital VAX NetBSD/x68k Sharp X680x0 series NetBSD/xen The Xen virtual machine monitor NetBSD/zaurus Sharp ARM PDAs Ports available in source form only for this release include the following: NetBSD/ia64 Itanium family of processors

Acknowledgments The NetBSD Foundation would like to thank all those who have contributed code, hardware, documentation, funds, colocation for our servers, web pages and other documentation, release engineering, and other resources over the years. More information on the people who make NetBSD happen is available at: www.NetBSD.org/people/ We would like to especially thank the University of California at Berkeley and the GNU Project for particularly large subsets of code that we use. We would also like to thank the Internet Systems Consortium Inc. and the Network Security Lab at Columbia University's Computer Science Department for current colocation services.

About NetBSD NetBSD is a free, fast, secure, and highly portable Unix-like Open Source operating system. It is available for a wide range of platforms, from large-scale servers and powerful desktop systems to handheld and embedded devices. Its clean design and advanced features make it excellent for use in both production and research environments, and the source code is freely available under a business-friendly license. NetBSD is developed and supported by a large and vibrant international community. Many applications are readily available through pkgsrc, the NetBSD Packages Collection.

About the NetBSD Foundation The NetBSD Foundation was chartered in 1995, with the task of overseeing core NetBSD project services, promoting the project within industry and the open source community, and holding intellectual property rights on much of the NetBSD code base. Day-to-day operations of the project are handled by volunteers. As a non-profit organization with no commercial backing, the NetBSD Foundation depends on donations from its users, and we would like to ask you to consider making a donation to the NetBSD Foundation in support of continuing production of our fine operating system. Your generous donation would be particularly welcome to help with ongoing upgrades and maintenance, as well as with operating expenses for the NetBSD Foundation. Donations can be done via PayPal to <paypal@NetBSD.org> , or via Google Checkout and are fully tax-deductible in the US. See www.NetBSD.org/donations/ for more information, or contact <finance-exec@NetBSD.org> directly.

Back to NetBSD 7.x formal releases