Recently in Development Category

WhatsApp CEO及创始人 Jan Koum 宣布捐出一百万美元给 FreeBSD基金会。这是 FreeBSD 基金会成立十五年以来收到的 最大一笔捐款

Jan Koum 在他的 Facebook 页面上写道:

Last week, I donated one million dollars to the FreeBSD Foundation, which supports the open source operating system that has helped millions of programmers pursue their passions and bring their ideas to life.

I'm actually one of those people. I started using FreeBSD in the late 90s, when I didn't have much money and was living in government housing. In a way, FreeBSD helped lift me out of poverty - one of the main reasons I got a job at Yahoo! is because they were using FreeBSD, and it was my operating system of choice. Years later, when Brian and I set out to build WhatsApp, we used FreeBSD to keep our servers running. We still do.

I'm announcing this donation to shine a light on the good work being done by the FreeBSD Foundation, with the hope that others will also help move this project forward. We'll all benefit if FreeBSD can continue to give people the same opportunity it gave me - if it can lift more immigrant kids out of poverty, and help more startups build something successful, and even transformative.

Google Compute Engine

| 1 Comment | No TrackBacks

初步尝试了一下 Google Compute Engine(G社类似 Amazon EC2的产品,基于 Linux/KVM)。确认 FreeBSD 可用(在家里用qemu建一个image出来,装好,然后打包扔到 Google 的系统上,然后用这个包建一个image,再用image起个instance)。

几个比较显著的坑:

  • Google Cloud SDK假定bash位于/bin/bash。这个很容易patch。
  • 如果是在远程的 FreeBSD 系统上使用 Google Cloud SDK,它默认会起 links 作为浏览器。由于 links 不支持 JavaScript,因此会导致 Google Cloud API 授权失败。解决方法是关闭浏览器,然后通过 X forwarding 起一个 Chromium (我估计 Firefox 也没问题)来操作。
  • GCE的系统只支持GNU tar格式的文件,使用 FreeBSD 的 bsdtar 时必须指定用 gnutar 格式,或者用 GNU tar(bsdtar默认采用的是 pax interchange 格式,而 libarchive 目前并不支持 GNU tar 的 sparse 模式;具有讽刺意义的是 Tim 其实应该是在 Google? xz 支持未测,我觉得以只支持 GNU tar 的劲头应该是不支持 xz 的)。
  • 预设的防火墙规则基本只允许 ssh。
  • 系统内建 禁止任何发到标准SMTP端口 (25, 465, 587)的请求。可以理解禁止25,但是不太理解禁止465和587,意义何在?是为了推广 SendGrid 吗?
  • 初始的qemu镜像文件必须是10240MB。
  • 上传 qemu 打包之后,建立 image 后其实可以直接删除原包。

存到盘上的数据据说是加密的,不过个人认为扔到 Internet 上的数据基本就没有隐私可言了,有加密自然可以阻止一些泄密(例如如果一家创业公司想要保存一些患者信息,那么在 Google 本身不被黑掉且他们遵守一系列安全设计准则的前提下,他们至少不用担心由于硬盘坏掉,替换硬盘时这些数据被第三方厂商偶然得到),但基本上跟家里的门窗结实程度一样,你懂的。

实际测试,虚拟网络至少可以做到 100Mbps 跑满(对 Internet)。我认为对大部分普通应用而言应该是够用了。比较遗憾的是本地读写性能忘记测试了,等有时间再研究一下(看 这里 估计太快不了;可靠性方面,据说有内建冗余和校验和检查,不知道实际情况如何,个人感觉可靠性应该还不错)。

去年第四季度的时候,在网上看到 华擎科技 推出了一款基于 Intel Atom C2750 SoC 的主板, Asrock C2750D4I,感觉很赞,于是立即和华擎科技取得了联系(当时这款主板还没进入量产),并着手开始了测试等工作。这张主板的重要特色包括:

  • mini-iTX尺寸
  • CPU支持Intel AES-NI,加密加速
  • 提供了两个千兆以太网口
  • 支持ECC内存(更重要的是,采用的是台式机和服务器常见的4x240-pin DDR3 DIMM规格,不像同类产品通常使用的是204-pin的SO-DIMM,这一点可以节省很多成本)
  • 提供了8个SATA III 6.0Gbps接口和4个SATA II 3.0Gbps接口
  • 支持IPMI并提供了独立网口

