FreeBSD 2010 年第四季度状态报告

引言

本报告涵盖了 2010 年 10 月到 12 月期间的 FreeBSD 相关项目。这是计划中的 2010 年四个报告中的最后一个。FreeBSD 新的次版本,7.4 和 8.2,进展顺利,预计将在本月底发布。

感谢所有报告者的出色工作!本报告包含了 37 个条目,希望你喜欢阅读它。

请注意,涵盖 2011 年 1 月到 3 月期间的提交截止日期为 2011 年 4 月 15 日。

链接

联系人:Nathan Whitehorn <nwhitehorn@FreeBSD.org>

BSDInstall 是传统的 sysinstall 安装程序的替代品。它设计为模块化且易于扩展,同时完全支持脚本化,简化了安装过程。它基本完成,并能够在 i386、amd64、sparc64、powerpc 和 powerpc64 上安装工作系统,PC98 支持尚未测试。

新特性:

  • 允许在 x86 系统上安装到 GPT 磁盘

  • 支持跨多个磁盘进行安装

  • 允许安装到 jail 中

  • 简化了 PXE 安装

  • 虚拟化友好:可以从实时系统安装到磁盘映像

  • 支持 PowerPC

  • 精简的系统安装

  • 更灵活的脚本支持

  • 容易调整

  • 所有安装 CD 都是实时 CD

待办事项

  1. 无线网络配置向导。

  2. ZFS 安装支持。

  3. Itanium 磁盘设置。

联系人:Konstantin Belousov <kib@FreeBSD.org>

使用与 GNU 工具链和 Linux 相同的方法,已为 amd64 和 PowerPC 实现了对不可执行栈的支持。该支持已提交到 HEAD。目前,默认情况下不可执行栈是关闭的。

我计划在 Ports 解冻后为 7.4/8.2 版本提供详细信息并切换该设置。

链接

http://www.selasky.org/hans_petter/video4bsd

http://www.freshports.org/multimedia/webcamd/

联系人:Hans Petter Selasky <hselasky@FreeBSD.org>

Webcamd 是一个小型守护进程,可在 FreeBSD-8.0 及更高版本的操作系统上启用约 1500 种不同的 USB 基于的网络摄像头、DVB 和远程控制 USB 设备。该网络摄像头守护进程本质上是一个应用程序,将 Video4Linux USB 驱动程序移植到 FreeBSD 的用户空间中。该守护进程当前依赖于 libc、pthreads、libusb 和 libcuse4bsd。

在 2010 年第三季度,Webcamd 得到了 Dru Lavigne 的帮助,添加了手册页。

待办事项

  1. 我希望今年获得一个谷歌编程之夏项目,构建默认的 Linux Kernel 2.6.37+ 并允许在 FreeBSD 下使用相关的 Linux USB 设备驱动程序。Webcamd 不是本地 FreeBSD 内核驱动程序的替代品,仅在没有现有 FreeBSD 驱动程序的设备上使用,避免任何 GPLv2 问题。如果你是学生或有兴趣参与此类项目,欢迎通过电子邮件联系 hselasky@FreeBSD.org。

联系人:Martin Matuska <mm@FreeBSD.org>

现在,pkg_create(1)、pkg_add(1) 和 bsdtar(1) 在 9-CURRENT 和 8-STABLE 中均支持创建和处理 xz 压缩的包。用户可以通过在 /etc/make.conf 中添加 PKG_SUFX=.txz 来测试与 .txz 包的工作。

ports-mgmt/portupgrade 工具自 2.4.8 版本开始支持 .txz 包,并且为 ports-mgmt/portmaster 提交了一个补丁,但尚未被作者接受。

newsyslog(8) 的补丁已提交,重写了支持 xz 压缩的压缩工具的使用,目前正在维护者审查中。

待办事项

  1. 将 xz(1) 压缩支持导入到 newsyslog(8)。

  2. 为 ports-mgmt/portmaster 添加 .txz 包支持。

  3. 为 FreeBSD Ports 构建集群(pointyhat)添加 .txz 包支持。

  4. 测试构建所有 .txz 格式的包,并与 .tbz 格式的结果进行比较。

链接

http://lists.freebsd.org/pipermail/freebsd-fs/2010-December/010292.html

http://lists.freebsd.org/pipermail/freebsd-fs/2010-December/010321.html

联系人:Pawel Jakub Dawidek <pjd@FreeBSD.org> 联系人:Martin Matuska <mm@FreeBSD.org>

发布了用于测试的 ZFS 存储池 v28 补丁的新版本,这次适用于 9-CURRENT 和 8-STABLE。与之前的补丁相比,它包括了更新的启动支持、改进的 sendfile(2) 处理、与旧版 ZFS 的兼容层以及其他几个错误修复。

如果没有重大问题,我们预计 ZFS v28 会在 8.2 发布后导入到 FreeBSD-CURRENT 中。

待办事项

  1. 将 ZFS v28 导入到 FreeBSD-CURRENT 中。

链接

http://www.freebsd.org/support.html#gnats

http://wiki.freebsd.org/BugBusting

http://people.freebsd.org/~linimon/studies/prs/

联系人:Gavin Atkinson <gavin@FreeBSD.org> 联系人:Mark Linimon <linimon@FreeBSD.org> 联系人:Remko Lodder <remko@FreeBSD.org> 联系人:Volker Werth <vwe@FreeBSD.org>

