Raspbian:世界上“最小的”操作系统是怎样炼成的?

标签: 前沿 | 发表时间:2013-03-13 18:00 | 作者:steven
出处:http://www.pingwest.com

raspberry-pi-berries

当你花35美元买到一部树莓派(Raspberry Pi)计算机的时候,机器里面是没有预装操作系统(OS)的。这个时候你要自己下载一个OS到SD卡,插到树莓派上重启完成OS的安装。这一切看起来很简便,但你考虑过这个跟树莓派兼容的OS是哪里来的吗?

其实,树莓派的操作系统 Raspbian的来历可不简单。它诞生的前提是,每周60个小时的工作量,处理一大堆自建的ARM计算机以及重建19000组Linux软件包。而这一切,都是由两名志愿者完成的。他们是:麦克·汤姆森(Mike Thompson)和彼得·格林(Peter Green)。

mikeandgreen

正像树莓派机器本身一样,它的操作系统也是一次意外的成功

适合于树莓派的OS有很多,尽管如此树莓派基金会还是要为你指定一个最兼容的来用。当一年前树莓派诞生的时候,首选的OS是红帽为ARM处理器特别订制的Fedora;而几个月后Fedora就失宠被Raspbian取代。

Raspbian的基础是Debian操作系统。两位志愿者针对树莓派硬件对Debian进行了专门的优化和移植。而Raspbian不仅仅是一个OS,它附带着35000个软件包以及预编译的软件。

Raspbian项目的开展得益于麦克·汤姆森。他曾是Atomz公司的联合创始人和CTO,在2005年该公司被WebSideStory收购,汤姆森获得了450万美元的分红。之后他便带着家人四处旅游。直到一年前,汤姆森决定回归科技领域再创一番事业,并把目光投向了机器人科学。而树莓派看起来像是一个不错的发展平台;它价格足够低廉,体积足够轻便,特别适合嵌入到其他大的系统中。可惜树莓派没有一个针对其 浮点单元(Floating-point Unit,又称浮点运算器)全面优化的OS;而浮点单元在机器人技术以及其他需要大量数学计算的应用中都是至关重要的。

“当我第一次听说树莓派的时候,我感到很失望。因为所有适用于该机器的Linux发行版中,没有现在树莓派上具备的浮点单元。”汤姆森说道,“做为一个长期的Debian用户,我更希望看到Debian(而不是Fedora)运行在树莓派上。而我也希望看到一个能支持浮点单元的OS”。

Debian系统为ARMv7处理器添加了浮点单元支持,但对于树莓派使用的ARMv6处理器则没有。“Debian这时看起来不像是能在树莓派上运行的系统;即便ARMv6处理器具备运行浮点单元的能力,但Debian就是不支持。”汤姆森回忆道,“这样一来,Debian上成千上万的软件包(Software Package)在树莓派上就没有了用武之地”。

就好比一个GPU能快速处理图像编译工作一样,“一个浮点单元同样能进行高速的数学计算,”汤姆森称,“它不是一台计算机必备的附件,但当它运作的时候你就想把它的功能发挥到最大”。现在浮点单元是树莓派片上系统(SoC)Broadcom BCM2835的一部分。

“如果你不让硬件上的浮点单元发挥最大计算水平,那么很多的数学运算都要交给软件处理。这就延长了树莓派执行任务的时间。这在机器人技术很重要,因为要处理来自像是摄像头、传感以及马达等设备的数据,并进行复杂的数学运算,以控制精度和速度。”汤姆森说道。同时浮点单元的计算能力对于多媒体数据处理也很重要,比如解码音乐文件和进行物理模拟,或者是“任何需要大量计算的操作”。

一次富有成效的合作

摆在汤姆森面前的路十分清晰:重建Debian系统,以让其能在树莓派上运行。但这需要从Debian上移植19000组软件包至Raspbian上,工作量十分庞大。

为此,汤姆森在树莓派论坛开设了一个帖子,召集对于将Debian移植到树莓派感兴趣的人。而这个帖子引起了彼得·格林的注意。彼得·格林是一个Debian系统开发者,英国的PhD,同时也是论坛中的“plugwash”(他的ID)。

“我觉得我是在论坛中讨论将Debian变成Raspbian的人中,唯一一具备足够的Debian知识、能让项目成功的人。”格林说道,“我想其他Debian开发者如果足够执着和疯狂,他们也能完成Raspbian这项工作”。

