Raspbian:世界上“最小的”操作系統(tǒng)是怎樣煉成的?
當(dāng)你花35美元買到一部樹莓派(Raspberry Pi)計算機(jī)的時候,機(jī)器里面是沒有預(yù)裝操作系統(tǒng)(OS)的。這個時候你要自己下載一個OS到SD卡,插到樹莓派上重啟完成OS的安裝。這一切看起來很簡便,但你考慮過這個跟樹莓派兼容的OS是哪里來的嗎?
其實,樹莓派的操作系統(tǒng)Raspbian的來歷可不簡單。它誕生的前提是,每周60個小時的工作量,處理一大堆自建的ARM計算機(jī)以及重建19000組Linux軟件包。而這一切,都是由兩名志愿者完成的。他們是:麥克·湯姆森(Mike Thompson)和彼得·格林(Peter Green)。
正像樹莓派機(jī)器本身一樣,它的操作系統(tǒng)也是一次意外的成功
適合于樹莓派的OS有很多,盡管如此樹莓派基金會還是要為你指定一個最兼容的來用。當(dāng)一年前樹莓派誕生的時候,首選的OS是紅帽為ARM處理器特別訂制的Fedora;而幾個月后Fedora就失寵被Raspbian取代。
Raspbian的基礎(chǔ)是Debian操作系統(tǒng)。兩位志愿者針對樹莓派硬件對Debian進(jìn)行了專門的優(yōu)化和移植。而Raspbian不僅僅是一個OS,它附帶著35000個軟件包以及預(yù)編譯的軟件。
Raspbian項目的開展得益于麥克·湯姆森。他曾是Atomz公司的聯(lián)合創(chuàng)始人和CTO,在2005年該公司被WebSideStory收購,湯姆森獲得了450萬美元的分紅。之后他便帶著家人四處旅游。直到一年前,湯姆森決定回歸科技領(lǐng)域再創(chuàng)一番事業(yè),并把目光投向了機(jī)器人科學(xué)。而樹莓派看起來像是一個不錯的發(fā)展平臺;它價格足夠低廉,體積足夠輕便,特別適合嵌入到其他大的系統(tǒng)中??上漭蓻]有一個針對其浮點單元(Floating-point Unit,又稱浮點運算器)全面優(yōu)化的OS;而浮點單元在機(jī)器人技術(shù)以及其他需要大量數(shù)學(xué)計算的應(yīng)用中都是至關(guān)重要的。
“當(dāng)我第一次聽說樹莓派的時候,我感到很失望。因為所有適用于該機(jī)器的Linux發(fā)行版中,沒有現(xiàn)在樹莓派上具備的浮點單元。”湯姆森說道,“做為一個長期的Debian用戶,我更希望看到Debian(而不是Fedora)運行在樹莓派上。而我也希望看到一個能支持浮點單元的OS”。
Debian系統(tǒng)為ARMv7處理器添加了浮點單元支持,但對于樹莓派使用的ARMv6處理器則沒有。“Debian這時看起來不像是能在樹莓派上運行的系統(tǒng);即便ARMv6處理器具備運行浮點單元的能力,但Debian就是不支持。”湯姆森回憶道,“這樣一來,Debian上成千上萬的軟件包(Software Package)在樹莓派上就沒有了用武之地”。
就好比一個GPU能快速處理圖像編譯工作一樣,“一個浮點單元同樣能進(jìn)行高速的數(shù)學(xué)計算,”湯姆森稱,“它不是一臺計算機(jī)必備的附件,但當(dāng)它運作的時候你就想把它的功能發(fā)揮到最大”?,F(xiàn)在浮點單元是樹莓派片上系統(tǒng)(SoC)Broadcom BCM2835的一部分。
“如果你不讓硬件上的浮點單元發(fā)揮最大計算水平,那么很多的數(shù)學(xué)運算都要交給軟件處理。這就延長了樹莓派執(zhí)行任務(wù)的時間。這在機(jī)器人技術(shù)很重要,因為要處理來自像是攝像頭、傳感以及馬達(dá)等設(shè)備的數(shù)據(jù),并進(jìn)行復(fù)雜的數(shù)學(xué)運算,以控制精度和速度。”湯姆森說道。同時浮點單元的計算能力對于多媒體數(shù)據(jù)處理也很重要,比如解碼音樂文件和進(jìn)行物理模擬,或者是“任何需要大量計算的操作”。
一次富有成效的合作
擺在湯姆森面前的路十分清晰:重建Debian系統(tǒng),以讓其能在樹莓派上運行。但這需要從Debian上移植19000組軟件包至Raspbian上,工作量十分龐大。
為此,湯姆森在樹莓派論壇開設(shè)了一個帖子,召集對于將Debian移植到樹莓派感興趣的人。而這個帖子引起了彼得·格林的注意。彼得·格林是一個Debian系統(tǒng)開發(fā)者,英國的PhD,同時也是論壇中的“plugwash”(他的ID)。
“我覺得我是在論壇中討論將Debian變成Raspbian的人中,唯一一具備足夠的Debian知識、能讓項目成功的人。”格林說道,“我想其他Debian開發(fā)者如果足夠執(zhí)著和瘋狂,他們也能完成Raspbian這項工作”。
當(dāng)湯姆森和格林開始Raspbian項目的時候,樹莓派的機(jī)器其實還沒有成型。即便成型、量產(chǎn)了,也未必有足夠的時間去重建Debian系統(tǒng)。為此,湯姆森用8個飛思卡爾iMX53快速啟動主板,每個配備1G內(nèi)存和1GHz ARMv7處理器,以及SATA硬盤組建了一臺試驗機(jī)。這臺機(jī)器花費了湯姆森近3000美元,不過好來通過募捐填補了這部分花銷。除了這套單片機(jī)ARM系統(tǒng)外,還有一臺Linux PC用來當(dāng)服務(wù)器,作為Raspbian的存儲庫(Repository )。這臺服務(wù)器從Debian的存儲庫中檢索資源包,為飛思卡爾系統(tǒng)分配任務(wù),并收集二進(jìn)制軟件包。“重建好的軟件包都被放在存儲庫中,然后同步到www.raspbian.org服務(wù)器上的外部存儲庫中,供用戶抽取軟件包”。湯姆森解釋道。
起初,湯姆森采用了基于ARM的惠普Media Vault MV5150 來當(dāng)軟件存儲庫,但后來當(dāng)存儲需求上升時便升級到了基于英特爾的系統(tǒng)。盡管每塊飛思卡爾主板都有自己的硬盤用來存儲構(gòu)建中的軟件包,但是主要的存儲任務(wù)還是交給了服務(wù)器上的500G硬盤來處理(目前已用完2/3的空間了)。下圖是湯姆森組建的這臺試驗機(jī)。
當(dāng)然,湯姆森和格林并非是從零開始。Debian已經(jīng)成為了應(yīng)用范圍很廣的Linux OS,它對ARMv7的支持為研發(fā)工作提供了一個堅實的基礎(chǔ)。“我們充分利用了Debian項目組之前在ARMv7上運行浮點單元所得到的成果。”湯姆森說道,“除了要重建19000組軟件包以外,其實對于在樹莓派上運行Debian的工程,Debian項目組已經(jīng)完成了95%”。當(dāng)然這并不是說湯姆森和格林把ARMv6及浮點單元帶到Debian上是徒勞無功的。對此,湯姆森解釋道:[!--empirenews.page--]
Debian系統(tǒng)中的編譯器有內(nèi)置的默認(rèn)設(shè)置。這些默認(rèn)設(shè)置設(shè)定了CPU單元、CPU最低需求以及應(yīng)用二進(jìn)制界面(ABI)等。而大部分軟件包并不受這些設(shè)定控制。我們在ARMv6上對編譯包進(jìn)行了改良,減少了默認(rèn)設(shè)置的數(shù)量。
大部分的原始工作都是人工的,不過格林最終創(chuàng)建了一個自動構(gòu)建器軟件來完成所有的軟件包構(gòu)建工作。這個基于Chroot環(huán)境的構(gòu)建器至今仍在運行,它能及時地把Debian存儲庫中的新軟件包自動轉(zhuǎn)譯到Raspbian中。同時,這些自動構(gòu)建器還能監(jiān)測到各種阻礙自動轉(zhuǎn)譯程序的問題。2012年4月20日,Raspbian的限制版開放下載,只包含了5%的Debian軟件包。
重建19000個軟件包
Debian ARM版中有36000個軟件包需要進(jìn)行移植。幸運的是,有17000個不包含任何可執(zhí)行代碼,因此直接轉(zhuǎn)移到Raspbian上即可。這些軟件包包括諸如幫助文件、說明書、軟件包文檔、字體等不可執(zhí)行的東西。而其余19000個軟件包則包含可執(zhí)行代碼,龐大的工作量直到去年6月初才全部完成。對于湯姆森來說,這簡直就是3個月的全職工作,“有幾周我的工作時間達(dá)到了60至80個小時”。
湯姆森估計約有5%的Debian軟件包無法成功地通過自動構(gòu)建器進(jìn)行編譯。這意味著他和格林要手動改寫任何專門為ARMv7設(shè)計的代碼,并將其重建以適應(yīng)ARMv6處理器。此外,大約有50至100個軟件包是壓根不能轉(zhuǎn)譯的。“這些軟件包是諸如調(diào)試器等專門給ARMv7處理器設(shè)計的東西。有一些甚至在樹莓派上根本沒有存在的意義。”湯姆森解釋道。
Raspbian的用戶界面其實是可有可無的。由于樹莓派主要用于編程教學(xué),它的默認(rèn)用戶界面包含了一個Python開發(fā)環(huán)境。下圖是Raspbian的默認(rèn)界面。
Raspbian取代了Fedora——而且還會繼續(xù)改進(jìn)
上文提到過,樹莓派起初采用的是一款基于ARM的Fedora OS。然而Fedora對內(nèi)存的需求成了絆腳石——樹莓派的初版只有256M內(nèi)容(現(xiàn)在新版的有512M內(nèi)存)。樹莓派的創(chuàng)始人Eben Upton表示,他們在2012年5月份放棄了Fedora,然后又向用戶推薦Debian系統(tǒng),“當(dāng)Raspbian在8月份誕生時又轉(zhuǎn)而推薦這款OS”。
較小的內(nèi)存占用、易用性以及對浮點單元的支持成為了Raspbian制勝的關(guān)鍵因素。目前針對樹莓派的Fedora系統(tǒng)仍然在研發(fā)中,不過樹莓派官方的下載頁面只推薦了Raspbian、Arch Linux ARM和RISC OS。