过去三个月,非 Port PR 的数量保持相对稳定,解决率略有提升,但新提交的数量也略有增加。 Port PR 的数量有所增加,部分原因是 FreeBSD 7.4 和 FreeBSD 8.2 版本发布前的 Port 冻结。通常待冻结解除,这些数字会迅速下降。

在十月,Gavin Atkinson 和 Mark Linimon 在 EuroBSDCon 上举行了 FreeBSD 开发者峰会的一个会议,促成了富有成效的讨论,许多人表示有兴趣更多地参与 PR 分诊和解决工作。

Bugbusting 团队继续努力使 GNATS PR 数据库的内容更加清晰、易于访问,并且便于提交者查找和解决 PR,通过为 PR 添加标签以指示相关领域,并确保每个 PR 中包含足够的信息来解决每个问题。

我们继续从 PR 数据库中生成报告,所有报告可以通过上面的链接找到。有兴趣定制报告的提交者鼓励与 bugmeister@ 联系——我们很高兴在需求明确的情况下创建新的报告。

一如既往,任何有兴趣帮助 PR 队列的人都可以加入我们,最简单的方式是通过 IRC 加入 #freebsd-bugbusters(EFnet)。我们始终欢迎更多的帮助,无论是对接收到的 PR 进行分诊、生成修复现有问题的补丁,还是仅仅帮助清理数据库(识别重复的 PR、已解决的 PR 等)。这是更深入参与 FreeBSD 的绝佳方式!

待办事项

  1. 尝试找到更多的提交者来帮助我们关闭团队已经分析过的 PR。

  2. 尝试让更多的非提交者参与 PR 的分诊工作,并生成修复报告问题的补丁。

链接

http://www.freebsd.org/releng/

联系人:发布工程团队 <re@FreeBSD.org>

发布工程团队报告称,FreeBSD 7.4 和 8.2 的联合发布稍有延迟,但预计将在原定计划的一到两周内完成:FreeBSD 7.4 发布日程 FreeBSD 8.2 发布日程

链接

http://www.freebsdfoundation.org/

联系人:Deb Goodkin <deb@FreeBSDFoundation.org>

我们已筹集了 325,000 美元,朝着 2010 年 350,000 美元的目标迈进!这将使我们能够增加 2011 年的项目开发和设备支出。

我们很自豪成为 EuroBSDCon 2010、BSDDay 阿根廷 2010、MeetBSD 加利福尼亚 2010 和 NYBSDCon 2010 的赞助商。

完成了基金会资助的项目:Max Khon 的 DAHDI 项目和 Shteryana Sotirova 的 BSNMP 改进。

我们启动了由墨尔本大学主持的新项目,名为 Feed-Forward 时钟同步算法项目。由斯威本科技大学发起的五种新的 TCP 拥塞控制算法的 FreeBSD 项目也正式启动。

我们继续开展基础设施项目,以增强硬件设备支持包构建、网络测试等。这包括购买设备以及管理设备捐赠。

在 FOSDEM(2 月 5-6 日)、SCALE(2 月 26 日)、AsiaBSDCon(3 月 17-20 日)和 Indiana Linuxfest(3 月 26 日)上,欢迎光临与我们见面。

阅读更多关于我们如何支持项目和社区的信息,请阅读我们的年终新闻简报:http://www.FreeBSDFoundation.org/press/2010Dec-newsletter.shtml

我们现在正在为 2011 年筹款!了解更多信息请访问:http://www.FreeBSDFoundation.org/donate/

链接

http://caia.swin.edu.au/urp/diffuse/

http://caia.swin.edu.au/urp/diffuse/downloads.html

联系人:Sebastian Zander <szander@swin.edu.au> 联系人:Grenville Armitage <garmitage@swin.edu.au>

DIFFUSE 是一个使 FreeBSD 的 IPFW 防火墙子系统能够基于统计流量属性对 IP 流量进行分类的系统。

通过 DIFFUSE,IPFW 计算观察到的流量的统计数据(如数据包长度或数据包间隔时间),并使用机器学习(ML)技术将流量分配到不同的类别中。除了传统的数据包检查规则外,IPFW 规则现在还可以用流量统计数据或 ML 分类识别的类别来表达。当直接的数据包检查存在问题时(例如,由于管理原因,或者因为端口号无法可靠地识别应用程序),这种方式可能会非常有用。

DIFFUSE 还使一个 IPFW 实例能够将流量信息和类别发送到其他 IPFW 实例,后者可以根据其类别对这些流量进行操作(例如,优先处理、接受、拒绝等)。这允许分布式架构,在网络中的一个位置进行流量分类,可以控制其他位置的防火墙或速率整形操作。

在 2010 年 12 月,我们发布了 DIFFUSE v0.1,这是一个适用于 FreeBSD-CURRENT 的补丁集。它可以从项目的网站上下载。该网站还包含了更全面的介绍,包括应用实例、相关工作的链接和描述软件设计的文档。

我们希望尽快发布 DIFFUSE v0.2。请关注 freebsd-ipfw 和 freebsd-net 邮件列表上的项目相关公告。

链接

http://loos.no-ip.org/rspro/switch-1.diff

联系人:Luiz Otavio O. Souza <loos.br@gmail.com>

实现了一个以太网交换机控制框架(直接连接到以太网 MAC 控制器),通常在嵌入式系统中使用。目前基于 ifconfig 关键字,添加了每个交换机端口上的 VLAN 控制(过滤/通过)和对具有多个 PHY 接口的接口的媒体状态管理功能。

