騰訊科技訊(張和)北京時(shí)間3月18日消息,美國科技新聞網(wǎng)站ArsTechnica近日撰文,探究了廉價(jià)迷你Linux電腦Raspberry Pi的專屬操作系統(tǒng)Raspbian背后的故事。Raspbian基于著名的Linux發(fā)行版Debian開發(fā),在問世之后就立即取代了大名鼎鼎的紅帽Fedora,成為Raspberry Pi基金會(huì)官方推薦的操作系統(tǒng)。讓許多人意想不到的是,Raspbian所有的開發(fā)工作均由兩名狂熱的Pi愛好者利用業(yè)余時(shí)間完成。
以下為文章概要:
在你花費(fèi)35美元購買Raspberry Pi之后,這臺(tái)迷你Linux電腦并未預(yù)裝任何操作系統(tǒng)。你可以將你喜歡的操作系統(tǒng)載入到SD卡并啟動(dòng)Pi,整個(gè)過程并不困難。但與Pi兼容的操作系統(tǒng)是從哪里來的?
在Raspberry Pi剛剛度過一周歲生日之際,我們決定探究Raspbian--官方推薦的Pi操作系統(tǒng)--的前世今生。Raspbian項(xiàng)目凝聚了開發(fā)者每周花費(fèi)60個(gè)小時(shí)、連續(xù)數(shù)周工作的心血。開發(fā)者需要自制一臺(tái)ARM電腦,并重新編譯1.9萬個(gè)Linux軟件包。所有這一切,都是由兩個(gè)志愿者完成的。
意外的成功
盡管市面上有許多與Pi兼容的操作系統(tǒng),但Raspberry Pi基金會(huì)通常對(duì)普通用戶僅推薦其中的一款。在Pi誕生于一年之前時(shí),官方推薦的系統(tǒng)是一款針對(duì)ARM處理器優(yōu)化過的紅帽Fedora操作系統(tǒng)。但僅僅幾個(gè)月之后,F(xiàn)edora失去了Pi社區(qū)的支持,被Raspbian取而代之。后者是一款專門為Raspberry Pi重新修改過的Debian系統(tǒng),其作者是名為麥克·湯普森(Mike Thompson)和皮特·格林(Peter Green)的兩個(gè)志愿者。
這一切的開始,要從湯普森對(duì)機(jī)器人的愛好說起。湯普森是曾是托管搜索服務(wù)商Atomz的首席技術(shù)官和聯(lián)合創(chuàng)始人,該公司于2005年被WebSideStory收購。湯普森獲得了Atomz出售價(jià)4500萬美元中的一筆不菲金額,因此他決定暫停幾年的工作,花更多的時(shí)間與妻子和孩子在一起。
一年前,他終于準(zhǔn)備重返科技領(lǐng)域。機(jī)器人是湯普森的主要興趣之一,而Pi看起來是很棒的承載平臺(tái)。Pi價(jià)格低廉且體積小巧,很容易被嵌入到各種系統(tǒng)之中。但在當(dāng)時(shí),沒有任何一款操作系統(tǒng)是完全為Pi的浮點(diǎn)計(jì)算單元優(yōu)化的,而浮點(diǎn)計(jì)算在機(jī)器人項(xiàng)目和其他運(yùn)算密集型應(yīng)用中非常重要。
“在我最初接觸到Raspberry Pi時(shí),令我失望的是,沒有一款Linux發(fā)行版能夠利用Pi的高速浮點(diǎn)運(yùn)算硬件,”湯普森說。“作為一名長期的Debian用戶,我當(dāng)時(shí)想,‘我寧愿試試Debian(而不是Fedora)’,讓它充分利用Pi的浮點(diǎn)運(yùn)算能力,因?yàn)槲议L久以來一直希望能夠在這些廉價(jià)的盒子上開發(fā)機(jī)器人。”
Debian當(dāng)時(shí)已經(jīng)為ARMv7處理器增加了浮點(diǎn)運(yùn)算支持,但該功能并不支持Pi所使用的ARMv6處理器。”Debian最初并未預(yù)見到會(huì)出現(xiàn)類似于Raspberry Pi的產(chǎn)品。盡管Pi的ARMv6處理器擁有相當(dāng)強(qiáng)大的浮點(diǎn)運(yùn)算單元,但Debian并不支持,“湯普森說。因此,”他們開發(fā)的成千上萬款軟件包都不會(huì)支持Raspberry Pi。”
就像圖形處理器處理圖形任務(wù)很快一樣,“浮點(diǎn)運(yùn)算單元處理數(shù)學(xué)計(jì)算的速度非常快,”湯普森說。“浮點(diǎn)運(yùn)算單元是一種外圍配件,并非所有的計(jì)算機(jī)都有,但只要一臺(tái)電腦有,那么你就一定希望充分錄用它。”Pi的浮點(diǎn)運(yùn)算單元來自于該機(jī)搭載的博通BCM2835 SoC。
如果操作系統(tǒng)不能利用硬件中的浮點(diǎn)計(jì)算單元,許多數(shù)學(xué)上的運(yùn)算都必須使用軟件處理,這拖慢了Pi處理任務(wù)的速度。這對(duì)于機(jī)器人來說非常重要,因?yàn)樵谔幚韥碜詳z像頭和傳感器的數(shù)據(jù),以及精確控制馬達(dá)時(shí),需要進(jìn)行非常復(fù)雜的數(shù)學(xué)運(yùn)算,湯普森說。浮點(diǎn)運(yùn)算對(duì)于多媒體處理、解碼音樂、物理模擬等幾乎所有數(shù)學(xué)運(yùn)算密集型的任務(wù)都非常重要。
Raspbian項(xiàng)目創(chuàng)始人麥克·湯普森(騰訊科技配圖)
富有成效的合作
擺在湯普森面前的道路很清晰:重建Debian操作系統(tǒng)并將使運(yùn)行于Raspberry Pi。這需要將1.9萬個(gè)軟件包從Debian移植到Raspbian--這是一項(xiàng)浩大的工程。
不過,湯普森并非單打獨(dú)斗。他在Raspberry Pi論壇發(fā)起了一個(gè)帖子,與其他有興趣將Debian移植到Raspberry Pi的開發(fā)者進(jìn)行討論。這個(gè)帖子引起了Debian開發(fā)者、英國博士生皮特·格林的注意。
格林是這項(xiàng)工作獨(dú)一無二的人選。他不僅擁有與湯普森共同帶領(lǐng)該項(xiàng)目的專長,而且足夠瘋狂到真正去做這件事。
”我感覺,我可能是這個(gè)帖子里參與Raspbian項(xiàng)目討論的人中,唯一一個(gè)掌握足夠Debian知識(shí)的開發(fā)者,而這是移植成功的基礎(chǔ),“格林說。”不過我也相信,如果Debian項(xiàng)目內(nèi)部有人對(duì)Raspbian項(xiàng)目感興趣并足夠瘋狂來做這件事,那么他們也能完成這一任務(wù)。在Raspbian開發(fā)的過程中,Debian項(xiàng)目的許多人都為我們提供了幫助。“
在湯普森和格林啟動(dòng)Raspbian項(xiàng)目時(shí),Pi尚未正式發(fā)售。即便當(dāng)時(shí)Pi已經(jīng)發(fā)售,這款設(shè)備也無法在合理的時(shí)間內(nèi)重建Debian。因此,湯普森串聯(lián)了八塊飛思卡爾iMX53 Quick Start開發(fā)板,每一塊主板都擁有1G內(nèi)存、一顆1GHz ARMv7處理器,以及最重要的SATA硬盤。Pi不適合這種類型工作的主要原因之一,是USB存儲(chǔ)帶來的瓶頸,湯普森說。使用飛思卡爾主板開發(fā)Raspbian系統(tǒng)的效率比Raspberry Pi要高4到12倍。
湯普森在這些開發(fā)板上花費(fèi)了近3000美元,但后來該項(xiàng)目獲得的捐款足以補(bǔ)貼這些支出。除了單片式ARM系統(tǒng),湯普森還購買了一臺(tái)Linux PC作為Raspbian開發(fā)的存儲(chǔ)庫(repository)。這臺(tái)存儲(chǔ)庫服務(wù)器從Debian存儲(chǔ)庫中獲取源軟件包,安排飛思卡爾系統(tǒng)的任務(wù),一旦一個(gè)版本開發(fā)完成就收集二進(jìn)制軟件包。”所有開發(fā)包都會(huì)被上傳到存儲(chǔ)庫中,然后與www.raspbian.org網(wǎng)站的外部存儲(chǔ)庫同步,用戶則從www.raspbian.org 中獲取軟件包,“湯普森解釋稱。
最初,湯普森使用一臺(tái)基于ARM的惠普Media Vault MV5150作為存儲(chǔ)庫的服務(wù)器,但后來由于需求的增加而升級(jí)至英特爾系統(tǒng)。盡管每一塊飛思卡爾開發(fā)板都擁有獨(dú)立的硬盤,但主要的存儲(chǔ)任務(wù)是由存儲(chǔ)庫服務(wù)器的500G硬盤完成的,這塊硬盤現(xiàn)在已經(jīng)有三分之二滿了。下面就是這套系統(tǒng)最初的樣子:
飛思卡爾開發(fā)板和ARM架構(gòu)的惠普服務(wù)器(騰訊科技配圖)
湯普森和格林的工作并未從零開始。Debian已經(jīng)是開源社區(qū)最為著名的Linux操作系統(tǒng)之一,其ARMv7移植為Raspbian的誕生打下了堅(jiān)固的基礎(chǔ)。
”我們極大地利用了Debian項(xiàng)目此前在支持ARMv7設(shè)備的浮點(diǎn)運(yùn)算硬件時(shí)所作的工作,“湯普森說。”我們并非真的開發(fā)出了1.9萬個(gè)軟件包,95%的移植工作事實(shí)上已經(jīng)由Debian完成了。“
然而,這并不是說,湯普森和格林將Debian移植到ARMv6及其浮點(diǎn)運(yùn)算單元的工作輕而易舉。
格倫解釋道,“在Debian系統(tǒng)中,編譯器內(nèi)置了一定的默認(rèn)設(shè)置。這些默認(rèn)設(shè)置決定了CPU系列、最低CPU要求,以及應(yīng)用二進(jìn)制接口(ABI)。絕大多數(shù)軟件包都未修改這些設(shè)置。我們修改了這些編譯器包,從而將默認(rèn)設(shè)置降低至ARMv6。
對(duì)于絕大多數(shù)的源軟件包,使用內(nèi)置新默認(rèn)設(shè)置的編譯器進(jìn)行重建,就足夠使其運(yùn)行于ARMv6代碼。”
最初,許多代碼工作都是手工完成的,但格林后來開發(fā)出了一款自動(dòng)編碼軟件,將大部分過程自動(dòng)化。這些自動(dòng)編碼軟件至今仍在運(yùn)行,從Debian存儲(chǔ)庫中獲取更新后的軟件包,然后將其重新自動(dòng)編譯,以適用于Raspbian。
Raspbian于2012年4月20日以有限的形式放出下載,最初只包括了約5%的Debian軟件包。“這足夠運(yùn)行root文件系統(tǒng),并將Raspberry Pi啟動(dòng)至命令行界面,”湯普森說。
重建1.9萬個(gè)軟件包
Debian ARM擁有約3.6萬個(gè)需要移植的軟件包。幸運(yùn)的是,其中1.7萬個(gè)并不包含任何可執(zhí)行代碼,因而可以很快移植到Raspbian上。這包括“幫助文件、人工頁面、軟件包文檔、字體等等不需要執(zhí)行的內(nèi)容,”湯普森說。
其他包含可執(zhí)行代碼的1.9萬個(gè)軟件包就是湯普森和格林的主要工作,直到6月初,兩人才將所有這些軟件包重新編譯完成。
對(duì)于湯普森來說,這幾乎就是三個(gè)月的全職工作。“有幾周時(shí)間里,我每周花費(fèi)60到80個(gè)小時(shí)在這項(xiàng)工作上,”他說。
在解釋最初遇到的挑戰(zhàn)時(shí),湯普森說,“我們最初遇到的問題是,直到Raspbian項(xiàng)目啟動(dòng)的幾個(gè)月之后,Raspberry Pi硬件仍然沒有上市。不過,還好有一些Raspberry Pi基金會(huì)的工作人員幫了我們的忙。他們幫忙測試了我們的測試版系統(tǒng),確保了我們正在開發(fā)的軟件能夠真正運(yùn)行在Raspberry Pi上。
第二個(gè)大問題是,在我學(xué)習(xí)如何開發(fā)Linux發(fā)行版時(shí),遇到了陡峭的早期學(xué)習(xí)曲線。幸運(yùn)的是,Linux社區(qū)尤其是Debian社區(qū)非常友好和樂于助人,在我遇到困難的時(shí)候,總是能夠得到別人的建議。在皮特加入項(xiàng)目之后,我們的進(jìn)度快了很多,再加上8臺(tái)ARM服務(wù)器,我們每天都能修改1000個(gè)軟件包。”
一些軟件包尤其麻煩。格林稱,Raspbian系統(tǒng)中Midori瀏覽器所使用的Webkit內(nèi)核折騰了他們好幾天時(shí)間,但最終還是順利完成。
不過絕大多數(shù)軟件包都能夠順利通過這個(gè)流程。類似于bash一樣的命令行殼大多能夠輕松移植成功,湯普森說,”我們只需下載這個(gè)軟件包,重建,然后將其發(fā)到存儲(chǔ)庫。“
湯普森估計(jì),大約有5%的Debian軟件包未能成功通過自動(dòng)編譯流程。這意味著,他和格林不得不手動(dòng)修改其中專門為ARMv7編寫的代碼,然后重新編譯,以使其運(yùn)行在ARMv6上。
”編譯器、Java解釋器等任何對(duì)架構(gòu)敏感的東西,都可能會(huì)帶來麻煩,“他說。”在大多數(shù)情況下,我們能夠?qū)浖M(jìn)行修改,重新打包,然后公布給廣大用戶使用,但還是有部分軟件包由于某些原因無法移植到Raspberry Pi。”
大約只有50個(gè)到100個(gè)軟件包完全無法移植。“這些軟件包主要是調(diào)試器和一些專門為ARMv7處理器開發(fā)的應(yīng)用,其中一些甚至根本就沒有必要移植到Raspberry Pi,”湯普森說。
Raspbian的運(yùn)行既可以使用圖形用戶界面,也可以不使用圖形界面。由于Pi的主要目標(biāo)用途是編程教學(xué),其默認(rèn)界面還包含了Python開發(fā)環(huán)境。
Raspbian默認(rèn)的圖形用戶界面(騰訊科技配圖)
Raspbian取代Fedora
這一切的結(jié)果,就是一款對(duì)初學(xué)者足夠友好同時(shí)又讓有經(jīng)驗(yàn)的Debian用戶感到熟悉的運(yùn)行于Raspberry Pi的Debian操作系統(tǒng)。Raspbian和Raspberry Pi的結(jié)合激發(fā)了全球各地開發(fā)者的熱情,催生了大量的創(chuàng)意。“這就是Raspbian的意義所在,完全重建Debian的基礎(chǔ)架構(gòu),從而使熟悉Debian的用戶能夠輕而易舉地在Raspberry Pi上下載完整的優(yōu)化后的代碼,”湯普森說。
如前所述,Raspberry Pi官方最初推薦的操作系統(tǒng)是基于ARM的Fedora系統(tǒng)。然而,F(xiàn)edora的表現(xiàn)受到了Pi有限的內(nèi)存的嚴(yán)重限制,尤其是最初Pi發(fā)布時(shí)僅有256M內(nèi)存(新版現(xiàn)在擁有512M內(nèi)存)。
Raspberry Pi項(xiàng)目創(chuàng)始人、基金會(huì)主席厄本·艾普頓(Eben Upton)表示,該組織從2012年5月開始向用戶推薦Debian操作系統(tǒng),而在Raspbian于8月份面世之后,該組織轉(zhuǎn)而開始推薦Raspbian。“
更小的內(nèi)存占用、簡單易用,以及支持浮點(diǎn)運(yùn)算硬件,是Raspbian獲得Pi基金會(huì)支持的主要原因。Fedora for the Pi如今仍在開發(fā)之中,但目前基金會(huì)的下載頁面推薦的操作系統(tǒng)只有Raspbian、Arch Linux ARM和RISC OS。
”我很高興能夠看到Raspbian成為Pi官方推薦的操作系統(tǒng),不過這并非是我發(fā)起該項(xiàng)目的初衷,“湯普森說。”Raspbian項(xiàng)目只是我的個(gè)人愛好而已。“
這份工作并未結(jié)束,至少對(duì)于格林來說。服務(wù)器集群如今仍然在湯普森的家中運(yùn)行著,格林則時(shí)不時(shí)遠(yuǎn)程登錄,以更新Raspbian系統(tǒng)。湯普森如今在一家名為OLogic的小型機(jī)器人咨詢公司工作,并將Raspbian項(xiàng)目的絕大部分運(yùn)營工作交給了格林。”過去幾個(gè)月基本上都是我在運(yùn)營Raspbian項(xiàng)目,“格林說。
Raspbian項(xiàng)目聯(lián)合創(chuàng)始人皮特·格林(騰訊科技配圖)
如今,每隔幾天就會(huì)有一些軟件包無法自動(dòng)從Debian移植到Raspbian中,因而需要人工操作。不過,這項(xiàng)工作很快就會(huì)繼續(xù),因?yàn)楦窳钟?jì)劃繼續(xù)維護(hù)并升級(jí)Raspbian。
Raspbian基于Debian的測試版本”Wheezy“而開發(fā)。之所以選擇Wheezy而非穩(wěn)定版的Debian,是因?yàn)樗鼉?nèi)建了硬件浮點(diǎn)運(yùn)算支持。Wheezy最終將成為Debian的穩(wěn)定版,而新的測試版將被命名為Jessie(這個(gè)名字取自《玩具總動(dòng)員》中的人物名稱。)
Raspberry Pi短期內(nèi)不會(huì)出現(xiàn)任何重大的硬件升級(jí)。艾普頓說,基金會(huì)和志愿者們正在努力進(jìn)一步優(yōu)化Linux在Pi的ARMv6處理器上的表現(xiàn)。”我們認(rèn)為,當(dāng)前Pi所擁有的硬件足夠完成非常多的工作,“艾普頓說。
因此,如果有可能,格林希望未來將代號(hào)Jessie的Debian移植到Pi上。”目前的Pi型號(hào)不會(huì)在短期內(nèi)被拋棄,因此人們?nèi)匀粫?huì)需要下一個(gè)版本的Debian系統(tǒng),“格林說。”我會(huì)認(rèn)真研究一下如何在我力所能及的范圍內(nèi)把更多的工作自動(dòng)化。“
格林還希望將Raspbian項(xiàng)目所依賴的服務(wù)器集群從湯普森的房間里搬出來。
”眼下Raspbian依賴的服務(wù)器集群位于麥克的地下室,我們的自動(dòng)編譯軟件也比較簡陋,因?yàn)轫?xiàng)目啟動(dòng)之初我們?nèi)鄙貲ebian在自動(dòng)編譯基礎(chǔ)架構(gòu)方面的文檔,“格林說。”我們希望對(duì)Raspbian Jessie所做的改進(jìn)之一,就是采用更加強(qiáng)大的自動(dòng)編譯硬件組成集群,并將集群搬到新的地方。我們還希望采用最新版的Debian自動(dòng)編譯軟件,并在正規(guī)的托管場所而非麥克的地下室托管服務(wù)器。“
格林正在尋找新的硬件。ARM機(jī)構(gòu)的Openbrix Zero是眼下最為領(lǐng)先的候選硬件。盡管該產(chǎn)品已經(jīng)可以預(yù)定,但格林說,”軟件情況尚不明確,我還不確定要不要購買一臺(tái)來試試。“
”眼下的首要問題,是尋找比較好的、價(jià)格能夠接受的自動(dòng)編譯硬件,“格林說。”Debian最初設(shè)計(jì)并不適合交叉編譯。因此我們不得不在ARM硬件上進(jìn)行本地編譯。“
Raspberry Pi激發(fā)的創(chuàng)意
你或許會(huì)納悶--湯普森和格林使用他們自己的Raspberry Pi完成了怎樣的創(chuàng)意呢?事實(shí)上,他們太過忙于開發(fā)Raspbian和眾多其他項(xiàng)目,還沒有時(shí)間利用Pi發(fā)揮自己的創(chuàng)意。
格林是主修電力和電子工程的博士在讀學(xué)生,目前正在撰寫一篇關(guān)于運(yùn)營無線傳感器網(wǎng)絡(luò)的論文。
“我一直都想利用Pi搗鼓一點(diǎn)什么東西出來,但我一直都沒時(shí)間去做,”格林說。“Raspberry Pi之所以讓我感興趣,是因?yàn)樗且粋(gè)完全成熟的Linux系統(tǒng),能夠運(yùn)行完整的TCP/IP堆棧和Web服務(wù)器,但同時(shí)價(jià)格低廉,你可以將它嵌入到各種項(xiàng)目中,而無需考慮太多成本問題。”
湯普森如今的日常工作是參與客戶的機(jī)器人項(xiàng)目,但目前為止并不涉及以Pi為平臺(tái)的工作。他希望這一點(diǎn)會(huì)很快改變。
“我自己還沒來得及利用Raspberry Pi和機(jī)器人做出點(diǎn)什么,但我可能很快就會(huì)開始一個(gè)項(xiàng)目,”湯普森說。他擁有3臺(tái)Raspberry Pi。
湯普森還在幫助機(jī)器人公司W(wǎng)illow Garage將機(jī)器人操作系統(tǒng)(Robot Operating System)移植到Pi上(其實(shí)ROS更像是一系列開發(fā)機(jī)器人的工具,而非完整的操作系統(tǒng))。
“我正在與硅谷的家釀機(jī)器人俱樂部(Homebrew Robotics Club)保持聯(lián)絡(luò),他們希望在Raspberry Pi上使用ROS控制機(jī)器人,而浮點(diǎn)運(yùn)算硬件的支持非常關(guān)鍵,”湯普森說。“我還在與Willow Garage公司的開發(fā)者保持聯(lián)系,他們也在努力把ROS移植到Raspberry Pi,我將盡我所能幫助他們--比如確保他們所依賴的某些軟件包能夠運(yùn)行于Raspbian之上。”
由于Raspbian項(xiàng)目目前處于維護(hù)模式,湯普森得以將部分處理器轉(zhuǎn)移到ROS和其他項(xiàng)目之中。
“這些服務(wù)器集群最初的作用是短時(shí)間內(nèi)編譯成千上萬個(gè)軟件包,而如今每周只需要編譯100個(gè)軟件包,”湯普森說。“這有點(diǎn)大材小用了。因此,眼下我擁有一些空余的處理能力去做其他項(xiàng)目。”