FreeBSD 2010 年第二季度状态报告
最后更新于
最后更新于
原文链接:
本报告涵盖了 2010 年 4 月至 6 月期间与 FreeBSD 相关的项目。这是计划中的四个报告中的第二个,包含了 47 项内容。在此期间,很多工作集中在开发 FreeBSD 的新小版本 8.1-RELEASE 上,该版本应该会在几天内发布。
感谢所有报告人员的优秀工作!希望你们喜欢阅读。
请注意,涵盖 2010 年 7 月至 9 月期间的提交报告的截止日期为 2010 年 10 月 15 日。
联系人:Ivan Voras <>
pkg_patch 项目旨在创建一个二进制包补丁基础设施,使用户能够轻松高效地修补其实时系统上的软件包。它是一个用 C 编写的程序,旨在与 libpkg 接口(处理所有 pkg 工具共有的事务),当完成时将被包含在基本系统中。它内置了批量创建和应用补丁的命令。此项目由 2010 年谷歌编程之夏资助。
完成该项目。
对其进行一些测试。
说服 Port 管理团队,它即使作为实验性特性也是一个好主意。
确定应创建哪些包补丁的政策(即从哪个时间点到哪个时间点),假设 "稳定" 包树的理念尚未得到广泛支持。
SGI IRIX 操作系统有一个名为“作业”的概念,用于将进程分组,然后对其应用资源限制。此项目的目的是在 FreeBSD 上实现这一功能。
我花了大部分时间熟悉内核中是如何处理这些操作的,以及系统调用是如何工作的等。到目前为止,我已经掌握了所需的基本理解,并添加了最重要的系统调用来将进程分组到作业中,并操控集体资源限制。
目前,我正在追踪一个 bug,解决后就可以开始实现实际的资源限制执行。对于某些限制类型,执行起来相对容易,但其他一些则需要更多的努力和研究。
修复阻止我进行实际限制执行的关键 bug。
为 IRIX 支持的所有限制类型实现限制执行。
为用户空间设施添加支持,使实用工具能够识别作业,如在 ps(1) 中显示作业等。
http://wiki.freebsd.org/SOC2010ZhengLiu
该项目有两个目标:预分配算法和 ext4 只读模式。
ext4 只读模式的目的是使硬盘格式化为默认特性时,能够以只读模式读取 ext4 文件系统。目前,它仅支持一些特性,如 extents 和 huge_file。其他特性将会添加,如 dir_index、uninit_bg、dir_nlink、flex_bg 和 extra_isize。我的工作位于 Perforce 的 extfs 和 ext4fs 分支中。
该项目的目标是为 FreeBSD 实现一个兼容 inotify 的文件系统更改通知机制,并在 linuxulator 中添加 inotify 支持。结果,fsnotify 已经可用,但在一些细节上尚未完全兼容 inotify。
添加访问权限检查。
移植 inotify 测试用例。
修复兼容性问题。
添加 linuxulator 支持。
项目的第一部分基本完成。我添加了对新变量 PORTS_CC
的支持,应该在 make.conf 中使用该变量来替代 CC 以更改 ports 编译器。这使得用户可以轻松更改 ports 编译器,同时仍然遵循 USE_GCC。
一些补丁已编写,以使 ports 能与 Clang 一起工作,并且许多在谷歌编程之夏项目之前编写的旧补丁也得到了更新。虽然仍有很多无法使用 Clang 构建的损坏 ports,也有一些由于 Clang/LLVM 错误无法构建的 ports,但此时,Clang 已经可以构建大多数 ports。
修复与 Clang 不兼容的损坏 ports。
使用 Clang 测试修复后的 ports,并报告 Clang 错误。
http://wiki.freebsd.org/SOC2010GlebKurtsov
我重新实现了 VFS 名称缓存,使其支持细粒度锁定,并支持不调用底层文件系统例程的可靠全路径查找。我已经成功实现了在理想化环境下与 tmpfs 一起工作的目录缓存。目前,我正在添加对没有关联 vnode 的条目以及“弱”条目和不完整缓存路径的支持。
libpkg 库将允许对包管理进行较为精细的控制。
目前,libpkg 已经完成了读取功能。具有大部分当前包工具功能的信息和删除工具已经实现,待它们完成,就可以作为其对应工具的替代品。
待库的写入和日志记录方面更加成熟,就可以快速创建添加和创建工具。利用 libpkg 的新一套更易维护的包工具预计将在此之后不久推出。
ringmap 栈是一个完整的 FreeBSD 数据包捕获实现,专门用于高速网络。类似于“零拷贝 BPF”实现,ringmap 的思想是通过使用共享内存缓冲区来消除数据包复制操作。然而,与“零拷贝 BPF”模型不同,ringmap 在捕获期间消除了所有的数据包复制:网络适配器的 DMA 缓冲区直接映射到用户空间。ringmap 栈还调整了 libpcap,以便为用户空间应用程序提供访问捕获的数据包的能力,而不会增加额外的开销。
在 2010 年谷歌编程之夏项目的背景下:
ringmap 软件已移植到 9-CURRENT。
ringmap 被重新设计,以便更容易移植到其他适配器并与其他网络驱动程序集成。
此外,ringmap 已扩展为支持多线程。
将 ringmap 移植到 10GbE(与 ixgbe 驱动程序集成)。
将整个 ringmap 代码从 9-CURRENT 移植到 -STABLE。
评估测试。
文档编写。
http://wiki.freebsd.org/BuildingFreeBSDWithClang
在过去的一个季度中,我们将 Clang 导入到 FreeBSD,并且它已经在 i386/amd64/powerpc 上默认构建。我们尚未提交必要的更改以使世界能够使用 Clang 编译。
由于 Clang 导入,HEAD 中修复了一些错误和警告,人们正在探索越来越多的领域(如 DTrace 等)。Clang/LLVM 也有一些错误修复,这些修复源于导入(例如,未知的 pragma 警告等)。
Roman Divacky 和 Matthew Fleming 正在开发 LLVM 中的 ELF 写入器。这是为了替代汇编器(目前我们使用的是过时的 GNU as(1))。这项工作进展顺利,目前它能够生成 C 和 C++ 中的 hello world 工作变体,以及一些来自“configure run”的小程序。
将更新版的 Clang/LLVM 导入到 HEAD。
帮助 ARM/MIPS/SPARC64。
开始将 src 补丁推送到 HEAD。
对第三方应用程序(ports)进行更多 Clang 测试。
在 ELF 写入器上做更多工作。
http://www.asterisk.org/dahdi/
DAHDI/FreeBSD 项目的目的是使 FreeBSD 能作为软件 PBX 解决方案的基本系统。
该项目包括将 DAHDI 框架和硬件驱动程序移植到 FreeBSD,涵盖 E1/T1、FXO/FXS 模拟卡及 ISDN 数字卡。这还包括 TDMoE 支持、软件和硬件回声消除(Octasic, VPMADT032)以及硬件转码支持(TC400B)。该工作正在官方 DAHDI SVN 仓库中进行,并与 Digium 的 DAHDI 团队紧密合作。
该项目接近完成。DAHDI 框架和硬件驱动程序已经移植并经过测试。一些早期采用者已经成功使用 E1/T1 和 FXO/FXS 卡在 FreeBSD 上运行了几个月。
该项目的 90% 功能已完成,守护进程以主从模式同步两个系统。
标准化代码以符合 FreeBSD 的要求。
在网络通信中实现 SSL。
执行安全改进和修复错误,使用 strlxxx() 函数,使用 memcpy() 替代 strcpy() 来处理非字符变量。
与当前的审计子系统集成。
该项目的目的是增加对大多数嵌入式设备中通用 DMA 引擎的支持。GPDMA 框架为 DMA 引擎驱动程序提供统一的 KOBJ 接口,并为内核和用户空间应用提供统一的直接内存传输编程接口。
该项目是 2010 年谷歌编程之夏的一部分,正在进行中。当前状态可以在 Wiki 页面上查看。
添加对更多 DMA 引擎的支持。
完成工作,清理代码并与 HEAD 合并。
目前,RAID-1 阵列可以在 VIA Tech V-RAID 和 Adaptec HostRAID 控制器上有限地使用。尚未支持写入元数据,因此磁盘不会被标记为降级,也没有重建支持等。这些功能计划添加,并将支持更多硬件及 RAID-0 和 SPAN 阵列。
获取没有写支持的 ataraid(4) 驱动的元数据格式文档或进行逆向工程(例如,Adaptec HostRAID)。
为 GEOM 添加 CAM 支持以导出 PCI 信息。
http://wiki.freebsd.org/GPIO
为 FreeBSD 实现通用输入/输出接口。当前的 GPIO 总线实现允许用户从用户空间控制引脚,并且可以扩展以支持各种外设设备。到目前为止,已经有两个驱动程序:
gpioled 提供简单的 led(4) 功能。
gpioiic 通过 GPIO 实现 I2C。
该框架在 Alexandr Rybalko 将 FreeBSD 移植到 D-Link DIR-320 路由器和 Luis Otavio O Souza 将 FreeBSD 移植到 RouterBoard 的工作中得到了应用。
新的系统安装后端 pc-sysinstall 最近已合并到 HEAD 中,工作已开始使其成为标准 "sysinstall" 的完整替代方案。它完全使用 shell 编写,不需要 FreeBSD 标准工具以外的任何额外工具。该后端已经支持许多令人兴奋的功能,例如:
ZFS(包括对 raidz/mirror/多个设备池设置的支持)。
通过 GELI(8) 实现磁盘加密。
使用 glabel(8) 自动标记文件系统。
使用 GPT/EFI 支持大磁盘。
完整的安装日志记录,安装后可进行检查。
此外,pc-sysinstall 的独特之处在于,每次安装都是脚本化的安装。前端,无论是基于 GUI 还是文本,都只是生成适当的系统配置文件,然后 pc-sysinstall 执行实际安装的繁重工作。这一点非常重要,因为它有两个原因。首先,它使前端开发的任务变得更容易,因为不需要关注后端驱动的程序流程。其次,这意味着任何前端都可以用来生成安装配置文件,然后可以复制或修改以执行自动化安装。
尽管 pc-sysinstall 仍然相对较新,但它已经作为 PC-BSD 8.0 和 8.1 的默认后端投入使用,并且受到了非常好的反响,发现的任何错误都会迅速修复。一个基于文本的前端已经在开发中,它将允许在没有 X11 支持的情况下创建安装媒体。
AFS 是一种分布式网络文件系统,起源于卡内基梅隆大学的 Andrew 项目;自 4.X 版本以来,OpenAFS 客户端实现对 FreeBSD 的支持并不特别有用。最近对 OpenAFS 代码库的工作已将其更新为与当前版本的 FreeBSD 一致,尽管客户端仍被认为是实验性的,但在 9-CURRENT 上对轻量级(单线程)使用相对稳定。用于管理和检查文件系统的辅助工具是可用的,读取和写入文件足够顺利,能够将 /usr/src 从 AFS 复制进出。然而,在 AFS 中编译和运行可执行文件失败,因为 mmap() 并不总是可靠的。
修复 vnode 操作 {get,put}pages
,以提高 mmap() 操作的可靠性。
更新 VFS 锁定机制,以支持使用基于磁盘的客户端缓存和基于内存的缓存。
排查在负载下出现的竞态条件和死锁问题。
将内核模块构建基础设施与 bsd.kmod.mk 集成。
目前,FreeBSD 仅提供非常基础的资源控制——许多资源的资源限制(例如 SysV IPC)缺失,且没有办法为 jail 设置资源限制。因此,想要在单台物理机器上运行多种不同工作负载的用户通常不得不将 jails 替换为在虚拟机中运行的多个 FreeBSD 实例。
该项目的目标是实现资源容器和一个简单的每个 jail 资源限制机制。资源容器也是其他资源管理机制的前提,例如用于 "进程集的集体限制(即作业)" 的谷歌编程之夏 2010 项目,它实现了类似于 Linux cgroups 的机制,并且可能也被用来提供精确的资源使用计费或管理用途。
该项目由 FreeBSD Foundation 赞助。
http://opal.com/freebsd/sys/compat/linux/
一些错误修复已应用,代码也已测试并能够与 cuse4bsd 网页摄像头驱动一起工作,后者支持许多摄像头芯片组。
该代码仍然仅在 9-CURRENT 中有效。我们本打算将其 MFC 到 8.x,但遇到了 8.1 版本的代码冻结,因此错过了。不过,该代码在 8-STABLE 上可正常工作。我们将尝试在 8.2 中进行 MFC。
经过长时间的停滞后,我们计划在 8 月 6 日至 9 日的周末举行一次 bugathon。欢迎大家参与,帮助解决或推进数据库中的 PR。我们欢迎提交者和非提交者的帮助,如果你有空,可以在这个周末的任何时间加入我们,在 EFnet 的#freebsd-bugbusters 频道与我们一起工作。更多信息请见 Bugathon
链接。
Mark Linimon 和 Gavin Atkinson 在 BSDCan 举办了关于 Bugbusting 现状的会议,会议受到广泛参与并展开了有趣的讨论。我们还抽时间与几位提交者讨论了长期存在的 PR。
Bugbusting 团队继续致力于使 GNATS PR 数据库更加易于访问,并帮助提交者更容易找到和解决 PR。
因此,PR 会在到达时被分类,通过在主题行添加“标签”,对应于涉及的内核子系统,或用户空间 PR 的手册页引用。这些报告会每日生成,将相关的 PR 分组在一起,按标签或手册页排序。Mark Linimon 继续致力于生成一个新的报告,总结带有标签的 PR,按逻辑分组,如文件系统、网络驱动程序、库等。切片标签是可点击的,可以进一步细分分组。该图表每天更新一次,可以将其视为浏览内核 PR“子类别”的原型。
“推荐列表”已经分为“需要提交者评估的非琐碎 PR”和“琐碎 PR 的易处理列表”,旨在集中精力处理后者。现在有一些新报告,包括“包含新设备驱动代码的 PR”,“来自 FreeBSD 供应商或 OEM 的 PR”,以及“引用其他 BSD 的 PR”。
现在,感兴趣的人员可以通过电子邮件收到每周定制的报告,格式与上述类似。如果你有兴趣设置,请联系 linimon@FreeBSD.org。
我们 PR 的清理速度,尤其是在 kern 和 bin 方面,似乎有所提高。非 Port PR 的数量自上次状态报告以来几乎保持不变。
如往常一样,任何有兴趣帮助处理 PR 队列的人都可以加入我们,参与 EFnet 的#freebsd-bugbusters 频道。无论你的兴趣在于对新到的 PR 进行分诊、生成补丁解决现有问题,还是简单地帮助进行数据库管理(识别重复 PR、已解决的 PR 等),我们都欢迎你加入。这是一个更深入参与 FreeBSD 的好方法!
计划和管理 8 月的 bugathon,并尽可能吸引更多人参与。
尝试找到方法,吸引更多提交者帮助我们关闭团队已经分析过的 PR。
2010 年 FreeBSD 核心团队选举已完成。FreeBSD 核心团队作为项目的“董事会”,负责批准新的源代码提交者、解决开发者之间的争议、为特定目的任命子委员会(如安全官、发布工程、Ports 管理、网站管理员等),并在需要时做出其他行政或政策决策。自 2000 年以来,核心团队每两年由 FreeBSD 开发者选举产生,这标志着我们第六次通过民主选举产生核心团队。
新核心团队对离任成员 Kris Kennaway、Giorgos Keramidas、George V. Neville-Neil、Murray Stokely 和 Peter Wemm 在过去两年(在某些情况下是更长时间)中的贡献表示感谢。
核心团队还特别感谢 Dag-Erling Smørgrav 为选举提供的支持。
新当选的核心团队成员是:
John Baldwin
Konstantin Belousov
Warner Losh
Pav Lucistnik
Colin Percival
再次当选的核心团队成员是:
Wilko Bulte
Brooks Davis
佐藤広生
Robert Watson
http://www.freebsd.org/releng/
发布工程团队一直在致力于 FreeBSD 8.1-RELEASE。写作时,最终版本已完成并上传到主 FTP 站点。发布公告将在接下来的几天内发布。
http://www.freebsdfoundation.org/
我们为 2010 年 5 月的 BSDCan 活动提供了赞助。我们还承诺赞助 MeetBSD 2010 波兰和加利福尼亚的活动,并为 BSDCan 提供了 12 个旅行补助。
基金会和核心团队在 BSDCan 2010 上举行了关于 BSD 许可证工具链的峰会。
我们正式启动了五个我们资助的新项目。它们分别是:Shteryana Shopova 的 BSNMP 改进、Rui Paulo 的用户空间 DTrace、Bjoern Zeeb 的 FreeBSD jail 虚拟化、Max Khon 的 DAHDI FreeBSD 驱动程序 Port 以及 Edward Tomasz Napierała 的资源容器项目。
我们继续推进基础设施项目,以增强软件包构建、网络测试等硬件设施。这包括购买设备以及管理设备捐赠。
SIFTR 最近已被导入到 HEAD,并将在 8-STABLE 版本中进行回溯,预计将包括在 8.2-RELEASE 中。
TCP 重组队列自动调优将在下周内准备好供公众测试,之后将尽快提交。它也将在适当的测试期后回溯到 8-STABLE。
尝试使用 SIFTR,并告知我遇到的任何问题。
请求外部测试并提交重组队列自动调优补丁。
此项目旨在创建一个封装库,以支持网络监控和管理,同时避免直接使用 FreeBSD 的 kvm(3) 和 sysctl(3) 接口。这种方法允许内核实现发生变化,同时监控应用程序可以扩展,而无需中断应用程序并要求重新编译。我们决定将去年谷歌编程之夏项目的源代码逐步合并回 FreeBSD 的 src/ 仓库,并已定义多个集成阶段。
标准化内核中的网络统计结构。
构建 sysctl(3) 接口,并添加导出例程。
添加一个库 libnetstat(3) 来处理导出的信息,并提供进一步的功能,支持通过 kvm(3) 提取信息。此库实现了对收集数据的抽象。
调整现有应用程序的源代码,例如 netstat(1) 和 bsnmpd(1),使其使用库提供的抽象,resulting in a cleaner and simpler code.
基于该库添加新的应用程序,例如 nettop(1)。
第一阶段的代码已经发布以供审查。需要注意的是,我们正在寻找一个具有 src 提交权限并且有足够时间代表项目的赞助人。
审查源代码。
从列表中选择一个任务并发送补丁。
评论补丁,帮助改进。
一段时间以来,我一直想重新设计中断线程,以解决一些问题。新设计使用每个 CPU 的中断处理程序队列。中断线程由 CPU 从池中分配,并绑定到该 CPU,同时清空该 CPU 的中断处理程序队列。非过滤器处理程序也可以在执行时将自己重新调度到当前 CPU 队列的末尾。带有处理程序的过滤器现在始终启用,并应完全替代使用“快速”任务队列的各种过滤器。还提供了一类新的“手动”处理程序,这些处理程序不会自动调度,而是仅在过滤器中显式调度。因此,过滤器可能会调度多个处理程序。
该代码已经在 amd64 上进行了测试,但需要更广泛的审查和测试。我希望尽快开始征求审查和反馈,目标是在 9.0 版本中合并该代码。
该项目从网络栈的清理工作开始,以最小化对早期分支的更改,以便进行虚拟化调整。这些改动已经被合并到树中,并包括在即将发布的 8.1 版本中。
第一个主要任务是将虚拟化框架通用化,以便进一步的子系统虚拟化更容易实现,并且可以减少重复代码。
此外,撰写了有关虚拟网络栈编程的文档,帮助开发人员进行代码虚拟化。交互式内核调试器支持得到了改进,并且 libjail 以及 jls 和 netstat 现在可以处理核心转储,并查询单独的 jail 和附加的虚拟网络栈。
第二个主要任务是网络栈拆解,这是网络栈虚拟化中引入的一个概念。主要目标是原型化(虚拟)网络栈的关闭,从上到下进行,这意味着接口最后关闭而不是最先关闭。此方面的工作仍在进行中,未来需要继续进行,以实现长期稳定性并确保安全关闭,不会造成资源泄漏或系统崩溃。
该项目由 FreeBSD 基金会和 CK Software GmbH 赞助。特别感谢 John Baldwin 和 Philip Paeps 对审查和建议的帮助。
合并已稳定的更改集。
继续处理网络栈的拆解,释放所有资源,以实现稳定、安全的关闭。
现代 x86 系统包括四种不同类型的事件定时器:i8254、RTC、LAPIC 和 HPET。前三种已经得到了 FreeBSD 的支持。根据硬件和加载器可调参数,它们的周期性中断用于触发内核中的所有基于时间的事件。这段代码有着悠久的历史,因此变得复杂、受限且硬编码。
新的内核事件定时器基础设施开始实现,旨在以统一的方式操作不同的事件定时器硬件,并支持更多特性。工作包括三个主要部分:编写与机器无关的定时器驱动程序 API 和管理代码,更新现有驱动程序,并改进 HPET 驱动程序以支持事件定时器。
新的驱动程序 API 提供对每个 CPU(每个 CPU 核心独立)和全局定时器的统一支持,支持周期性和单次触发模式。目前的管理代码仅使用周期性模式,而单次模式的使用计划在后续的无滴答内核工作中实现。
不同种类的定时器具有不同的能力,并且可能以不同的组合存在于硬件中。在每种情况下,基础设施会自动选择两种最佳事件定时器来提供系统的 hardclock()、statclock() 和 profclock() 事件。如果某个定时器无法正常工作,它会被替换。如果没有第二个定时器,它将被模拟。管理员可以在启动时使用加载器可调参数以及在运行时使用 sysctl 变量(如 kern.eventtimer.*
等)来影响这一选择。
大部分代码已被提交到 HEAD,现在在 i386 和 amd64 架构上使用。
排查可能的硬件和软件问题。
将其他架构移植到新基础设施。
实现无滴答内核,利用新特性,如每个 CPU 和单次定时器。
ZFS 文件系统已更新至版本 15,并将在 2010 年 9 月 13 日左右 MFC 到 8-STABLE。目前正在进行移植工作,目标是将具有去重功能的 ZFS 26 版本引入。
修复 Perforce 中的 bug、未解决的问题和待办事项。
自上次状态报告以来,文档进行了多次更新。我们特别感谢外部人士的贡献,他们提供了翻译。像 Fabian Ruch 这样的贡献者更新了 porters-handbook 到最新版本(这项工作在他的待办事项列表上已经有一段时间了),以及 Benjamin Lukas,他完成了德国手册中 MAC 章节的从头翻译。我们感谢他们的贡献,并希望他们继续努力,以增强德语文档。
Frank Börner 已从 Benedict 的指导下毕业,现已成为德语文档项目的正式提交者。我们始终欢迎愿意接受我们指导的新人,他们将通过这一步成为文档项目的提交者。
Johann 负责维护德语网站的最新版本,但我们仍然需要更多翻译人员来翻译尚未完全翻译的部分。
阅读翻译并报告发现的 bug(即使是小问题)。
翻译文档和网站的新部分。
感谢 Katalin Konkoly,FreeBSD 手册的前几个章节已经过审查,因此许多错别字和翻译错误得以发现并修正。除此之外,我们还保持现有文档和网页的翻译更新,目前没有进一步工作的计划。如果你有兴趣帮助我们,或者有任何关于翻译的评论或请求,请随时通过上述电子邮件与项目联系。
审查翻译并提供反馈。
翻译发布说明。
添加更多文章的翻译。
该项目专注于更新 www/ja 和 doc/ja_JP.eucJP/ 树。从去年开始,www/ja 树已大部分与英文版本同步,doc/ja_JP.eucJP 也得到了稳定更新。目前我们正在处理 FreeBSD 手册和 Porter's 手册的翻译。
继续翻译 FreeBSD 手册和 www.FreeBSD.org 内容的日文版本。
进行翻译的预提交和后提交审核。
我们需要人手。现有文档集已很久没有更新,因为缺乏志愿者。目前的成员忙于其他项目和现实生活,我们也没有收到外部贡献者的任何贡献。这令人遗憾,因为西班牙和拉丁美洲有许多用户。此外,西班牙最近还开设了世界上第一个自由软件街。这显然表明自由软件在西班牙有一定的兴趣,但不幸的是,这个翻译项目目前进展不顺利。
审查并更新现有翻译。
一次 portbuild 测试表明,grep 基本准备好进入 HEAD,但仍然存在一些似乎与之相关的失败。这些问题需要调查并修复,然后才能将 grep 提交到 9-CURRENT。
调查并修复一些小问题。
工作已经完成,GNU 兼容性水平看起来相当高。唯一的例外是回退支持。由于设计有所不同,实现这一功能比较困难。可能不会是大问题,因为 GNU 版本中此功能并未被文档化,使用该功能的应用程序也很少。
运行 portbuild 测试并解决可能出现的问题。
http://people.freebsd.org/~trhodes/fsc/
FreeBSD 服务控制是一个二进制程序集合,它集成到 rc.d 系统中,并提供服务(守护进程)监控功能。它能够处理信号、pid 文件,并且占用的资源非常少。
fsc 守护进程(fscd)在系统启动后会在后台运行。服务通过 fscadm 控制工具添加到此守护进程,之后会进行监控。当服务终止时,根据原因,会重新启动服务。某些信号可能会被忽略(尚未决定的列表),此时 fscd 会从监控中移除该服务。每个操作都会记录到系统日志守护进程中。此外,fscadm 工具还可用于查询哪些服务正在被监控、它们的 pid 文件位置和当前进程 ID。
FSC 相较于第三方的 daemontools 包提供了几项优势。例如,fscd 使用推送通知而非轮询;fscd 是一个 FreeBSD 内部维护的软件包,所有开发者都可以访问,而 daemontools 需要作为 Port 进行管理,并且需要我们维护补丁;fscd 可以很容易地与现有的 rc.d 基础设施集成。
部分基于 daemontools 和 Solaris 服务管理设施(SMF)的思想,这可能是一个对 FreeBSD 系统非常有用的工具。
测试。在不同环境下获取反馈,了解它的工作效果。
代码审查。
其他关于 rc.d 集成的想法。
更新手册页面。
该项目的目的是为 FreeBSD 提供对扁平化设备树(FDT)技术的支持。FDT 是一种描述计算机硬件资源的机制,这些资源无法被探测或自我枚举,且以统一和可移植的方式进行描述。此项技术的主要用户是嵌入式 FreeBSD 平台(如 ARM、MIPS、PowerPC),这些平台的许多设计基于类似的芯片,但在引脚分配、内存布局、地址范围、中断路由和其他资源方面有所不同。
当前状态亮点:
在此项目过程中开发的所有代码和文档已并入 HEAD,涵盖了以下平台和系统的 FDT 支持:
Marvell ARM
DB-88F5182
DB-88F5281
DB-88F6281
DB-78100
SheevaPlug
Freescale PowerPC
MPC8555CDS
MPC8572DS
FDT 基础设施(总线驱动程序、辅助库和跨架构及平台共享的例程)使得向新平台或变种平台的移植变得更加容易。最初支持的系统提供了一个迁移到 FDT 方法的有效示范。
此项目由 FreeBSD 基金会赞助。
改进新用户的操作指南和最佳实践(例如,如何转换到 FDT 等)。
将更多现有的嵌入式 FreeBSD 平台(如 ARM、MIPS)迁移到 FDT 方法。
已开始将 FreeBSD/powerpc64 移植到基于 IBM Cell 的索尼 PlayStation 3,利用该游戏机某些型号的 OtherOS 功能。截至 7 月 14 日,FreeBSD 启动加载程序已完成移植,并且可以通过网络启动内核,该内核支持帧缓冲、MMU 和设备发现。完成网络接口和中断控制器的驱动程序工作后,便可以启动该控制台的多用户模式。
http://wiki.freebsd.org/FreeBSD/avr32
FreeBSD/avr32 项目由 Arnar Mar Sing 启动,并由他和 Ulf Lilleengen 积极开发。该项目成功达到了单用户阶段,但之后进展较慢。目前,我正在努力将其恢复到正常状态。到目前为止,已解决了 i386 主机上的一些工具链问题,buildkernel 和 buildworld 都已成功执行,但仍有一些例外。接下来的步骤是修复 pmap,并将该 Port 恢复到单用户阶段。
7 月 13 日,FreeBSD/powerpc64 已集成到 HEAD 中。该版本提供对符合 Book-S 规范的 64 位 PowerPC 机器的完全 64 位操作支持,包括 PowerPC 970、Cell 和 POWER4-7。目前硬件支持仅限于 Apple 机器,但预计将在不久的将来得到扩展。
目前支持的硬件:
Apple Xserve G5
Apple Power Macintosh G5
Apple iMac G5
自上次报告以来,已修复 cas(4) 的一些问题,使其能够与 Sun GigaSwift Ethernet 1.0 MMF 卡(Cassini Kuheen,零件号 501-5524)以及 Sun Fire B100s 服务器刀片的板载接口(适用于 Sun Fire B1600 平台)一起工作。
已经添加对基于 SPARC64 V CPU 的 Fujitsu(Siemens)PRIMEPOWER 250 的支持。PRIMEPOWER 450、650 和 850 可能也可以工作,但尚未测试。这也意味着基于 SPARC64 VI 和 VII CPU 的机器(如 Fujitsu/Sun SPARC Enterprise Mx000 系列)的支持基础已经到位,但还需要测试。
已解决由于 Schizo 版本 7 桥接器(实际上是这些机器的固件)引发的启动过程中出现的 panic 问题。
由于无法访问此类机器,Sun Fire V1280 的支持工作已暂停。
上述改进将会在 FreeBSD 8.1-RELEASE 和 7.4-RELEASE 中提供。
希望能获取基于 SPARC64 VI 和 VII CPU(如 Fujitsu/Sun SPARC Enterprise Mx000 系列)的机器,以进行测试。
希望有人能够为 Clang/LLVM 添加对 64 位 SPARC V9 的支持,并使其与 GCC 相当。
Chromium 是一款基于 Webkit 的网页浏览器,主要采用 BSD 许可证。在 FreeBSD 上运行非常顺利,并支持 HTML 5 视频等新特性。该项目采用了一种新的混合源代码模型,其中 FreeBSD 补丁会在有限时间内保持封闭。我几个月前将 Chromium 提交到 Ports,并最近将提交更新到稳定的 5.0.375 分支。该 Port 已准备好提交,等待 FreeBSD 基金会的最终法律审批。将 Chromium 完全移植到 FreeBSD 仍需进一步工作,例如完全移植任务管理器,并确保扩展功能正常运行。
改进对 Haskell Cabal 包的支持和转换。
为 Haskell Platform 创建 Port。
添加更多 Haskell 包的 Port。
测试并提供反馈。
第二季度的一个重要部分是协调 Xorg®7.5、KDE®4、GNOME®2 的加入工作,以及为 8.1 版本的发布过程准备 Port。由于在 7.3-RELEASE 期间强制执行功能安全 Port 提交的成功,这一做法在最近的 src/ 冻结期间继续实施。
Port 数量接近 22,000 个。目前未解决的 PR 数量约为 1200 个条目。
自上次报告以来,我们增加了四位新的提交者,并有两位老提交者重新加入。
Ports 管理团队非常感谢 FreeBSD 基金会为 Port 构建集群 pointyhat 赞助了两个新的主节点。每个新主节点的容量更大,不仅在性能方面有所提升,还在可用于暂存区的空间上提供了更多的支持,从而实现更快速的构建周期,并能够进行更多的构建。此外,拥有两个主节点将使我们能够专门分配一个节点用于构建生产就绪的二进制包,增加用户对何时可以安装哪些类型包的可预测性;另一个节点则专门用于对大型 Port 更新、Ports 基础设施改进、集群调度代码和 FreeBSD 本身进行回归测试。在过去几周里,Mark Linimon 一直在努力使其中一个新节点上线,并已完成其第一次包构建。这涉及到我们自定义代码库的重大重构。
Ports 管理团队一直在进行 -exp 运行,以验证基本系统更新可能对 Ports 的影响,并为重大 Port 更新提供 QA 测试。值得注意的是,已经进行过以下 -exp 运行:
ale: 更新 math/gmp。
delphij: 修改 Mk/bsd.ldap.mk。
gahr: 包含 USE_GL=glew。
pgollucci: 修改 Mk/bsd.apache.mk 以及更新 devel/apr 和 www/apache。
测试 x11/xorg、x11/gnome2、x11/kde4 和 lang/mono。
测试运行 make fetch。
测试运行 devel/gettext。
mm: 包含 USE_XZ。
ale: 请求将默认的 mysql 从 5.0-EOL 切换为 5.1-GA。
alepulver 的许可证框架夏季代码项目已成功加入 Ports,Ports 管理团队目前正在评估其后续影响,并将在适当时候提供相关指导和文档。
大多数 Port PR 已分配,现在需要专注于测试、提交和关闭。
http://wiki.freebsd.org/BSDDay_2010
此一天活动的目的是汇集中欧地区当今开源 BSD 系统的开发者,宣传他们的工作和组织,并为现实生活中的交流提供一个平台。没有正式的程序、论文,也没有注册或参与费用。然而,邀请的开发者被鼓励就他们最喜欢的与 BSD 相关的话题进行演讲,或加入现场论坛,然后与其他人一起喝一杯。活动的目标是激励潜在的未来开发者和用户,尤其是本科大学生,来使用 BSD 系统。
今年的 BSD-Day 将于 2010 年 11 月 20 日在匈牙利布达佩斯的厄尔布大学信息学系举行。
申请作为开发者,我们仍在寻找该地区的 BSD 人员。
BSDCan 2010 是我们的第七届大会。按照惯例,在大会开始的前两天举行了 FreeBSD 开发者峰会。开发者峰会的参与人数创下了新纪录,并延续到了正式大会上。看到来自更多公司代表的参与真是太棒了。许多优秀的想法在此扎根,并开始在多个项目上展开合作。
开发者峰会期间的演讲开始吸引了更广泛的观众,我们也在讨论通过为 BSDCan 2011 创建第四个演讲轨道来向公众开放这个活动。
尽管听起来不可思议,但每年大会的演讲质量和提案数量都在不断提高。
我需要一些人帮助处理各种会前任务:更新网站、预定差旅等。
http://www.meetbsd.org/
http://picasaweb.google.com/meetbsd/MeetBSD2010Day1##
http://picasaweb.google.com/meetbsd/MeetBSD2010Day2##
http://picasaweb.google.com/meetbsd/MeetBSD2010SocialEvent##
meetBSD 2010 于 7 月 2 日至 3 日在波兰克拉科夫的雅盖隆大学数学与计算机科学系大楼举行。
此次聚会是一场非常成功的活动,吸引了来自世界各地的 BSD 系统开发者、贡献者和用户。我们有许多有趣的演讲,内容各异,适合多样化的观众群体。
与会者有机会在大会期间参加 BSD 认证考试,并享受面对面的交流和讨论,这些讨论持续到了周五晚上的社交活动!
会议的演讲幻灯片已可供下载。视频录制的编辑工作正在最后阶段,预计不久后会发布。
希望你喜欢此次活动,并在克拉科夫度过了愉快的时光。我们很快再见!
联系人:Gábor Kévesdén <>
联系人:Zheng Liu <>
预分配算法的目的是实现一个预留窗口机制。现在这个机制已经被引入。性能比较可以在 上找到。
联系人:Ilya Putsikau <>
联系人:Brooks Davis <> 联系人:Tim Kientzle <> 联系人:Robert Watson <>
我们再次参与谷歌编程之夏。这是我们第六年参与该项目,我们希望再次从 18 名学生那里看到优秀的成果。编码工作于 5 月 24 日正式开始,目前正处于期中评估阶段。你可以在 或 上查看和评论每周的状态报告。
联系人:Andrius Morkunas <>
联系人:Gleb Kurtsou <>
联系人:David Forsythe <>
联系人:Alexander Fiveg <>
联系人:Ed Schouten <> 联系人:Roman Divacky <> 联系人:Brooks Davis <> 联系人:Pawel Worach <>
联系人:Max Khon <>
DAHDI(Digium/Asterisk 硬件设备接口)是一个开源设备驱动框架和一套 E1/T1、ISDN 数字卡及 FXO/FXS 模拟卡的硬件驱动程序 []。Asterisk 是最流行的开源软件 PBX 解决方案之一 []。
联系人:Sergio Ligregni <>
联系人:Jakub Klama <>
联系人:Boris Kochergin <>
预计旧的 ata(4) 驱动将在未来某个时候被淘汰,取而代之的是 ATA_CAM []。然而,FreeBSD 中的 ATA 伪 RAID 支持 ataraid(4) 是作为该 ata(4) 驱动的一部分实现的,这意味着它也将被淘汰。因此,决定重新实现伪 RAID 支持,并将其移植到 GEOM [] [],这是该项目的目标。
当前代码的一个主要问题是,它使用 device(9) 函数族来识别 ATA 伪 RAID 控制器并基于此信息构建阵列。不幸的是,ATA_CAM 似乎没有将其设备添加到设备树中,因此不能使用这种方法进行 ATA_CAM 的开发。尽管这对于实际的 RAID 部分开发是可以的,但没有旧的 ata(4) 驱动,项目将变得不太有用。此前有讨论提到将 PCI 信息导出到 GEOM [] [],但该工作似乎尚未完成。
联系人:Luiz Otavio O Souza <> 联系人:Oleksandr Tymoshenko <>
联系人:Kris Moore <> 联系人:M. Warner Losh <>
联系人:Benjamin Kaduk <> 联系人:Derrick Brashear <>
有一些已知的未解决问题正在处理中,但欢迎详细的错误报告提交至 。
联系人:Edward Tomasz Napierała <>
联系人:J.R. Oldroyd <>
联系人:Gavin Atkinson <> 联系人:Mark Linimon <> 联系人:Remko Lodder <> 联系人:Volker Werth <>
联系人:核心团队 <>
联系人:发布工程团队 <>
联系人:Deb Goodkin <>
至今,我们已筹集了大约 48,000 美元,目标是 350,000 美元。了解如何捐款,请访问 。
我们的半年度新闻通讯即将发布。请访问我们的 了解更多信息!
联系人:Lawrence Stewart <>
联系人:Gábor Pàli <> 联系人:Aman Jassal <>
联系人:John Baldwin <>
联系人:Bjoern A. Zeeb <>
联系人:Alexander Motin <>
联系人:Pawel Jakub Dawidek <> 联系人:Martin Matuska <> 联系人:李鑫 <>
联系人:Johann Kois <> 联系人:Benedict Reuschling <>
联系人:Gábor Kévesdén <> 联系人:Gábor Pàli <>
联系人:佐藤広生 <> 联系人:Ryusuke Suzuki <>
联系人:Gábor Kévesdén <> 联系人:Vicente Carrasco Vayá <>
联系人:Gábor Kévesdén <>
联系人:Gábor Kévesdén <>
联系人:Tom Rhodes <>
联系人:Rafal Jaworowski <>
联系人:Nathan Whitehorn <>
联系人:Oleksandr Tymoshenko <>
联系人:Nathan Whitehorn <>
联系人:Marius Strobl <>
联系人:Ruben <>
联系人:Gábor Póli <> 联系人:Giuseppe Pilichi <> 联系人:Ashish Shukla <>
我们在将通用的纯函数式编程语言 移植到 FreeBSD 的工作取得了进展,最近两位新的提交者 Giuseppe Pilichi 和 Ashish Shukla 加入,组成了 FreeBSD Haskell 团队。在过去的几个月中,FreeBSD/i386 和 FreeBSD/amd64 已成为一级平台,正式支持 Glasgow Haskell 编译器()版本 6.12.1 及以上。我们为 Haskell Cabal Port 创建了统一的 Ports 基础设施,这也使得 成为 FreeBSD Ports 成为可能。Haskell 包的 Port 数量在稳步增加。
联系人:Thomas Abthorpe <> 联系人:Ports 管理团队 <>
寻求帮助修复 。
寻求帮助处理 。
联系人:Gábor Póli <>
联系人:Dan Langille <>
联系人:meetBSD 信息 <>