github编辑

FreeBSD 7.3 RELEASE 发行公告(2010 年 3 月 23 日)

原文链接:FreeBSD 7.3-RELEASE Release Notesarrow-up-right

FreeBSD 项目

版权 © 2010 FreeBSD 文档项目

$FreeBSD: releng/7.3/release/doc/en_US.ISO8859-1/relnotes/article.sgml 205387 2010-03-20 16:39:28Z hrs $

FreeBSD 是 FreeBSD 基金会的注册商标。

IBM、AIX、EtherJet、Netfinity、OS/2、PowerPC、PS/2、S/390 和 ThinkPad 是国际商业机器公司(IBM)在美国、其他国家或两者的商标。

IEEE、POSIX 和 802 是美国电气和电子工程师协会(IEEE, Inc.)在美国的注册商标。

Intel、Celeron、EtherExpress、i386、i486、Itanium、Pentium 和 Xeon 是英特尔公司或其子公司在美国及其他国家的商标或注册商标。

Sparc、Sparc64、SPARCEngine 和 UltraSPARC 是 SPARC 国际公司在美国及其他国家的商标。使用 SPARC 商标的产品基于 Sun Microsystems, Inc. 开发的架构。

许多制造商和销售商用来区分其产品的名称已被声明为商标。在本文件中,如果出现这些名称,并且 FreeBSD 项目知道其商标声明,则这些名称后会附有“™”或“®”符号。

FreeBSD 7.3-RELEASE 的发布说明包含了自 7.3-STABLE 开发线以来对 FreeBSD 基本系统所做更改的摘要。此文档列出了自上次发布以来发布的安全公告,以及对 FreeBSD 内核和用户空间的重大更改。还简要介绍了升级的相关事项。

1 介绍

本文档包含了 FreeBSD 7.3-RELEASE 的发布说明。它介绍了 FreeBSD 中最近新增、修改或删除的功能,同时也提供了一些关于从先前版本升级到 FreeBSD 的说明。

此版本的 FreeBSD 7.3-RELEASE 为正式发布版本。你可以在 ftp://ftp.FreeBSD.org/arrow-up-right 或其任何镜像站点找到它。有关获取此版本(或其他版本)发布包的更多信息,请参考 FreeBSD 手册arrow-up-right 中的 “获取 FreeBSD”附录arrow-up-right

在安装 FreeBSD 之前,所有用户都应查看发布勘误。勘误 文档会更新“临时突发”信息,这些信息是在发布周期的后期或发布后发现的。通常,它包含已知的 bug、相关的安全公告以及文档的修正。FreeBSD 7.3-RELEASE 的勘误的最新版本可以在 http://www.FreeBSD.org/releases/7.3R/勘误.htmlarrow-up-right 找到。

2 新特性

本节介绍了自 7.2-RELEASE 以来 FreeBSD 中最为用户可见的新特性或更改。

典型的发布说明项包括 7.2-RELEASE 之后发布的最新安全公告、新的驱动程序或硬件支持、新的命令或选项、主要的 bug 修复或第三方软件升级。它们还可能列出主要 Port/软件包或发布工程实践的更改。显然,发布说明不能列出版本之间对 FreeBSD 所做的每个更改;本文档主要集中在安全公告、用户可见的更改和重大架构改进上。

2.1 安全公告

以下安全公告中描述的问题已经被修复。有关更多信息,请参考来自 http://security.FreeBSD.org/arrow-up-right 的各个安全公告。

公告
日期
主题

2009 年 6 月 10 日

通过直接写入管道泄露本地信息

2009 年 6 月 10 日

在 SIOCSIFINFO_IN6 ioctl 中缺少权限检查

2009 年 6 月 10 日

ntpd 堆栈溢出漏洞

2009 年 7 月 29 日

BIND named(8)arrow-up-right 动态更新消息导致远程 DoS

2009 年 10 月 2 日

Devfs / VFS 空指针竞争条件

2009 年 12 月 3 日

SSL 协议缺陷

2009 年 12 月 3 日

rtld(1)arrow-up-right 环境变量清理不当

2009 年 12 月 3 日

freebsd-update(8)arrow-up-right 中不当的目录权限

2010 年 1 月 6 日

BIND named(8)arrow-up-right 使用 DNSSEC 验证时的缓存中毒

2010 年 1 月 6 日