目前,代码支持 IP175D(来自一些 Mikrotik 路由器板)和 AR8316(来自 Ubiquiti RSPRO)交换机。

待办事项

  1. 完成 IP175C 驱动程序(可能包括 IP178x)。

  2. 与 miibus 更好的集成(重写 switchbus)。

  3. 修复(部分)ifconfig 关键字(更好的关键字,更好的使用兼容性)。

  4. 通过 SNMP 导出端口统计信息(如果交换机芯片支持)。

  5. 添加一个 swctl 工具(?)用于全局设置管理。

  6. 编写使用示例和关于新 ifconfig(8) 关键字的 man 页信息。

链接

联系人:David Hayes <dahayes@swin.edu.au> 联系人:Lawrence Stewart <lastewart@swin.edu.au> 联系人:Grenville Armitage <garmitage@swin.edu.au> 联系人:Rui Paulo <rpaulo@FreeBSD.org> 联系人:Bjoern Zeeb <bz@FreeBSD.org>

该项目即将完成,以下代码已经在 svn head 分支中提供:

  • 模块化拥塞控制框架。

  • 新 Reno、CUBIC 和 HTCP 拥塞控制算法的模块化实现。

  • Khelp(内核助手)和 Hhook(助手钩子)框架。

  • 与 TCP 堆栈的基本 Khelp/Hhook 集成。

ERTT(增强的往返时间)Khelp 模块即将导入,这将为基于延迟的拥塞控制算法的跟进铺平道路。最后,将以新的和更新的 man 页形式提交大量文档。

我们预计该项目将在 2011 年 1 月底完成。

待办事项

  1. 导入 ERTT Khelp 模块。

  2. 导入 VEGAS、HD 和 CHD 基于延迟的拥塞控制算法模块。

  3. 导入所有代码的文档,这些代码是作为项目的一部分贡献/开发的。

链接

http://wiki.freebsd.org/AdrianChadd/AtherosStuff

联系人:Adrian Chadd <adrian@FreeBSD.org>

  • Net80211 的站点模式在 2.4GHz HT/20 模式下工作。目前,HT/40 和 5GHz 不可用。

  • AR9160 的基本 802.11 TX 和 RX 工作正常,支持从 MCS0 到 MCS15。

  • 目前未实现 TX A-MPDU 和 A-MSDU,因此不会发生聚合传输。

  • RX A-MPDU 和 A-MSDU 已实现,应该可以工作,但目前不可用 — 需要调试。

  • 802.11n 的 RTS/CTS 保护功能目前无法用于传统数据包。修复传输数据包长度需要一些技巧,这部分正在进行中。

  • WPA2 现在可以工作 — 启用硬件多播的提交破坏了至少 AR9160 上的 AES-CCMP 加密。需要进一步调查以解决此问题(以及其他潜在的硬件加密问题)。

链接

http://www.linux-kvm.org/page/Virtio

http://lists.freebsd.org/pipermail/freebsd-current/2011-January/022036.html

联系人:Bryan V. <deboomerang@gmail.com>

VirtIO 是 KVM/Qemu 和 Virtualbox 提供的设备框架,旨在帮助客户机实现更好的 I/O 性能。本月初发布了一个 beta 网络驱动程序,目前正在继续完善块设备驱动程序并改进现有的网络驱动程序。

链接

http://www.linux-kvm.org/page/Virtio

联系人:Marius Strobl <marius@FreeBSD.org>

在 r213878 中,向 mii(4) 添加了与 NetBSD 兼容的 mii_attach(),作为 mii_phy_probe() 的替代方法,随后,树中的所有使用此框架的以太网设备驱动程序都进行了转换,以利用前者。这使得 mii(4) 以及转换后的 MAC 和 PHY 驱动程序得到了大幅清理,去除了一些 hack 修复,其中包括臭名昭著的“EVIL HACK”。然而,这次更改的主要动机是为了能在 mii(4) 中添加通用的 IEEE 802.3 附录 31B 全双工流量控制支持,该功能从 NetBSD 移植过来,但也进行了大量增强和修复,并在 r215297 中提交。与此一起,bge(4)、bce(4)、msk(4)、nfe(4)、stge(4),以及 brgphy(4)、e1000phy(4)、ip1000phy(4) 等驱动程序,这些以前各自实现了基于大多数未记录的特殊媒体标志的流量控制支持,已经转换为使用通用支持。至少在 CURRENT 中,这意味着这些驱动程序现在不再无条件地宣传流量控制支持,而是仅在选择了流量控制作为媒体选项时才会如此。实现通用流量控制支持的原因是允许通过 ifconfig(8) 开关流量控制,PHY 的默认设置通常是关闭的,以避免不必要的影响。随后,基于通用支持的流量控制支持也被添加到 alc(4)、fxp(4)、cas(4)、gem(4)、jme(4)、re(4) 和 xl(4),以及 atphy(4)、bmtphy(4)、gentbi(4)、inphy(4)、jmphy(4)、nsgphy(4)、nsphyter(4) 和 rgephy(4)。对于剩余的几种以太网驱动程序,如果相应的 MAC 支持流量控制,启用流量控制支持也只需进行小的更改。然而,由于每种实现都需要彻底测试和调优,因此此更改仅在有硬件可用的驱动程序中完成。