此处强行插入一条广告: 我厂 目前这一代的 FreeNAS Mini 采用了这张主板,组装好的产品可以通过 Amazon 购买,我厂每年都会将一部分利润捐给 FreeBSD 基金会,如果先 在 smile.amazon.com 注册支持 FreeBSD 基金会,并使用前述链接, Amazon 公司还会再捐出 0.5% 的金额给 FreeBSD 基金会

目前这张主板已经进入了量产阶段,因此也可以从其他零售渠道获得相关组件自行组装。

早期 FreeBSD 文档采用 jadetex 等的工具集,对 UTF-8 的支持不好。最近, Gabor 等人完成了将工具集换成 TeX Live、Apache FOP,并使用 DocBook 5.0 的工作,所以趁今天编译代码的空挡,我把 FreeBSD 简体中文文档全部换成了 UTF-8 编码。

目前这个转换还有一些小问题需要修正,目前版本的 PDF 生成已经基本算是可以看了(之前有很多由于字体配置问题导致的汉字缺失)。还需要解决下面这些问题,但是我暂时没有太多精力去做,如果有兴趣请和我联系:

  • 更新中文文档到和英文同步的版本(为了方便未来的翻译工作,我希望这个同步的过程是以英文文档为基础,将现有的中文翻译中合适的部分粘贴进去,最后)。
  • 修正目前部分翻译者无法显示的问题(这个是在 DocBook 分支中引入的 regression。
  • 修正联编过程中没有对应翻译的词汇,如Lastmodified等。(这个工作量很小,如果有空的话我也许会直接做)。

在 FreeBSD doc project 换成 svn 之后,FreeBSD 简体中文文档计划基本上处于停滞状态。现在的想法是将库挪到 github 上面,方便多人合作;FreeBSD 目前已经有了对应的 github 镜像:https://github.com/freebsd/freebsd-doc,如果未来按这个计划去做的话,我打算起一个新的github项目来做。

今天有一位用户发信给 Release Engineering Team,要求在发行版中提供源代码的 svn checkout 工作副本,以便直接使用。我觉得这是个好主意,因为这样可以用更便宜的 FTP 流量来代替 svn 流量;不过,由于 re@ 内部有人担心这样会让光盘映像继续膨胀,因此我做了些测试来评估这样做的影响。

总共做了 7 个试验。

paste(1)

| No Comments | No TrackBacks

这是一个处理文本的命令,之前一直没怎么用过,最近看 freebsd-update 的时候才知道有这么个玩意。

Chromium字体问题

| No Comments | No TrackBacks

FreeBSD 上运行 Chromium 时,自体并不是按照 GTK 或 fontconfig 的配置。测试了一下,发现似乎与 LC_CTYPE 有关(暂时还没时间调试来看具体为什么),但是 LC_CTYPE 如果不设的话, SCIM 又不能用。

看了文档,发现 SCIM 不能用是个误解。可以如此令其在 en_US.UTF-8 中激活:

首先,编辑 /usr/local/etc/gtk-2.0/gtk.immodules,找到其中的 scim 部分:

"/usr/local/lib/gtk-2.0/immodules/im-scim.so" 
"scim" "SCIM Input Method" "scim" "/usr/local/share/locale" "ja:ko:zh" 

改为:

"/usr/local/lib/gtk-2.0/immodules/im-scim.so" 
"scim" "SCIM Input Method" "scim" "/usr/local/share/locale" "en:ja:ko:zh" 

然后,将 LC_CTYPE 设为 en_US.UTF-8 即可。不过,这只是 workaround,具体 Chromium 为什么会这样,还需要继续研究。

这里 报名。截止日期为下周五。

今年的 Google Summer of Code 的学生报名还有两周左右就要开始了。 FreeBSD 今年已经确定参加,一些可供参考的项目在 这里 可以找到,我也提供了 一项提案。当然,有兴趣的同学也可以提出自己的想法,如果需要,我也可以帮你找到可能有兴趣的 FreeBSD committer。

参加 Google Summer of Code 的学生可以从 Google 获得五千美元的资助(参加 Google Summer of Code 的开源项目可获得每个项目五百美元的资助),这里是 FAQ,报名链接尚未生效,请继续关注。

(另外,持 F1 学生签证在美国境内的中国留学生也可以参加,参见 这里)。

FreeBSD.org 这次的入侵事件

| 2 Comments | No TrackBacks

我回国之前, FreeBSD 安全团队内部正在准备一项重要的安全公告,不过这次不是由于 FreeBSD 的代码本身,而是由于 FreeBSD 项目集群中的一部分受到了入侵。这份公告后来于 11 月 17 日正式 发表

经过事后分析,这次入侵,最早可以追溯到在今年大约9月的时候的一次针对某家公司的入侵。攻击者通过穷举的方式获得了这家公司一台机器的 root 账户,并获得了对应的 master.passwd 文件。根据事后的日志分析,攻击者应该是通过离线破解的方式得到了这台机器上所有用户的密码明文(旧式 FreeBSD 系统预设的散列方式是 salted MD5),并以这台机器为跳板扫描了一系列的其他系统,并找到了一位 committer 的未经保护的 ssh 私钥。这个私钥令攻击者获得了另外一台服务器的权限(其中包括一台机器上的 root 权限),并在那台服务器上进一步获得了另外一位 committer 的未经保护的 ssh 私钥。

那位 committer 的 ssh 私钥拥有 FreeBSD 用于联编预编译包的 Pointyhat 集群的 root 权限,而这个集群尽管和 FreeBSD.org 集群在一定程度上是隔离的,但在最初建立时,为了方便,以只读方式挂载了 FreeBSD.org 集群所有用户 /home 目录的 Filer。由于两组集群上都启用了内核审计机制 (audit),集群管理员发现,有人以 root 的身份访问了部分用户的 /home 目录,并很可能复制走了一些私钥文件。

至此,我们认为整个集群已出现了重大安全风险,应立即停止有风险的服务器的运行,并根据备份对全部文件进行审计。除了切断了大部分服务器的电源之外,扫描并停用了所有在 FreeBSD.org 集群上存有私钥的公钥的登录权限,对某些系统上运行的操作系统替换成了经过审计的 -CURRENT。

由于时间关系,不可能对每个二进制包都重新做审计,因此比较简便的办法,便是全部删去,从备份中恢复没有问题的,并重新联编其他的二进制包。为了尽快恢复服务,这次经过讨论还做出了准备提前淘汰 CVSup 的计划。

公众可见的变化包括:

  • 未来的所有 CVS 导出,都会变成以 "svnexp" 的身份进行。这个脚本会将 svn 中的代码取出,并 commit 到 CVS 中。
  • 全部 FreeBSD.org 目前依赖 CVS 的服务,都会过渡到采用 svn 作为源头。未来将不会再提供 CVS 和 CVSup 服务。
  • 目前 pkgng 网站还没有恢复,具体恢复时间还没有确定。
  • FreeBSD 9.1-RELEASE 将在包联编完之后正式发布。
  • 部分 committer 访问 FreeBSD.org 集群的权限可能受到了影响。由于目前对个人身份的认定很大程度上依赖于 PGP 签名而不是个人身份证件,相关的恢复作业进行了相当久的时间。

我从这次事件中学到的教训是:

  • 设置有效的入侵检测系统十分重要,及时检测入侵,可以有效阻止伤害继续加深(FreeBSD -CURRENT提供了新的分布式审计机制 auditstd,可以作为入侵检测的辅助手段);
  • 现有采用 MD5 的系统应立即升级到采用 SHA512 或 Blowfish 散列;
  • 避免使用弱密码,以及在不同的地方使用同一个密码;
  • 保存 SSH 私钥时,应进行加密,并且使用强密码;
  • 根据角色采用不同的 SSH 私钥,如果使用 SSH authentication agent,应令私钥在一定时间内过期;
  • 正确实施的二元认证,可以帮助拖延攻击者的脚步和令入侵检测系统及时发现问题;
  • 充足的离线备份非常重要;

FreeBSD Vendor Summit 201211

| No Comments | No TrackBacks

FreeBSD Vendor Summit 是定期举行的使用 FreeBSD 的公司的交流会,这次是在 Yahoo 总部举办。不过,早上因为没有注意收听广播,结果在 237 上堵了半个小时,到会场的时候已经在演示 VTune 了。

Intel 的 VTune 是 Intel 非常好用的一套性能剖析工具。经过将近两年的不断努力,目前 Intel 已经可以提供用于 FreeBSD 的探测模块了,把生成的文件复制到安装了 VTune 的机器上,即可完成各种分析工作。Intel 的 Jim Harris 做了详细的演示,如果对购买和授权感兴趣,可联系 Intel 的销售 Greg Anderson (greg.anderson%intel.com)。预计2013年发布的 VTune 版本更新将内建相关驱动的源代码(BSD许可;如果现在就需要的话请和 Jim 联系),今天我们还讨论了关于把这些驱动直接放进 FreeBSD 的可能性,但估计需要另外走 Intel 内部的审批流程批准。这一进展相当令人振奋。

Warner 今年没有来参加 Vendor Summit,所以 Adrian 向大家介绍了近期 FreeBSD 在嵌入式方面的进展。内容和前几天 MeetBSD 的 Dev Summit 区别不太大。Robert Watson 强调了 Raspberry Pi 和 FreeBSD 之间有良好的关系,而且 Raspberry Pi 非常适合做教学用途。目前,FreeBSD 已经有了可以适用于不同 ARM 平台的、类似i386的通用内核,未来希望进一步发布不同的image来帮助新手完成安装。MIPS方面,现在有 zRouter 项目,目标是做一套完整的、类似 OpenWRT 的平台,其成果也正在逐渐合并到开发主线。

下午,后藤大地 (Daichi GOTO) 介绍了他的公司在日本推广 BSD 的情况,虽不明但觉厉。他提到了一些遇到的问题,例如 InfiniBand 性能等等,我想等段时间和他联系看看是不是有什么可以共享的资讯。

Cache IQ 介绍了他们的产品,这个产品是一个 NAS 加速系统,采用的是 FreeBSD (之前是专用系统,后用 FreeBSD 重写)。目前他们使用的是基于 FreeBSD 8.2-RELEASE + 从主线移植回去的特性,性能不错,全命中情形可以达到 32Gbps (4个万兆口)。针对他提到的移植问题,我们讨论了未来 Release Engineering 希望做的改进,一个可能的方案是做两套 HEAD 开发线,以兼顾需要长期维护的需求,不过这些方案还没有完全成形。

Garett Cooper 介绍了 ATF,Juniper 的人介绍了 bmake。对持续测试和集成而言,两个都是相当重要的工具。

最后 George 主持讨论了目前已有可以分享出来的资源、希望完成的工作和已经在做的工作,会议纪要应该会在稍后向 vendors@ 公布。

FreeBSD src/ r240000

| No Comments | No TrackBacks

Alan L. Cox 今天 commit 了 r240000。我记得刚换 svn 的那会才18到19万 revision 的样子。。。

FreeBSD 的 svn 代码库包括了从 1993 年 6 月 12 日到现在的全部 revision。与之前的 "n"cvs 不同(由于诉讼原因,FreeBSD 在 1994 年以 4.4-Lite 为基础重建了新的 cvs 代码库,也就是 2.x 和后来版本的 ncvs;早期代码库仍然可以在一些光盘出版物上找到),这套代码库包括了 FreeBSD 从一开始到现在的全部修订历史(不过,FreeBSD 2.0 之前的 tag 并未保留)。

Monthly Archives

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.2.11