ntpd 模式 7 拒绝服务

2010 年 1 月 6 日

ZFS ZIL 播放不安全权限问题

2.2 内核变更

新增了 closefrom(2)arrow-up-right 系统调用。此调用会关闭大于或等于指定值的任何打开的文件描述符。请注意,这个调用不会引发任何错误,也不是线程安全的。

ddb(8)arrow-up-right 子命令现在支持 geom(8)arrow-up-right 的分页功能。

futimes(2)arrow-up-rightlutimes(2)arrow-up-right,和 utimes(2)arrow-up-right 系统调用现在支持 sysctl 变量 vfs.timestamp_precision

jail(8)arrow-up-right 子系统现在支持 security.jail.ip4_saddrselsecurity.jail.ip6_saddrsel sysctl 变量,用来控制是否对未绑定的外发连接使用源地址选择或主 Jail 地址。默认情况下启用了源地址选择。此外,jail 参数 ip4.saddrselip6.saddrsel 是布尔选项,用来分别启用 IPv4 和 IPv6 的源地址选择。如果设置了布尔参数 ip4.nosaddrselip6.nosaddrsel,子 Jail 将不继承父 Jail 的地址选择选项。

[amd64] kmem_map KVA 空间已增加至 512GB。

已添加 lindev(4)arrow-up-right 驱动。该驱动用于 Linux 特有的伪设备,目前仅用于 /dev/full

FreeBSD 的 Linux 仿真层现在支持 SO_PEERCRED 套接字选项,MSG_CMSG_CLOEXEC 用于 recvmsg(),以及稳健的 futex。futex 已通过使用 sx(9)arrow-up-right 锁重新实现。还增加了 ktr(4)arrow-up-right 跟踪的初步支持。

修复了 malloc(3)arrow-up-right 实现与线程库交互时的锁处理错误。当多线程进程在一个线程中调用 fork(2)arrow-up-right 系统调用,而在另一个线程中调用 malloc(3)arrow-up-right 函数时,导致子进程中的死锁。

已移除 PECOFF 镜像激活器支持。

FreeBSD 默认支持 POSIX 信号量(P1003_1B_SEMAPHORES 内核选项)。

修复了 sched_ule(4)arrow-up-right 调度器中的死锁问题。有关更多细节,请参阅 EN-10:02.sched_ulearrow-up-right

新增了 sglist(9)arrow-up-right API,用于管理物理地址的散布/聚集列表。

FreeBSD 的部分结构体的 ABI(系统 V IPC API 使用的结构体)已进行内部更改,现在在 64 位平台上支持大于 2GB 的 System V IPC 共享内存段。对于新的内核模块,函数 kern_msgctl()kern_semctl()kern_shmctl() 将通过 ABI shim 透明地重命名为新的函数 kern_new_*()。旧函数仍保留原名,以提供对旧内核模块的向后兼容性。

新增了 sysctl 变量 security.bsd.map_at_zero,默认值为 1(允许)。该变量控制是否允许 FreeBSD 在地址 0(虚拟地址空间的用户控制部分)映射对象。禁用此选项有助于防止通过在该位置注入恶意代码并触发内核中的 NULL 指针解引用来进行攻击。

2.2.1 启动加载器变更

新增了一个支持 GPT 和 ZFS 的启动加载器 gptzfsboot。

启动加载器 zfsboot 现在始终使用 64 位 LBA,并支持在 ZFS 池中使用超过七个驱动器。

修复了 zfsboot 中的一个错误,/boot.config 文件小于 512 字节时会被忽略。

新增了 zfsloader,这是一款与 loader(8)arrow-up-right 类似的最终启动加载器,支持 ZFS。

修复了启动加载器中的一个错误。当系统同时支持 MBR 和 GPT 且它们相互同步时,启动加载器未能正确识别 GPT。

[pc98] 已根据最新的 i386 版本重新实现程序 boot2

2.2.2 硬件支持

新增了 amdsbwd(4) 驱动程序,用于 AMD SB600/SB7xx 看门狗定时器。

cpuctl(4)arrow-up-right 驱动程序现在支持原子设置/清除 MSR 寄存器中的单个位。新增了两个 ioctl 调用 CPUCTL_MSRSBITCPUCTL_MSRCBIT,它们将传递参数中的数据字段作为掩码,并根据掩码值设置/清除 MSR 寄存器中的位。 cpucontrol(8)arrow-up-right 实用程序也支持此功能。更多详情请见“用户空间变更”部分。

