![640](https://img-blog.csdnimg.cn/img_convert/f6b4f6dfdcb2402e5c954239125ed9cb.gif)
FreeBSD turns 26
June 21, 2019
This article was contributed by Sean Kerner
FreeBSD在创建之后,已经活跃开发了26年了。目前活跃开发的领域包括RISC-V处理器支持,FUSE文件系统的更新,C运行时库的改动,以及安全改进。在6月19日刚举行了FreeBSD Day庆祝活动,纪念1993年的从386BSD项目上分支出来成为FreeBSD的那一天。FreeBSD的第一个正式发行版直到1993年11月1日才发布。
在FreeBSD Day庆祝活动之前,刚刚发布了2019年第一季度的季报,列出目前活跃开发的功能。此外,FreeBSD基金会的执行董事也给LWN提供了一些关于此项目以及基金会的最新状况与思考。
System architecture
跟Linux类似,FreeBSD也需要持续不断的增加最新的系统架构的支持。目前开发者最新在支持的架构是RISC-V,在为这类处理器增加不少新功能。去年的时候LWN介绍了RISC-V和Linux的支持情况。RISC-V成长迅速,自2015年成立的RISC-基金会已经有了235个成员组织。
FreeBSD近期对RISC-V加入了large page mapping的内存管理,以及per-CPU的pmap activication tracking。从man page里可以看到“pmap模块负责管理那些硬件相关的东西,例如页表,地址映射,TLB等等”。季报里面提到的好处有“极大的改善了FreeBSD在多CPU的虚拟机上运行时的响应速度”。
RISC-V的调试功能也有不少进展,首先实现了RISC-V版本的minidump,这是kernel crash dump的缺省选项,能把kernel用到的memory page内容都dump下来。还有一些工作希望能用FreeBSD上缺省的调试器GNU Debugger (GDB)来调试RISC-V。。季报中也提到“支持RISC-V的kernel dump会在下次GDB发布之后合入devel/gdb”。
此外,C运行时的支持也有改善,主要是针对thread-local storage (TLS):
“FreeBSD的动态链接器有修正,从而把TLS初始化的数据正确的分发给所有线程的init段,这就需要对libc和libthr里面体系结构相关的很多代码进行修改。LLD(LLVM Linker)也有改善,能把使用了initial exec TLS模式的library加上相应的flag标记。这样就能让FreeBSD在碰到没有正确链接的library的时候兼容性更好。”
还有支持了Broadcom ARM64 systems-on-chip (SoCs),具体来说BCM5871X SoC系列正在添加FreeBSD支持,估计在2019年下半年能够完成合入。季报里面也提到“BCM5871X是4核的64位ARMv8 Cortex-A75通讯处理器,目标市场是10G路由器、网关、控制面处理以及NAS等的网络应用场景。”相关的开发工作由Juniper Networks贡献,会用FreeBSD作为它针对网络设备自研Junos OS操作系统的基础。
此外值得注意的是更新了文档,描述了如何在Apple的过去几代2007年到2014年Maci Mini硬件上运行FreeBSD,这样能让这些老旧系统焕发新生。今后,目标是希望增加更多型号的安装文档,包括2018版Mac mini。
Linux tools in FreeBSD
FreeBSD里面有很多特有的工具,也同样有不少从Linux拿过来的工具。例如syzkaller coverage-guided system-call fuzzer(用于对系统调用进行模糊压测的工具),LWN在2016年就有文章(https://lwn.net/Articles/677764/ )介绍。季报中描述了一些工作:
“最近一些FreeBSD开发者开始用syzkaller来寻找和修复FreeBSD的kernel bug [...] 一直持续改善syzkaller在FreeBSD系统调用中的覆盖面。具体来说,syzkaller需要得到一些信息才能工作,包括kernel的各个入口以及相应参数类型。目前标准的POSIX系统调用多数都能支持,不过FreeBSD特有的系统调用就基本没有支持了。”
关于syzkaller,也在同时改进它的效率。目前的挑战是当前syzkaller只能通过QEMU在FreeBSD virtual machine (VM)上运行,而QEMU在FreeBSD上没法利用硬件加速功能。所以FreeBSD运行syzkaller VM还有改进空间,目前主要是希望增加FreeBSD开发的bhyve hypervisor,这样能提供硬件加速能力。
还有一个Linux用户比较熟悉的技术,就是Filesystem in Userspace (FUSE)。今年在FreeBSD上FUSE得到更多重视。FUSE主要能让user-space的程序实现一个文件系统,经常用来支持非官方支持的文件系统。FreeBSD的fuse driver在2012年作为一个GSoC项目加入进来,不过之后进展缓慢,相关的FUSE软件功能bug很多,也没有及时更新。可以说FreeBSD的FUSE实现程度落后了11年。最近几个月,开发者开始更新FreeBSD Fuse驱动,修复bug,改善相关的API。
Security
安全启动,是近期开发者关注的一个领域。Trusted Platform Module (TPM) 2.0得到了实现,FreeBSD从而能跟上当代的硬件安全标准。UEFI (Unified Extensible Firmware interface) secure boot也得到了改善。合入了veriexec签名机制支持安全启动,创建了一个libsecureboot的运行库。季报里面解释说:
“libsecureboot运行库用来供loader对kernel和module进行验证,它使用了BearSSL作为加密后端实现,能够支持从UEFI(DB/DBx 数据库)加载可信证书和黑名单证书,然后用它们来做验证的可信基础。这个library还被Veriexec用来在kernel里验证和解析认证数据库(称为'manifest')。此前这些manifest会被userspace的程序用来验证和解析,然后通过/dev/veriexec发送给kernel,一直是一个有限并且易攻击的方案。”
FreeBSD在第一季度还合入了Address Space Layout Randomization (ASLR)。ASLR主要用来对可执行程序的内存地址进行随机化处理,从而增加基于内存地址的攻击的难度。关于为什么现在加入ASLR支持,季报中说:“尽管对于ASLR的目前状况和未来价值还有争议,我们还是先把这个功能合入FreeBSD源代码,这样能让希望试用的用户能更轻松的试用ASLR。同时也能推动这些争论从ASLR是否有价值上,转向更全面的安全控制讨论”
FreeBSD Foundation
尽管FreeBSD项目已经有26年了,其实FreeBSD基金会只是在2000年3月成立的,目的是全力支持这个项目。Deb Goodkin在2005年被聘为基金会的第一个雇员,然后一直作为执行董事来领导这个基金会。“当时我们资金非常有限,而现在已经成长到拥有$1,250,000的运行预算了”,她告诉LWN。“最大的变化是引进一些核心人员做FreeBSD的推广和软件研发,还有对一些外界的软件开发项目进行资金支持。”
FreeBSD基金会是一个非营利组织,完全由个人或者公司捐献来提供资金。2019年到目前为止,基金会收到了NetApp, Netflix, Intel, Tarsnap, Beckhoff Automation, E-Card, VMware, Stormshield等公司的支持和承诺。根据季报所说,后续计划支持商业用户从而能得到支持FreeBSD的回报。
Goodkin说,几乎所有的基金会工作都会直接跟研发相关。例如让staff developer加入工作,来让相关的改动能尽快完成,特别是在相关模块没有志愿者主动进行这部分开发的时候。基金会的staff也会参加项目中的多个工作组,这样能对相关领域的改进提供建议和引导。举例来说,Ed Maste,基金会的项目管理总监,正在管理Git工作组,评估是否把项目从Subversion迁移到Git来做代码管理。Maste在FreeBSD Vendor Summit 2018上提供了一个演讲,介绍了哪些领域会在使用Git后更有优势,倾向于今后使用Git作为项目的主要代码管理系统。
从Goodkin看来,基金会目前所做的最激动人心的事情,就是在全球范围推广FreeBSD,以及相关的教育工作。包括在多个workshop上传授或者创建课程,在开源领域和相关的会议上推广FreeBSD。她认为这很激动人心,因为这些扩展服务引入了更多的感兴趣者来到FreeBSD,也能引入更多的用户以及贡献者。
在FreeBSD的26周年之际,Goodkin对项目的未来充满信心:“在过去25年里,我看到FreeBSD越来越流行,越来越知名,FreeBSD作为一个通用领域的具有竞争性的方案,让更多的个人和组织感受到了它在稳定性、安全性、高性能方面的价值。” 总之,众所周知的是FreeBSD在26年的开发周期之后,依旧非常活跃,不断更新陈旧代码,支持RISC-V这样的最新架构,各种工作会能让项目在今后多年继续充满活力!
全文完
LWN文章遵循CC BY-SA 4.0许可协议。
极度欢迎将文章分享到朋友圈热烈欢迎转载以及基于现有协议上的修改再创作~
长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~