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

2024-02-06 11:38

本文主要是介绍Raspbian:世界上“最小的”操作系统是怎样炼成的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        转载地址: http://www.pingwest.com/building-the-raspbian-os/

   

        

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。

这篇关于Raspbian:世界上“最小的”操作系统是怎样炼成的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684190

相关文章

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

hdu 1102 uva 10397(最小生成树prim)

hdu 1102: 题意: 给一个邻接矩阵,给一些村庄间已经修的路,问最小生成树。 解析: 把已经修的路的权值改为0,套个prim()。 注意prim 最外层循坏为n-1。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstri

poj 2175 最小费用最大流TLE

题意: 一条街上有n个大楼,坐标为xi,yi,bi个人在里面工作。 然后防空洞的坐标为pj,qj,可以容纳cj个人。 从大楼i中的人到防空洞j去避难所需的时间为 abs(xi - pi) + (yi - qi) + 1。 现在设计了一个避难计划,指定从大楼i到防空洞j避难的人数 eij。 判断如果按照原计划进行,所有人避难所用的时间总和是不是最小的。 若是,输出“OPETIMAL",若