cpufreq(4)arrow-up-right 驱动程序现在支持 Phenom(家庭 10h)。

[amd64, i386] 当更改页面的缓存属性时,CPU 缓存刷新已优化,对于支持自侦听的 CPU,不执行任何操作,而在可能的情况下使用 CLFLUSH 而非完全缓存失效。由于在 Intel CPU 上默认情况下会刷新本地 APIC 范围的问题,FreeBSD 不在 Intel CPU 上使用 CLFLUSH。可以通过启动器选项 hw.clflush_disable 进行控制。设置为 1 时禁用 CLFLUSH,设置为 0 时允许在 CPUID_SS 不存在时为 Intel CPU 使用 CLFLUSH。这修复了在 Xen 上发生的内核 Panic 问题,该问题禁用了自侦听。

[sparc64] 新增了 epic(4) 驱动程序,用于 Sun Fire V215/V245 的前面板 LED。

[sparc64] 新增了 fire(4) 驱动程序,用于“Fire”JBus 到 PCIe 桥,至少在 Sun Fire V215/V245 和 Sun Ultra 25/45 机器上存在。

[amd64, i386] 新增了 hwpmc(4)arrow-up-right 驱动程序,支持硬件性能监控计数器。这包括内核驱动程序、接口库 pmc(3)arrow-up-right ,以及用户空间工具 pmcannotate(8)arrow-up-rightpmccontrol(8)arrow-up-right、和 pmcstat(8)arrow-up-right,并允许应用程序使用硬件性能计数器收集特定进程或整个系统的性能数据。

修复了 ipmi(4)arrow-up-right 驱动程序中的几个错误,这些错误导致看门狗超时设置无法正常工作。

已重命名驱动程序 k8temp(4)arrow-up-rightamdtemp(4)arrow-up-right。新驱动程序支持 AMD K10 和 K11 以及 K8。

新增了启动加载器选项 hw.mca.enabled,可用于启用/禁用机器检查代码,默认禁用。

新增了 sysctl 变量 hw.pagesizes,报告系统支持的所有页面大小。

改进了 pci(4)arrow-up-right 子系统中的 PCIe 内存映射配置空间访问、ACPI MCFG 表支持和 BAR(基地址寄存器)处理。默认情况下禁用,可以通过设置启动加载器选项 hw.pci.mcfg 为 1 启用。可以通过相同名称的 sysctl 变量查询此值。

[amd64, i386] FreeBSD 现在支持 VIA Nano 处理器系列。

2.2.2.1 多媒体支持

DRM 现在支持 Radeon HD 4200 (RS880)、4770 (RV740) 和 R6/7xx 3D,以及 Intel G41 芯片。

针对可以作为子设备附加设备的 PCI VGA 显示设备的 vgapci(4) 驱动程序现在支持代理子设备的 PCI MSI/MSI-X(消息信号中断)请求和总线中断请求。这使得子设备可以使用 MSI/MSI-X 中断。

2.2.2.2 网络接口支持

新增了 alc(4)arrow-up-right 驱动程序,用于 Atheros AR8131/AR8132 PCIe 以太网控制器。

修复了 bce(4)arrow-up-right 驱动程序中的一个错误。当在系统中添加 bce(4)arrow-up-right 接口作为 lagg(4)arrow-up-right 成员并启用 LACP 聚合协议时,网络通信通过 bce(4)arrow-up-right 接口完全停止。虽然如果 bce(4)arrow-up-right 接口不是 lagg(4)arrow-up-right 成员时仍然工作,但在 netstat(1)arrow-up-right 输出中的传入流量统计数据是不正确的,因为每个数据包都被识别为全尺寸包。

修复了 bge(4)arrow-up-right 驱动程序中的几个错误。它在系统关闭时处理大量流量时会导致 Panic,并且当缓冲区地址跨越 4GB 边界的倍数时,会出现 DMA 问题。

bge(4)arrow-up-right 驱动程序现在支持 BCM5755 或更新芯片的 TSO(TCP 分段卸载)。

[sparc64] 新增了 cas(4)arrow-up-right 驱动程序,提供对 Sun Cassini/Cassini+ 和 National Semiconductor DP83065 Saturn 千兆以太网设备的支持。