通过以下命令,可以在 dmesg 输出中检查基于通用实现的流量控制支持:

bge0: <Broadcom NetXtreme Gigabit Ethernet Controller, ASIC rev. 0x002003> mem 0 xfe010000-0xfe01ffff,0xfe000000-0xfe00ffff irq 25 at device 2.0 on pci2
bge0: CHIP ID 0x00002003; ASIC REV 0x02; CHIP REV 0x20; PCI-X
miibus0: <MII bus> on bge0
brgphy0: <BCM5704 10/100/1000baseTX PHY> PHY 1 on miibus0
brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto, auto-flow

或者在给定设备的 ifconfig -m 输出中:

受支持的介质:

media autoselect mediaopt flowcontrol

后者也是用于启用该设备流量控制的命令,即:

ifconfig bge0 media autoselect mediaopt flowcontrol

或者要关闭流量控制:

ifconfig bge0 media autoselect -mediaopt flowcontrol

请注意,某些 PHY 驱动程序,目前只有 rgephy(4),也支持在使用手动媒体配置时启用流量控制支持,如以下示例所示:

ifconfig re0 media autoselect mediaopt full-fuplex,flowcontrol

在 CURRENT 中,这也可以进一步缩写(该支持最终将合并回受支持的稳定分支,但不会出现在 7.4-RELEASE 或 8.2-RELEASE 中):

ifconfig re0 media auto mediaopt fdx,flow

对于已成功与链路伙伴协商流量控制支持的设备,它将在 ifconfig 的输出中报告,并列出可用的方向,如以下示例所示:

media: Ethernet autoselect <flowcontrol> (100baseTX <full-duplex, flowcontrol,rxpause,txpause>)

r215297 中还引入了通过媒体选项设置 1000baseT 主模式的通用支持,特别是在使用手动媒体配置时。因此,brgphy(4)、ciphy(4)、e1000phy(4) 和 ip1000phy(4) 已被转换为利用该通用支持。至少在 CURRENT 中,这意味着这些驱动程序现在不再使用 link0 参数来选择主模式,而必须使用 master 媒体选项,如以下示例所示:

ifconfig bge0 media 1000baseT mediaopt full-duplex,master

现在,所有支持 1000baseT 的 PHY 驱动程序都可以选择主模式。

除媒体选项缩写外,上述所有更改已分别在 r215879 和 r215881 中合并到 7-STABLE 和 8-STABLE 中。这意味着它们将成为 7.4-RELEASE 和 8.2-RELEASE 的一部分。为了不破坏 POLA,与 CURRENT 不同,bge(4)、bce(4)、msk(4)、nfe(4) 和 stge(4) 在这些稳定分支中被更改为继续始终向其链路伙伴宣传流量控制支持,并且没有办法关闭,就像它们以前使用自定义实现时那样。此外,brgphy(4)、ciphy(4)、e1000phy(4) 和 ip1000phy(4) 被更改为仍然接受 link0 参数,以便设置主模式,除了 master 媒体选项外。

待办事项

  1. 我们实际上未能在手册页中正确记录可用的媒体类型和选项。例如,bge(4) 等 MAC 驱动程序的许多媒体列表已经过时,而且随着通用流量控制和 1000baseT 主模式支持的添加,这些列表现在更加过时。更糟糕的是,对于使用 mii(4) 框架的 MAC 驱动程序来说,在其手册页中包含这些列表在技术上是错误的,因为 PHY 驱动程序实际上负责处理媒体类型和选项。然而,鉴于 PHY 驱动程序通常在运行时动态确定可用的媒体类型和选项,因此在它们的手册页中静态记录这些内容通常是没有意义的(除了我们目前没有 PHY 驱动程序的手册页之外)。一种好的解决方法应该是将使用 mii(4) 的 MAC 驱动程序中的媒体列表替换为一条说明,提示检查给定设备的 ifconfig -m 输出,以获取实际支持的媒体类型和选项,并添加一个通用的 ifmedia(4) 手册页,提供一些关于媒体类型和选项的背景信息,类似于 NetBSD 和 OpenBSD 的做法。

链接

联系人:Bjoern A. Zeeb <bz@FreeBSD.org>

在过去的一个季度中,投入了大量时间来追踪并修复网络栈中的开放 bug 和竞争条件,主要是 IPv6,以及测试和使虚拟化的网络栈部分更加稳定。pf(4) 防火墙更新的测试开始与 VIMAGE 一起进行。此外,Viagenie 的 NAT64 补丁也被移植过来了。

联系人:Robert Watson <rwatson@FreeBSD.org>

一个长期进行的 TCP SMP 可扩展性项目正在接近尾声,目标是在下个月将一个未完成的大补丁提交到 FreeBSD 9.x 树中。这项工作实现了 Willman、Rixner 和 Cox 的 TCP 连接组模型的衍生版本,并结合了对现代 NIC(包括 RSS)中硬件负载分配功能的支持。额外的软件分配支持可以根据新的 TCP 连接 CPU 亲和性概念进行工作重新分配。

正在进行的工作是优化不支持 RSS 的配置性能,并添加 API 以允许查询(并在支持的情况下)由应用程序设置的套接字亲和性。这些更改通过减少全局锁争用、鼓励连接的 CPU 亲和性以及避免缓存行争用,显著提高了网络的可扩展性。目标是允许稳定状态下的 TCP 连接仅使用本地 CPU 的缓存行,并将工作分配给所有 CPU。目前的性能结果非常有希望。

