1.1 嵌入式Linux基礎(chǔ)
自由開源軟件在嵌入式應(yīng)用上,受到青睞,Linux日益成為主流的嵌入式操作系統(tǒng)之一。隨著摩托羅拉手機(jī)A760、IBM智能型手表WatchPad、夏普PDA Zaurus等一款款高性能“智能數(shù)碼產(chǎn)品”的出現(xiàn),以及Motolola、三星、MontaVista、飛利浦、Nokia、IBM、SUN等眾多國(guó)際頂級(jí)巨頭的加入,嵌入式Linux的隊(duì)伍越來(lái)越龐大了。目前,國(guó)外不少大學(xué)、研究機(jī)構(gòu)和知名公司都加入了嵌入式Linux的開發(fā)工作,成熟的嵌入式Linux產(chǎn)品不斷涌現(xiàn)。
2004年全球嵌入式Linux市場(chǎng)規(guī)模已達(dá)9150萬(wàn)美元,2005年有1.336億美元,2006年有1.653億美元,2007年達(dá)到2.011億美元,每年平均增長(zhǎng)30%。
究竟是什么原因讓嵌入式Linux系統(tǒng)發(fā)展如此迅速。業(yè)界歸納為三大原因︰第一,Linux在嵌入式系統(tǒng)所需的實(shí)時(shí)性、電源管理等核心技術(shù)不斷發(fā)展;第二,國(guó)際標(biāo)準(zhǔn)組織(如OSDL、CELF等)持續(xù)建立嵌入式Linux相關(guān)標(biāo)準(zhǔn),有效解決版本分歧與兼容性問(wèn)題;第三,業(yè)界主導(dǎo)組織、開發(fā)廠商等不斷推出嵌入式Linux相關(guān)開發(fā)工具、維護(hù)系統(tǒng)。
嵌入式Linux以年費(fèi)訂閱方式為主,與其他的以產(chǎn)品利潤(rùn)為收入方式的嵌入式系統(tǒng)不同,彈性的捆綁銷售策略,助其成功地逐年提高市場(chǎng)占有率,從2004年的46.8%擴(kuò)大到2007年的56.4%。
國(guó)際有名的嵌入式Linux操作系統(tǒng)提供商Montavista,收購(gòu)了PalmSource的愛(ài)可信和奇趣科技等,加強(qiáng)了對(duì)中國(guó)市場(chǎng)的投入,并在整個(gè)嵌入式操作系統(tǒng)市場(chǎng)中,占據(jù)了重要地位。而嵌入式操作系統(tǒng)的領(lǐng)先廠商,也改變了原來(lái)的單一產(chǎn)品路線,開始推出自己的Linux軟件產(chǎn)品,實(shí)現(xiàn)“兩條腿走路”。國(guó)內(nèi)的嵌入式軟件廠商也以Linux為突破口,紛紛開發(fā)各種基于Linux的操作系統(tǒng)產(chǎn)品。這些嵌入式Linux廠商已經(jīng)形成了一個(gè)不容忽視的群體。
以下就從Linux開始,一層層揭開嵌入式Linux的面紗。
1.1.1 Linux發(fā)展概述
簡(jiǎn)單地說(shuō),Linux是指一套免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng)。人們通常所說(shuō)的Linux是Linus Torvalds所寫的Linux操作系統(tǒng)內(nèi)核。
當(dāng)時(shí)的Linus還是芬蘭赫爾辛基大學(xué)的一名學(xué)生,他主修的課程中有一門課是操作系統(tǒng),而且這門課是專門研究程序的設(shè)計(jì)和執(zhí)行。最后這門課程提供了一種稱為Minix的初期UNIX系統(tǒng)。Minix是一款僅為教學(xué)而設(shè)計(jì)的操作系統(tǒng),而且功能有限。因此,和Minix的眾多使用者一樣,Linus也希望能給它添加一些功能。
在之后的幾個(gè)月里,Linus根據(jù)實(shí)際的需要編寫了磁盤驅(qū)動(dòng)程序以便下載訪問(wèn)新聞組的文件,又編寫了個(gè)文件系統(tǒng)以便能夠閱讀Minix文件系統(tǒng)中的文件。這樣,“當(dāng)你有了任務(wù)切換,有了文件系統(tǒng)和設(shè)備驅(qū)動(dòng)程序后,這就是UNIX,或者至少是其內(nèi)核。”。于是,0.0.1版本的Linux就誕生了。
Linus從一開始就決定自由傳播Linux,他把源代碼發(fā)布在網(wǎng)上,于是,眾多的愛(ài)好者和程序員也都通過(guò)互聯(lián)網(wǎng)加入到Linux的內(nèi)核開發(fā)工作中。這個(gè)思想與FSF(Free Software Foundation)資助發(fā)起的GNU(GNU’s Not UNIX)的自由軟件精神不謀而合。
GNU是為了推廣自由軟件的精神以實(shí)現(xiàn)一個(gè)自由的操作系統(tǒng),然后從應(yīng)用程序開始,實(shí)現(xiàn)其內(nèi)核。而當(dāng)時(shí)Linux的優(yōu)良性能備受GNU的賞識(shí),于是GNU就決定采用Linus及其開發(fā)者的內(nèi)核。在他們的共同努力下,Linux這個(gè)完整的操作系統(tǒng)誕生了。其中的程序開發(fā)共同遵守General Public License(GPL)協(xié)議,這是最開放也是最嚴(yán)格的許可協(xié)議方式,這個(gè)協(xié)議規(guī)定了源碼必須可以無(wú)償?shù)墨@取并且修改。因此,從嚴(yán)格意義上說(shuō),Linux應(yīng)該叫做GNU/Linux,其中許多重要的工具如gcc、gdb、make、emacs等都是GNU貢獻(xiàn)的。
這個(gè)“嬰兒版”的操作系統(tǒng)以平均兩星期更新一次的速度迅速成長(zhǎng),如今的Linux已經(jīng)有超過(guò)250種發(fā)行版本,且可以支持所有體系結(jié)構(gòu)的處理器,如X86、PowerPC、ARM、Xscale等,也可以支持帶MMU或不帶MMU的處理器。到目前為止,它的內(nèi)核版本也已經(jīng)從原先的0.0.1發(fā)展到現(xiàn)在的2.6.xx。
小知識(shí) |
自由軟件(free software)中的free并不是指免費(fèi),而是指自由。它賦予使用者4種自由。 · 自由之1:有使用軟件的自由。 · 自由之2:有研究該軟件如何運(yùn)作的自由,并且得以改寫該軟件來(lái)滿足使用者自身的需求。取得該軟件的源碼是達(dá)成此目的前提。 · 自由之3:有重新散布該軟件的自由,所以每個(gè)人都可以藉由散布自由軟件來(lái)敦親睦鄰。 · 自由之4:有改善再利用該軟件的自由,并且可以發(fā)表改寫版供公眾使用,如此一來(lái),整個(gè)社群都可以受惠。取得該軟件的源碼是達(dá)成此目的前提。 GPL:GPL協(xié)議是GNU組織、維護(hù)的一種版權(quán)協(xié)議,遵守這個(gè)協(xié)議的軟件可以自由地獲取、查看、使用其源代碼。GPL協(xié)議是整個(gè)開源世界的精神基礎(chǔ)。 Linux的內(nèi)核版本號(hào): Linux內(nèi)核版本號(hào)格式是x.y.zz-www,數(shù)字x代表版本類型,數(shù)字y為偶數(shù)時(shí)是穩(wěn)定版本,為奇數(shù)時(shí)是開發(fā)版本,如2.0.40為穩(wěn)定版本,2.3.41為開發(fā)版本,測(cè)試版本為3個(gè)數(shù)字加上測(cè)試號(hào),如2.4.12-rc1。最新的Linux內(nèi)核版本可從https://www.kernel.org上獲得。 |
1.1.2 Linux作為嵌入式操作系統(tǒng)的優(yōu)勢(shì)
從Linux系統(tǒng)的發(fā)展過(guò)程可以看出,Linux從最開始就是一個(gè)開放的系統(tǒng),并且它始終遵循著源代碼開放的原則,它是一個(gè)成熟而穩(wěn)定的網(wǎng)絡(luò)操作系統(tǒng),作為嵌入式操作系統(tǒng)有如下優(yōu)勢(shì)。
1.低成本開發(fā)系統(tǒng)
Linux的源碼開放性允許任何人獲取并修改Linux的源碼。這樣一方面大大降低了開發(fā)的成本,另一方面又可以提高開發(fā)產(chǎn)品的效率。并且還可以在Linux社區(qū)中獲得支持,用戶只需向郵件列表發(fā)一封郵件,即可獲得作者的支持。
2.可應(yīng)用于多種硬件平臺(tái)
Linux可支持X86、PowerPC、ARM、Xscale、MIPS、SH、68K、Alpha、Sparc等多種體系結(jié)構(gòu),并且已經(jīng)被移植到多種硬件平臺(tái)。這對(duì)于經(jīng)費(fèi)、時(shí)間受限制的研究與開發(fā)項(xiàng)目是很有吸引力的。Linux采用一個(gè)統(tǒng)一的框架對(duì)硬件進(jìn)行管理,同時(shí)從一個(gè)硬件平臺(tái)到另一個(gè)硬件平臺(tái)的改動(dòng)與上層應(yīng)用無(wú)關(guān)。
3.可定制的內(nèi)核
Linux具有獨(dú)特的內(nèi)核模塊機(jī)制,它可以根據(jù)用戶的需要,實(shí)時(shí)地將某些模塊插入到內(nèi)核中或者從內(nèi)核中移走,并能根據(jù)嵌入式設(shè)備的個(gè)性需要量體裁衣。經(jīng)裁減的Linux內(nèi)核最小可達(dá)到150KB以下,尤其適合嵌入式領(lǐng)域中資源受限的實(shí)際情況。當(dāng)前的2.6內(nèi)核加入了許多嵌入式友好特性。
4.性能優(yōu)異
Linux系統(tǒng)內(nèi)核精簡(jiǎn)、高效并且穩(wěn)定,能夠充分發(fā)揮硬件的功能,因此它比其他操作系統(tǒng)的運(yùn)行效率更高。在個(gè)人計(jì)算機(jī)上使用Linux,可以將它作為工作站。它也非常適合在嵌入式領(lǐng)域中應(yīng)用,對(duì)比其他操作系統(tǒng),它占用的資源更少,運(yùn)行更穩(wěn)定,速度更快。
5.良好的網(wǎng)絡(luò)支持
Linux是首先實(shí)現(xiàn)TCP/IP協(xié)議棧的操作系統(tǒng),它的內(nèi)核結(jié)構(gòu)在網(wǎng)絡(luò)方面是非常完整的,并提供了對(duì)包括十兆位、百兆位及千兆位的以太網(wǎng),還有無(wú)線網(wǎng)絡(luò)、Token ring(令牌環(huán))和光纖甚至衛(wèi)星的支持,這對(duì)現(xiàn)在依賴于網(wǎng)絡(luò)的嵌入式設(shè)備來(lái)說(shuō)無(wú)疑是很好的選擇。
1.1.3 Linux發(fā)行版本
由于Linux屬于GNU系統(tǒng),而這個(gè)系統(tǒng)采用GPL協(xié)議,并保證了源代碼的公開,于是眾多組織或公司在Linux內(nèi)核源代碼的基礎(chǔ)上進(jìn)行了一些必要的修改加工,然后再開發(fā)一些配套的軟件,并把它整合成一個(gè)自己的發(fā)布版Linux。除去非商業(yè)組織Debian開發(fā)的Debian GNU/Linux外,美國(guó)的Red Hat公司發(fā)行了Red Hat Linux,法國(guó)的Mandrake公司發(fā)行了Mandrake Linux,德國(guó)的SUSE公司發(fā)行了SUSE Linux,國(guó)內(nèi)眾多公司也發(fā)行了中文版的Linux,如著名的紅旗Linux。Linux目前已經(jīng)有超過(guò)250個(gè)發(fā)行版本。
下面僅對(duì)Red Hat、Debian、Mandrake等具有代表性的Linux發(fā)行版本進(jìn)行介紹。
1.Red Hat
國(guó)內(nèi),乃至是全世界的Linux用戶最熟悉的發(fā)行版想必就是Red Hat了。Red Hat最早是由Bob Young和Marc Ewing在1995年創(chuàng)建的。目前Red Hat分為兩個(gè)系列:由Red Hat公司提供收費(fèi)技術(shù)支持和更新的Red Hat Enterprise Linux(RHEL,Red Hat的企業(yè)版),以及由社區(qū)開發(fā)的免費(fèi)的桌面版Fedora Core。
Red Hat企業(yè)版有3個(gè)版本——AS、ES和WS。AS是其中功能最為強(qiáng)大和完善的版本。而正統(tǒng)的桌面版Red Hat版本更新早已停止,最后一版是Red Hat 9.0。本書就以穩(wěn)定性高的RHEL AS作為安裝實(shí)例進(jìn)行講解。
官方主頁(yè):https://www.redhat.com/。
2.Debian
之所以把Debian單獨(dú)列出,是因?yàn)镈ebian GNU/Linux是一個(gè)非常特殊的版本。在1993年,伊恩·默多克(Ian Murdock)發(fā)起Debian計(jì)劃,它的開發(fā)模式和 Linux 及其他開放性源代碼操作系統(tǒng)的精神一樣,都是由超過(guò)800位志愿者通過(guò)互聯(lián)網(wǎng)合作開發(fā)而成的。一直以來(lái),Debian GNU/Linux被認(rèn)為是最正宗的Linux發(fā)行版本,而且它是一個(gè)完全免費(fèi)、高質(zhì)量的且與UNIX兼容的操作系統(tǒng)。
Debian系統(tǒng)分為3個(gè)版本,分別為穩(wěn)定版(Stable)、測(cè)試版(Testing)和不穩(wěn)定版(Unstable)。每次發(fā)布的版本都是穩(wěn)定版,而測(cè)試版在經(jīng)過(guò)一段時(shí)間的測(cè)試證明沒(méi)有問(wèn)題后會(huì)成為新的穩(wěn)定版。Debian擁有超過(guò)8710種不同的軟件,每一種軟件都是自由的,而且有非常方便的升級(jí)安裝指令,基本囊括了用戶的所有需要。Debian也是最受歡迎的嵌入式Linux之一。
官方主頁(yè):https://www.debian.org/。
3.國(guó)內(nèi)的發(fā)行版本及其他
目前國(guó)內(nèi)的紅旗、新華等都發(fā)行了自己的Linux版本。
除了前面所提到的這些版本外,業(yè)界還存在著諸如gentoo、LFS等適合專業(yè)人士使用的版本。在此不做介紹,有興趣的讀者可以自行查找相關(guān)的資料做進(jìn)一步的了解。
1.1.4 如何學(xué)習(xí)Linux
正如人們常說(shuō)的“實(shí)踐出真知”,學(xué)習(xí)Linux的過(guò)程也一樣。只有通過(guò)大量的動(dòng)手實(shí)踐才能真正地領(lǐng)會(huì)Linux的精髓,才能迅速掌握在Linux上的應(yīng)用開發(fā),相信有編程語(yǔ)言經(jīng)驗(yàn)的讀者一定會(huì)認(rèn)同這一點(diǎn)。因此,在本書中筆者安排了大量的實(shí)驗(yàn)環(huán)節(jié)和課后實(shí)踐環(huán)節(jié),希望讀者盡可能多參與。
另外要指出的是,互聯(lián)網(wǎng)也是一個(gè)很好的學(xué)習(xí)工具,一定要充分地加以利用。正如編程一樣,實(shí)踐的過(guò)程中總會(huì)出現(xiàn)多種多樣的問(wèn)題,筆者在寫作的過(guò)程當(dāng)中會(huì)盡可能地考慮可能出現(xiàn)的問(wèn)題,但限于篇幅和讀者的實(shí)際情況,不可能考慮到所有可能出現(xiàn)的問(wèn)題,所以希望讀者能充分利用互聯(lián)網(wǎng)這一共享的天空,在其中尋找答案。