cxgb(4)arrow-up-right 驱动程序已升级到最新版本,固件版本为 7.8.0。

et(4)arrow-up-right 驱动程序现在支持 IPv4/TCP/UDP 发送校验和卸载。

fxp(4)arrow-up-right 驱动程序已改进。现在,多播过滤器的重新编程更加健壮。修复了一个错误,该错误在启用 TSO(TCP 分段卸载)时会导致 IP 包头中的长度不正确。此修复解决了之前版本启用 TSO 时的性能问题。

msk(4)arrow-up-right 驱动程序已改进,增强了其稳定性。同时,它现在支持 Yukon FE+ A0,包括 88E8040、88E8040T、88E8042、88E8048、88E8057 和 88E8070。

修复了 mxge(4)arrow-up-right 驱动程序中的多个错误,固件版本现在为 1.4.48b。它可能在重置时丢失混杂参数,并在硬件故障时导致内核 Panic。

修复了 nfe(4)arrow-up-right 驱动程序中的一个错误,该错误导致了大帧的缓冲区分配失败。

nge(4)arrow-up-right 驱动程序已改进,现在在所有支持的平台上均可工作。它现在支持 altq(4)arrow-up-right、硬件校验和卸载用于 vlan(4)arrow-up-right 标签帧、WoL(远程唤醒)、大帧和 PCI MWI(内存写入与作废)命令。硬件 MAC 统计数据可以通过新的 sysctl 变量 dev.nge.N.stats 获取。另一个新的 sysctl 变量 dev.nge.N.int_holdoff 被添加,用于控制中断调节。有效的范围是 1(100us)到 255,实际的中断交付将根据此值延迟。默认值为 1。更多细节请参见 nge(4)arrow-up-right 手册页。

ste(4)arrow-up-right 驱动程序已改进,现在在所有支持的平台上均可工作。它现在支持挂起/恢复和 WoL(远程唤醒)。硬件 MAC 统计数据可以通过新的 sysctl 变量 dev.ste.N.stats 获取。添加了新的 sysctl 变量 dev.ste.N.int_rx_mod,用于控制 RX 中断调节时间。默认值为 150(150us)。更多细节请参见 ste(4)arrow-up-right 手册页。

vge(4)arrow-up-right 驱动程序已改进。它现在支持硬件校验和卸载,用于 vlan(4)arrow-up-right 标签帧和 WoL(远程唤醒)。硬件 MAC 统计数据可以通过新的 sysctl 变量 dev.vge.N.stats 获取。添加了新的 sysctl 变量 dev.nge.N.int_holdoffdev.nge.N.rx_coal_pktdev.nge.N.tx_coal_pkt,用于控制中断调节。更多细节请参见 vge(4)arrow-up-right 手册页。

修复了 xl(4)arrow-up-right 驱动程序中的一个错误,该错误导致偶尔的看门狗超时。

2.2.3 网络协议

修复了 gif(4)arrow-up-right 中的一个错误,之前通过 if_bridge(4)arrow-up-rightgif(4)arrow-up-right 组合发送的 EtherIP 数据包会有版本字段反转。如果需要通过 EtherIP 与旧版 FreeBSD 版本进行通信,可以使用新的参数 accept_rev_ethip_ver 和 send_rev_ethip_ver 来控制反转版本字段的处理。这些参数可以通过 ifconfig(8)arrow-up-right 工具设置在 gif(4)arrow-up-right 接口上。FreeBSD 6.1、6.2、6.3、7.0、7.1 和 7.2 上的 EtherIP 实现存在互操作性问题,因为它发送了错误的 EtherIP 数据包并丢弃了正确的。更多细节请参见 gif(4)arrow-up-right 手册页。

IPcomp 协议现在默认启用。可以通过 sysctl 变量 net.inet.ipcomp.ipcomp_enable 控制。

修复了 ng_iface(4)arrow-up-right 驱动程序中的一个错误。由于隧道传输,当一个数据包依次通过两个不同的 netgraph(3)arrow-up-right 接口时,会发生无限循环。

内核选项 IPFW_DEFAULT_TO_ACCEPT 已被新的加载器可调项 net.inet.ip.fw.default_to_accept 替代。可以通过相同名称的 sysctl 变量查询该值。