该项目由 Juniper Networks 赞助。

待办事项

  1. 允许在启动时或运行时选择哈希模型,而不是编译时;当前的“options RSS”会无条件启用 RSS 支持 —— 对于没有 RSS NIC 的系统,这会在每次调用 bind() 或 connect() 时导致一次小的性能惩罚。

  2. 添加缺失的套接字选项以查询(并覆盖)连接的默认 CPU 亲和性,该亲和性是从活动的软件或硬件哈希模型派生的。

  3. 教授网络栈和适当的 NIC 驱动程序,通过新的设备驱动程序 ioctls 将软件覆盖的连接亲和性传播到硬件,管理 TCAM 和硬件哈希表。

  4. 精炼软件工作重新分配机制,以应对硬件队列少于可用 CPU 线程数量的情况;当前的原型能够在此情况下提供显著的性能提升,但该模型仍需改进。

  5. 基于 RSS 桶重排进行软件工作重新分配的实验(并进行性能测试)。这将需要一个新的事件通知机制,告知设备驱动程序更新硬件缓存中的网络栈权威表。

  6. 提交。

联系人:Edward Tomasz Napierala <trasz@FreeBSD.org>

该项目的目标是实现资源容器和每个 jail 的资源限制机制,使系统管理员能够在 jails 之间分配资源,如内存或 CPU,并防止用户使整个系统遭遇 DoS 攻击。该项目接近完成。在发布补丁供用户测试之前,需要修复一个大项——%CPU 计算;最初仅使用调度器计算的 %CPU 被证明是无用的。清晰实现它也将使将来支持其他类似资源(如每秒写入次数)变得更容易。

联系人:Matthew Fleming <mdf@FreeBSD.org>

我开始上游提交来自 Isilon 的补丁,向各种 SYSCTL_FOO 和 SYSCTL_ADD_FOO 宏添加类型检查,涵盖了多种标量类型,这在 src 邮件列表上引起了不少讨论。这些类型检查宏已提交到 sys/sysctl.h 中,但位于 #if 0 下。

待办事项

  1. 目前看来,我将为内核滚动一个新的 sysctl 宏,在编译时检测类型并执行正确的操作。现有的用于标量类型的传统 SYSCTL_FOO 和 SYSCTL_ADD_FOO 的使用可以被替换,并可能通过预处理器宏调用新的接口。

联系人:Kirk McKusick <mckusick@FreeBSD.org> 联系人:Konstantin Belousov <kib@FreeBSD.org>

UFS 的 TRIM 支持已在 HEAD 中实现。这可能会增加 SSD 的稳定速度和使用寿命。

由于对许多 SSD 上 TRIM 操作速度的担忧,以及对实际行为缺乏经验,因此该支持默认是关闭的,应根据每个文件系统启用。

链接

http://mdocml.bsd.lv/

https://www.spoerlein.net/cgit/cgit.cgi/freebsd.work/log/?h=mdocml

联系人:Ulrich Spörlein <uqs@FreeBSD.org>

Kristaps 的 groff 替代(仅用于渲染手册页)已在 NetBSD 和 OpenBSD 中可用,并用于渲染后者的基本系统手册页。该项目旨在为 FreeBSD 做类似的工作。自上次状态报告以来,mdocml 已增加了初步的 tbl(1) 支持,并进行了大量的 bug 修复。已创建了一个 groff 移植版本,并需要进行更多的测试,才能提交到树中。同时,基本系统中的 WITHOUT_GROFF 支持已得到扩展,正在等待审核后提交。

待办事项

  1. 让 ru@ 审核 WITHOUT_GROFF 的更改。

  2. 测试并提交 textproc/groff。

  3. 将更多 mdoc 修复推送到树中。

  4. 导入 mandoc(1),切换到基本系统的 catpages。讨论基本系统中 groff 的未来,尤其是关于 share/doc 的部分。

  5. 提供必要的 Port 基础设施,以便选择性使用 mandoc(1)。

链接

联系人:Johann Kois <jkois@FreeBSD.org> 联系人:Benedict Reuschling <bcr@FreeBSD.org>

德语文档项目的提交者成功地更新了德语文档,并及时将更改纳入下一个 FreeBSD 发布版本。网站翻译也与 FreeBSD.org 上的内容保持同步。

我们尝试重新激活一段时间未做贡献的提交者,但他们大多数目前无法腾出足够的时间。我们希望通过收到偶尔关于德语翻译中的 bug 和语法问题的报告来吸引新贡献者。

待办事项

  1. 提交你在德语文档和网站中发现的语法、拼写或其他错误。

  2. 翻译更多的文章和其他开放的手册章节。

链接

联系人:佐藤広生 <hrs@FreeBSD.org> 联系人:Ryusuke Suzuki <ryusuke@FreeBSD.org>

自上次报告以来,这项工作没有发生根本变化,但 www/ja 和 doc/ja_JP.eucJP/books/handbook 一直在不断更新。在此期间,已开始为新闻快讯生成翻译的 RSS 源,并且书籍和文章文档中的手册页链接也已修复。Porter's Handbook 和 Contributing to FreeBSD 也取得了一些进展。

待办事项

  1. 继续将 FreeBSD 手册www.FreeBSD.org 网站内容翻译成日语。

  2. 对翻译进行提交前/后审核。

