一、前言
凡事我图写的文章,往往比较内容纵深,范围却很窄,注重实际操作。原因
很简单,水平有限,还达不到理论的层次,只是对片面的技术作些陈述,至于扩
充,丰富就是别人的事了。移植操作系统看似很玄乎的东西,其实也就是一层窗
户纸。
事实上每每刚听闻一件事,觉得很神秘,实实在在去接触一点,又觉得简单
无比,然再深入的话,却又会觉得内容是深不可测。现实往往是如此滑稽,不过
也只有在这种不断的循环中,人才会进步。
读完这篇文章,你会发现没有谈及技术内容,全是在说“废话”。而我一向认
为说“废话”这很有必要。
二、重要提示
文章难免有疏漏,会在下面地址不断更新:
全系列文章地址:http://blog.csdn.net/liwei_cmg
文章相关的重要资源的下载地址:http://play.younet.com/view.php?tid=18578
三、认识操作系统
操作系统的分类方式是多种多样。如按功能特征分为批处理,分时和实时操作
系统。按应用范围分个人,网络,分步式和嵌入式操作系统。
所有分类都不是绝对的,按我个人理解,偏向于把操作系统作如下划分:
◆普通PC机操作系统
这是我们接触最频繁的一类了,从早期的MS-DOS到Windows 95,Windows 98,
Windows xp以及未来的Windows Vista等,全是微软家族的产品。除此以外linux
家族的RedHat Linux,Turbo Linux等,苹果的Mac OS X也属于这个范畴。
◆服务器操作系统
包括各类的大型机,小型机操作系统,另外网络操作系统也属于这一类。
如基于UNIX的IBM AIX、AS系列,HP UNIX,Sun Solaris等,基于Linux的IBM
System p5系列等。
◆嵌入式操作系统(Embedded Operating System)
终于说到我们的E680g了。
嵌入式操作系统可简单划分为专用和普通两种。专用嵌入式操作系统(如大名
鼎鼎的VxWorks)应用范围可谓专业。如汽车飞机,工业控制,国际空间站,火星
探险等等,通用就常见的多了,从各家手机的广泛采用的Symbian、种类繁多的
嵌入式Linux以及逐渐没落的Palm,和气势逐渐壮大的Windows CE家族,都是属
于这个分类。
我们的E680g采用的就是嵌入式Linux家族为首的MontaVista Linux操作系统。
四、Linux图形化历程
注:此段文章综合了众多资料,主要引用个人电脑的文章
谈起OPIE,就不能不谈Qt,然而要对Qt有个来龙去脉的认识,需要从Linux
图形化说起。让我们回顾下Linux图形化界面发展的历史。
Linux实际上是以UNIX为模板的,它继承了UNIX内核设计精简、高度健壮的特
点,无论系统结构还是操作方式也都与UNIX无异。Linux本身也是没有图形界面,
只是一个基于命令行的操作系统。
早在Linux之前,Unix的图形界面一向是以麻省理工学院(MIT)的X Window
系统为标准。不过,X Window(请注意不是X Windows)并不是一个直接的图形操
作环境,而是作为图形环境与UNIX系统内核沟通的中间桥梁,任何厂商都可以在
X Window基础上开发出不同的GUI图形环境。MIT目的只在于为UNIX系统设计一套
简单的图形框架,以使UNIX工作站的屏幕上可显示更多的命令。许多UNIX厂商在
X Window原型上开发适合自己的UNIX GUI视窗环境,其中比较著名的有SUN与AT&T
联手开发的“Open Look”、IBM/HP主导下的OSF(Open Software Foundation,开
放软件基金会)开发出的“Motif”。经过多年竞争,Motif最终胜出,成为普遍使
用的界面库。不过,Motif只是一个带有窗口管理器(Window-Manager)的图形界
面库(Widget-Library),而非一个真正意义上的GUI界面。经过协商之后IBM/HP
与SUN决定将Motif与Open Look整合,并在此基础上开发出一个名为“CDE(Common
Desktop Environment) ”的GUI作为UNIX的标准图形界面。
遗憾的是,Motif/CDE和UNIX系统的价格都非常昂贵,而当时微软的Windows发
展速度惊人并率先在桌面市场占据垄断地位,CDE则一直停留在UNIX领域提供给root
系统管理员使用,直到今天情况依然如此。
上个世纪九十年代中期,以开源模式推进的Linux在开发者中已经拥有广泛的
影响力。尽管X Window已经非常成熟,也有不少基于X Window的图形界面程序,
但它们不是未具备完整的图形操作功能就是价格高昂(如CDE),根本无法用于
Linux系统中。如果Linux要获得真正意义上的突破,一套完全免费、功能完善的
GUI就非常必要。
在这时,挪威TrollTech一批程序员抓住机遇推出了Qt,一个跨平台的C++图
形用户界面库。基本上,Qt同X Window上的 Motif、Open Look、GTK等图形界面
库和Windows平台上的 MFC、OWL、VCL、ATL是同类型的东西,但Qt具有优良的跨
平台特性(支持Windows、Linux、各种UNIX、OS390和QNX等)、面向对象机制以
及丰富的API,同时也可支持2D/3D渲染和OpenGL API。
1996年10月,由开发图形排版工具Lyx的德国人Matthias Ettrich发起了KDE
(K Desktop Environment)计划。在当时的同类图形用户界面库产品中,Qt的功能
最为强大,Matthias Ettrich在发起KDE项目时很自然选择了Qt作为开发基础。
KDE本身采用GPL(GNU通用公共许可证)宣言的,但是KDE底层的基础却是Qt。
Qt是一个不遵循GPL的商业软件,一大批自由程序员对KDE项目的决定深为不
满,它们认为利用非自由软件开发违背了GPL的精神,于是GNU拥护者,一批人去
开发Harmonny(Harmony是一个兼容替代库,设计用来在没有Qt的情况下也有可能
运行KDE软件。),试图重写一套兼容于Qt的替代品,另一一批由一个墨西哥程序
员Miguel De Icaza组织下重新开发了一套称为GNOME(GNU Network Object
Enviroment)来替代KDE。
Linux业界老大RedHat不喜欢KDE/Qt的版权,甚至专门派出了几个全职程序员
来加入GNOME的开发工作,于是一场与Motif和Openlook相似的圣战就这么打起来
了。
Trolltech为了KDE曾数次修改Qt的版权,从成立KDE Free Qt 基金会到采用
GPL,可谓是费尽心机,但是GNOME采用的GTK从一开始就是完全的GPL,因此在这个
方面GNOME有一定的优势,加上Qt/KDE采用C++,在当时并不为很多人熟悉,因此
GNOME吸引了更多的自由软件开发者,但是KDE毕竟先走一步,推出的KDE1.1.2也十
分稳定,而当时急忙中推出的GNOME1.0的系统稳定性奇差,有人甚至笑称GNOME1.0
还没有KDE1.0Alpha稳定。
2000年,可谓是风云突变,一个接一个重大的事件先后发生: 首先是一批从
Apple公司出来的工程师成立了一个Eazel的公司替GNOME设计界面,然后是一批
GNOME程序员成立了一个Helix Code公司替GNOME提供商业支持,而大家期待以久的
KDE 2.0也终于发布了,这也是相当庞大的自由软件,除KDE本身,还包括Koffice
套件和集成开发环境Kdevelop等等一大批软件,其主力软件Kounqueror也是第一个
可以同微软的InternetExploer相抗衡的浏览器。
写到这里,我只想说一句,伟大的开源奉献精神!
五、Qt在嵌入式操作系统的发展过程
Qt最初是作为一个跨平台(Win32、Mac、Unix)的C++GUI库开发的。在2000年
TrollTech发布了Qt的嵌入式版本。到目前分为四个版本:Win32版,适用于Windows
平台;X11版,适合于使用了X系统的各种Linux和 Unix平台;Mac版,适合与苹果
MacOSX;embedded版,适合于具有帧缓冲(frame buffer)的Linux平台。
Qt在刚出现的时候,对于Linux和Unix系统,只有构建于Xlib之上的X11版。但
随着Linux操作系统在嵌入式领域的应用日渐广泛,Qt推出了嵌入式的版本Qt-embedded
即Qte。由于嵌入式受限的硬件环境往往难以运行庞大的X服务器,Qt的嵌入式版跳过
了Xlib和XServer,直接操作帧缓冲,很大的提高了速度,缩减了体积。
Qtopia最初是sourceforge.net上的一个开源项目,全称是Qt Palmtop Environment,
是构建于Qte之上一个类似桌面系统的应用环境,包括了PDA和手机等掌上系统常见
的功能如电话簿、日程表等。现在Qtopia 已经成为了Trolltech的又一个主打产品,
为基于Linux操作系统的PDA和手机提供了一个完整的图形环境。
值得注意的是,Qte和Qtopia之间的关系。在版本4之前,Qte和Qtopia是不同的
两套程序,Qte是基础类库,Qtopia是构建于Qte之上的一系列应用程序。但从版本
4开始,Trolltech将Qte并入了Qtopia,并推出了新的Qtopia4。在该版中,原来的
Qte被称为Qtopia Core,作为嵌入式版本的核心,既可以与Qtopia配合,也可以独
立使用。原来的Qtopia则被分成几层,核心的应用框架和插件系统被称为 Qtopia
Platform,上层的应用程序则按照不同的目标用户分为不同的包,如Qtopai PDA,
Qtopia Phone等。
六、OPIE(Open Palmtop Integrated Environment)
OPIE全称为开放掌上电脑集成环境。是基于Qtopia,最类似于桌面领域中的KDE,
是为掌上电脑专门设计的LINUX操作系统。OPIE操作系统完美地支持Motorola的A、E
系统的智能手机使用的硬件设施,并且两者有着相同的LINUX內核模块。OPIE操作系
统可以理解为就是一个界面接口程序。
七、写在最后
通过这些内容我们大体得知,普通PC的Linux操作系统架构如下:
Linux Kernel + XLib + GLib + GNOME GNOME/GTK
Linux Kernel + XLib + Qt + KDE KDE/Qt
而在一般采用Qt嵌入式操作系统的架构如下:
Linux Embedded Kernel + Framebuffer + Qte + Qtopia
我们再来看E680g操作系统的架构:
MontaVista Linux Kernel + Framebuffer + Qte + ezx图形库
这样看来,似乎要移植OPIE操作系统,只需要重新交叉编译一下即可。我们将
在下文做一次实际的完整操作。
新闻热点
疑难解答
图片精选