tap(4)arrow-up-right 软件网络接口支持一个新的 ioctl TAPGIFNAME。这是一个方便的快捷方式,从 NetBSD 移植过来,可以通过字符设备的文件描述符获取网络接口名称。

vlan(4)arrow-up-right 驱动程序现在在 GENERIC 内核中启用。

2.2.4 磁盘和存储

aac(4)arrow-up-right 驱动程序已与最新的官方厂商驱动程序同步。

ahc(4)arrow-up-right 驱动程序现在支持 Adaptec 39320LPE 适配器。

ata(4)arrow-up-right 驱动程序中的 ATA 命令超时已增加。此值可以通过内核选项 ATA_REQUEST_TIMEOUT 设置。

修复了 ata(4)arrow-up-right 驱动程序中的一个错误。它可能会生成一个大于控制器最大 I/O 大小的 I/O 请求,从而导致内核 Panic。

gmirror(8)arrow-up-right GEOM 类中的负载均衡模式算法已更改,现在默认设置为该模式,而不是分割模式。负载模式使用平均的请求数,分配到每个驱动器上,而不是测量每个驱动器的最后请求执行时间并选择执行时间最短的驱动器。

修复了 GEOM 类 gpart(8)arrow-up-right 中的一个错误。它无法处理由 OpenSolaris 写入的 GPT 头,其大小大于 92 字节。

GEOM 类 gstripe(8)arrow-up-right 的默认条带大小已从 4KB 更改为 64KB。此更改将影响更喜欢使用 create 命令而不是 label 命令的用户,他们现在需要明确指定旧的条带大小(-s 4096)以便使用其旧的 gstripe(8)arrow-up-right 卷。

hptrr(4)arrow-up-right 驱动程序现在支持新的加载器可调项 hw.hptrr.attach_generic,用于防止该驱动程序附加到没有 HPT RAID BIOS 的某些 Marvell 芯片。

mfi(4)arrow-up-right 驱动程序现在支持 LSI MegaRAID SAS 1078 和 Dell PERC6。

2.2.5 文件系统

ext2fs(5)arrow-up-right 文件系统已得到改进。修复了当 inode 大小不是 128 时的一个错误。

FreeBSD 网络文件系统现在支持在 NFS 客户端缓存负面路径名查找,并且使用 3 秒超时(之前版本中为 30 秒)来缓存目录的属性。

pseudofs(9)arrow-up-right 子系统,作为 procfs(5)arrow-up-rightlinprocfs(5)arrow-up-right 的一部分,现已变为 MPSAFE。

UFS_DIRHASH(默认启用)现在支持在系统内存不足时移除缓存数据(通过 vm_lowmem 事件处理程序)。修复了一个错误,即当将 sysctl 变量 vfs.ufs.dirhash_maxmem 设置为低于 UFS_DIRHASH 当前使用的内存时,系统会引发 panic。

VFS(9)arrow-up-right 子系统添加了新的 sysctl 变量 vfs.flushbufqtarget。这个变量可以修复 bufdaemon 中的问题,bufdaemon 是负责刷新脏缓冲区的内核进程,在某些工作负载下可能导致进程死锁。该变量的值决定了在分配新缓冲区之前需要刷新多少缓冲区。该变量在 7.3-RELEASE 中的默认值为 -1(禁用)。FreeBSD 8.0-RELEASE 默认值为 100

ZFS 已从版本 6 更新至版本 13。此更新包括许多新的 ZFS 特性,如允许非 root 用户执行某些管理功能,支持更多的磁盘用于缓存或 ZFS Intent 日志,和部分 chflags(2)arrow-up-right 支持。它还包括一些 FreeBSD 特有的新增功能,如支持从 ZFS 文件系统启动,去除 ARC 大小限制,ARC 背压(允许 ZFS 在 amd64 上无需调节参数即可工作)以及许多 bug 修复。

2.3 用户空间变更

acpidump(8)arrow-up-right 工具现在支持解析 SRAT(系统资源亲和性表,用于描述 CPU 和内存之间的亲和性关系)。

apropos(1)arrow-up-right 命令不再将必要的目录设置为 PATH 变量。这意味着,如果调用者的 PATH 中没有 /bin/usr/bin,则该命令无法工作。

bluetooth(3)arrow-up-right 库现在支持 Bluetooth HCI API。