链接

联系人:Tom Rhodes <trhodes@FreeBSD.org>

FreeBSD 服务控制是一个二进制混合,集成到 rc.d 系统中,提供服务(守护进程)监控功能。它了解信号、pid 文件,并且使用非常少的资源。

fscd 工具将作为一个 Port 进行设置,并希望在接下来的几周内被加入到 Ports 中。这将使所有人更容易进行测试,也应该使其迁移到 -CURRENT 更加容易。

链接

联系人:Alexander Motin <mav@FreeBSD.org> 联系人:M. Warner Losh <imp@FreeBSD.org>

新项目开始创建基于 GEOM 的 ataraid(4) 替代方案 — 软件 RAID,未来将通过迁移到基于 CAM 的 ATA 实现来淘汰该方案。

该实现的设计重点是模块化,包括公共核心和两组模块,分别处理数据转换(RAID 级别)和磁盘上的元数据格式特性。这样的设计应该会使未来的扩展更加容易。

目前的工作集中在 RAID0/RAID1 转换和 Intel 元数据格式上。该模块现已能够读取、写入和创建 Intel 卷。错误恢复和重建工作正在进行中。计划后续支持 ataraid(4) 支持的其他 RAID 级别和元数据格式。

该项目由思科公司赞助。

待办事项

  1. 完成错误恢复/重建工作并稳定模块 API。

  2. 实现其他格式的元数据模块。

  3. 实现其他 RAID 级别的转换模块。

联系人:Andrey V. Elsukov <ae@FreeBSD.org>

GEOM 类 PART 自 FreeBSD 8.0 起成为默认的磁盘分区类。与 8.1 版本相比,它现在具有几个新功能:分区调整大小。为所有分区方案(但不包括 EBR)实现了新的子命令 gpart resize。GPT 恢复。GUID 分区表具有冗余元数据,当其中一些元数据损坏时可以恢复。为此实现了新的子命令 gpart recover 。支持分区表的备份/恢复。实现了新的子命令 gpart backupgpart restore

链接

联系人:Warner Losh <imp@bsdimp.com> 联系人:Mohammed Farrag <mfarrag@FreeBSD.org>

附带的文件是一个旧的 ARM 补丁。我们正在开发新的补丁,并将着手移植 OMAP3。

联系人:Nathan Whitehorn <nwhitehorn@FreeBSD.org>

1 月 5 日,Playstation 3 的支持被导入到 FreeBSD 9.0-CURRENT 中。这个 Port 目前仍然有些不成熟(只支持网络启动,不支持访问 SPU 等),但硬件支持预计将在 FreeBSD 9.0 发布时得到更好的完善。该 Port 使用了 OtherOS 机制,因此需要一个具有早于 3.21 固件的 fat 控制台。

待办事项

  1. SATA 驱动程序。

  2. 声音支持。

  3. SPU 驱动程序。

链接

联系人:Colin Percival <cperciva@FreeBSD.org>

FreeBSD 现在能够在 Amazon EC2 云的 t1.micro 实例上运行。FreeBSD 9.0 版本稳定性较差,但 FreeBSD 8.2-RELEASE 看起来应该能够接近通常期望的稳定性。

FreeBSD/EC2 状态页面上列出了可用的 FreeBSD AMI(EC2 机器镜像)。

待办事项

  1. 将 FreeBSD 推广到更多 EC2 实例类型。

  2. 完全重构 head/sys/i386/xen/pmap.c 中的锁,以消除竞争条件,并使 9.0-CURRENT 在半虚拟化下稳定。

  3. 跟踪调度和时间同步方面可能相关的问题。

  4. 修复 FreeBSD/EC2 状态页面中显示的其他问题。

联系人:Marius Strobl <marius@FreeBSD.org>

sparc64 的 CPUTYPE 支持已在 r216820 中添加到 CURRENT 中。目前支持的三种类型是 "ultrasparc"、"ultrasparc3" 和 "v9"。现在,可以通过将 CPUTYPE 设置为 "ultrasparc3" 来使编译器生成针对 UltraSPARC-III CPU 系列优化的代码。将其设置为 "ultrasparc" 或完全省略设置,则会像以前一样优化为 UltraSPARC-I/II 系列 CPU 的代码。生成通用 64 位 V9 代码的支持主要是为了参考目的。事实证明,至少对于 SPARC64-V CPU,运行针对 UltraSPARC-III CPU 优化的代码的性能并不比 UltraSPARC-I/II 的代码好,因此,默认设置对于这些 CPU 是完全合适的。此更改已分别在 r217005 和 r217004 中合并到 7-STABLE 和 8-STABLE 中,但 7.4-RELEASE 和 8.2-RELEASE 不会包括此功能。

已经在 r216803 中为 UltraSPARC-III+ 及更高版本的某些功能(即所有继承自原始 UltraSPARC-III 的 sun4u CPU)添加了支持。此更改的净效应是,现在我们可以使用内核 TSB,从而使内核地址空间几乎可以达到 64 位地址空间的全部大小,前提是这些机器配备了这些 CPU,尽管 1GB 的地址空间仍然需要占用 4MB 的数据结构。之前,理论限制是 16GB,因为这些 UltraSPARC CPU 的 MMU 只有 16 个可锁定的 TLB 插槽(UltraSPARC-I/II 有 64 个,SPARC64 CPU 至少有 32 个),实际限制远低于此,因为我们还需要其中一些插槽来映射 PROM、内核本身,以及在 MP 系统中每个 CPU 的页面。目前,内核 TSB 和内核虚拟地址空间的大小始终与这些机器上存在的物理内存相同,计划允许其扩展超出 RAM 大小,这对于 ZFS 特别有帮助。大部分功能是通过根据 CPU 类型修补访问内核 TSB 的指令来实现的,因此该更改的运行时开销非常低。待在 SPARC64 CPU 上启用并成功测试,此更改将被合并回支持的稳定分支。