当汤姆森和格林开始Raspbian项目的时候,树莓派的机器其实还没有成型。即便成型、量产了,也未必有足够的时间去重建Debian系统。为此,汤姆森用8个飞思卡尔iMX53快速启动主板,每个配备1G内存和1GHz ARMv7处理器,以及SATA硬盘组建了一台试验机。这台机器花费了汤姆森近3000美元,不过好来通过募捐填补了这部分花销。除了这套单片机ARM系统外,还有一台Linux PC用来当服务器,作为Raspbian的存储库(Repository )。这台服务器从Debian的存储库中检索资源包,为飞思卡尔系统分配任务,并收集二进制软件包。“重建好的软件包都被放在存储库中,然后同步到www.raspbian.org服务器上的外部存储库中,供用户抽取软件包”。汤姆森解释道。

起初,汤姆森采用了基于ARM的惠普Media Vault MV5150 来当软件存储库,但后来当存储需求上升时便升级到了基于英特尔的系统。尽管每块飞思卡尔主板都有自己的硬盘用来存储构建中的软件包,但是主要的存储任务还是交给了服务器上的500G硬盘来处理(目前已用完2/3的空间了)。下图是汤姆森组建的这台试验机。

rpi_debian_build_cluster-640x426

当然,汤姆森和格林并非是从零开始。Debian已经成为了应用范围很广的Linux OS,它对ARMv7的支持为研发工作提供了一个坚实的基础。“我们充分利用了Debian项目组之前在ARMv7上运行浮点单元所得到的成果。”汤姆森说道,“除了要重建19000组软件包以外,其实对于在树莓派上运行Debian的工程,Debian项目组已经完成了95%”。当然这并不是说汤姆森和格林把ARMv6及浮点单元带到Debian上是徒劳无功的。对此,汤姆森解释道:

Debian系统中的编译器有内置的默认设置。这些默认设置设定了CPU单元、CPU最低需求以及应用二进制界面(ABI)等。而大部分软件包并不受这些设定控制。我们在ARMv6上对编译包进行了改良,减少了默认设置的数量。

大部分的原始工作都是人工的,不过格林最终创建了一个自动构建器软件来完成所有的软件包构建工作。这个基于Chroot环境的构建器至今仍在运行,它能及时地把Debian存储库中的新软件包自动转译到Raspbian中。同时,这些自动构建器还能监测到各种阻碍自动转译程序的问题。2012年4月20日,Raspbian的限制版开放下载,只包含了5%的Debian软件包。

重建19000个软件包

Debian ARM版中有36000个软件包需要进行移植。幸运的是,有17000个不包含任何可执行代码,因此直接转移到Raspbian上即可。这些软件包包括诸如帮助文件、说明书、软件包文档、字体等不可执行的东西。而其余19000个软件包则包含可执行代码,庞大的工作量直到去年6月初才全部完成。对于汤姆森来说,这简直就是3个月的全职工作,“有几周我的工作时间达到了60至80个小时”。

汤姆森估计约有5%的Debian软件包无法成功地通过自动构建器进行编译。这意味着他和格林要手动改写任何专门为ARMv7设计的代码,并将其重建以适应ARMv6处理器。此外,大约有50至100个软件包是压根不能转译的。“这些软件包是诸如调试器等专门给ARMv7处理器设计的东西。有一些甚至在树莓派上根本没有存在的意义。”汤姆森解释道。

Raspbian的用户界面其实是可有可无的。由于树莓派主要用于编程教学,它的默认用户界面包含了一个Python开发环境。下图是Raspbian的默认界面。

raspbian-image

Raspbian取代了Fedora——而且还会继续改进

上文提到过,树莓派起初采用的是一款基于ARM的Fedora OS。然而Fedora对内存的需求成了绊脚石——树莓派的初版只有256M内容(现在新版的有512M内存)。树莓派的创始人Eben Upton表示,他们在2012年5月份放弃了Fedora,然后又向用户推荐Debian系统,“当Raspbian在8月份诞生时又转而推荐这款OS”。

较小的内存占用、易用性以及对浮点单元的支持成为了Raspbian制胜的关键因素。目前针对树莓派的Fedora系统仍然在研发中,不过树莓派官方的下载页面只推荐了Raspbian、Arch Linux ARM和RISC OS。

本文整理自 Arstechnica

相关 [raspbian 世界 操作系统] 推荐:

Raspbian:世界上“最小的”操作系统是怎样炼成的?

- - PingWest
当你花35美元买到一部树莓派(Raspberry Pi)计算机的时候,机器里面是没有预装操作系统(OS)的. 这个时候你要自己下载一个OS到SD卡,插到树莓派上重启完成OS的安装. 这一切看起来很简便,但你考虑过这个跟树莓派兼容的OS是哪里来的吗. 其实,树莓派的操作系统 Raspbian的来历可不简单.

