原文链接:FreeBSD 8.0-RELEASE Release Notes
版权所有 © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 FreeBSD 文档项目
FreeBSD 是 FreeBSD 基金会的注册商标。
IBM、AIX、EtherJet、Netfinity、OS/2、PowerPC、PS/2、S/390 和 ThinkPad 是国际商业机器公司(IBM)在美国、其他国家或两者的商标。
IEEE、POSIX 和 802 是美国电气和电子工程师协会(IEEE)在美国的注册商标。
Intel、Celeron、EtherExpress、i386、i486、Itanium、Pentium 和 Xeon 是英特尔公司及其子公司在美国和其他国家的商标或注册商标。
Sparc、Sparc64、SPARCEngine 和 UltraSPARC 是 SPARC 国际公司在美国和其他国家的商标。 bearing SPARC 商标的产品基于 Sun Microsystems, Inc. 开发的架构。
制造商和销售商用来区分其产品的许多名称都被声明为商标。文档中出现这些名称时,且 FreeBSD 项目已知其商标声明时,这些名称后面将附有“™”或“®”符号。
FreeBSD 8.0-RELEASE 的发行说明包含了自上一个版本以来在 8-STABLE 开发线中对 FreeBSD 基本系统所做更改的总结。该文档列出了自上一个版本以来发布的适用的安全公告,以及 FreeBSD 内核和用户空间的重大更改。还简要说明了升级的相关事项。
本文档包含 FreeBSD 8.0-RELEASE 的发行说明。它介绍了 FreeBSD 中最近新增、修改或删除的功能。同时还提供了从先前版本升级到此版本的一些说明。
此版本的 FreeBSD 8.0-RELEASE 是一个发布版本。可以在 ftp://ftp.FreeBSD.org/ 或其任何镜像站点找到。关于如何获取此版本(或其他版本)FreeBSD 发行版的更多信息,请参考 FreeBSD 手册 中的 "获取 FreeBSD" 附录。
在安装 FreeBSD 之前,强烈建议所有用户查看发行错误说明。错误说明文档会更新包含在发布周期后期或发布后发现的“临时”信息。通常,它包含已知错误、漏洞公告和文档修正。最新的 FreeBSD 8.0-RELEASE 错误说明副本可以在 FreeBSD 网站上找到。
本节介绍了自 7.0-RELEASE 以来 FreeBSD 中最显著的新功能或已更改的功能,以及先前版本的发行说明中所标注的更改 [7.1R] 和 [7.2R]。
典型的发行说明项目包括发布后 7.0-RELEASE 发布的安全公告、新的驱动程序或硬件支持、新的命令或选项、主要的错误修复,或第三方软件升级。它们也可能列出对主要 Port/包或发布工程实践的更改。显然,发行说明不能列出每个版本之间 FreeBSD 所做的每一项更改;本文档主要关注安全公告、用户可见的更改和主要的架构改进。
以下安全公告中描述的问题已经修复。如需更多信息,请参阅各个公告,详情请访问 http://security.FreeBSD.org/。
2008 年 4 月 17 日
OpenSSH X11 转发权限提升
2008 年 7 月 13 日
DNS 缓存投毒
2008 年 9 月 3 日
amd64 swapgs 本地权限提升
2008 年 9 月 3 日
2008 年 9 月 3 日
IPv6 连接上的远程内核崩溃
2008 年 10 月 1 日
IPv6 邻居发现协议路由漏洞
2008 年 11 月 24 日
2008 年 12 月 23 日
2008 年 12 月 23 日
netgraph / 蓝牙权限提升
2009 年 1 月 7 日
2009 年 1 月 7 日
OpenSSL 错误地检查格式错误的签名
2009 年 1 月 13 日
ntpd 加密签名绕过
2009 年 1 月 13 日
BIND DNSSEC 错误检查格式错误的签名
2009 年 2 月 16 日
telnetd 代码执行漏洞
2009 年 3 月 23 日
本地权限提升
2009 年 4 月 4 日
2009 年 4 月 22 日
OpenSSL 中的远程崩溃漏洞
2009 年 6 月 10 日
通过直接管道写入泄露本地信息
2009 年 6 月 10 日
在 SIOCSIFINFO_IN6 ioctl 中缺少权限检查
2009 年 6 月 10 日
ntpd 堆栈溢出漏洞
2009 年 7 月 29 日
2009 年 10 月 2 日
Devfs / VFS NULL 指针竞争条件
FreeBSD GENERIC 内核现在包括了 Trusted BSD MAC(强制访问控制)支持。默认情况下不会加载任何 MAC 策略模块。
[i386] 增加了一个加载器可调项 hw.clflush_disable
,以避免在使用 Intel CPU 时,map_invalidate_cache_range()
发生 panic(陷阱 9)。该可调项可以设置为 -1(默认)、0 或 1。-1 与当前行为相同,自动禁用不支持 CPUID_SS 的 Intel CPU 上的 CLFLUSH(这应该仅发生在 Xen 上)。当这种 panic 发生在非 Intel CPU(例如 AMD)上时,可以设置为 1。由于禁用 CLFLUSH
可能会降低性能,因此可以尝试在没有 SS 的 Intel CPU 上设置为 0
,以启用 CLFLUSH 功能。
jail(8) 子系统已更新。变更包括:
实现了一个新的虚拟化容器,名为 “vimage”。默认情况下未启用。要启用此功能,请将以下内核选项添加到内核配置文件中并重新编译内核:
请注意,GENERIC 内核中的选项 SCTP 与选项 VIMAGE 不兼容。此限制将在下一个版本中修复。
vimage 是一个带有虚拟化 FreeBSD 网络堆栈的 jail 容器。可以使用 jail(8) 命令像这样创建 vimage:
vimage 拥有自己的回环接口和独立的网络堆栈,包括 L3 路由表。系统上的网络接口可以通过使用 ifconfig(8) vnet
选项,在不同的 vimage jail 之间及其外部进行移动。
此外,已添加 epair(4) 虚拟接口驱动程序,以帮助 vimage jail 之间的通信。它模拟了一对背对背连接的以太网接口。例如,以下命令创建一对 epair(4) 接口:
epair(4) 虚拟接口和系统上的任何物理接口都可以通过使用 ifconfig(8) vnet
选项在 vimage jail 之间进行移动。如上所述,即使移动了 epair(4) 对中的一部分,背对背连接仍然有效,可以用于 jail 之间的通信。
请注意,vimage 仍然被视为实验性功能。
现在,jail 可以拥有类似于环境变量的任意命名参数,之前版本中的固定 jail 参数已被这些参数替代。现在可以使用 jail 名称来标识 jail,并在 jexec(8) 和 killall(1) 中进行操作。
现在每个 jail 可以多个 IPv4/IPv6 地址。甚至可以让 jail 没有 IP 地址,这基本上是个没有网络功能的 chroot 环境,且进程视图受限。
在 jails 中实现了带有 IPv6 的 SCTP(sctp(4))。
实现了通过使用 cpuset(1) 进行特定 CPU 绑定。请注意,当前实现允许 jail 中的超级用户更改指定的 CPU 绑定。
现在,jail 可以使用特定的路由 FIB 启动。
ddb(8) 内核调试器现在支持显示 jail 子命令。
添加了兼容性支持,允许在 64 位系统上使用 32 位 jail 二进制文件来管理 jail。
请注意,已更新 jail(8) 中的 jail 和 prison 版本号,以支持新功能。
添加了 ksyms(4) 内核符号表接口驱动程序。它创建了一个字符设备 /dev/ksyms
,并提供对内核符号表快照的只读访问。
[amd64, i386] FreeBSD 的 Linux 仿真层已更新至版本 2.6.16,默认的 Linux 基础设施 Port 为 emulators/linux_base-f10(Fedora 10)。
[arm] FreeBSD/arm 现已支持 mini dump。
[powerpc] FreeBSD/powerpc 现已支持内核核心转储。
[amd64, i386] FreeBSD 的虚拟内存子系统现已支持应用内存的完全透明使用超页;应用程序内存页会动态地升降级为超页,无需修改应用程序代码。此更改提供了大页面大小的好处,如提高虚拟内存效率并减少 TLB(转换旁路缓存)未命中,同时避免了应用程序更改和虚拟内存灵活性不足等缺点。可以通过将加载器调优参数 vm.pmap.pg_ps_enabled
设置为 1 来启用此功能,且默认在 amd64 上启用。
[7.2R] [ddb(8)]内核调试器现支持子命令 show mount
。
[7.2R] FreeBSD 的 DTrace 子系统现支持进程执行探针。
[7.2R] [amd64] FreeBSD 内核虚拟地址空间已增加至 6GB。这允许子系统使用比以前更大的虚拟内存空间。例如,[zfs(8)] 自适应替换缓存(ARC)需要较大的内核内存空间来缓存文件系统数据,因此从增加的地址空间中受益。请注意,内核映射大小的上限现在是物理内存大小的 60%,而不是绝对值。
[7.2R] [kld(4)] 现在支持从内核模块安装 32 位系统调用到 FreeBSD 系统调用转换层。
[7.2R] [ktr(4)] 现在支持在 KTR_CALLOUT
类别中新增一个 KTR 追踪点,用于标记调用例程执行结束。
[7.2R] 用于跟踪分配的 System V 共享内存量的变量类型已从 int
更改为 size_t
。这使得在 64 位架构上使用超过 2GB 的内存来管理共享内存段成为可能。请注意,关于此临时解决方案的限制,请参见 [shmctl(2)] 和 /usr/src/UPDATING
中的新 BUGS 部分。
[7.2R] [sysctl(3)] 叶节点现在具有标记自身为 MPSAFE 的参数。
[7.2R] FreeBSD 的 32 位系统调用转换层现在支持为 VFS_AIO
安装 32 位系统调用。
[7.1R] [clock_gettime(2)] 及相关系统调用现支持 POSIX 中定义的时钟 ID CLOCK_THREAD_CPUTIME_ID
。
[7.1R] 已添加[cpuset(2)]系统调用,这是一个线程与 CPU 绑定以及 CPU 资源分组和分配的 API。
[7.1R] DTrace(一款综合的动态追踪框架)和 [dtrace(1)] 用户空间实用程序已从 OpenSolaris 移植到 FreeBSD。DTrace 为管理员、开发者和服务人员提供了一个强大的基础设施,可以简洁地回答关于操作系统和用户程序行为的任意问题。
[7.1R] [ddb(4)] 内核调试器现在具有输出捕获功能。现在可以将 [ddb(4)] 的输入和输出捕获到内存缓冲区中,以便稍后使用 [sysctl(8)] 或文本转储检查。新的捕获命令控制此功能。
[7.1R] [ddb(4)] 调试器现在支持简单的脚本功能,支持由一组 [ddb(4)] 命令组成的命名脚本。这些命令可以通过 [ddb(4)] 或使用新的 [ddb(8)] 实用程序来管理。有关详细信息,请参见 [ddb(4)] 手册页。
[7.1R] [ddb(4)] 的 ex 命令现在支持/S 模式,用于解释并打印请求地址处的符号。例如,ex /S aio_swake
打印当前通过 aio_swake 钩子注册的函数的名称。
[7.1R] 已添加 [ddb(4)] 的命令 show conifhk
,用于列出当前等待在 run_interrupt_driven_config_hooks()
中完成的钩子。
[7.1R] [fcntl(2)] 系统调用现支持 F_DUP2FD
命令。这相当于 [dup(2)],并与 Sun Solaris 和 IBM AIX 兼容。
[7.1R] FreeBSD 的 [linux(4)] ABI 支持现已实现 sched_setaffinity()
和 sched_getaffinity()
,并使用实际的 CPU 亲和力设置原语。
[7.1R] 新增了 [procstat(1)] 实用程序。这是一个进程检查工具,提供了从 [procfs(5)] 中缺失的一些功能,以及用于监视和调试特定进程的新功能。
[7.1R] [rpc.lockd(8)] 的客户端功能已在 FreeBSD 内核中实现。此实现为 [flock(2)] 风格的锁提供了正确的语义,这些锁被 [lockf(1)] 命令行工具和 [pidfile(3)] 库使用。它还实现了从服务器重启后的恢复,并确保在获取锁之前,脏缓存块已写入服务器(允许多个客户端使用文件锁安全地共享数据)。此外,新增了内核选项 NFSLOCKD
,并默认启用。如果内核支持启用,[rpc.lockd(8)] 会自动检测并使用此功能。
[7.1R] FreeBSD 内核现支持一种新的内核转储文本转储格式。文本转储通过机械生成/提取的调试输出提供更高级的信息,而非简单的内存转储。此功能可用于生成简短的内核错误报告,报告中包含丰富的调试信息,但不依赖于内核符号表或精确同步的源代码。更多信息请参见 [textdump(4)] 手册页。
[7.1R] [wait4(2)] 系统调用现支持 WNOWAIT
参数,用于保持返回状态的进程处于可等待状态,并支持WSTOPPED
,该参数等同于WUNTRACED
。
[7.1R] [amd64, i386, sparc64] FreeBSD 内核现在支持将中断绑定到 CPU。
[7.1R] [amd64, i386] [sched_ule(4)] 调度器现为 GENERIC 内核的默认进程调度器。
[7.1R] 新增了 sysctl 变量 kern.features.compat_freebsd[456]
,对应于内核选项 COMPAT_FREEBSD[456]
。
boot0 启动加载器现在保留其他操作系统使用的 0x1b8
偏移处的卷 ID。
[boot0cfg(8)] 工具现在支持新的 -i
选项来设置卷 ID。
[arm, powerpc] [loader(8)] 现在支持 U-Boot 支持库。
[7.2R] [boot(8)] 现在支持某些 Windows® 版本在 MBR 中放置的 4 字节卷 ID,并支持通过按 F6 键在某些支持的 BIOS 上调用 PXE。
[7.2R] [i386] [boot(8)] BTX 加载器已改进。此修复解决了 7.1-RELEASE 及之前版本在近期机器上报告的多个启动问题。
[7.2R] [loader(8)] 现在能够通过 [kenv(2)] 变量从网络启动中获取 DHCP 选项。
[7.2R] 修复了 [loader(8)] 中的一个 bug,现在以下行按预期工作:
[7.1R] [amd64, i386] 启动加载器使用的 BTX 内核已更改为从实模式调用 BIOS 例程。此更改使得从 USB 设备启动 FreeBSD 成为可能。
[7.1R] [amd64, i386] 新增了 gptboot 启动加载器,以支持从 GPT 标签磁盘启动。新增了 [ gpt(8)] 中的一个启动命令,可以通过写入所需的启动加载器部分、创建新启动分区(如果需要)来使 GPT 磁盘可启动。
FreeBSD 现在包含对 MIPS 平台的实验性支持。
对 Dallas Semiconductor 芯片上的 RTC 支持已得到改善。现在支持 DS133x 和 DS1553。
[arm] FreeBSD/arm 现在支持 Feroceon 和 Sheeva 嵌入式 CPU,Marvell Orion(88F5281)、Kirkwood(88F6281)、Discovery Innovation(MV-78100)系统级芯片(SoC)CPU。
[powerpc] FreeBSD/powerpc 现在支持 SMP(对称多处理)机器。
[powerpc] FreeBSD/powerpc 现在支持 E500(Book-E)嵌入式 CPU 和 Freescale PowerQUICCIII MPC85xx 系统级芯片(包括单核和双核)。
[acpi(4)]子系统现在支持系统资源亲和性表(SRAT),用于描述 CPU 和内存之间的亲和性关系,支持 ACPI 3.0 中的 MADT 字段,包括 X2APIC 条目和本地 SAPIC 的 UID,及 ACPI 3.0 参数在 FADT 中的支持。
[powerpc] [cpufreq(4)]框架现在支持 PowerPC G5,并包含 SMU 驱动程序骨架,以便在频率变化期间调整 CPU 电压。
新增了 sec(4) 驱动程序,支持 Freescale 系统级芯片设备中的集成安全引擎。
FreeBSD 的 TTY 层已被替换为新的 TTY 层,具有更好的 SMP 支持和更强的资源管理能力。每个 TTY 现在都有自己的互斥锁,预计与基于 Giant 锁的旧实现相比,这将提高可扩展性。
[amd64, i386] [uart(4)] 驱动程序现在是串行端口设备的默认驱动程序,取代了 [sio(4)] 驱动程序。请注意,设备节点已从 /dev/cuadN 和 /dev/ttydN 重命名为 /dev/cuauN 和 /dev/ttyuN。
重要提示:
升级的用户需要更改其内核配置,并可能还需要更改
/boot/loader.conf
和/boot/device.hints
。
已重新实现 FreeBSD USB 子系统,以支持现代设备并提高 SMP 可扩展性。新的实现包括无 Giant 锁的设备驱动程序、Linux 兼容层、[usbconfig(8)] 工具、完全支持分割事务和等时事务等。USB 设备的设备节点名称现在采用 /dev/usb/bus.dev.endpoint 的形式,/dev/usbctl
是主设备节点。请注意,[ugen(4)] 驱动程序为每个设备提供了节点,如 /dev/ugenbus.dev,以保持向后兼容性。
[7.2R] [sparc64] FreeBSD 现在支持 Ultra SPARC III(Cheetah)处理器系列。
[7.2R] [acpi(4)] 子系统现在支持一个 [sysctl(8)] 变量 debug.batt.batt_sleep_ms
。在一些具有智能电池的笔记本上,启用电池监控软件会导致 [atkbd(4)] 的按键丢失。这个 sysctl 变量通过在状态检查代码中添加毫秒级的延迟来作为一种解决方法。
[7.2R] [acpi_asus(4)] 驱动程序现在支持 Asus A8Sr 笔记本。
[7.2R] [powerpc] 添加了对 AltiVec(浮点和整数 SIMD 指令集)的支持。
[7.2R] 添加了 cpuctl(4) 驱动程序,它提供了一个特殊设备 /dev/cpuctl
作为与系统 CPU 的接口。该驱动程序的功能包括检索 CPUID 信息、读写机器特定寄存器(MSR)以及执行 CPU 固件更新。
[7.2R] cpufreq(4) 驱动程序现在支持 hw.est.msr_info
加载器可调参数。当该参数设置为 1 时,如果无法从 ACPI 或静态表中获取频率列表,它会尝试构建一个仅包含高频和低频的简单列表。默认情况下禁用此功能。
[7.2R] [amd64, i386] 当 TSC 为 P-state 不变时,CPU 频率变化通知现在被禁用。此外,新增了一个加载器可调参数 kern.timecounter.invariant_tsc
,可以通过将其设置为非零值强制启用该行为。
[7.2R] atkbd(4) 驱动程序现在禁用了从键盘回调函数调用的中断处理程序(当启用轮询模式时)。这修复了在启用 kbdmux(4) 的多 CPU 系统中,在 mountroot
提示符下字符重复/丢失的问题。
[7.2R] 在 pci(4) 子系统中,当启用 MSI/MSIX 时,INTx 现在被禁用。此更改修复了与中断风暴相关的问题。
[7.2R] [sparc64] 添加了 Schizo Fireplane/Safari 到 PCI 2.1 和 Tomatillo JBus 到 PCI 2.2 桥的 schizo(4) 驱动程序。
[7.2R] 添加了 u3g(4) 驱动程序,支持 USB 基于的 3G 卡和加密狗,包括 Vodafone Mobile Connect Card 3G、Qualcomm CDMA MSM、Huawei E220、Novatel U740、Sierra MC875U 等。它支持许多 3G USB/PC 卡调制解调器暴露的多个 USB 到串行接口,设备通过 ucom(4) 驱动程序访问,使其表现得像一个 tty(4)。
[7.2R] sched_ule(4) 调度程序现在支持加载器可调参数 machdep.hyperthreading_enabled
,就像 sched_4bsd(4) 一样。请注意,无法在运行时修改该参数。
[7.1R] 添加了 cmx(4) 驱动程序,这是一个 Omnikey CardMan 4040 PCMCIA 智能卡读卡器的驱动程序。
[7.1R] [sparc64] kbdmux(4) 驱动程序现在支持 sparc64。sunkbd(4) 驱动程序现在支持 atkbd(4) 模拟,就像 ukbd(4) 一样。
[7.1R] nvram(4) 驱动程序现在是 MPSAFE。
[7.1R] puc(4) 驱动程序的一个选项 PUC_FASTINTR 不再受支持。
[7.1R] psm(4) 驱动程序现在尝试在检测到 IntelliMouse 之前先检测 Synaptics 触摸板。一些触摸板会伪装成 IntelliMouse,导致 IntelliMouse 探测工作并且 Synaptics 检测未被执行。
[7.1R] 导入了 uslcom(4) 驱动程序,这是一个用于 Silicon Laboratories CP2101/CP2102 基于 USB 串行适配器的驱动程序,来自 OpenBSD。
2.2.2.1 多媒体支持
FreeBSD 音频子系统得到了改进。改动包括每个通道的音量控制、高质量的定点带限 SINC 采样率转换器、比特完美模式、透明/自适应虚拟通道和独占流。更多细节请参见 snd(4) 手册页面。
[7.2R] agp(4) 驱动程序现在支持 Intel G4X 系列图形芯片组。
[7.2R] Direct Rendering Manager (DRM) 内核模块已更新,它为 DRI 客户端提供了直接的硬件访问。AMD/ATI r500、r600、r700 和 IGP 芯片、XGI V3XE/V5/V8 以及 Intel i915 芯片组的支持已得到改进。
[7.2R] 新增了加载器可调参数 hw.drm.msi
,用于控制 DRM 是否使用 MSI。默认设置为 1(启用)。
[7.2R] 已移除 Aureal Vortex 1/2/Advantage PCI 的 [snd_au88x0(4)] 驱动程序,因为该驱动程序长期以来一直处于故障状态。
[7.2R] snd_hda(4) 驱动程序已更新。这些改动包括支持每个 HDA 总线的多个编解码器、每个编解码器的多个功能组、每个功能组的多个音频设备、数字(SPDIF/HDMI)音频输入/输出、挂起/恢复以及部分多声道音频。
[7.2R] 请注意,由于增加了 HDMI 音频和逻辑音频设备的支持,更新后的驱动程序通常会提供多个 PCM 设备。这意味着在某些情况下,系统默认的音频设备不再与用户习惯的音频连接器相对应。在这种情况下,可以在音频应用程序的设置中指定默认设备,或通过 sysctl 变量 hw.snd.default_unit
全局定义默认设备,具体操作请参见 sound(4) 手册页面。
[7.1R] agp(4) 驱动程序现在支持 Intel G33 和 G45。
[7.1R] [i386] 新增了 dpms(4) 驱动程序,用于在挂起和恢复期间使用 VESA BIOS 进行 DPMS。
[7.1R] DRM 内核驱动程序现在支持 i915 GME 设备。
2.2.2.2 网络接口支持
新增了 bwi(4) 驱动程序,支持 Broadcom BCM43xx IEEE 802.11b/g 无线网络接口。
[sparc64] 新增了 cas(4) 驱动程序,支持 Sun Cassini/Cassini+ 和 National Semiconductor DP83065 Saturn 千兆以太网设备。
已改进 fxp(4) 驱动程序。改动包括:
多播过滤器重新编程更为稳健。
[7.2R] 现在可以通过 ifconfig(8) 控制校验和卸载功能。
[7.2R] 为 82559 或更高版本控制器添加了 Rx 校验和卸载支持。
[7.2R] 为 82550 和 82551 控制器添加了 TSO(TCP 分段卸载)支持。
[7.2R] 为 82550、82551、82558 和 82559 控制器添加了 WoL(远程唤醒)支持。请注意,基于 ICH 的控制器被视为 82559,而 82557、早期版本的 82558 和 82559ER 不支持 WoL。
[7.2R] 添加了 VLAN 硬件标签插入/去除支持,以及 VLAN 帧的 Tx/Rx 校验和卸载支持。请注意,VLAN 硬件协助仅适用于 82550/82551 控制器。
[arm, powerpc] 新增了 [mge(4)] 驱动程序,支持 ARM 架构 SOC(如 Orion、Kirkwood、Discovery)上的 Marvell 千兆以太网控制器,以及 PowerPC 处理器(如 MV64430、MV6446x)上的系统控制器。
miibus(4) 驱动程序现在支持 Marvell 88E3016。
msk(4) 驱动程序现在支持 Yukon FE+ A0,包括 88E8040、88E8040T、88E8048 和 88E8070。
mwl(4) 驱动程序已新增,支持 Marvell 88W8363 IEEE 802.11n 无线网络设备。
mxge(4) 驱动程序现在支持一些更新版本和 10GBASE-LRM 与 10GBASE-Twinax 媒体类型。固件版本已更新至 1.4.43。
nge(4) 驱动程序已改进,现在支持所有平台。
新增了 tsec(4) 驱动程序,支持 Freescale 集成的三速以太网控制器(TSEC)。该驱动程序也支持该控制器的增强版(eTSEC)。
新增了 uath(4) 驱动程序,支持基于 Atheros AR5005UG 和 AR5005UX 芯片组的 USB 无线 LAN 适配器。同时也新增了 uathload(8) 实用程序,这是 Atheros USB 无线驱动程序的固件加载器。
新增了 urtw(4) 驱动程序,支持 Realtek RTL8187B/L USB IEEE 802.11b/g 无线网络设备。
xl(4) 驱动程序现在支持 TX 校验和卸载。
[7.2R] ae(4) 驱动程序现已支持 WoL(远程唤醒)。
[7.2R] [amd64, i386] ale(4) 驱动程序现已包含在 GENERIC 内核中。
[7.2R] ath_hal(4),Atheros 硬件访问层,已更新为开源版本。
[7.2R] axe(4) 驱动程序已通过消除额外的上下文切换来提升性能,并且现在支持 Apple USB 以太网适配器。
[7.2R] bce(4) 驱动程序的固件已更新为最新版本(4.6.X)。
[7.2R] ciphy(4) 驱动程序现在支持 Vitesse VSC8211 PHY。
[7.2R] cxgb(4) 驱动程序已更新为固件版本 4.7,现在支持硬件 MAC 统计信息。
[7.2R] 修复了 igb(4) 驱动程序中的一个错误,该错误阻止了加载器可调参数 hw.igb.ave_latency
的正常工作。
[7.2R] ixgbe(4) 驱动程序已更新至版本 1.7.4。
[7.2R] jme(4) 驱动程序现在支持更新版的 JMicron JMC250/JMC260。
[7.2R] msk(4) 驱动程序已改进。修复了在某些条件下导致其挂起的问题。已添加硬件 MAC 统计信息支持,用户可以通过名为 dev.msk.N.stats
的 sysctl 变量获取该信息。
[7.2R] nfe(4) 驱动程序现在支持硬件 MAC 统计信息。
[7.2R] re(4) 驱动程序已改进。现在可以检测链接状态。新增了一个加载器可调参数 hw.re.prefer_iomap
,用于禁用内存寄存器映射。该可调参数对 RTL8169SC 系列之外的所有控制器默认设置为 0
。
[7.2R] rl(4) 驱动程序已改进。现在可以检测链接状态,修复了一个导致其在内存超过 4GB 的系统上无法正常工作的错误。
[7.2R] 修复了 sis(4) 驱动程序中的 VLAN 标签帧处理错误。
[7.2R] txp(4) 驱动程序现在支持所有受支持的架构。新增了对 altq(4)、WoL、VLAN 启用时的校验和卸载支持,改进了链接状态变化处理,并新增了 dev.txp.N.stats
的 MAC 统计信息 sysctl 变量。新增了 dev.txp.N.process_limit
sysctl 变量,用于控制接收处理器中应服务的接收帧数量(默认为 64,合法范围为 16 到 128,单位为帧)。固件已更新至最新版本。
[7.1R] ae(4) 驱动程序已新增,支持 Attansic/Atheros L2 快速以太网控制器。
[7.1R] jme(4) 驱动程序已新增,支持基于 JMicron JMC250 千兆以太网和 JMC260 快速以太网控制器的 PCIe 适配器。
[7.1R] age(4) 驱动程序已新增,支持 Attansic/Atheros L1 千兆以太网控制器。
[7.1R] malo(4) 驱动程序已新增,支持基于 Marvell Libertas 88W8335 的 PCI 网络适配器。
[7.1R] 已新增 bm(4) 驱动程序,支持 Apple Big Mac (BMAC) 以太网控制器,该控制器出现在多个 Apple G3 型号中。
[7.1R] 已新增 et(4) 驱动程序,支持 Agere ET1310 10/100/千兆以太网控制器。
[7.1R] 已新增 glxsb(4) 驱动程序,支持 AMD Geode LX 处理器中的安全模块。
[7.1R] 已新增 ale(4) 驱动程序,支持 Atheros AR8121/AR8113/AR8114 千兆/快速以太网控制器。此驱动程序在本版本的 GENERIC 内核中未启用。
[7.1R] em(4) 驱动程序已分为两个驱动程序并共享部分代码。 em(4) 驱动程序将继续支持最多至 82575 的适配器以及新的客户端/桌面适配器。新增的 igb(4) 驱动程序将支持新的服务器适配器。
[7.1R] hme(4) 驱动程序已改进。
[7.1R] 修复了 miibus(4) 支持的某些驱动程序中的错误,该错误导致 IEEE 802.3 自动协商顺序错误。现在,它按照附录 28B.3 中描述的顺序选择 IEEE 802.3 支持的正确技术。
[7.1R] 已为 msk(4) 驱动程序中的 TCP/UDP 硬件校验和卸载短帧时的错误添加了临时解决方法。请注意,对于需要硬件 VLAN 标签插入的帧,由于 VLAN 标签后的 mbuf 中校验和偏移量发生变化,校验和卸载的临时解决方法无法正常工作。因此,在这种情况下需要禁用 VLAN 接口的硬件校验和卸载。
[7.1R] ndis(4) NDIS miniport 驱动程序包装器已改进。
[7.1R] sf(4) 驱动程序已改进,现在支持校验和卸载。
[7.1R] stge(4) 驱动程序现在支持 WoL(远程唤醒)。
[7.1R] vr(4) 驱动程序已改进。
[7.1R] [amd64, i386] wpi(4) 驱动程序已更新,包含多个稳定性修复。
已重新实现 FreeBSD 的 netisr 框架,以支持并行线程。该框架是一个内核网络分发接口,允许设备驱动程序(以及其他数据包源)将数据包直接或延迟地分发到协议进行处理。新的实现支持每个 CPU 一个 netisr 线程,并且在多处理器(SMP)机器上进行的几个基准测试显示,性能相比于旧版本有显著提升。
修复了 gif(4) 中的一个 bug,该 bug 使得由 if_bridge(4) 和 gif(4) 组合发送的 EtherIP 数据包的版本字段被颠倒。如果需要通过 EtherIP 与旧版本 FreeBSD 通信,可以使用新的参数 accept_rev_ethip_ver 和 send_rev_ethip_ver 来控制处理颠倒的版本字段。可以通过 ifconfig(8) 工具设置这些参数到 gif(4) 接口。FreeBSD 6.1、6.2、6.3、7.0、7.1 和 7.2 版本的 EtherIP 实现存在互操作性问题,因为它发送了错误的 EtherIP 数据包并丢弃了正确的包。更多细节请参见 gif(4) 手册页。
已添加对 IGMPv3 和源特定多播(SSM,包括 IPv6 SSM 和 MLDv2)的支持。虽然旧的 KAME MLDv2 钩子已被新的实现替换,但相关的内核编程接口仍然保留。
多播路由代码已改进,IPv4 和 IPv6 支持已拆分。
FreeBSD 现在支持即将到来的无线网状网络标准 IEEE 802.11s。当前的实现基于 2009 年 3 月 D3.0 草案版本。
无线网络支持层(net80211)现在使用伪接口 wlanN,而不是像 em0 这样的设备驱动程序名称。wlanN 接口由 ifconfig(8) 创建,作为父接口的实例,类似于 vlan(4)(IEEE 802.1Q VLAN 网络接口)用于实际通信。请注意,如果父接口支持,可以创建多个实例(例如实现多个 BSS 与单个 AP 设备)。更多细节请参见 ifconfig(8) 手册页。
net80211 层现在支持使用 ath(4) 设备的长距离点对点链路的 TDMA。
已添加一种用于加速 L2 和 L3 查找的流缓存基础设施。这被称为“流表”,在 amd64 和 i386 平台上默认启用。这也提供了状态感知的负载均衡,当与 RADIX_MPATH 一起使用时。
FreeBSD L2 地址转换表已重新实现,以减少并行处理时的锁争用并简化路由逻辑。新实现具有分别用于 ARP(IPv4)和 NDP(IPv6)的 L2 地址转换表,这些表与 L3 路由表分开,并支持路由表和 L2 信息的流表缓存。一个用户可见的变化是,克隆路由的概念(通过带有 RTF_CLONING 参数的条目生成的路由)已被弃用。这意味着路由参数 RTF_CLONING、RTF_WASCLONE 和 RTF_LLINFO 已过时。
ipsec(4) 子系统现在支持 NAT 穿越(RFC 3948)。默认情况下该功能处于禁用状态。要启用此功能,请添加以下内核选项并重新编译内核:
[7.2R] 已实现对未绑定套接字的 IPv4 源地址选择,具体如下:
如果找到路由,则使用与外发接口对应的地址。
[7.2R] 否则假设外部地址可以在直接连接的网络上访问,并尝试找到相应的接口来获取源地址。
[7.2R] 作为最后的备选方案,使用默认的 jail 地址。
[7.2R] 这也改变了在 jail(8) 中选择进程 IP 地址的语义,因为现在它采用与 jail(8) 外部相同的逻辑。
[7.2R] 对于 IPv6,TCP MD5 签名选项(RFC 2385)的实现方式与 IPv4 相同。
[7.2R] ng_netflow(4) Netgraph 节点现在支持生成出口 netflow,替代或附加到入口 netflow。已添加一个 NGM_NETFLOW_SETCONFIG
控制消息来控制这一新功能。
[7.2R] tap(4) 以太网隧道软件网络接口现在支持一个新的 TAPGIFNAME 字符设备 ioctl。这是一个方便的快捷方式,通过字符设备的文件描述符获取网络接口名称。
[7.2R] tap(4) 现在支持 ioctl SIOCSIFMTU ,允许设置大于 1500(ETHERMTU)的 MTU。这使得 tap(4) 设备可以被添加到同一个桥接中(要求所有接口成员具有相同的 MTU),并配置为支持 Jumbo 帧的接口。
[7.2R] 用于处理 unix(4)(UNIX 域协议族)子系统中受支持的域列表的域列表现在是 MPSAFE。
[7.1R] arp(8) 工具现在支持关键字 reject
和 blackhole
。在标记为 reject
的条目中,流量会被丢弃,且发送者会被通知主机不可达。而在标记为 blackhole 的条目中,流量被丢弃,但发送者不会收到通知。
[7.1R] bpf(4) 现在支持 ioctl BIOCSETFNR。它与 BIOCSETF 类似,但不会丢弃缓冲在描述符上的所有数据包并重置统计信息。
[7.1R] if_bridge(4) 接口现在可以通过 ifconfig(8) 的 ifmaxaddr
参数限制桥接接口后面的源 MAC 数量。
[7.1R] 修复了 carp(4) 接口配置中的一个 bug,该 bug 导致系统崩溃。
[7.1R] dummynet(4) 子系统现在支持快速模式操作,允许某些数据包绕过 dummynet 调度器。这可以在数据包流量低于管道带宽时实现更低的延迟和更少的开销,并消除子系统中的递归。已添加新的 sysctl 变量 net.inet.ip.dummynet.io_fast
来启用此功能。
[7.1R] enc(4) 接口现在支持 sysctl 变量来控制防火墙或 bpf(4) 是否会看到内外头信息,或仅仅是内部或外部头信息,用于进出 IPsec 数据包。
[7.1R] gre(4) 现在支持 ioctls GRESKEY 和 GREGKEY,允许设置或获取用于外发数据包的 GRE 密钥。
[7.1R] 修复了 ipsec(4) 子系统中的一个 bug,当路由的 MTU 小于外发接口的 MTU 时,PMTU 被破坏。
[7.1R] 由于缺乏多处理器支持,已移除 netatm 子系统。
[7.1R] ng_nat(4) 现在支持在 libalias 中的重定向功能。更多细节,请参见手册页。
[7.1R] ng_pptpgre(4) 现在支持多个挂钩,类似 ng_l2tp(4),以便使用一对 pptpgre 和 ksocket 节点进行所有对等体之间的呼叫。
[7.1R] resolver(3) 现在允许在域名中使用下划线。尽管这违反了 RFC 1034 [STD 13],但某些名称服务器以及其他流行操作系统的解析器库接受这一做法。
[7.1R] 已为 TCP 套接字新增套接字选项 TCP_CONGESTION,用于设置和获取拥塞控制算法。该名称旨在与 Linux 保持兼容性。
[7.1R] rwlock(9)
已在 inpcbinfo
和 inpcb
基础结构中广泛使用,并扩展到依赖这些基础结构的协议(包括 UDP、TCP 和 IP 原始套接字),以减少锁争用。
[7.1R] FreeBSD 现支持多路由表。启用此功能需要以下步骤:
此值可在引导时修改。为此,请将以下内容添加到 /boot/loader.conf
文件并重启系统:
如果需要,可设置加载时调节项 net.my_fibnum
,指定默认的路由表编号。如果未指定,则默认为 0。
如果需要,可设置加载时调节项 net.add_addr_allfibs
。该选项可启用在添加新接口地址时,默认向所有 FIB 添加路由。当设置为 0
时,仅为调用者的 FIB 分配路由。请注意,此选项默认设置为 1
。
要选择特定的 FIB,可使用新工具 setfib(1),该工具为进程关联指定 FIB。例如:
上述命令中,FIB #3 将用于 ping(8) 命令。
数据包所关联的 FIB 将根据以下规则确定:
所有已关联 FIB 的数据包将使用该 FIB;未关联的则使用 FIB #0
。
在接口上接收用于转发的包将使用 FIB #0。
与某个 FIB 关联的 TCP 监听套接字将生成与该 FIB 关联的 accept 套接字。
响应其他数据包生成的包将使用被响应数据包的 FIB。
路由消息将与进程的 FIB 关联。
此外,ipfw(8) 现支持一个名为 setfib
的操作规则。以下规则:
将使匹配的数据包使用指定的 fibnum FIB,并继续处理下一条规则。
FreeBSD CAM SCSI 子系统(cam(4))现在包括对 ATA/SATA/AHCI 兼容设备的实验性支持。该功能默认禁用。启用此功能需要在内核配置文件中添加以下选项,并重新编译内核:
当前实现支持 AHCI 兼容控制器以及 SiliconImage SiI3124/SiI3132/SiI3531 控制器。ATA 磁盘的设备节点为 ada,ATAPI 光驱的设备节点为 cd。
FreeBSD 的 iSCSI 发起程序已改进,并增加了对 IPv6 的支持。
新增了一个用户空间实用工具 mfiutil(8),适用于 mfi(4) 设备。该工具提供基本功能,包括监控控制器、阵列和驱动器状态,修改基本属性,创建/删除阵列和备用驱动器,以及刷新控制器固件。请注意,这是一个小型工具,并非 Ports 中的 MegaCLI 的替代品,后者提供官方支持并具备更多功能。
新增了用户空间实用工具 mptutil(8),适用于 mpi(4) 设备。此工具提供基本功能,包括监控控制器、阵列和驱动器状态,修改基本属性,以及创建/删除阵列和备用驱动器。
新增了 siis(4) 驱动程序,用于支持 SiliconImage SiI3124/3132/3531 SATA2 控制器。该驱动支持串行 ATA 和 ATAPI 设备、端口扩展器(包括基于 FIS 的切换)、硬件命令队列(每个端口 31 个命令)和原生命令队列。
[7.2R] ata(4) 驱动现已支持 Marvell PATA M88SX6121。
[7.2R] ata(4) 驱动现在将 nForce MCP67 和 MCP73 SATA 控制器识别为 AHCI。
[7.2R] ataraid(4) 驱动现已初步支持 Adaptec HostRAID 控制器中的 DDF 元数据。但目前尚不支持备用驱动器和重建功能。
[7.2R] cam(4) SCSI 子系统新增了 sysctl 变量 kern.cam.cd.retry_count
。该变量用于控制 CD 媒体的重试次数。在读取有划痕或损坏的 CD 和 DVD 时,默认机制效率较低,而类似 ddrescue 的程序在完全关闭重试后表现更佳,因为它们自身具有更优的算法。默认值为 4(总共尝试 5 次)。设置为 0 可完全关闭重试。
[7.2R] 修复了 ciss(4) 驱动中的一个错误。该错误导致“最大设备打开数”过低,从而造成性能下降。
[7.2R] glabel(8) GEOM 类现在支持一个新的基于 UFS 的标签 ufsid
,可通过唯一的文件系统 ID 引用包含 UFS 的设备。当启用 glabel(8) GEOM 类时,该文件系统 ID 会自动生成和检测。例如,新标签的形式为:/dev/ufsid/48e69c8b5c8e1b43
。使用 GEOM 标签的优点在于避免设备重命名引起的问题,如移动驱动器或控制器时。
[7.2R] gjournal(8) GEOM 类现在支持根文件系统。此前,不正常关机会导致启动时无法挂载根文件系统。
[7.2R] gpart(8) 工具已更新:APM 方案现支持 Tivo Series 1 分区(只读);新增 EBR 方案以支持扩展引导记录;BSD 方案现支持引导代码;修复了 PC98 和 VTOC8 方案中的错误。
[7.2R] 修复了 gvinum(8) 中一个与 gvinum plex 使用的底层磁盘访问权限相关的问题。如果 plex 是一个 raid5 plex 且正被写入,则可能需要从底层磁盘读取奇偶校验数据,这要求磁盘同时支持读写操作。
[7.2R] hptmv(4) 驱动已更新至 HighPoint 提供的版本 1.16。
[7.2R] mmc(4) 和 mmcsd(4) 驱动程序现已支持 MMC 和 SDHC 卡、高速时序、宽总线以及多块传输。
[7.2R] [sparc64] mpt(4) 驱动程序现已包含在 GENERIC 内核中。
[7.2R] 已添加 sdhci(4) 驱动程序。根据 SD 主机控制器规范,该驱动程序支持类别为 8 和子类别为 5 的 PCI 设备。
[7.2R] sdhci(4) 驱动程序现已支持内核转储,并新增了用于调试级别的 sysctl 变量 hw.sdhci.debug。
[7.2R] twa(4) 驱动程序现已支持 64 位 DMA。
[7.2R] mmc(4)、mmcsd(4) 和 sdhci(4) 驱动程序现已作为内核模块包含。
[7.1R] aac(4) 驱动程序现已支持 64 位的 RAID 阵列(大于 2TB),并支持同时打开设备以向控制器发送命令。
[7.1R] ata(4) 驱动程序现已支持一个加载器变量 hw.ata.ata_dma_check_80pin,可用于在某些问题系统(如特定笔记本和 Soekris 板)上禁用 80 针电缆检查。默认值为 1。
[7.1R] 修复了 ata(4) 驱动程序在 ServerWorks HT1000 芯片组上的数据损坏问题。
[7.1R] ciss(4) 驱动程序现已支持一个加载器调优变量 hw.ciss.nop_message_heartbeat,用于在 ciss_periodic() 中启用 NOP 消息轮询,可作为解决 ADAPTER HEARTBEAT FAILED 问题的替代方法。默认值为 0(禁用)。
[7.1R] geom_part GEOM 类现可作为内核模块构建。
[7.1R] geom_linux_lvm GEOM 类现可作为内核模块构建。
[7.1R] hptrr(4) 驱动程序已从 HighPoint 更新到版本 1.2。
[7.1R] 修复了 iir(4) 驱动程序中的缓冲区溢出问题。这可能修复了许多与该驱动程序相关的异常问题。
[7.1R] mpt(4) 驱动程序现已支持 mpt_user 个性化功能。
[7.1R] rr232x(4) 驱动程序已被 hptrr(4) 驱动程序取代。
[7.1R] twa(4) 驱动程序在高内存和高 CPU 负载的机器上的稳定性已得到改善。
已不再支持 UFS 文件系统的“危险专用”模式(“dangerously dedicated” mode)。
重要提示:
此类磁盘需要重新格式化才能在此版本中正常使用。
gvinum(8) 现在支持旧版 vinum 实现中的命令,包括 attach
、detach
、start
、stop
、concat
、mirror
、stripe
和 raid5
。
gvinum(8) 现在支持 grow
命令,使用户可以更轻松地扩展 plex,而无需了解所有的实现细节。
FreeBSD 的 NFS 子系统现在在客户端和服务器端支持 RPCSEC_GSS
认证。这替代了 NFS 客户端和服务器的 RPC 实现,采用最初为支持 NFS 锁管理器而开发的新型 RPC 实现。该实现同时支持新的 RPC 实现和从原始 NFS 代码库继承的旧版实现,默认使用新的实现。要在客户端或服务器端使用 RPCSEC_GSS
,必须构建一个包含 KGSSAPI 选项和 crypto(4) 设备的内核。有关更多详细信息,请参阅 gssd(8) 手册页面。
FreeBSD 的 NFS 子系统现在包含一个新的实验性实现,支持 NFSv2、NFSv3 和 NFSv4。该功能默认未启用。要启用它,请将以下内核选项添加到内核配置文件中并重新构建内核:
对于 mount(8) 程序,新文件系统类型为 newnfs,并新增了 mount_newnfs(8) 程序。旧版基于密歇根大学实现的 NFSv4 客户端已从 FreeBSD 源代码树中移除。
FreeBSD 的 NFS 子系统现在使用 TCP 作为默认传输协议。
VFS(9) 子系统中的路径名查找现在支持共享 vnode 锁定。此功能默认启用。将 sysctl 变量 vfs.lookup_shared
设置为 0
可禁用此功能。注意,已移除与 sysctl 变量等效的内核选项 LOOKUP_SHARED 。
ZFS 文件系统已更新到版本 13,新增了普通用户操作 ZFS、L2ARC、在独立磁盘上实现 ZFS 意图日志(slog)、稀疏卷等功能。
[7.2R] acl(3) 扩展访问控制列表的语义已更改如下:
添加、修改或移除扩展属性时,不会更新 inode 修改时间 (mtime)。
查询扩展属性时,不会更新 inode 访问时间 (atime)。
[7.2R] FreeBSD NFS 文件系统现支持 sysctl 变量 vfs.nfs.prime_access_cache
,用于决定 nfs_getattr()
是否使用 ACCESS RPC 来预加载访问缓存,还是使用简单的 GETATTR RPC。由于在许多 NFS 服务器上,ACCESS RPC 的处理代价远高于 NFSv3 挂载文件的 GETATTR RPC,因此该变量默认启用以维持之前的行为。
[7.2R] FreeBSD UDF 文件系统现支持 fifo。
[7.1R] fdescfs(5) 现在是 MPSAFE 的。
[7.1R] gpart(8) 现在支持 BSD 磁盘标签(选项 GEOM_PART_BSD)和 VTOC8 磁盘标签(选项 GEOM_PART_VTOC8)。
[7.1R] gvinum(8) 现在在创建 plex 时接受 volume 参数。
[7.1R] 修复了 unionfs(7) 中 UNIX 域套接字路径名查找的一个错误。
FreeBSD 基本系统中已启用 GCC 堆栈保护(也称为 ProPolice)。
添加了 BSD 许可的 ar(1) 工具以替代 GNU binutils 中的同类工具,并且现在它是构建 FreeBSD 基本系统的默认工具。
awk(1) 工具现在支持最多 64 个文件。之前版本的上限为 20 个。
bsnmpd(1) 程序现在支持 ZFS 的 OID。
camcontrol(8) 程序现在支持新的模块化 ATA 内核模块以及各种 ATA 命令。
cat(1) 和 cp(1) 现在如果系统物理内存页数超过 32k,则会使用更大的缓冲区,从而减少上下文切换的次数。
新增了一个 BSD 许可的 cpio(1) 工具以替代 GNU cpio,并且它现在是 FreeBSD 基本系统中的默认工具。
为 crashinfo(8) 工具新增了脚本,用于简单分析崩溃转储。该脚本生成一个包含多种命令(如 kgdb(1) 堆栈跟踪、ps(1)、netstat(1)、vmstat(8)、iostat(8)、dmesg(8) 和 fstat(1))针对核心转储的输出的文本文件。
df(1) 工具的 -h
参数现在支持在指定 -i
参数时以人类可读的格式显示 inode 数量。
df(1) 工具现在支持 -T
参数,用于在每项条目中显示文件系统类型。
修复了 dhclient(8) 工具可能导致生成不正确的 /etc/resolv.conf
文件的错误。
dhclient(8) 现在在调用 route(8) 命令时使用 -n
参数。这消除了当获得租约但 DNS 服务不可用时的长时间延迟。
dhclient(8) 工具现在对于单播 DHCPREQUEST 数据包使用 68(bootpc)作为源端口,而不是让协议栈选择随机的源端口。这修复了某些对 DHCP 欺骗具有严格策略的网络中 dhclient(8) 无法从 RENEWING 过渡到 BOUND 的问题,而必须经过 REBINDING。
env(1) 工具现在支持 -uname
选项,可以完全取消设置给定名称,而不是将其设置为空值。
find(1) 工具现在支持多种 GNU find 中的条件,包括 -ignore_readdir_race
、-noignore_readdir_race
、-noleaf
、-gid
、-uid
、-wholename
、-iwholename
、-mount
、-d
、-lname
、-ilname
、-quit
、-samefile
和 -true
。
fsck(8) 工具现已支持 -r
参数,用于释放多余未使用的 inode。减少预分配 inode 的数量可以缩短将来运行 fsck 的时间,并释放可供文件分配的空间。在预检模式(preen mode)下运行时,此参数会被忽略。
freebsd-update(8) 现在支持在安装新内核时备份旧内核。备份内核会写入 /boot/kernel.old
,如果该目录不存在或是之前由 freebsd-update
创建的。否则,freebsd-update
将生成一个新的目录名称以存放备份。此功能默认启用。
gdbserver(1) 现在支持 arm 和 powerpc 平台。
gpt(8) 程序已被移除,取而代之的是 gpart(8)。
gzip(1) 工具现在支持解压由某些商业类 UNIX 系统中的 pack 工具创建的文件。
i2c(8) 工具已新增,用于 I2C 的诊断。
ifconfig(8) 现在支持 vnet
和 -vnet
选项,用于在带有 vimage 的 jails 之间移动接口。
新增了 BSD 许可的 libdwarf 库,用于 DTrace 客户端。
libmsun 库现在支持以下函数:acosl()
、asinl()
、atanl()
、atan2l()
、cargl()
、csqrtl()
、fmodl()
、hypotl()
和 remquol()
。
新增了 libproc 库,用于 DTrace 客户端。
mtest(8) 工具现已支持 IPv6。
mount(8) 程序现在支持选项 -o mountprog=filename
,允许使用其他程序挂载文件系统。这对非 nmount(2) 的文件系统(如 FUSE)特别有用。
新增了 nfscbd(8)、nfsuserd(8)、nfsdumpstate(8) 和 nfsrevoke(8) 工具,用于支持新的 NFSv4 子系统。
新增了 pmcannotate(8) 工具,可以输出工具(以 C 或汇编语言编写)的源码,并嵌入由 pmcstat(8) 分析生成的性能分析信息。
route(8) 工具现支持 show
、weights
和 sticky
命令。有关更多详细信息,请参阅 route(8) 手册页。
rtld(1) 现在支持一个新的环境变量 LD_ELF_HINTS_PATH
,用于覆盖 rtld 提示文件。如果进程使用了 setuid 和/或 setgid,则该环境变量会被忽略。这一功能为使用非默认位置的自定义共享库提供了便利。
rtld(1) 现在支持在 rpath 和 soneeded 路径中进行动态字符串令牌替换。支持的令牌包括 $ORIGIN
、$OSNAME
、$OSREL
和 $PLATFORM
。启用此替换需要在 DT_FLAGS 中设置参数 DF_ORIGIN
或在 DF_FLAGS_1
中设置 DF_1_ORIGIN
,可以通过 GNU ld 的 -z origin
参数进行设置。对于 setuid/setgid 进程,此功能会被无条件禁用。$ORIGIN
的替换依赖于 FreeBSD 内核提供的 AT_EXECPATH 辅助信息。
sysinstall(8) 已不再支持以“危险专用”模式创建 UFS 文件系统,因为该模式已不再被支持。
已简化 sysinstall(8) 的菜单,以减少与系统其他部分的混淆和重复。Xorg 窗口系统应像其他软件包一样安装。Linux 和 OSF/1 仿真的配置应通过内核重建完成。安装磁带媒体的支持已被移除,因为其被认为已不可用。支持 OLDCARD 的过时代码也已被移除。
sysinstall(8) 现在可以通过 /dev/daXa 使用未分区的 USB 驱动器作为安装源介质。
sysinstall(8) 现在支持识别新的 /dev/adaX 磁盘设备(如果已编译到内核中)。
sysinstall(8) 现在使用软件包 freebsd-doc-*
提供本地化文档。
sysinstall(8) 在安装完成后,如果光盘被用作源介质,则会自动弹出光盘。
traceroute(8) 和 traceroute6(8) 现在支持 -a
参数,用于显示每跳的 IP 地址对应的 AS 号。它会通过 -A
选项指定的 WHOIS 服务器查询该号码。如果未指定 -A
,则默认使用 whois.radb.net
。
tzsetup(8) 现在支持 -s
参数,用于跳过关于是否将时钟调整为 UTC 的问题。
新增了 wake(8) 工具,用于向本地以太网网络上的主机发送 Wake on LAN 帧。
ypserv(8) 现在支持 shadow.byname
和 shadow.byuid
映射。
[7.2R] 修复了 atacontrol(8) 工具的一个错误,该错误导致在 /usr
未挂载或从 /rescue
调用时工具无法运行。
[7.2R] 添加了来自 NetBSD btpand(8) 守护程序,支持蓝牙网络接入点 (NAP)、群组自组织网络 (GN) 和个人区域网络用户 (PANU) 配置文件。
[7.2R] 添加了 cpucontrol(8) 工具,用于控制 cpuctl(4) 伪设备。
[7.2R] ncal(1) 工具现在支持多字节字符。
[7.2R] newfs(8) 工具现在支持对普通文件的操作。
[7.2R] config(8) 工具现在支持多条 makeoption
行。
[7.2R] csup(1) 工具现在支持 CVSMode
,用于获取完整的 CVS 仓库。需要注意的是,当前已禁用 rsync 传输模式。
[7.2R] dirname(1) 工具现在支持与 basename(1) 相同的多参数功能。
[7.2R] du(1) 工具现在支持 -l
参数。当指定该参数时,具有多个硬链接的文件将被视为多个不同的文件。
[7.2R] du(1) 工具现在支持 -A
参数,以显示表观大小而非磁盘使用量。这在操作压缩卷或稀疏文件时非常有用。
[7.2R] du(1) 工具现在支持 -Bblocksize
选项,用于以 blocksize 字节为单位计算块数。这不同于 -k
或 -m
选项或设置 BLOCKSIZE
的方式,它可以估算在具有指定 blocksize 的文件系统上,检查的文件层级结构所需的空间大小。除非使用 -A
模式,否则 blocksize 会向上取整为 512 的倍数。
[7.2R] dumpfs(8) 工具现在支持 -f
参数,该参数可以按片段(块)编号列出文件系统中所有空闲的片段。这种新模式执行必要的运算,以生成绝对片段编号,而不是默认模式中打印的 cg 相对编号。
如果使用一次 -f
,则连续片段范围会被压缩为 X-Y
格式,与常规 dumpfs 输出中的空闲块列表相同。如果使用两次,则会逐个打印所有块编号,支持更紧凑或脚本友好的表示方式。
[7.2R] fetch(1) 工具现在支持 -i
参数,该参数支持 If-Modified-Since HTTP 1.1 请求。如果指定此参数,则文件仅在比本地文件的 mtime 更新时才会被下载。此外,libfetch 现在接受 URL 结构中的 mtime,并支持用于启用此行为的参数。
[7.2R] fsck(8) 工具现在支持 -C
参数,用于检查清洁模式。在该模式下,首先检查文件系统是否被正常卸载,如果是,则跳过文件系统检查。否则,执行完整检查。
[7.2R] fsck(8) 工具现在支持 -D
参数,用于损坏恢复模式,该模式将启用某些激进操作,使得 fsck(8) 能够处理存在严重数据损坏的文件系统。当磁盘数据损坏非常严重并导致 fsck(8) 崩溃时,这是最后的补救措施。
[7.2R] getaddrinfo(3) 函数现在支持 SCTP。
[7.2R] 修复了 ipfw(8) 工具的一个错误,该错误会在即使指定 -q
参数时,仍然为 NAT 规则显示额外消息。
[7.2R] ln(1) 工具现在支持 -w
参数,用于检查源文件是否实际存在。如果指定该参数而文件不存在,ln(1) 将发出警告消息。
ln(1) 工具现在可以为符号链接创建硬链接,因为 POSIX.1-2008 要求 -L
和 -P
参数具有此行为。
lpr(1) 工具现在支持 -m
参数,用于在作业完成后发送电子邮件,以及 -t
选项以设置作业标题。
[7.2R] make(1) 工具现在支持 -p
参数,仅打印输入图,而不执行任何命令。输出与 -d g1
相同。结合 -f /dev/null
使用时,仅显示 make(1) 的内置规则。
[7.2R] make(1) 工具现在支持 -Q
参数,使其在指定 -j
选项时不会生成文件横幅,同时具有 -q
参数的相同效果。
[7.2R] make(1) 工具现在支持变量 .MAKE.JOB.PREFIX
。如果指定了 -j
和 -v
,其输出的每个目标都会带有一个前缀标记 — target,该标记的第一部分可以通过该变量控制。
[7.2R] make(1) 工具现在支持变量 .MAKE.PID
和 .MAKE.PPID
。它们分别设置为 make(1) 进程及其父进程的进程 ID。
[7.2R] 新增了 makefs(8) 工具,该工具用于从目录树创建文件系统映像。
[7.2R] mergemaster(8) 工具现在支持 -F
选项,可自动安装仅在版本控制 ID 字符串上有所不同的文件。
[7.2R] mount(8) 工具现支持 -o mountprog=/somewhere/mount_xxx
选项,用于强制指定程序挂载文件系统,而不是直接调用 nmount(2)。这在需要使用第三方程序(如 FUSE)时非常有用。
[7.2R] netstat(1) 工具现在支持 -L
参数,可显示 unix(4) 套接字的监听队列统计信息。
[7.2R] 修复了 netstat(1) 工具中的一个错误。此前版本中,以下选项会导致程序崩溃:
[7.2R] 修复了 netstat(1) 工具中的另一个错误,-ss
选项在 icmp6 部分现在可以按预期工作。
[7.2R] pciconf(8) 工具新增 -b
参数,用于列出每个设备分配资源的基址寄存器 (BAR)。
[7.2R] powerd(8) 程序进行了改进,包括对 SMP 系统的更合理的 CPU 负载估算,以及新增的适用于交流电供电系统的 hiadaptive 模式。该模式以两倍于 adaptive 模式的速度提升 CPU 频率,以四倍更慢的速度降低频率,更倾向于较低的 CPU 负载,并在最大负载后的高频阶段增加了额外的延迟。
新增 revoke(1) 工具,这是 revoke(2) 系统调用的封装。
[7.2R] stat(1) 工具现在支持 -x
参数,可以八进制形式显示 suid、sgid 和粘性位。
[7.2R] 新增 strndup(3) 函数。
tftpd(8) 程序现在支持 -W
选项,与 -w
选项类似,但会基于提交的文件名、strftime(3) 格式字符串和两位数序列号生成唯一名称。时间格式字符串可通过 -F
选项设置。
[7.2R] wc(1) 工具新增 -L
参数,用于输出最长输入行中的字符数。
[7.2R] 修复了 rpc.yppasswdd(8) 程序中的一个错误,该错误会在更改密码或默认 shell 时留下僵尸进程。
[7.1R] adduser(8) 工具新增 -M
选项,用于设置新用户主目录的权限模式。
[7.1R] atacontrol(8) 工具新增 spindown 命令,用于设置或报告设备在超时后进入停转状态的时间。
[7.1R] chflags(1) 现在支持 -v
参数输出详细信息,-f
参数忽略错误,以及 -h
参数,用于设置符号链接的参数,其语义与 chmod(1) 类似。
[7.1R] cp(1) 现在支持 -a
参数,该参数等同于 -RpP
参数。
[7.1R] 修复了 cp(1) 工具中的一个错误,该错误导致 POSIX.1e ACL(请参见 acl(3))无法正确复制。
[7.1R] cron(8) 工具现在支持 -m
参数,用于覆盖默认的 cron 邮件收件人,除非在 crontab 文件中明确提供了 MAILTO= 行。
[7.1R] dhclient(8) 现在支持更多选项,详情见 dhcp-options(5)。
[7.1R] dhclient(8) 现在支持 is_default_interface()
函数,用于确定该接口是否是默认路由所在的接口。
[7.1R] 修复了 dhclient(8) 中的一个错误,导致无法正常移除默认路由。
[7.1R] environ(7) 环境字符串数组现在支持通过将第一个字符设置为 NULL 来取消设置变量。这是 Dovecot 和 Postfix 等第三方软件所必需的。
[7.1R] fdisk(8) 现在支持 -q
参数,以禁止显示任何警告。
[7.1R] fetch(1) 程序和 libfetch 库现在支持环境变量 NO_PROXY
。该变量指定了一个由逗号或空格分隔的主机名列表,表示不应为这些主机使用代理。如果指定了单个星号,则禁用代理的使用。
[7.1R] 新增了 ffsll(3) 和 flsll(3) 函数。这些函数与 ffs(3) 和 fls(3) 函数相同,只是它们接受 long long 类型的参数。
[7.1R] fortune(6) 程序现在支持 FORTUNE_PATH
环境变量,用于指定 fortune 文件的搜索路径。
[7.1R] 修复了 fortune(6) 程序中的一个错误,导致 -e
选项与多个文件一起使用时无法正常工作。
[7.1R] freebsd-update.conf(5) 现在支持 IDSIgnorePaths 声明。
[7.1R] fwcontrol(8) 工具现在支持 -f node
选项,用于指定 node 作为下一个总线重置的根节点。
[7.1R] [sparc64] gcc(1) 现在正确接受 -mcpu
选项,之前该选项被硬编码为 -mcpu=ultrasparc
。
[7.1R] ifconfig(8) 命令现在支持显示 WPS IE(无线配置服务信息元素)。
[7.1R] kgdb(1) 命令现在支持 add-kld *kld*
命令,用于定位一个 kld(4) 并加载其符号。
[7.1R] kgdb(1) 命令现在具有一个共享库后端,用于内核文件,将 kld(4) 视为共享库,并在启动时自动加载 kld(4) 的符号。
[7.1R] kgdb(1) 现在支持 tid
命令和其他与内核模块相关的命令,即使是远程目标。
[7.1R] kvm_getcptime(3) 函数已被添加,用于获取内核中的全局 CPU 时间统计信息。
[7.1R] libalias 库现在支持 PORT 和 EPRT FTP 命令的小写形式。
[7.1R] man(1) 现在包括对 bzip2(1) 压缩的手册页的有限支持。
[7.1R] mdconfig(8) 命令现在支持 -v
(详细)参数用于 -l
命令。它一次显示所有 md(4) 设备的大小和后备存储。
[7.1R] 新增了 memrchr(3) 函数。它的行为与 memchr(3) 相同,只是它查找字符串中指定字符的最后一个出现位置。
[7.1R] 修复了 morse(6) 程序中的输出语法错误。
[7.1R] mountd(8) 工具现在支持 -hbindip
选项,该选项指定要绑定的 IP 地址,用于 TCP 和 UDP 请求。此选项可以多次指定。如果未指定 -h
选项,则将使用 INADDR_ANY
。请注意,在使用此选项指定 IP 地址时,它会自动将 127.0.0.1 和启用 IPv6 时的 ::1
添加到列表中。
[7.1R] moused(8) 工具现在支持 -L
参数,用于更改滚动速度,并使 -U
选项仅影响滚动阈值。
[7.1R] mv(1) 命令现在支持在跨设备移动目录到现有目录时遵循 POSIX 规范。
[7.1R] periodic(8) 现在支持在 periodic.conf(5) 中配置变量 daily_status_mail_rejects_shorten
。此选项允许拒绝的邮件报告按黑名单统计拒绝数量,而不提供有关单个发送主机的详细信息。默认配置将保持原始报告格式。
[7.1R] ping6(8) 现在以与 ping(8) 相同的方式使用退出状态 0 和 2。
[7.1R] ping6(8) 现在支持 -o
参数,使用此参数, ping6(8) 在接收到一个回复包后成功退出。
[7.1R] ping6(8) 现在支持 -r
和 -R
参数,这与 ping(8) 的 -a
和 -A
参数相同。
[7.1R] ping6(8) 的最小间隔已从 0.01 降低到 0.000001。
[7.1R] realpath(1) 工具现在支持 -q
参数,以抑制警告,并接受多个路径作为命令行参数。
[7.1R] rfcomm_pppd(8) 现在支持 -D
参数,以注册拨号网络服务(DUN),除了局域网访问 PPP(LAN)服务之外。
[7.1R] sdpd(8) 现在支持 NAP、GN 和 PANU 配置文件。
[7.1R] setkey(8) 工具现在接受 esp 作为 spdadd 命令的协议名称。
[7.1R] telnetd(8) 中的一个错误已修复,该错误导致即使指定了 -a off
选项,仍会尝试进行身份验证。
[7.1R] top(1) 和 vmstat(8) 命令现在支持 -P
参数,显示每个 CPU 的统计信息。
[7.1R] uuid_enc_le(3)、uuid_dec_le(3)、uuid_enc_be(3) 和 uuid_dec_be(3) 函数已添加。这些函数用于编码/解码 UUID 的二进制表示。
[7.1R] watch(8) 工具现在支持同时使用超过 10 个 snp(4) 设备。
[7.1R] ypserv(8) 守护进程现在支持 -P
选项,可以指定其应监听的端口号。
/etc/rc.d
脚本[7.1R] rc.conf(5) 现在支持 dummynet_enable
变量,该变量允许在 firewall_enable
为 YES
时加载 dummynet(4) 内核模块。
[7.1R] ntpd rc(8) 脚本现在可以在没有配置文件 /etc/ntp.conf
的情况下工作。
[7.1R] ppp rc(8) 脚本现在支持多个实例。更多详情,请参阅 rc.conf(5) 中 ppp_profile
变量的描述。
[7.1R] sysctl rc(8) 脚本现在除了加载 /etc/sysctl.conf 外,还支持加载 /etc/sysctl.conf.local。
[7.1R] rc.conf(5) 现在支持配置接口和附加网络,用于当 firewall_type
为 simple 或 client 时,rc.firewall 设置的防火墙规则集。请参见 firewall_client_net
、firewall_simple_iif
、firewall_simple_inet
、firewall_simple_oif
和 firewall_simple_onet
。
ISC BIND 已更新到 9.6.1rc1 版本。
ACPI-CA 已更新到 20090521。
ee(简易编辑器)已更新到 1.5.0 版本。此版本现在使用 2-clause BSD 许可证,而不是 Artistic 许可证。
hostapd 已更新到 0.6.8 版本,并增加了 radius ACL 支持。
less 已更新到 v436 版本。
libarchive 库已更新到 2.7.0 版本。
libexpat 库已从 1.95.5 版本更新到 2.0.1 版本。
ncurses 库已更新到 5.7-20081102 版本。
OpenBSM 1.1 已合并到 Trusted BSD 项目中。
TCPDUMP 已更新到 4.0.0 版本。
时区数据库已更新到 tzdata2009f 版本。
wpa_supplicant 已更新到 0.6.8 版本。
ZFS 文件系统已从版本 6 更新到版本 13。
[7.1R] am-utils 已从版本 6.0.10p1 更新到 6.1.5 版本。
[7.1R] awk 已从 2007 年 5 月 1 日的版本更新到 2007 年 10 月 23 日的版本。
[7.1R] bzip2 已从版本 1.0.4 更新到 1.0.5 版本。
[7.1R] CVS 已更新到版本 1.11.22.1。
[7.1R] NTP 已更新到版本 4.2.4p5。
[7.1R] OpenPAM 已从 Figwort 版本更新到 Hydrangea 版本。
[7.1R] OpenSSH 已从版本 4.5p1 更新到 5.1p1 版本。
[7.1R] resolver(3) 库已更新为 ISC BIND 9.4.3 版本。
[7.1R] sendmail 已从版本 8.14.2 更新到 8.14.3 版本。
[7.2R] 修复了 pkg_create(1) 工具中的一个错误,该错误导致 -n
参数无法正常工作。
[7.2R] FreeBSD Ports 现在支持在某些支持的 port 中使用多个 make(1) 作业。当 Port 被标记为 MAKE_JOBS_SAFE
时,该功能会自动启用,并通过将 -jX
选项传递给供应商的顶层 Makefile 来提高构建阶段的 CPU 利用率。默认情况下,X 的值设置为 CPU 的数量,用户可以通过 make(1) 变量 MAKE_JOBS_NUMBER
来设置。更多详情,请参见 ports/Mk/bsd.port.mk
。
GNOME 桌面环境的支持版本已更新为 2.26.3(x11/gnome2)。
KDE 桌面环境的支持版本已更新为 4.3.1(x11/kde4)。
[amd64, i386] 使用 freebsd-update(8) 工具支持在 RELEASE 版本之间(以及各种安全分支的快照)进行升级。二进制升级过程将更新未修改的用户空间工具以及未修改的 GENERIC/SMP 内核,这些内核作为官方 FreeBSD 发行版的一部分进行分发。freebsd-update(8) 工具要求被升级的主机具有互联网连接。
通过 CDROM 分发媒体的主 sysinstall(8) 菜单中的升级选项支持一种旧的二进制升级形式。这种类型的二进制升级对于非 i386、非 amd64 机器或没有互联网连接的系统可能很有用。
根据 /usr/src/UPDATING
中的说明,支持从先前版本进行基于源代码的升级(即重新编译 FreeBSD 基本系统)。
重要提示:
升级 FreeBSD 前,务必先备份 所有 数据和配置文件。
可以从 ftp://ftp.FreeBSD.org/ 下载此文件和其他与发行版相关的文档。
有关 FreeBSD 的问题,请在联系 questions@FreeBSD.org 之前阅读 文档。
有关此文档的问题,请发送电子邮件至 doc@FreeBSD.org。
本地任意代码执行
可预测的序列漏洞
中的跨站请求伪造
中的跨站请求伪造
中的信息泄露
BIND 动态更新消息远程拒绝服务