LWN: FreeBSD已经26周年啦!

news/2024/8/26 17:33:05
640点击上方蓝色字关注我们~



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搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~


640?wx_fmt=jpeg


http://www.niftyadmin.cn/n/734171.html

相关文章

吴恩达:按照这5步,传统公司也可转型人工智能\n

12月13日,吴恩达在自己的创业公司网站Landing.ai上发布了一本《人工智能转型手册》,旨在为传统公司转型AI提供指导和帮助,我们翻译了部分内容,并在文末附上了手册的下载链接,供读者阅读。 以下内容为InfoQ整理翻译&…

判断设备类型android和iphone

$(function () {// 判断设备类型var u navigator.userAgent;var isAndroid u.indexOf(Android) > -1 || u.indexOf(Adr) > -1; //android终端 var isiOS !!u.match(/\(i[^;];( U;)? CPU.Mac OS X/); //ios终端if (isiOS true) {addHeight();}$(.line2:last).css(di…

LWN: 5.2内核改动相关的一些统计数字

点击上方蓝色字关注我们~Statistics from the 5.2 kernel — and beforeBy Jonathan CorbetJune 21, 2019译者注:5.2已经于7月7日正式发布,但LWN此文撰写时5.2尚在开发周期中。截至此时,在5.2开发周期中已经有13600个patch set (不…

启动node本地服务器

启动node本地服务器 http-server npm install -g express-generator cnpm i nodemon -g express dome //项目名字 cnpm i node app //启动项目

zookeeper 3

2019独角兽企业重金招聘Python工程师标准>>> zookeeper更专注于任务协同 保障一致性,有序性和持久性 实现通用的同步原语的能力 在实际分布式系统中,并发往往导致不正确的行为,zookeeper提供了简单的并发处理机制 真实环境中我们应…

LWN:不在CVE列表里的安全漏洞

点击上方蓝色字关注我们~CVE-less vulnerabilities By Jake EdgeJune 25, 2019 近年来,free software里面有更多的bug被报告出来,从很多方面来说,这是一件好事,当然也有一些负面影响。而像OSS-Fuzz这样的项目也贡献不小&#xff0…

js正则匹配标题

//自定义一个标题 var title ${年份}年${系统级次}${账本}总${收支类型}结构分析; //模拟数据var object[{biaoti:收支类型,timu:收入},{biaoti:账本,timu:一般公共预算},{biaoti:系统级次,timu:全县},{biaoti:年份,timu:2020},{biaoti:科目级次,timu:1},{biaoti:数据类型,tim…

北京卓镭激光完成近亿元B轮融资,君联资本领投

2月19日消息,北京卓镭激光技术有限公司已于2018年12月底完成近亿元B轮融资,由君联资本领投、厦门建发及朗玛峰创投跟投。此轮融资将用于拓展及完善产品线,研发新品和建设基础设施。此前,卓镭激光曾获中科创星、西科天使基金、北京…