Android操作系统安全

- - CSDN博客推荐文章
        Android在迅猛发展的同时,其安全问题一直没有引起足够的重视,但在2010年6月研究人员发布Android平台的KernelRootkit以来,Android平台的安全问题引来了越来越多的关注,而同时,Android平台的恶意软件也开始流行起来.        根据以上的Android系统架构分析,可以发现在三个层面可能存在恶意软件.

Mozilla将开发独立操作系统

- ccyuling - Solidot
Mozilla宣布了一个新项目“Boot to Gecko”,旨在为开放互联网开发一种完整独立的操作系统,成为ChromeOS或Android的某种竞争对手. 源代码将发布在Github上(暂时只有README). Mozilla此举是为了推广开放Web技术,Boot to Gecko针对的不是笔记本,而是智能手机,为Android兼容设备提供基质.

五家移动操作系统盘点

- 离歌 - 互联网的那点事
这篇文章,我起草有一段日子了,现在我觉得该是时候完成它. 伴随着iPhone更新的传言、RIM的诽谤、对触摸板的既爱又恨等这些话题的出现,我认为现在就是发表看法的最好时机. 博客之间近来出现了一场大型的拔河较力,热论某些公司的命运或者某些手机操作系统的优势,又或者仅仅只是移动通讯技术的整体发展方向.

Joyent 发布 SmartOS 开源操作系统

- ArBing - vpsee.com
以 OpenSolaris 为基础架构的云计算公司 Joyent 上周发布了他们自己的操作系统 SmartOS,并在 github 上公开了其所有的源代码,很高兴看到又一个云计算厂商加入到开源的队伍. 和其他依赖 Linux 的云计算系统不同,Joyent 提供的 SmartOS 基于 illumos(SUN 被 Oracle 收购后,OpenSolaris 分裂出来的版本).

Cosmos--基于C#的操作系统

- Amom - Solidot
Shawn the R0ck 写道 "不论从MIT开放课程6.828操作系统工程(Operating System Engineering)还是实际工程中的Unix-like系统,使用C语言和少量的汇编已经是铁律一般的工程原则,虽然也有不少hacker尝试基于Lisp的OS比如试验性项目LOSAK,但都还没有大规模的工程应用.

Ubuntu发布移动版操作系统

- - Ubuntusoft
Ubuntu刚刚在其官方主页发布了移动版操作系统. 该系统完全开源免费,并且分为“普通版”和“高级版”两个版本. 其中“普通版”对手机配置的要求较低,但是功能有限. 系统采用全手势操作,屏幕每个边缘都会对应不同操作,比如短暂的在屏幕左端边缘滑动手指便可呼出程序菜单,从屏幕左端滑到右端则可以显示目前打开的应用程序,短暂的在屏幕右侧滑动手指则是类似“返回键”的功能等等.

9 个免费的云操作系统

- - 开源中国社区最新新闻
云操作系统 允许你在任何地方访问你的数据. 最基本的它可作为你的在线磁盘,用来存储任何的数据. 使用云操作系统你可以创建办公项目、编辑文档以及几乎任何你在桌面上能完成的其他事情. 这里我们像你推荐 9 个免费的云操作系统. 使用 ZeroPC 你可以访问为你提供的 1G 免费存储空间,可以连接多种不同的云计算服务,诸如:Google Drive, DropBox, 4Shared, SkyDrive 等等.

Google物联网操作系统

- -
本次,谷歌正式将其物联网Brillo系统更名为Android Things,并同时更新了通讯协议weave.. 与Android TV Android Auto和Android Wear统一名称,稳定发展. Android Things为开发者快速打造物联网设备底层系统,开发者可以使用Android API和Google服务,结合Android Studio Google Cloud Platform及Google Play来操作,已开放预览版.

移动操作系统再添新员: Mozilla开源 OS

- Jie - GeekPark 捕风捉影
Mozilla今天表示初步计划将驱动Firefox的Gecko引擎打造成一个开源的操作系统,未来将工作在手机和平板电脑上. Gecko是一个渲染引擎,驱动Firefox浏览器和著名的邮件客户端Thunderbird,新的操作系统将叫做Boot to Gecko,它特色的地方在于代码是实时公开发布,而相比之下,Google的Android操作系统也是开源,但是主要开发部分必须经过Google采纳之后才能公开,有时时间要拖几个月之久.