一、前言
凡事我圖寫的文章,往往比較內(nèi)容縱深,范圍卻很窄,注重實際操作。原因
很簡單,水平有限,還達不到理論的層次,只是對片面的技術(shù)作些陳述,至于擴
充,豐富就是別人的事了。移植操作系統(tǒng)看似很玄乎的東西,其實也就是一層窗
戶紙。
事實上每每剛聽聞一件事,覺得很神秘,實實在在去接觸一點,又覺得簡單
無比,然再深入的話,卻又會覺得內(nèi)容是深不可測。現(xiàn)實往往是如此滑稽,不過
也只有在這種不斷的循環(huán)中,人才會進步。
讀完這篇文章,你會發(fā)現(xiàn)沒有談及技術(shù)內(nèi)容,全是在說“廢話”。而我一向認(rèn)
為說“廢話”這很有必要。
二、重要提示
文章難免有疏漏,會在下面地址不斷更新:
全系列文章地址:http://blog.csdn.net/liwei_cmg
文章相關(guān)的重要資源的下載地址:http://play.younet.com/view.php?tid=18578
三、認(rèn)識操作系統(tǒng)
操作系統(tǒng)的分類方式是多種多樣。如按功能特征分為批處理,分時和實時操作
系統(tǒng)。按應(yīng)用范圍分個人,網(wǎng)絡(luò),分步式和嵌入式操作系統(tǒng)。
所有分類都不是絕對的,按我個人理解,偏向于把操作系統(tǒng)作如下劃分:
◆普通PC機操作系統(tǒng)
這是我們接觸最頻繁的一類了,從早期的MS-DOS到Windows 95,Windows 98,
Windows xp以及未來的Windows Vista等,全是微軟家族的產(chǎn)品。除此以外linux
家族的RedHat Linux,Turbo Linux等,蘋果的Mac OS X也屬于這個范疇。
◆服務(wù)器操作系統(tǒng)
包括各類的大型機,小型機操作系統(tǒng),另外網(wǎng)絡(luò)操作系統(tǒng)也屬于這一類。
如基于UNIX的IBM AIX、AS系列,HP UNIX,Sun Solaris等,基于Linux的IBM
System p5系列等。
◆嵌入式操作系統(tǒng)(Embedded Operating System)
終于說到我們的E680g了。
嵌入式操作系統(tǒng)可簡單劃分為專用和普通兩種。專用嵌入式操作系統(tǒng)(如大名
鼎鼎的VxWorks)應(yīng)用范圍可謂專業(yè)。如汽車飛機,工業(yè)控制,國際空間站,火星
探險等等,通用就常見的多了,從各家手機的廣泛采用的Symbian、種類繁多的
嵌入式Linux以及逐漸沒落的Palm,和氣勢逐漸壯大的Windows CE家族,都是屬
于這個分類。
我們的E680g采用的就是嵌入式Linux家族為首的MontaVista Linux操作系統(tǒng)。
四、Linux圖形化歷程
注:此段文章綜合了眾多資料,主要引用個人電腦的文章
談起OPIE,就不能不談Qt,然而要對Qt有個來龍去脈的認(rèn)識,需要從Linux
圖形化說起。讓我們回顧下Linux圖形化界面發(fā)展的歷史。
Linux實際上是以UNIX為模板的,它繼承了UNIX內(nèi)核設(shè)計精簡、高度健壯的特
點,無論系統(tǒng)結(jié)構(gòu)還是操作方式也都與UNIX無異。Linux本身也是沒有圖形界面,
只是一個基于命令行的操作系統(tǒng)。
早在Linux之前,Unix的圖形界面一向是以麻省理工學(xué)院(MIT)的X Window
系統(tǒng)為標(biāo)準(zhǔn)。不過,X Window(請注意不是X Windows)并不是一個直接的圖形操
作環(huán)境,而是作為圖形環(huán)境與UNIX系統(tǒng)內(nèi)核溝通的中間橋梁,任何廠商都可以在
X Window基礎(chǔ)上開發(fā)出不同的GUI圖形環(huán)境。MIT目的只在于為UNIX系統(tǒng)設(shè)計一套
簡單的圖形框架,以使UNIX工作站的屏幕上可顯示更多的命令。許多UNIX廠商在
X Window原型上開發(fā)適合自己的UNIX GUI視窗環(huán)境,其中比較著名的有SUN與AT&T
聯(lián)手開發(fā)的“Open Look”、IBM/HP主導(dǎo)下的OSF(Open Software Foundation,開
放軟件基金會)開發(fā)出的“Motif”。經(jīng)過多年競爭,Motif最終勝出,成為普遍使
用的界面庫。不過,Motif只是一個帶有窗口管理器(Window-Manager)的圖形界
面庫(Widget-Library),而非一個真正意義上的GUI界面。經(jīng)過協(xié)商之后IBM/HP
與SUN決定將Motif與Open Look整合,并在此基礎(chǔ)上開發(fā)出一個名為“CDE(Common
Desktop Environment) ”的GUI作為UNIX的標(biāo)準(zhǔn)圖形界面。
遺憾的是,Motif/CDE和UNIX系統(tǒng)的價格都非常昂貴,而當(dāng)時微軟的Windows發(fā)
展速度驚人并率先在桌面市場占據(jù)壟斷地位,CDE則一直停留在UNIX領(lǐng)域提供給root
系統(tǒng)管理員使用,直到今天情況依然如此。
上個世紀(jì)九十年代中期,以開源模式推進的Linux在開發(fā)者中已經(jīng)擁有廣泛的
影響力。盡管X Window已經(jīng)非常成熟,也有不少基于X Window的圖形界面程序,
但它們不是未具備完整的圖形操作功能就是價格高昂(如CDE),根本無法用于
Linux系統(tǒng)中。如果Linux要獲得真正意義上的突破,一套完全免費、功能完善的
GUI就非常必要。
在這時,挪威TrollTech一批程序員抓住機遇推出了Qt,一個跨平臺的C++圖
形用戶界面庫。基本上,Qt同X Window上的 Motif、Open Look、GTK等圖形界面
庫和Windows平臺上的 MFC、OWL、VCL、ATL是同類型的東西,但Qt具有優(yōu)良的跨
平臺特性(支持Windows、Linux、各種UNIX、OS390和QNX等)、面向?qū)ο髾C制以
及豐富的API,同時也可支持2D/3D渲染和OpenGL API。
1996年10月,由開發(fā)圖形排版工具Lyx的德國人Matthias Ettrich發(fā)起了KDE
(K Desktop Environment)計劃。在當(dāng)時的同類圖形用戶界面庫產(chǎn)品中,Qt的功能
最為強大,Matthias Ettrich在發(fā)起KDE項目時很自然選擇了Qt作為開發(fā)基礎(chǔ)。
KDE本身采用GPL(GNU通用公共許可證)宣言的,但是KDE底層的基礎(chǔ)卻是Qt。
Qt是一個不遵循GPL的商業(yè)軟件,一大批自由程序員對KDE項目的決定深為不
滿,它們認(rèn)為利用非自由軟件開發(fā)違背了GPL的精神,于是GNU擁護者,一批人去
開發(fā)Harmonny(Harmony是一個兼容替代庫,設(shè)計用來在沒有Qt的情況下也有可能
運行KDE軟件。),試圖重寫一套兼容于Qt的替代品,另一一批由一個墨西哥程序
員Miguel De Icaza組織下重新開發(fā)了一套稱為GNOME(GNU Network Object
Enviroment)來替代KDE。
Linux業(yè)界老大RedHat不喜歡KDE/Qt的版權(quán),甚至專門派出了幾個全職程序員
來加入GNOME的開發(fā)工作,于是一場與Motif和Openlook相似的圣戰(zhàn)就這么打起來
了。
Trolltech為了KDE曾數(shù)次修改Qt的版權(quán),從成立KDE Free Qt 基金會到采用
GPL,可謂是費盡心機,但是GNOME采用的GTK從一開始就是完全的GPL,因此在這個
方面GNOME有一定的優(yōu)勢,加上Qt/KDE采用C++,在當(dāng)時并不為很多人熟悉,因此
GNOME吸引了更多的自由軟件開發(fā)者,但是KDE畢竟先走一步,推出的KDE1.1.2也十
分穩(wěn)定,而當(dāng)時急忙中推出的GNOME1.0的系統(tǒng)穩(wěn)定性奇差,有人甚至笑稱GNOME1.0
還沒有KDE1.0Alpha穩(wěn)定。
2000年,可謂是風(fēng)云突變,一個接一個重大的事件先后發(fā)生: 首先是一批從
Apple公司出來的工程師成立了一個Eazel的公司替GNOME設(shè)計界面,然后是一批
GNOME程序員成立了一個Helix Code公司替GNOME提供商業(yè)支持,而大家期待以久的
KDE 2.0也終于發(fā)布了,這也是相當(dāng)龐大的自由軟件,除KDE本身,還包括Koffice
套件和集成開發(fā)環(huán)境Kdevelop等等一大批軟件,其主力軟件Kounqueror也是第一個
可以同微軟的InternetExploer相抗衡的瀏覽器。
寫到這里,我只想說一句,偉大的開源奉獻精神!
五、Qt在嵌入式操作系統(tǒng)的發(fā)展過程
Qt最初是作為一個跨平臺(Win32、Mac、Unix)的C++GUI庫開發(fā)的。在2000年
TrollTech發(fā)布了Qt的嵌入式版本。到目前分為四個版本:Win32版,適用于Windows
平臺;X11版,適合于使用了X系統(tǒng)的各種Linux和 Unix平臺;Mac版,適合與蘋果
MacOSX;embedded版,適合于具有幀緩沖(frame buffer)的Linux平臺。
Qt在剛出現(xiàn)的時候,對于Linux和Unix系統(tǒng),只有構(gòu)建于Xlib之上的X11版。但
隨著Linux操作系統(tǒng)在嵌入式領(lǐng)域的應(yīng)用日漸廣泛,Qt推出了嵌入式的版本Qt-embedded
即Qte。由于嵌入式受限的硬件環(huán)境往往難以運行龐大的X服務(wù)器,Qt的嵌入式版跳過
了Xlib和XServer,直接操作幀緩沖,很大的提高了速度,縮減了體積。
Qtopia最初是sourceforge.net上的一個開源項目,全稱是Qt Palmtop Environment,
是構(gòu)建于Qte之上一個類似桌面系統(tǒng)的應(yīng)用環(huán)境,包括了PDA和手機等掌上系統(tǒng)常見
的功能如電話簿、日程表等。現(xiàn)在Qtopia 已經(jīng)成為了Trolltech的又一個主打產(chǎn)品,
為基于Linux操作系統(tǒng)的PDA和手機提供了一個完整的圖形環(huán)境。
值得注意的是,Qte和Qtopia之間的關(guān)系。在版本4之前,Qte和Qtopia是不同的
兩套程序,Qte是基礎(chǔ)類庫,Qtopia是構(gòu)建于Qte之上的一系列應(yīng)用程序。但從版本
4開始,Trolltech將Qte并入了Qtopia,并推出了新的Qtopia4。在該版中,原來的
Qte被稱為Qtopia Core,作為嵌入式版本的核心,既可以與Qtopia配合,也可以獨
立使用。原來的Qtopia則被分成幾層,核心的應(yīng)用框架和插件系統(tǒng)被稱為 Qtopia
Platform,上層的應(yīng)用程序則按照不同的目標(biāo)用戶分為不同的包,如Qtopai PDA,
Qtopia Phone等。
六、OPIE(Open Palmtop Integrated Environment)
OPIE全稱為開放掌上電腦集成環(huán)境。是基于Qtopia,最類似于桌面領(lǐng)域中的KDE,
是為掌上電腦專門設(shè)計的LINUX操作系統(tǒng)。OPIE操作系統(tǒng)完美地支持Motorola的A、E
系統(tǒng)的智能手機使用的硬件設(shè)施,并且兩者有著相同的LINUX內(nèi)核模塊。OPIE操作系
統(tǒng)可以理解為就是一個界面接口程序。
七、寫在最后
通過這些內(nèi)容我們大體得知,普通PC的Linux操作系統(tǒng)架構(gòu)如下:
Linux Kernel + XLib + GLib + GNOME GNOME/GTK
Linux Kernel + XLib + Qt + KDE KDE/Qt
而在一般采用Qt嵌入式操作系統(tǒng)的架構(gòu)如下:
Linux Embedded Kernel + Framebuffer + Qte + Qtopia
我們再來看E680g操作系統(tǒng)的架構(gòu):
MontaVista Linux Kernel + Framebuffer + Qte + ezx圖形庫
這樣看來,似乎要移植OPIE操作系統(tǒng),只需要重新交叉編譯一下即可。我們將
在下文做一次實際的完整操作。
新聞熱點
疑難解答
圖片精選