btpand(8)arrow-up-right 守护进程现在支持在 -d 选项中指定 Bluetooth 设备节点名称。

修复了 chflags(1)arrow-up-right -h 选项的一个错误。它曾将符号链接目标的参数作为原始参数。

cp(1)arrow-up-right 命令现在在指定 -Rp 选项时保留符号链接的文件参数。之前会报告“功能未实现”的错误。

cpucontrol(8)arrow-up-right 命令现在允许用户对 MSR 寄存器执行原子位与和或操作。新增了两个操作符(&=|=)。第一个操作符执行 MSR 寄存器当前内容与掩码的位与操作,第二个操作符执行位或操作。该参数可以选择性地以 ~ 取反操作符为前缀。以下是清除 TSC MSR 第二位的示例:

cpuset(1)arrow-up-right 命令现在通过新的选项 -x irq 支持中断绑定。

默认的 crontab(5)arrow-up-right 文件不再定义 HOME 变量。

df(1)arrow-up-right 命令现在在指定选项 -H-h 时使用易于阅读的输出显示 inode 计数。

修复了 dhclient(8)arrow-up-right 工具在附加 DHCP 服务器提供的以 NUL 终止的文本时的一个错误。

dhclient(8)arrow-up-right 工具现在使用 68(bootpc)作为单播 DHCPREQUEST 数据包的源端口,而不是让协议栈选择一个随机的源端口。这修复了在某些具有严格 DHCP 欺骗策略的网络中,dhclient(8)arrow-up-right 永远无法从 RENEWING 状态过渡到 BOUND 状态,除非经过 REBINDING 状态。

fdisk(8)arrow-up-right 工具现在支持大小限定符(K, M 和 G)以及 * 用于在 p 命令中自动计算。

fetch(1)arrow-up-right 命令现在支持 HTTP 摘要认证。

fetch(1)arrow-up-right 命令现在支持 NO_PROXYno_proxy 环境变量,用于禁用 HTTP 代理的使用。更多详情,请参见 fetch(3)arrow-up-right 手册页面。

修复了 fetch(1)arrow-up-right 命令中的一个错误,该错误导致 FTP_TIMEOUTHTTP_TIMEOUT 环境变量被忽略。

修复了 fetch(1)arrow-up-right 命令中的一个错误,该错误导致默认参数(如连接超时)未为 HTTPS 协议设置。现在它使用与 HTTP 协议相同的参数。

修复了 find(1)arrow-up-right 命令中的一个错误,该错误导致当指定 -delete 时,-L 选项被忽略。以下命令可以安全地用于删除损坏的链接:

修复了 find(1)arrow-up-rightrm(1)arrow-up-right 命令中的一个错误,当符号链接具有参数 uchguappend 时,这些命令会尝试清除目标文件,而不是符号链接本身。

gzip(1)arrow-up-right 命令现在支持解压由 pack(1) 压缩的文件,后者出现在一些商业 Unix 系统中。

ktrace(1)arrow-up-right 工具现在支持一个新的 KTRACE 记录,用于记录 sysctl(3)arrow-up-right 调用。

FreeBSD libc 库现在包括 fdopendir(3)arrow-up-right 函数。

FreeBSD libc 库现在包括 feature_present(3)arrow-up-right 函数,该函数通过检查 sysctl kern.features MIB 来检查是否存在指定的内核特性。

FreeBSD libc 库现在包括 getpagesize(3)arrow-up-right 函数,该函数返回系统支持的页面大小数量,或指定的支持页面大小子集。

libradius(3)arrow-up-right 现在支持简单的嵌入式 RADIUS 服务器。

lp(1)arrow-up-right 命令现在支持 -m 选项,在文件打印后发送电子邮件,并且支持选项 -t title,在输出的横幅页上写入 title。这些是 POSIX 标准要求的。

lpq(1)arrow-up-right 命令现在正确地转换包含非标准行尾字符的远程主机名。

man(1)arrow-up-right 命令现在支持 UTF-8 格式的手册页。

mergemaster(8)arrow-up-right 工具现在在调用 mtree(8)arrow-up-right 命令时,使用 -L 选项来跟随符号链接。

mergemaster(8)arrow-up-right 工具现在支持变量 DELETE_STALE_RC_FILES,该变量在 mergemaster.rc 文件中可以自动删除过时的 rc.d 脚本。