理论上,也可以使用相同的方法来处理用户 TSB,后者并没有锁定到 TLB 中,但可能会引发嵌套陷阱。然而,由于某些我尚未理解的原因,OpenSolaris 仅对 SPARC64 CPU 执行此操作。另一方面,我认为,若也对用户 TSB 使用此方法,从而避免嵌套陷阱,将使我们更接近在配备 sun4v CPU 的机器上运行 FreeBSD/sparc64 代码,后者只支持 0 和 1 级的陷阱,因此,最终我们可以拥有一个同时在 sun4u 和 sun4v 机器上运行的单一内核(正如 Linux 和 OpenBSD 所做的那样)。

有关支持 Sun Fire 3800 和类似型号的工作已开始,但仍处于早期阶段。

链接

联系人:René Ladan <freebsd-chromium@FreeBSD.org>

我们正在努力更新 Port 中的 Chromium 浏览器,以保持与最新的受支持版本同步。目前我们已经运行了 Chromium 9 的 Beta 版,但并非所有功能都已完全实现,且该 Port 仍需要一些改进,才能提交到 Ports 中。我们还与 Google 达成了协议,将我们的工作与其上游代码合并,这将减少将来我们需要自己维护的功能和修复数量。我们的第一个版本应该会在几周内发布,并与 Chromium 9 的官方版本同时发布。

链接

http://wiki.freebsd.org/HTPC

联系人:Bernhard Froehlich <decke@FreeBSD.org> 联系人:Juergen Lock <nox@FreeBSD.org>

FreeBSD 可以成为比当前更好的家庭影院 PC 平台。我们正在专注于改善对媒体中心应用程序的支持。扩展主要的 Port (MythTV、VDR、XBMC)并创建一些文档,以指导有兴趣的人。

待办事项

  1. 改进在 webcamd 和 lirc 中的遥控器支持。

  2. 移植更多的媒体中心应用程序(Enna、me-tv 等)。

  3. 创建一份如何构建优秀 FreeBSD 家庭影院 PC 的简易指南。

链接

联系人:Marcelo Araujo <araujo@FreeBSD.org>

Port-Sandbox 现在能够正常工作,并且可以通过嵌入的 Web 服务器独立运行,提供有关 Port 构建过程和所有相关依赖项的详细信息。目前,Port-Sandbox 已进入最终阶段,仅需要一些代码修改,更多的测试,并应将其包含到 Ports 中。

待办事项

  1. 更改连接数据库的方式,修复以保持持久连接。

  2. 将所有内部配置从源代码移到外部文件配置中。

  3. 创建一个包含所有相关依赖项的 Port-Sandbox Port ,并在干净的系统上进行测试。

  4. 创建一些文档,帮助其他人继续推动 Port-Sandbox 的发展。

  5. 最终发布它。

链接

http://dougbarton.us/portmaster-proposal.html

联系人:Doug Barton <dougb@FreeBSD.org>

Portmaster 版本 3.6.1 现已进入 Ports,过去一年主要集中在提高现有功能的稳定性和性能,同时也加入了一些新功能。许多工作投入到了错误处理上,既处理 Port 系统中的意外状态,也处理用户输入。例如,所有提示现在都被包装在代码中,以验证输入的内容是否为有效选项之一。

也许最有趣的新特性是,对于 -e、-s、--clean-distfiles、--clean-packages、--check-depends 和 --check-port-dbdir 等功能,你现在可以指定 -y 或 -n 来自动提供对应的 "yes/no" 问题的答案。-o、-r 和 --index-only 选项也进行了大幅度改进,现在要么运行得更好,要么至少按照广告的方式工作。

此外,还投入了大量工作以减少内存占用,特别是父子进程之间共享的环境变量。对于那些没有本地 Ports 的操作(--index-only/--packages-only),所有能够在没有 Ports 的情况下工作的功能现在都可以正常使用。

GridFury, LLC 对没有 Ports 的操作提供了重要支持。其支持以及来自社区其他成员的支持继续得到极大的感激。

待办事项

  1. 页面上列出了一些用户提出的有趣特性,我尚未能够进行工作,但希望将来能进行。

链接

联系人:Josh Paetzel <jpaetzel@FreeBSD.org>

Bigbluebutton 已加入 Ports 中的可运行应用程序列表。Dru Lavigne 在使其能够运行方面发挥了重要作用,并提出了改进该 Port 的建议。

smb4k 已更新为最新的发布版本,并且需要 kde4。这个变化足够大,以至于创建了一个新的 Port :net/smb4k-kde4。初始 Port 经历了一些快速的变化,包括修复 FreeBSD 源代码的补丁,这个补丁由 PC-BSD 的 Kris Moore 提交。这个应用程序极大地简化了在 FreeBSD 环境中处理 samba 共享的任务。