已添加新的用户空间工具 mfiutil(8)arrow-up-right ,用于管理 mfi(4)arrow-up-right 设备。它包括基本的功能来监控控制器、阵列和磁盘的状态,修改基本属性,创建/删除阵列和备用磁盘,以及刷新控制器固件。请注意,这只是一个小工具,并不是 Ports 中官方支持的 MegaCLI 的替代品,后者提供了更多的功能。

已添加新的用户空间工具 mptutil(8)arrow-up-right ,用于管理 mpt(4)arrow-up-right 设备。它包括基本的功能来监控控制器、阵列和磁盘的状态,修改基本属性,以及创建/删除阵列和备用磁盘。

newfs_msdos(8)arrow-up-right 命令现在支持没有 CHS 参数的介质。

ntpd(8)arrow-up-right 守护进程不再尝试绑定 IPv6 anycast 地址。

pkill(1)arrow-up-right 命令现在在查找进程时会忽略自身和其祖先。为向后兼容,新增了 -a 选项。

修复了 ppp(8)arrow-up-right 守护进程中的竞争条件。

ps(1)arrow-up-right 命令现在支持新的 -p 参数。此参数显示子进程信息,输出类似于 Linux 的 -H(或 -f)。

pwait(1)arrow-up-right 命令已添加,它等待任何进程终止。

pwd_mkdb(8)arrow-up-right 现在会在指定 -C 选项时验证登录名长度是否小于 MAXLOGNAME。请注意,数据库中的登录名过长的条目仍然被允许,并且 getpwent*()getpwuid*() 函数能够正确返回它们。getpwnam*() 在读取数据库时会将其截断为 MAXLOGNAME - 1。而 su(1)arrow-up-right 工具会因过长的登录名而失败。

FreeBSD 运行时链接器 rtld(1)arrow-up-right 已得到改进,改进内容包括:

  • 在 rpath 和 soname 中实现了动态字符串令牌替换。可以通过设置 ld(1)arrow-up-right 命令的 -z origin 选项来启用此功能。目前,它支持 $OSNAME$PLATFORM$OSREL$ORIGIN 令牌。对于 setuid/setgid 进程,该翻译始终禁用。

  • PIE(位置无关可执行文件)支持得到改进。运行时链接器现在会为主对象计算重定位基址,并对所有虚拟地址进行重定位调整,以使 PIE 二进制文件能够加载到非零的基地址。

  • ELF 对象映射的方式已更改,使得地址空间的连接变得可能。现在,它首先将 PROT_NONE 的匿名内存映射到整个范围,然后将对象的各个段映射到其上。它通过修改保护范围而非重新映射来分配 .bss,并且消除了当文本段末尾不与页面对齐时的多余清除。

  • 支持新的环境变量 LD_ELF_HINTS_PATH,可以覆盖 rtld 提示文件。此功能提供了一种便捷的方式来使用位于非默认位置的自定义共享库并进行切换。如果进程被 setuid/setgid 污染,此环境变量会被自动取消设置。

strptime(3)arrow-up-right 函数现在支持 %z 格式说明符。

sysinstall(8)arrow-up-right 工具现在支持在 install.cfg 文件的 netDev 选项中列出以逗号分隔的网络接口。

[ia64] sysinstall(8)arrow-up-right 工具现在为 EFI 分区使用 400MB,而不是之前版本中的 100MB。

tail(1)arrow-up-right-F 参数现在会持续尝试打开文件,而不是在遇到错误时放弃。ENOENT 错误不再报告。这种行为与 GNU 版本一致。

tftp(1)arrow-up-right 命令现在在成功传输文件时返回正确的退出状态。

traceroute(8)arrow-up-right 程序现在即使在 jail(8)arrow-up-right 环境中,也会使用内核中的源地址选择。

traceroute(8)arrow-up-righttraceroute6(8)arrow-up-right 现在支持 -a 参数,用于显示每跳对应查找 IP 地址的 AS 编号。它将查询 -A 选项中指定的 WHOIS 服务器。如果未指定 -A,则默认使用 whois.radb.net

tzsetup(8)arrow-up-right 命令现在支持 -s 选项,可以跳过初始问题(即时钟未设置为 UTC 时是否需要调整)。