Freeswitch 是三位 Asterisk 开发者合作开发的 VoIP 包,它实现了他们的目标。他们已经从发布模型转变为 "直接运行最新的 SVN 检出" 模型。在 Richard Neese 和 Eric Crist 的帮助下,已经从他们的 SVN 仓库中获取了静态快照, Port 已经修改为使用新版,并进行了广泛的构建和运行测试。

链接

联系人:Thomas Abthorpe <portmgr-secretary@FreeBSD.org> 联系人:Port Management Team <portmgr@FreeBSD.org>

Ports 缓慢接近 23,000。PR 数量仍然保持在大约 1000。

在第四季度,我们新增了 2 名提交者,保留了 2 个提交位,并欢迎了 4 名回归的提交者。

Ports 管理团队在 2010 年 11 月与 Kris Kennaway 告别。Kris 是 krismail 的根源,我们时不时会收到它的邮件,通知我们当 Port 在 pointyhat 上出现问题时。Kris 在为 FreeBSD 进行基准测试和稳定性、可扩展性、可用性测试方面做了大量工作。

Mark Linimon 在重构和完善运行 'pointyhat' 包构建调度系统的代码上投入了大量努力。在 2010 年,FreeBSD 基金会为 portmgr 购买了两台新机器,pointyhat-west 和 pointyhat-east,以接替现有机器。(新机器具有更大的内存、CPU 和磁盘容量。)然而,为了充分利用它们,现有的代码需要进行通用化。

持续的 bug 和一些硬件问题,导致计划的推出时间远远超过了原计划,但现在似乎隧道的尽头有了光明。(而且,这次看起来并不是迎面而来的火车。)

一份名为 Mentoring Guidelines 的文档已在 Port 开发人员中流传,并收到了大量积极的反馈,已更新并包含在内。短期内,更新版将保存在 http://people.FreeBSD.org/~portmgr/mentor_guidelines.txt.asc。

Ports 管理团队一直在进行 -exp 运行,验证基本系统更新如何影响 Ports,并为主要 Port 更新提供 QA 测试。值得注意的是,-exp 运行已经完成了:

  • ade:多次运行 autotools 重构

  • ed:测试将 libgcc.a 替换为 libcompiler_rt.a

  • jiles:测试 sh(1) 对 r212508 的兼容性

  • kde:Qt 4.7.0 更新

  • kde:KDE 4.5.4 更新

  • kwm:Gnome 2.32 更新

  • ports/144164:确保 package-noinstall 目标包含 rc.d 脚本

  • ports/145598:将 etc/devd 包含在 mtree 中

  • ports/145955:静默 make fetch-required-list

  • ports/147701:执行 DESKTOP_ENTRIES 合理性检查

  • ports/149657:移除 MD5 校验和

  • ports/149670:移除 _OPTIONSFILE 中的检查

  • ports/150303:对于 INSTALL_LIBS

  • ports/150337:对于 PLIST_DIRSTRY

  • ports/151047:传递 CPP 到 CONFIGURE/MAKE_ENV

  • ports/151799:修复 PLIST_DIRSTRY

  • ports/151806:移除 2004 遗留黑客

  • ports/152055 和 ports/152059:用于 pear 基础设施

  • ports/152558:boost 更新

  • ports/152626:修复从包安装时 pkg-message 显示

  • ports/152964:为 STDOUT 嵌入 LICENSE 名称

  • ports/153018:在 Mozilla 依赖中实现变量

  • ports/153033:修复未转义的 shell 元字符

  • ports/153041:清理 ruby plists

  • ports/153132:autotools 清理

  • ports/153318:将 PGSQL 默认设置为 8.4

待办事项

  1. 寻求帮助修复 CURRENT 上损坏的 Port 。

  2. 寻求帮助处理 Tier-2 架构。

  3. 大多数 Port PR 已分配,我们现在需要专注于测试、提交和关闭。

链接

联系人:René Ladan <rene@FreeBSD.org>

将 ROS 移植到 FreeBSD 的工作始于 2010 年 3 月。在 2010 年 5 月,成功地构建了 devel/ros,而无需应用补丁,但为了能够编写其 Port ,仍然需要进行一些更改。目前,这个 Port 和与 ROS 相关的其他多个 Port 已经可用,最显著的是 devel/ros-tutorials,可帮助用户开始使用 ROS,以及 devel/ros-nxt,可使 LEGO Mindstorms NXT 机器人与 ROS 和 FreeBSD 一起使用。

待办事项

  1. 移植 nxt-rviz-plugin 所需的软件,该插件是 devel/ros-nxt 的一部分,但目前在构建中被排除。

链接

http://www.fosdem.org/

联系人:Marius Nuennerich <marius@nuenneri.ch> 联系人:Daniel Seuffert <ds@FreeBSD.org>

FOSDEM 2011 将于 2 月 5 日至 2 月 6 日在比利时布鲁塞尔举行。我们将有一个 FreeBSD 展位和一个开发者会议室。在展位上,将有友好的支持人员和一名 FreeBSD 基金会成员回答问题。开发者会议室将有 6 个 1 小时的讲座,内容涉及不同的技术和社交话题。FOSDEM 是欧洲最大规模的开源活动之一。该活动完全免费,无需注册。

待办事项

  1. 仍然需要更多的人来帮助展位和开发者会议室的工作。如果你想提供帮助,请联系 Daniel 或 Marius。

最后更新于

这有帮助吗?