whois(1)arrow-up-right 工具已更新。已移除 -d 选项,因为 whois.nic.mil 已不再存在,并且现在支持像处理 IPv4 地址一样搜索 IPv6 地址,而无需明确指定使用 ARIN 服务器获取初始信息。

yp(8)arrow-up-right 工具现在支持 shadow.bynameshadow.byuid 映射。这些功能需要特权端口访问。

2.3.1 /etc/rc.d 脚本

已添加 service(8)arrow-up-right 命令,作为 rc.d 脚本的简便接口。

rc.conf(5)arrow-up-right 文件现在支持 create_args_IF 用于通过 cloned_interfaces 创建的接口。

rc.conf(5)arrow-up-right 文件现在支持 vlans_IF 用于创建 vlan(4)arrow-up-right 接口。如果 vlan 接口是一个数字,则该数字将被视为接口的 vlan 标签,接口将命名为“IF.N”。否则,必须通过 create_args_IF 变量中的 vlan 参数提供 vlan 标签。

rc.d/fsck 脚本现在支持通过选项 fsck_y_flags 配置 fsck_y_enable

rc.d/named 脚本现在支持在启动前通过 named-checkconf(8)arrow-up-right 检查区域文件,并支持以下选项:

  • named_wait:该脚本将循环,直到能够成功查找 named_wait_host 中指定的主机名(默认为 localhost)。默认情况下禁用此选项。

  • named_auto_forward:根据 /etc/resolv.conf 的内容创建转发器配置文件。这使得你可以利用本地解析器提高性能、减少网络流量、定制区域等,同时仍然依赖于本地网络解析器的优势。默认情况下禁用此选项。

rc.d/savecore 脚本现在支持在启动时自动调用 crashinfo(8)arrow-up-right。已添加新变量 crashinfo_enable 来启用此功能。

已添加 rc.d/static_arp 脚本。该脚本允许管理员在启动时静态绑定 MAC 地址和 IPv4 地址。以下是一个示例:

2.4 第三方软件

ISC BIND 已更新至 9.4-ESV 版本。

sendmail 已从 8.14.3 更新至 8.14.4 版本。

时区数据库已更新至 tzdata2010b 版本。

时区库(libc 中的 stdtime 部分)和相关二进制文件 (zic(8)arrow-up-rightzdump(8)arrow-up-right) 已更新至 tzcode2009k 版本。请注意,安装后需要运行 tzsetup(8)arrow-up-right

unifdef 已更新至 1.188 版本。

2.5 Ports/软件包基础设施

修复了 pkg_info(1)arrow-up-right 命令中的一个 bug,该 bug 在指定无效的长选项时会导致段错误。

2.6 发布工程与集成

FreeBSD 发布的 ISO 镜像文件现在在文件名开头添加了“FreeBSD-”。

GNOME 桌面环境的支持版本(x11/gnome2arrow-up-right)已更新为 2.28.2。

KDE 桌面环境的支持版本(x11/kde4arrow-up-right)已更新为 4.3.5。

3 从旧版 FreeBSD 升级

[amd64, i386] 从 FreeBSD 6.2-RELEASE 开始,通过 freebsd-update(8)arrow-up-right 工具支持在 RELEASE 版本之间(以及各种安全分支的快照)进行二进制升级。二进制升级过程将更新未修改的用户空间工具,以及作为官方 FreeBSD 版本一部分分发的未修改的 GENERIC 或 SMP 内核。 freebsd-update(8)arrow-up-right 工具要求被升级的主机具有互联网连接。

通过光盘分发媒体中的 sysinstall(8)arrow-up-right 主菜单中的升级方案,支持一种较旧形式的二进制升级。这种类型的二进制升级可能对非 i386、非 amd64 机器或没有互联网连接的系统有用。

根据 /usr/src/UPDATING 中的说明,支持基于源代码的升级(即从源代码重新编译 FreeBSD 基本系统)从先前版本升级。

重要:

在升级 FreeBSD 之前,务必备份 所有 数据和配置文件。


该文件和其他与版本相关的文档可以从 ftp://ftp.FreeBSD.org/arrow-up-right 下载。

如有关于 FreeBSD 的问题,请在联系 [email protected]envelope 之前,先阅读 文档arrow-up-right

所有使用 FreeBSD 7.3-STABLE 的用户应订阅 [email protected]envelope 邮件列表。

如有关于此文档的问题,请发送电子邮件至 [email protected]envelope

最后更新于