You are on page 1of 141

卷首语

卷首语

企业的“社区”属性

现在还清晰地记得,在 2007 年 3 月 14 日,上班打开邮箱,一条名为“鼓舞人心的消息”的邮件
引起了我的注意,根据来信地址看出是在加拿大的一个朋友发来的,第一时间的告知了当年在
OLS(Ottawa Linux Symposium)大会上将有四篇来自中国的文章发表的消息,让中国的国旗插在了
OLS 官方网站的文章发表页里,而在这之前,也就是 1999-2006 年,中国一共只发表了三篇文章。
Ottawa Linux Symposium,是开源领域公开的高级别大会,而此次大会中国有四篇文章发表,
与德国,巴西,日本等国一起名列第四,如果这个成绩能保持下去,中国人在开源领域的贡献就已经可
以与传统西方国家(美国除外)平起平坐了。而在此在此之前,中国一直被认为是开源社区的索取者,
消费者,而非贡献者,此次四篇文章的发表,预示着中国对国际开源社区的贡献已从消费者到参与者,
甚至是贡献者的角色转变。
OLS 大会上的“翻身仗”,其重要意义在于国内的开源社区经过一段时间的培育,已经正式开始
开花结果了,并且开始站在国际的先进行列,这是开源社区的一次转变,某种意义上也可以认为是国内
开源社区的一场翻身仗。
中国开源软件联盟主席陆首群就曾多次表示,“中国 Linux 开发最大的问题是没有建立起 Linux
社区,因而就不能充分利用开源社区的资源;在中国,目前只有企业在封闭环境内在从事 Linux 的开发,
执行 GPL 规则方面也不力,这种状况必须改变。假如中国真正能成立 Linux 社区,它将充分利用全球社
区的人才和资源来更好地为我们开发产品服务,同时也可培养我们自己的软件大师。”
四篇文章的其中三篇来自于 Intel 开源软件技术中心(OTC),一篇来自于合肥中科大。一直以
来,我国的开源厂商与开源社区发展都处于一个失衡的位置,国内几乎没有产生过具有全球影响力和大
批活跃爱好者的社区,开源厂商与社区长期处于完全脱节的发展状态。而此次三篇来自于 Intel OTC 的优
秀文章向人们展示了更多的厂商参与到开源,并且积极的为开源做出贡献,而 Intel OTC 的三篇文章的作
者,既可以认为是 Intel 的员工,也可以被认为是开源社区的一员,至少在该次大会上他们既代表了 Intel
也代表了中国,而挂上的也是中国的五星红旗。
开源社区从广义上可以认为只要为开源工作都算为社区的一员,即所做的研发是准备开源的。参
与开源社区的工作,形式上可以直接加入国际的邮件列表参与讨论(比如 Intel OTC),也可以建立本地
的开源组织,通过论坛,邮件列表的形式参与讨论(比如 Linuxpk 社区)。因此此次四篇文章的发表不
仅是 Intel OTC 在国内研发的成果,也可以看作是国内开源社区对国际开源社区的一种贡献。
国内开源社区一直发展不太顺利,其主要原因在于很难在中国开源社区找到比较有价值的项目和缺乏相
关基金会在资金上的大力支持,一些公司想投资却找不到很好的有商业价值的开源项目,反过来,开源

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》
卷首语

社区因为没有足够的资金做支持,很难很好的发展下去,结果好象形成了一个恶性循环。
Intel OTC 从在中国的成立开始,就担负起了建设中国开源社区的使命。Intel OTC 的众多项目
(Xen、moblin 等)也是国际领先的开源虚拟化项目,在资金投入方面也是大手笔,这很好的解决了中国
开源社区形成规模的瓶颈。Intel OTC 在中国的成立并不断发展壮大,更似为中国的开源社区注入了一剂
强心剂,为中国的开源社区建设增添了活力。
中国的开源社区光靠 Intel OTC 是肯定不够的,需要更多的开源人士的参与,需要更多有实力的
研究机构的参与,也需要更多优秀的开源项目投放到中国的开源社区进行研发。而作为开源的企业,或
者是支持开源的企业,所从事的开源项目,最终都将回馈给开源社区,因此,无论是其个人还是该团队,
都将会被打上开源社区的标签,具有开源社区的属性。在目前我国开源形式逐步深化发展的情况下,在
开源社区需要得到更多注目及培育的情况下,我们需要更多具有社区属性的企业投身社区,支持社区,
我们需要更多的企业引入或发起在国际上具有影响力的开源项目,投入中国开源社区的培育与建设,只
有这样,建设具有国际品质的开源社区才不是一句空话。
今天,Intel OTC 已经在中国发展数年并且壮大起来,在中国开源领域及事务上越来越具有主导
权和话语权,而其对开源社区的培养也正在落到实处。EMC 的毛文波博士也正在带领一支队伍从事一些
开源的项目的研发,涉足中国的开源社区。希望在可预见的将来,有着更多的 XXX OTC 在中国成立、发
展,从事开源工作,参与我国的开源事务,培育我国的开源社区,企业的参与将对我国开源社区的培育
起到至关重要的作用。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》
目录

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》
目录
目录

卷首语..............................................................................................................................................................2

产业聚焦..........................................................................................................................................................7

倪光南、陈怀临受聘《开源》顾问.................................................................................................................7
最有可能被封杀的开源项目.............................................................................................................................8
ASIANUX MOBILE 继续进军 NETBOOK................................................................................................................10
最新国产 LINUX 智能手机抢鲜看....................................................................................................................11
提早收钱 戴尔中止 WINDOWS XP 预装..........................................................................................................12
红帽 CEO:良好业绩归功于甲骨文并购 BEA...............................................................................................13
LINUX 与 WINDOWS 结合 IBM AKKA 问世.......................................................................................................14
JAVA 实现完全开源...........................................................................................................................................15
RICHARD STALLMAN 中国行北京站....................................................................................................................16
FIREFOX 3.0 一周下载量破 2000 万.................................................................................................................18
浏览器之争战火再燃.......................................................................................................................................21
一个时代结束:比尔·盖茨人生掠影.............................................................................................................33

博客文摘........................................................................................................................................................40

为什么说,微软是我们的朋友?...................................................................................................................40
文档格式的“真实的谎言”...........................................................................................................................42
开源软件渐成主流...........................................................................................................................................45

开源社区........................................................................................................................................................50

项目动态...........................................................................................................................................................50
FIREFOX 3.0 发布 微软 IE 小组献上蛋糕.........................................................................................................50
CENTOS 5.2 正式发布.......................................................................................................................................51
UBUNTU 8.10 INTREPID IBEX ALPHA 1 发布...........................................................................................................52
ARCH LINUX 2008.06 发布..................................................................................................................................53
OPENSUSE 11.0 正式版提供下载.....................................................................................................................54
惊艳的 UBUNTU 8.10 主题.................................................................................................................................55
MOBLIN 应用开发者大会——越南站记行......................................................................................................57
ENTERPRISE 2.0 开源技术趋势..........................................................................................................................62

知识学堂........................................................................................................................................................68

LINUX 下设备完全驱动(一)........................................................................................................................68
DEBIAN 与创始者 IAN MURDOCK........................................................................................................................78

经验技巧........................................................................................................................................................84

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》
目录
LINUX 一句话精彩问答——系统配置篇(4)..............................................................................................84
以及其开源软件替代方案(一)...................................................................................................................89
轻松玩转 FIREFOX(1)...................................................................................................................................94
深入理解 SETUID...........................................................................................................................................100

企业应用......................................................................................................................................................109

OSIMS——基于开源的 IMS 核心网...........................................................................................................109
使用开源 CRM 进行客户管理......................................................................................................................119

嵌入式..........................................................................................................................................................125

如何成为一个优秀的程序员.........................................................................................................................125
PXA 272 开发经验总结.................................................................................................................................132
谈谈写程序与学英语.....................................................................................................................................134

编读往来......................................................................................................................................................140

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》
产业聚焦

产业聚焦

倪光南、陈怀临受聘《开源》顾问

应《开源》杂志邀请,倪光南院士,陈怀临先生受聘为《开源》顾问,将对今后的《开源》电子杂
志在方向上进行把握,在电子杂志出版中予以指导,在重大选题上给予支持。

在《开源》创刊初期,倪光南院士就在百忙之中予以了指导,提出许多宝贵意见,鼓励杂志编辑部成
员并充分肯定了杂志的创办意义。倪光南院士认为,我国开源事业的环境仍不够好,开源媒体(尤其是
传统纸媒上)遇到了很多困难,《开源》杂志的创办开启
了一种新的媒体模式,这对于目前我国的开源事业将有很
大的促进作用,因为在大多数人看来,电子杂志和纸面媒
体的传播效果是类似的。对于杂志坚持了五期,并有了良
好的下载量和读者反馈,倪光南院士给予了充分的肯定,
认为杂志的存在是难能可贵的,只要持之以恒,必将会有
更多热爱开源的读者支持。

倪光南简介:

1961 年毕业于南京工学院(现东南大学), 首创在汉字输入中应用联想功能,中科院计算所公司(联
想前身)和联想集团首任总工程师。主持开发了联想式汉字系统、联想系列微型机,分别于 1988 和 1992
年获得国家科技进步一等奖,联想集团即以联想式汉字系统起家并由此而得名。

1994 年被遴选为首批中国工程院院士,现为中国中文信息学会理事长,中科院计算所研究员。

陈怀临简介:

亚嵌教育首席科学家。系统计算研究所(www.xtrj.org)创办人和首席科学家,《弯曲评论》
(www.tektalk.cn)创办人和首席科学家。主要从事系统软件研发和信息产业战略研究,评论工作。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》7
产业聚焦
  现在美国硅谷从事芯片研究工作。精通 MIPS、PowerPC 体系结构。他著作的书籍深受网友的欢迎:
《Linux 内核分析》、《MIPS 结构剖析,编程与实践》、《 PowerPC 结构剖析与 Linux》。

最有可能被封杀的开源项目

SourceForge 一年一度的“社区选择奖”正在紧锣密鼓的筹办当中,预计正式提名名单将于近期公布。
有意思的是,SourceForge 让下属的 geek 网站创始人 CmdrTaco 命名一个新的奖项类别,CmdrTaco 提出的
名称叫做——“最有可能被政府封杀的项目”。在统计了读者的留言和提议后,正式提名名单已经公布,
分别是:Truecrypt(加密工具)、EFF Patent Busting(寻找对公众利益损害最严重的专利)、GNU
Software Radio(开放软件无线电项目)、WikiLeaks(泄密网站)、Cryptome.org(公开间谍机构绝密档
案的网站)、Tor(匿名服务)、Freenet(分布式的 P2P 网络服务),最后一个则是匿名懦夫
(CowboyNeal)。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》8
产业聚焦

全球最快计算机 Roadrunner 运行 Linux

IBM 最近发布了全球最快的计算机“ Roadrunner ”,其运算速度已突破 1/Flops ,每秒能够完成 1000
多万亿次运算。它的计算速度是以前的世界记录保持者 Blue Gene (同为 IBM 研发)的两倍以上。而运
行在 Roadrunner 上的操作系统正是 Red Hat Linux 。

据国外媒体表示, Roadrunner 的成本是 1.33 亿美元, Roadrunner 共采用了 116640 个处理器,其中
12960 个是经过改良的 IBM Cell 8 核微处理器,该处理器最初为 PS3 游戏机设计。Roadrunner 还采用了
6948 个由 AMD 公司生产的 双核 Opteron 处理器。
可以说 Linux 操作系统占据了超级计算机系统的大半江山。有数据称在全球 500 强的超级计算机中,
运行着 Linux 的超级计算机已超过七成,而且这个数字还在继续增加。大量的超级计算机选用 Linux 作
为操作系统,这也和 Linux 优秀的资源管理等能力是密不可分的。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》9
产业聚焦

Asianux Mobile 继续进军 Netbook

近日,Asianux 今天宣布旗下的 Asianux Mobile 产品线继续延伸,提供对基于 Intel ATOM 处理器的新
一代 Netbook 产品的支持。Asianux Mobile Netbook Edition 与 moblin.org 技术和 Atom 平台相整合,为用
户提供了启动速度更快、电池续航能力更强、互联网及多媒体体验更独特的的新设备。这是继 Asianux
Mobile Midinux 在 MID 领域获得成功后,Asianux 与 Intel moblin.org 的又一次重要牵手。

Asianux Mobile Netbook Edition 继承了 Asianux Mobile 的技术优势及完善的产品生态,并集成了
Haansoft Thinkfree 这款基于互联网的办公软件,为 Netbook 提供更具有互联
网特色的 Linux 系统解决方案。系统拥有易用的用户界面、丰富的互联网和多
媒体应用,强大的电源管理技术,以及灵活的可定制特性。同时 Asianux 的
“4-Co” 商业模式和不断增加的联盟成员将为客户提供更便捷的本地化服务,
能够帮助客户在最短的时间内推出个性化的产品。
面向快速增长的移动计算市场,同时满足多种设备融合的趋势,小而精的
产品,高而不贵的市场定位,相信 Netbook 不久将迅速占领相当规模的市场。
作为 Intel 公司紧密的合作伙伴,Asianux 正在全力开发新的产品,提供更优质的本地化服务,共同把握巨

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》10
产业聚焦
大的商业机遇。
Asianux 公司总裁耿增强表示,“新的市场机遇令我们感到振奋通过在 MID 领域与 Moblin 的合作,
使得我们能够迅速推出面向 Netbook 的产品,我相信 Netbook 会取得巨大成功。”
“Netbook 产品对 Linux 的需求远大于我们的想象”,Intel 开源技术中心总监 Ram Peddibhotla 表示,
“过去我们与 Asianux 建立了良好的伙伴关系,现在 Asianux 在 Netbook 上的产品也是基于 Moblin 开发的,
我们将会联合推出一个稳健的解决方案,给基于 Intel 平台的 Netbook 用户带来全新的互联网和多媒体应
用体验。”

最新国产 Linux 智能手机抢鲜看

深圳的某国产手机制造商近期推出了 4 款其研发的 Linux 智能手机。

它们支持无线局域网络 WiFI、WAP 2.0 无线上网、手写等功能,其中有一款还自带了生物指纹系统。
这几款新手机采用的是 TDA Linux Mobile Edition 操作系统。据制造商表示,Linux 架构和实时操作系统
相结合,满足了现代操作系统在智能手机上的完美实现,提供丰富的硬件设备支持和系统功能调用。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》11
产业聚焦

TDA Linux Mobile Edition 操作系统的截图

该 Linux 智能手机可以很轻松的实现电子邮件收发,Word、Excel、PPT、PDF 的阅读以及支持众多
主流媒体文件的播放及查看。功能算是比较强大,当然你也可以安装更多的软件扩展更多你的所需功能。

提早收钱 戴尔中止
Windows XP 预装

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》12
产业聚焦
戴尔之前宣布了一项 20-50 美元有偿从 Windows Vista 降级到 XP 的计划,现在这一计划可能要提前了,
这也意味着戴尔将提早收“降级费”。
从 6 月 26 日开始,戴尔将比微软提前四天让 XP 成为历史,549 美元以上的 Inspiron 和 XPS 的操作系
统预装都将不再可选 XP,具体时间是 June 26th,6:59AM EST。

红帽 CEO:良好业绩归功于甲骨文并购 BEA

尽管美国的经济总体陷入衰退,但是开源软件上红帽(Red Hat)的业绩依然不错。这其中部分原因
归结于新产品对于收入增长促进,而部分原因竟然归结于另一个软件巨人甲骨文公司。红帽首席执行官
吉姆·卫赫士 (Jim Whitehurst)在 2009 财季电话会议上总结了公司整个财季的财政表现,他相信甲骨文并
购 BEA 是红帽收入增长的一个重要驱动力。
红帽在截止于 5 月 31 日的 09 财年的第一季度
力业绩颇丰。在上个季度,公司成功实现了 1730
万美元的纯利润,约合每股 8 美分,公司销售额
增长 32%,达 1.566 亿美元。而在去年同期,Red
Hat 公司的纯利润仅有 1620 万美元。如果不考虑
偿还短期债务所支付的资金,Red Hat 公司在 09
财年第一季度的纯利润将达 3700 万美元,约合每
股 18 美分。
  卫赫士在电话会议上表示,“甲骨文并购
BEA 从某种程度上导致了行业竞争的脱位。我并
不是说甲骨文并购的方式有问题,而是当你进入了一个竞争对手较少的领域,公司之间偶然的接触会使
得双方更加倾向于在对方身上寻找合作机会,这很显然被证明非常符合我们的利益。”
甲骨文曾于今年一月份成功并购了全球领先的应用基础结构的中间件(middleware,对应用程序隐藏
了实际网络和通信协议的细节的软件)软件公司 BEA。因为此前红帽的 JBoss 中间件部门一直在和 BEA
竞争企业市场。因此,此次的并购使得甲骨文直面红帽的竞争。此外在 Linux 平台上,甲骨文的
Unbreakable Linux 也在和红帽展开竞争。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》13
产业聚焦
  卫赫士指出,JBoss 业务总体来说进展得非常顺利,今年早些时候推出的诸如 JBoss SOA 平台的新产
品也的销售额也已达到了六位数字。尽管没有道出美国纽约证券交易所(NYSE)交易对其自家财政表现
的具体影响,红帽还推出了 JBoss Operations Network(JON)以及红帽企业版 linux(RHEL,redhat
enterprise linux)。
总而言之,红帽 CEO 卫赫士很高兴地看到自己领导的企业正行驶在正确的航线上,就算宏观经济再
如何衰退,卫赫士也不必像其他企业主那样过度担心。

Linux 与 Windows 结合 IBM Akka 问世

近日,IBM 展示了可同时运行 Windows 和 Linux 操作系统的超级计算机 Akka 系统。Akka 被安装在
位于瑞典北部的高性能计算中心(HPC2N),是 IBM 最高性能的超级计算机系统之一。
根据业界的测算,在高性能计算(HPC)领域,Linux 操作系统占据了 85%左右的份额,而 Windows
只占据了不到 5%。推出 Akka 系统的目的在于推进 Windows 系统在高性能计算领域的影响力。Akka 系统
采用了低功耗的英特尔四核至强 L5420 处理器,包含 672 个节点,每个节点配备两颗处理器和 16GB 内存,
总体核心数量达到了 5,376 个,内存容量达到 10.7TB。除此之外,系统也采用了一小部分 Power 处理器和
Cell 带宽引擎,用来开发新的并行算法。
IBM 和 HPC2N 表示,得益于采用了低功耗的英特尔四核至强 L5420 处理器,Akka 系统将成为世界
上能效最高的超级计算机之一,并将作为最具能效的 Windows 群集进入全球“绿色 500 强(Green 500
list)”。HPC2N 主管 Bo Kagstrom 表示:“采用低功耗处理器以及高能效设计机房,将使我们的 HPC2N 变
成一个绿色的数据中心。”Kagstrom 还表示:“这是 HPC2N 中首个可以同时运行 Linux 和 Windows 操
作系统的超级计算机,我们非常激动地期待着两种不同操作系统的整合和利用所带来的新成果。”
据称, 用户在 6 月 25 日可以开始利用 Akka 系统的 Linux 功能,而 Windows 功能将在今年秋天开始
提供。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》14
产业聚焦

Java 实现完全开源

在 2006 年 5 月的 Java One 会议上,Sun 表示将以 GPL 协议开源 Java,这项工作始于当年 11 月,次年
5 月的 Java One 会议上,Sun 表示这项工作已经接近完成,并发布了 OpenJDK,但是其中的一些组成部分,
例如加密库,图形库和一些 SNMP 管理代码仍然不能提供基于 GPL 的版本,这些组件占到了总平台代码
数量的 4%到 5%(整个项目约有 650 万行代码),因为这些代码并不归 Sun 所有。
为此在同年 6 月,Red Hat 发起了 IcedTea 项目,旨在攻克这一部分代码,利用之前 GNU Classpath 项
目的部分成果,终于在不久前取得了突破性进展。
目前安装在 Fedora 9 上的 OpenJDK 已经可以完全通过 Java TCK(Test Compatibility Kit)兼容测试,
这项复杂测试本身的源代码就超过了 100 万行。这也意味着 OpenJDK 提供了所有的 Java API 和其他 Java
SE 6 所拥有的特性。Java 已经完全实现了开源。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》15
产业聚焦

Richard Stallman 中国行北京站
◆亚嵌教育专题报道

2008 年 5 月 31 日,哲思自由软件峰会在清华大学主楼报告厅隆重举行。受哲思自由软件邀请,自由
软件的创始人和精神领袖 Richard Stallman 现场做了两个多小时的演讲,与会的演讲嘉宾还有倪光南院士,
王星耀院长,宫敏博士以及哲思自由软件社区的创始人徐继哲。亚嵌教育第 12、13、14 期嵌入式系统工
程师就业班的在读学员及往届的老学员 100 多人参加了此次峰会。6 月 1 日,Richard Stallman 应邀参观访
问了亚嵌 AKAE 嵌入式研究中心,与学员们见面并合影留念,这是亚嵌学员的荣幸,也是嵌入式 Linux
业界对亚嵌教育多年来成绩的认可。
倪光南院士“向自由软件学习什么”揭开了本次峰会的序幕。他讲到的关于软件的知识产权问题,
也是在场很多人关注的一个问题。Sun 公司副总裁,Sun 中国工程研究院王星耀院长就 Open Source at Sun
主题进行了演讲,主要阐述了 SUN 公司的开源战略和对社区的贡献。
宫敏博士背磁盘的故事带给大家很大的感动和震撼。在瑞典研究院的时候,听到一个关于“为什么
Linux Kennel 最早产生在了芬兰而没出现在瑞典”的讨论,有人说因为芬兰有一个世界上最大最全的源代

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》16
产业聚焦
码库,于是他将这个“库”全部拷贝在磁盘上背回来了……宫博士对推动我国信息产业部在开源软件的
理解和使用方面,做出了很大的贡献。

图 1 Richard Stallman 头戴斗笠身着黑袍向大家致意

主角 Richard Stallman 上场了,给人的最深印象就是他的大肚子和大胡子,他的确是当之无愧的自由
软件的无冕之王,演讲打个赤脚就上场了。他的观点大概有以下几点:自由软件的定义;要能够自由的
运行;用户能够得到软件的源代码;用户可以把软件自由拷贝给其他用户;用户可以自由的修改软件,
并提交给社区等。

他在自己的演讲中一再强调,自由软件不是免费软件,也不是开源软件,“……Software should be
自由‘ but not ‘免费’”,他基本不懂中文,但是“自由”和“免费”发音还是很标准的。Linux 只是一
个自由软件系统的内核,没有 Linux,GNU 软件照样可以运行在其它的内核上。所以说 Linux 一定要加上
GNU slash Linux (GNU/Linux)。Microsoft,Adobe,Apple 这些公司的软件都不是 Free Software,他们窥
视用户的隐私,让用户成为他们的奴隶。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》17
产业聚焦

图 2 Richard Stallman 应邀参观亚嵌教育

Richard Stallman 简介:

自由软件黑客和活动家,GNU 工程的创始人,GNU General Public License 作者。他是 GNU Compiler
Collection 的主要作者,同时还开发了 GNU Symbolic Debugger,GNU Emacs 和很多其他 GNU 软件。他获
奖众多,包括美国计算机学会 Grace Murray Hopper 奖,MacArthur Foundation fellowship,电子边疆基金
会先锋奖,Takeda Award for Social/Economic Betterment 和数个荣誉博士头衔。

FireFox 3.0 一周下载量破 2000 万

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》18
产业聚焦
Mozilla FireFox 3.0 Web 浏览器发布已经整整一周时间,它的下载量突破了 2000 万,仅仅这一数字就
占浏览器市场的 0.62%,而 Opera 只有 0.71%。
FireFox 3.0 的下载量依然在增加,但在日用户量 1.7 亿中所占的比重并不大,这是因为 Mozilla 还没
有启动针对 FireFox 2.0 的升级推送,也许是有一些升级后的兼容性问题还没有解决,相信在未来的 2-3 个
月里,Mozilla 就会将所有 FireFox 2 用户升级到最新版本。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》19
产业聚焦

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 合作邮箱:xiaoli@Linuxpk.com 《开源》
20
产业聚焦

浏览器之争战火再燃
◆陈杰

打开 www.w3counter.com 网站,这里采用 Fisher 统计算法,通过在 4000 多个网站的 1500 多万访问者
使用浏览器进行技术推断,从而得出一组统计的数字,每隔十天公布一次统计数字,相当准确。通过最
近的一组数据,我们发现,Internet Explorer 6.0 和 7.0 版本分别占据 43.33%和 19.22%的份额,Firefox 一
举达到了 27%的占有率,而 Opera 占有 1.39%,苹果的 Safari 占有 1.95%的份额。IE 的市场份额不断的缩
水,Firefox 已经迎头赶上,Opera、Sarfari 等浏览器也在不断吞噬着原本属于 IE 的市场份额,Web 浏览器
再次形成了两强相争的格局,而 Sarfari 在 Mac OS 上,Opera 在移动终端上也取得了很大的优势,IE 一统
天下的时代已经离我们远去了。

浏览器的过去

十年前,比尔盖茨 40 岁,是当时全球最富有的人,而他创办的微软公司 20 岁,是全球最大的软件公
司。当时的微软可谓是意气风发,不仅在桌面操作系统领域独霸天下,还推出 Windows NT 进军网络操作
系统领域。在无限风光的背后,谁也没想到威胁已经悄然降临。
危险的来临并不是毫无征兆的。早在 1993 年 5 月,伊利诺斯州大学的天才少年马克.安德森就开发了
第一个 Web 浏览器——Mosaic。1994 年他和 Jim Clark 成立了网景公司(Netscape),同年 10 月发布了

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》21
产业聚焦
Netscape Navigator 0.9 版本。微软虽然随后发布了它的浏览器软件 Internet Explorer,但并没有预见到网络
时代的迅速到来,而仅仅是将 IE 浏览器看作一个普通应用软件。
1995 年网景公司的股票上市,Netscape 浏览器几乎拿下了整个浏览器市场,这个时候微软才觉察到
自己战略上的失误,开始花大力气试图力挽狂澜。经过两年多的拼命反击,最后采用了与操作系统捆绑
销售的策略,微软成功击败了网景,此举几乎霸占了全球的 Web 浏览器市场。

回顾这段历史,我们能清晰地发现,IE 是通过与 Windows 的捆绑销售才有了今天的市场份额,对于
这样的做法,有人认为这种做法忽略了用户的选择,是不可取的。也有人认为这是商业竞争的必然,看
看现在 IE 的流行程度,就发现微软当初的策略是正确的。Opera 中国子公司欧普拉软件公司总经理阮哲
伟表示:“对于微软当初这
样的做法,很多人士认为这
样是不道德的,微软完全将
自己的意愿强加给了用户,
而并不是让用户自由的去进
行选择,也剥夺了用户自由
选择的权利。虽然微软凭借
这一策略占据了 Web 浏览器
市场,但也为 IE 留下了非常
不好的口碑。”
历史到了今天,我们发
现对于这段经典的浏览器之
战并没有一个盖棺定论的说
辞,因为微软浏览器的竞争
并没有因为 Netscape 的衰败
而终结,新一轮的浏览器之战一直在酝酿之中。

火狐的崛起

十年后的今天,比尔盖茨 50 岁了,依然是全球最富有的人。微软公司也已经迈入了而立之年,但仍
旧是全球最大的软件公司。不同的是,人们基本上已经将微软的 IE 与 Web 浏览器之间划上了等号。然而,
江湖上从来不缺乏勇于挑战强权的侠客,风平浪静的湖底其实已经暗流汹涌。各路英雄好汉虽然还没有
正式打出“打倒 IE”的大旗,但早已经蠢蠢欲动。在这些挑战者中,不乏名声响当当的人物,如拥有

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》22
产业聚焦
Firefox 的开源组织 Mozilla 基金会、以 Opera 浏览器而闻名的挪威 Opera 公司,以及大名鼎鼎的苹果公司。
这其中,Firefox 被推上了前台,成为了再次与 IE 抗争的急先锋。
在最近一年时间里,微软 IE 浏览器的市场份额开始下降,越来越多的网络调查机构发布数据称,目
前 FireFox 浏览器在全球拥有四分之一的市场份额,而保守的估计也认为,2006 年 FireFox 浏览器的市场
份额提升了已经达到 17.4%,微软的 IE 同比下滑了 9.6%,市场分额为 63.9%。如果说这些数据可能存在
误差的话,FireFox 的全球下载量或许更能说明问题。根据最新的下载统计,FireFox 浏览器的扩展速度达
到了指数级增长,自从 2004 年 Mozilla 基金会发布开源 FireFox 浏览器之后,FireFox 下载量从刚开始的 1
亿次攀升到 2 亿,目前已经达到 4 亿次。而下载量暴增的原因普遍认为 Firefox 为用户提供了更好、更快、
更个性化的网络体验。从用户体验的角度分析,FireFox 浏览器已经成为时尚人群生活不可或缺的一部分。
无论是微软发布 IE 7.0 版本还是关于 Firefox 不断出现的安全漏洞,这些都无法减弱人们对 Firefox 的
热情,“跳槽”到 Firefox 已经成为一种时尚的选择。
虽然 Firefox 在全球已达到 20%的市场份额,但是在中国,Firefox 的处境却不容乐观,保守估计
Firefox 在中国本地市场的占有率尚不足 1%。面对中国如此庞大的用户群体,如何提高 Firefox 在中国的
市场份额成为 Mozilla 的当务之急。作为 Mozilla 在中国的全资子公司,谋智网络 CEO 宫力博士表示:
“中国市场份额过低,宣传和用户习惯成为主要问题。由于在国内的宣传不够,很多用户不了解
Firefox,所以也就不考虑使用。反过来,由于用户群太少,网站就不会考虑与 Firefox 的兼容性问题。如
果中国使用量超过 5%~10%,那很多人就要考虑 Firefox 的存在,所以我们的首要任务考虑的是增加用户
量。Firefox 的全球目标是从 20%突破 30%,该目标有望在 2008 年达到。对于中国,我们首要目的就是赶
上目前的全球份额。”
对于 2005 年还在微软 Windows Live 中国担任总经理的宫力,如今却来到了微软的死对头开源组织,
他认为他的首要任务就是加大 Firefox 在中国的推广,宫力介绍说:“我们中国这边主要通过三方面来扩
大 Firefox 在中国的影响,扩大在中国的市场份额。首先我们会进行多层面多方位的市场推广,提高
Firefox 在中国用户中的认知度,比如将很快在北大、清华、北航、南开等四所高校开展’校园大使’活
动,让更多大学生使用 Firefox。而且我们还大力发展合作伙伴,目前 Mozilla 最主要的合作伙伴是
Google,2006 年 Mozilla 总收入 6900 万美元的收入绝大多数来自与 Google 的合作。最重要的一块内容就
是加强产品的本土化,在插件、定制等方面更适合中国用户的需求,目前 Firefox 共有 3000 多个插件,但
专门针对中国市场的非常少,我们将引导加强这方面开发。”

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》23
产业聚焦

Mozilla 在中国的成员,右 3 为宫力博士

移动新平台

随着互联网和手持设备的流行,越来越多的用户喜欢通过手持设备随时随地访问网络,传统 PC 平台
的浏览器之争也随之蔓延到了移动平台,若在新兴的移动平台获得较大市场份额无疑会占据 Web 浏览器
竞争的制高点。对于 w3counter 统计的在 PC 平台上不足 1%份额的 Opera 浏览器,在移动平台上却处于领
先地位。据国外媒体报道,Opera 的移动 Web 浏览器 Opera Mini 在推出几个月之后,共吸引了全球 200 万
用户。虽然每个用户不是每天都浏览网页,但是每天通过 Opera Mini 浏览器访问的网页数量达到 4 百万
页,这点表明了 Opera 已经在移动用户中变得非常流行。网页在 Opera Mini 的压缩下,通常大小为 10~
20Kbit,以现在的使用量计算,大约每天产生的数据量为 38~76Gbit,这点证明了 Opera Mini 可以为运营
商带来丰厚的利润。
自从 2005 年 T-Mobile 在他们的手机上加载了 Opera Mini 浏览器后,移动浏览器已经被证实了其经济
效用。在使用 Opera Mini 的第一个月,平均每个用户每月访问网页的数量为 330 页,这也使得移动数据
传输增长了 489%。
阮哲伟向记者介绍到,“Opera 其实在各个平台上都有自己的产品,在 PC 平台上甚至是跨操作系统
的浏览器,在 Windows、Linux 和 Mac Os 操作系统上,我们都有不少的客户,只是 Opera 在移动终端做

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》24
产业聚焦
的非常出色,让不少用户以为我们只针对移动终端了。其实浏览器的使用习惯是非常重要的一个因素,
当用户习惯了一种浏览器的操作习惯后很难再去选择另外的浏览器,这让我们也看到了机会,因为我们
在移动终端拥有的用户数是非常大的,并且保持了一个高增长的速度。而这些用户在移动平台上习惯了
Opera 浏览器,无疑也会将 Opera 的浏览器带到 PC 平台上,扩大我们在 PC 平台的市场份额。”

opera 运行在移动终端上

而在 PC 端已经战绩不俗的 Mozilla 也在积极的向移动领域开拓,Mozilla 开发小组一直在努力开发一
种名为“Minimo”的移动浏览器,并推出了 Minimo 0.2 版本。这个软件是 Firefox 浏览器的简装版本,能
够在智能手机等移动设备上运行。而且,同 Firefox 浏览器一样,Minimo 也是开源软件,可以不交专利费
免费使用,在利润率很低的手机行业,免费应用将使 Minimo 具有更大的优势。
同时,包括芯片制造商 Marvell、SAMSUNG、Texas Instruments 在内的企业也公布了一项基于 ARM
处理器的 Linux 手机新平台合作计划,将与 Mozilla 等软件合作厂商共同开发开源 Linux+GNOME 移动用
户平台的产品。FireFox 将成为未来该移动平台在互联网和媒体应用上的先头部队,并计划在短期内讨论
出基本的标准,于 2008 年早期完成平台的基础开发,09 年提供第一波产品。

标准成为障碍

中国有句俗话,叫做“没有规矩,不能成方圆”。这里面的规矩也就是一些规则,在现代商业社会
存在各种各样的规则,但规则达到一定规模,并达到潜移默化的水准时,就成为了标准。在 IT 领域,厂
商、技术、产品种类繁多,需要各种各样的标准加以约束、规范。在 Web 浏览器领域,标准更显得格外
重要,如果缺乏一个开放的标准,那将存在浏览器间互不兼容,网站遵从于不同浏览器进行开发,最终

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》25
产业聚焦
导致用户为了流览整个互联网的网站而不得不在不同的浏览器进行切换。
在 IE 统治浏览器市场的年月里,IE 的标准成为了浏览器的事实标准,网站几乎都基于 IE 的标准进行
开发。然而标准是需要具有开放性的,厂商私有的标准因为缺乏开放性,使得 Web 开发商很难进行第三
方的定制开发。为解决 Web 应用中不同平台、技术和开发者带来的不兼容问题,保障 Web 信息的顺利和
完整流通,万维网联盟制定了一系列标准并督促 Web 应用开发者和内容提供者遵循这些标准。但是,
W3C 制定的 web 标准似乎并非强制而只是推荐标准。
目前的很多网站仍然基于 IE 的标准开发,造成 Firefox、Opera 等浏览器无法正常浏览,对于这样的
现象,宫力给出了自己的看法:“Firefox 是基于国际的开放的标准开发的,然而国内很多网站以前是基
于 IE 标准开发的,这造成了 Firefox 浏览这类网站出现问题。其实这有着方方面面的原因,因为我国信息
化程度不高,尤其是对标准缺乏一个统一的认识,造成了网站开发滞后于国际标准。相信随着 Firefox 的
普及,越来越多的网站开发者会意识到这样的问题,从而改变这一现状。”
阮哲伟对于这种观点也表示认同,并指出网站开发者从基于 IE 的标准过渡到国际标准是很轻松的,
只需要对前端页面进行修改,同时他也指出了另外一种现象:“比如微软有个 ActiveX 控件,过去的网站
都是基于这个控件进行开发,现在发现,很多安全问题都来自于这个不安全的控件,目前就连微软也表
示不再支持 ActiveX 了。然而国内银行的网络银行,很多仍然基于 ActiveX,这就造成了 Opera 的用户无
法登陆网上银行,但即使这样,我们也不会去支持这个不安全的控件,我们寄希望于银行意识到这样的

问题,因为这样才能提高网络银行的安全性。”
除了不同浏览器之间的不兼容,IE 浏览器与 Web 标准的不一致性也广招非议。当 IE 7.0 无法通过
Web 标准项目(WaSP) 的标准测试后,这一消息也引起了 Web 开发商和客户的广泛注意。互联网上出现了
许多争论,甚至有人呼吁联合抵制 IE。开发人员和标准组织声称,如果微软能够更好地遵循 Web 标准,
企业和与 Web 密切相关的组织能节约很多资源,Web 就能够以更低的代价,更迅速地增长。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》26
产业聚焦

Google 的开源平衡措施

◆Linuxpk.com Hugh 编译

Google 的开源项目经理克里斯·迪邦纳(Chris DiBona)的职责就是采取平衡措施。
Google 为其高利润的生意使用了大量的开源软件。但他监管这个搜索巨擎的开源工作,必须保证它
给开源软件予回报。它不能只接纳不付出。
自由、开源软件爱好者们是强有力的同盟,但也是口头批评家。例如,有些人批评 Google 缺少对
Affero GPL 许可证的支持,这个许可证要求那些使用软件
提供公用网络服务的人们将其对 AGPL 软件项目所做的修
改予以共享。
但迪邦纳认为 Google 通过将其对开源项目所做的修改
贡献回给开源项目、总体上提倡开源哲学和尝试培养下一
代的开源程序员而达到了平衡。
迪邦纳已埋头于开源软件十余载。在加入 Google 前,
他在 Slashdot 工作,那里现在仍是有影响力的开源软件讨论
的虚拟蒸馏器。Slashdot 曾是 Linux 服务制造商 VA Linux
Systems 的一部分。VA Linux Systems 曾在 1999 年有过一个
壮观的 IPO,不过不久后又猛烈地缩回去了。
迪邦纳会在星期三的 Google I/O conference 上宣讲开源的福音――根据其宣传口号“开源太好了,因
此也必须神奇!”但我要先和他坐下来,倾听他对开源软件在 Google 的观点。

问:Google 内部对开源的看法?

答:我问过我自己“我在向谁讲演?”开源事业?不是。开源爱好者?也不是。我其实是在寻找可以
共同工作的开源开发者。我们组有如下目标:总体上支持开源的发展,意味着支持开源的基础设施、支
持开源代码的发布,不管是 Google 内部还是总体上的、再有就是创造更多的开源开发者,因为尤其当我
刚加入,大家都觉得 Google 从开源世界带走了很多人并走开了。部分正确,因为人们会来到这里说“噢,
我一直在我的开源项目上工作,我现在想找个新的问题来解决,”然后我们在新的问题上好好上一课,
所以说,某种程度上说,他们走开了。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》27
产业聚焦
那可太不好了。我们做为一个公司,最不想的就是对开源软件的发布有任何伤害,因为我们认为那非
常重要。开源软件我们用得非常非常多。每个我们招进来的工程师――他们想要使用多少开源软件?我
们一直都在引进新的软件包和库文件。追踪这些就是我们组的工作。当我们招进新人的时候,我们想要
保证能分行出更多开源开发者。所以我们有 Google Summer of Code,而且现在还有中学版的。我认为我
们在开源软件创造新人方面起了非常大的作用。

问:我对是将更改贡献给上游项目还是由自己来维护感到很好奇。你们对此是怎么评估的?

答:Google 认为有些项目要比其它的更重要。很显然,Linux 内核就特别的重要。每次使用
Google,你用的都是运行着 Linux 内核的机器。我们有个非常庞大的内核组,而且我们雇佣专门在外围内
核上工作的人。Andrew Morton 就是其中之一。我们尽量确保这些人及时的修补内核(将他们的修改向主
要的开源项目提交)通常都是取决于工程师们的时间而不是我们愿不愿意。我总是希望我们能发布得更多,
但要做到这些,工程师们需要时间。从大的成就来说,现在更容易了,因为有更多的人手了。
编译器(将程序员的代码翻译成电脑能理解的指令的软件)方面也是一样。我们的编译器组很伟大,主
要是他们把打补丁作为他们的的工作。他们总是将内部工作的编译器上补丁发布给外界。我们最近发布
了新的连接器——Gold。Ian Lance Taylor 在编译器组工作。他一直在 GCC 组工作。他过去在 Cygnus (一
家开发 GCC 的公司)工作。我们有很多的前 Cygnus 的人。
再有就是 Googler 们想要向已有的项目打补丁。他们发现个程序缺陷,他们想要添加某个功能。这根
本不费时间。我们组首先看一下工程师要发送出去的前几个补丁,确定他们知道自己在向外界做什么,
然后他们就可以放手去干了。他们只要通知我们他们在给什么打补丁就可以了。我们希望我们的代码能
够尽可能快地发送到那些项目处,因为开源项目总是在发布新版本。如果你不能及时的将补丁送达,他
们将不会接受,因为要么就是补丁太陈旧了,要么就是无关紧要了。如果你有个补丁,能够快速送达到
各个开源项目对我们来说更有益,因为那样的话,当项目再发新版本时并到了我们公司时,我们就不必
再打补丁了。

问:你们所采用的开源项目中哪些是最重要的?

答:内核,编译器,GCC,Python 解释程序。Python 对我们来说非常重要。Google App Engine 基本
上就是一个 Python 做的系统。Java 对我们来说非常的重要,而且它现在也变成开源的了。我们这里有一
些非常棒的 Java 专家 Josh Block,Neil Gafter 他们对这项技术掌握得很好。
一旦那三个(编译器、语言和内核)搞定,接下来就是库文件。对我们来说,
OpenSSL、zlib、PCRE。MySQL 对我们来说特别重要。除此之外,好像真就没啥了。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》28
产业聚焦

问:Java 的开源改变了你们的什么吗?

答:其实没有。我认为它对外面的世界改变得更大。Java 现在是个相当成熟的语言了。我们使用它已
经有好长时间了。以前是 JCP(the Java Community Process 掌管 Java 的未来)――以前它也标榜着开放。但
它从未特别开放。现在有问题就是关于围绕开源对于 Java 有何意义,尤其是 J2ME(Java 用于手机 gadgets
的移动版本)和 TCK(the technology compatibility kit 技术兼容包)。

问:你们是用完全自己定制的还是原封不动的 Linux 内核?

答:我并不认为有定制的 Linux 内核一说。内核很灵活。它可用在所有不同的架构上。我认定内核本
身就是个完全可自己定制的东西。

问:那你们有很多的内部定制吗?

答:不多。Google 的信息在向世界提供前会先暴露给一些有趣的硬件。所以,在内部我们为那个硬件
写例码。但最终这些代码会被公之于众。我们资助了 Berkeley 的一个叫做 Xorp 组织,它们要将 Broadcom
的高速网络芯片移植到 Linux 上。我们并没有兴趣控制它。所以它是定制的吗?绝对是。但它是高度定制
的吗?我认为并不是像你们想得有那么高度定制。

问:你们还在用 2.4 版本的内核,真的吗?

答:有些地方是这样。

问:那么核心的搜索产品呢?

答:我不太清楚那是怎么区分的。当你想到 Google 时,你就会认为搜索是在某个静止的内核上,但
事实并非如此。数据中心这间不尽相同。但我认为应该是 2.6 版本的是主流。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》29
产业聚焦

问:曾有过互惠方面的讨论。当通用公众许可证(GPL)版本 3 发布时,自由软件基金(Free Software
Foundation)将 Affero 条款排除 GPLv3 之外并将之分开另成一个许可证。Eben Moglen(软件自由法律中
心的联合创始人也是曾经的自由软件基金会的律师)解释说,“如果 Google 变得太过寄生,我们会对其进
行重新评估。”您对使用超过付出而产生负面感觉有何忧虑吗?

答:我当然忧虑。我认为那大体上是不正确的感知。你总是可以付出更多,但总有人认为感到不满
足。我们还可以回报更多吗?当然。我改善这个问题的其中一个方法就是通过像 Summer of Code 这样的
项目。Google 每年,不包括像 Android 或者像 GWT 这样的非常大的,每隔一两周就发布一个新的开源项
目。或是每个月都对成百上千个项目打补丁。我保守估计我们每年从这家公司发布大约一百万行代码。
如果你和开源开发者——那些在开源项目上工作的人谈到这些,我想他们会理解的。对于我们来说是我
们要和谁互动。我总是觉得爱好者社区最终会理解的,我认为是这样的。有些人因为我们没有拥抱 Affero
形式的 GPL 便感到愤怒,但对于我们来说那么做是不切合实际的。当他们在 GPLv3 中有了个 Affero 形式
的条款,我告诉 Eben 的是“听着,你可以采用任何你想要采用的东西。我们仍会尽可能地支持 FSF 和
SFLC,但这意味着我们不能在内部使用这个许可证,因为这样做对我们来说不切合实际。”我认为这是
一个比较符合实际的回复。Affero 发布出来了。它对于那些使用它对人很不错。但对我们来说不行。
这就是自由软件。你不必为使用它而负有任何的义务。在公司内我们有很好的控制,我们不使用我们不
想用的东西。

问:你们比较偏向于哪些许可证?

答:我们通常是在 Apache 许可证——Apache 2 下发布东西。我们认为那是所有许可证中语言使用得
最恰当的。GPL 需要许多的管理--要想在这一许可证下运行好一个项目所需要的时间超过我们所能给
的——打补丁流程及其它种种。Apache 2 鼓励人们把东西拿过去就用。这正是我们在发布代码时要做的,
不管理人们是否要采用我们喜欢的技术,或是 API 例子。就是说,我们曾在 GPL, LGPL, GPL 版本 3, BSD
下发布东西。我们默认的是 Apache 许可证。

问:你们在何种程度上资助专家们坐在一起在重要的项目上工作?

答:我们有 Jeremy Allison 和 Andrew Morton 还有 Guido(van Rossom)的一些时间。他很大的精力都放
在了 Google App Engine 和 Mondrian 上。通常都是我们……尽量让开源成为他们工作的一部分,所有他们

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》30
产业聚焦
给他们在用的库文件打补丁。我们认为这比单用一些人专门在某个开源项目上工作要更健康一些。

问:你们内部使用很多的开源软件。那你们在使用之前会有诸如知识产权之类的审查或者评审吗?

答:当然。我们有两种方式。当有人想要从外界带进来一些代码--开源的或者商用的--你需要将
其放入一个特殊的,我们叫做“第三方”的目录下。它们要被放到一个叫做 readme.google 里(来描述)他
们在哪里获得的软件,使用什么样的许可证,许可证被归类于哪一种类下。我们只寻找那些有清楚明了
许可证的。有些项目知识产权归属模糊,我们知道它们,我们知道谁在运营它们,我们从不会使用它们。
因为 Google 并不发行很多的软件,因此我们要比那些销售硬件和软件的公司要轻松得多。有些情况
下,许可证上确实要费些力 --Google Search Appliance,及一些可下载的应用程序。它们需要一些格外
的注意力。类似地,像大一点的项目,如 Google Android,我们会有高一些规格的待遇--每两周我们就
到一起看许可证展望发生了改变。
追踪模式对我们来说很管用。我们写的工具可以让程序经理或发行经理将警告调至某一级别,它会
告诉他们在用什么开源软件及如何遵守其许可。在临近软件发布时我们会为他们建立一个镜像。
这就是我们追踪事情的第一种方式。第二种就是无论何时 Googler 向某个更改列表添加东西――我们
正在开始做的事――我们用我们的 Code Search 产品将其与因特网上所有的已知开源代码进行比较。我们
将那份来自于 Google 工程师的更改列表与代码数据库的进行比较寻找相同之处。当我们发现了相同之处,
我们会仔细看一看是否是完全相同。如果完全相同,我们要确保它被放到正确的目录下并且贴上相应的
标签。如果不完全相同,我们会召集那个工程师以确保贴对标签并且在许可证许可的范围内做事。
那个工具还处在初始阶段。我们正尝着使其自动化。但它很了不起因为它要比对大量的语法。我们
组的目标就是不打断项目建设或终止开发。它使得开发者能够尽可能多地使用开源软件。我们认为这很
健康,因为他们不是写那些代码,而是用它写别的代码。

问:你们会确认代码是否注册专利或版权了吗?

答:不会。我们的列表里有法务人员。我们有两个主要的列表用来追踪这些事情。对进来的代码进
行开源验证并对发布的代码进行开源。有法律参与的。专利方面的东西不能掉以轻心。

问:如果在维护自己的开源产品或补丁方面有经验的话,是不是能更容易的被 Google 雇佣?

答:如果你在开源方面小有名气,那当然有帮助了。如果你拥有一个健康的开源项目,我相信会很

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》31
产业聚焦
有帮助的。我在招聘委员会上所看到的就是,如果某人有开源的背景,那就非常棒。你只要看他的背景
就可以了。面试是重要,但不会很深入。仅仅是四十五分钟而已。如果某个人善长编程或计算机科学,
你能测得出吗?

问:如果在社交关系方面有经验呢?

答:开源对此的显现非常的快速。你可以看一看他们的代码,看一看他们在邮件列表上参与的活动,
他们如何与真实的人们之间交流关于程序缺陷的问题,以及真实用户的问题。这可是份无价的资源。
Summer of Code 并不是用来招聘的。如果是的话,代价可太高昂了。去年参加的 900 名学生写了二百多
万行开源代码。其中有三分之一的会继续在他们的项目上工作,因为其余的要回到学校去上课。
有的学生已经在他们的项目上工作了两三年了。我们的主要目的是让这些学生在暑假时能做一些编程方
面的东西而是去做那些和计算机科学搭不上边的工作。今年是第四年了。已经有 95 个国家的 1109 名学生
报名参加了。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》32
产业聚焦

一个时代结束:比尔·盖茨人生掠影

北京时间 6 月 6 日消息,据国外媒体报道,微软董事长比尔·盖茨(Bill Gates)将于下月退出日常管理工
作,而把精力专注于慈善事业。虽然他仍将继续担任微软董事长,但退出日常管理工作后,将意味着微
软发展史中“盖茨时代”的结束。
  以下就是微软董事长盖茨 13 个人生精彩剪影:

图 1:作为哈佛大学的一名辍学生,盖茨与保罗·艾伦(Paul Allen)于 1975 年创建了微软公司。图 1 为
1978 年微软早期员工的一张集体照。时年 23 岁的盖茨位于第一排左 1,艾伦则位于右 1。

  

图 2:到 1980 年时,盖茨和微软已向 IBM 的首款个人电脑(PC)发放
MS-DOS 操作系统许可证。图 2 为 1984 年的盖茨照片。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》33
产业聚焦
  

图 3:从上个世纪 90 年代中期到晚期,应该算是微软的“黄金时代”,当时该公司不断推出新软件,
投资者为其强大的盈利能力而欢呼雀跃。1995 年,盖茨和微软推出了 Windows 95 操作系统。

  图 4:微软在个人电脑市场占据优势地位后,盖茨成了科技界明星人物。图 4 为 1996 年盖茨与美国
前总统克林顿在一起。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》34
产业聚焦

  
图 5:1997 年,盖茨与老对手史蒂夫·乔布斯(Steve Jobs)“一笑泯恩仇”,并结束了与苹果长时间的争
执。

  图 6:盖茨还积极推动微软进入国际市场。1999 年,他与中国数家 PC 制造商高管共同宣布一项协议,
使中国用户能够利用微软操作系统在家中下载电影、音乐和收发电子邮件。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》35
产业聚焦

图 7:1999 年,美国特纳电视网络(TNT)制作发行了一部名为《硅谷海盗》(Pirates of Silicon Valley)的
电影,影片主要讲述了盖茨和乔布斯两人的创业经历。其中盖茨由安东尼·迈克尔·霍尔(Anthony Michael
Hall)扮演,乔布斯由诺亚·怀尔(Noah Wyle)扮演。

图 8:1999 年底,一名美国联邦法官认定,微软一而再、再而三地滥用其 Windows 操作系统市场优

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》36
产业聚焦
势地,以扼杀科技市场的竞争和创新。在该法官宣布上述裁决的第一天,微软股价应声下跌。

  图 9:2001 年,盖茨参观美国佛罗里达州迈阿密市一所中学,并宣布微软将捐款 110 万美元,用于提
高佛罗里达州南部学校的计算机教学水平。2000 年,盖茨辞去微软首席执行官(CEO)一职,转而担任公司
首席软件架构师。

  图 10:比尔-梅琳达·盖茨基金会已经向美国及其他国家和地区提供大量捐款。2005 年,盖茨夫妇到
印度访问。微软在印度设有软件开发业务,盖茨基金会则为该国该国预防艾滋病工作积极捐款。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》37
产业聚焦

  图 11:2006 年 6 月,盖茨对外宣布,自己将退出微软日常管理工作,“我相信微软将会顺利完成过
渡工作。”

  
图 12:2007 年 1 月,盖茨与微软 CEO 史蒂夫·鲍尔默(Steve Ballmer)共同发布 Windows Vista 操作系统。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》38
产业聚焦

  图 13:从下月开始,盖茨将正式退出微软日常管理工作,但仍然担任董事长一职。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》39
博客文摘

博客文摘

为什么说,微软是我们的朋友?

◆袁萌
博客地址:http://blog.csdn.net/yuanmeng001

6 月 17 日,视窗模拟器 WINE 1.0 正是发布了,不见国内有深度的报道和分析,有些让人不解。在
Linux 操作系统上,能够跑 Windows 应用程序,难道不值得我们庆贺一番?本短文,要说说其中的道理。
每一款软件都是针对特定的操作系统编写的。在以往时光,把 Windows 平台上运行的程序,硬要搬
到 Linux 平台上运行,那简直就是一种瞎想(指没有根据的乱想)。实际上,问题不那么简单。15 年前,
微软成功地把 Windows 程序推到 PC 计算机上,人们开始意识到有实际上的必要把 Windows 应用程序搬
到别的操作系统上运行。1992 年 9 月,Sun 公司的 Wabi 软件包就让用户这么做了(但是,只能把
Windows 程序搬到 Solaris 平台上)。1993 年 6 月,有人想在 Linux 平台上实现这种“瞎想”,几个在当
时很知名的 Linux 内核开发者参与其中,该项开发计划从此定名为“WINE”(“WINE Is Not an Emulator
”)。后来这项开发计划,历尽坎坷,许多商业软件公司企图插手。但是,在 2002 年 3 月,经过全球开发
社区的投票表决,使其重新回归到自由的软件阵营,开始了快速发展。至今,已有 700 多人贡献出自己
的程序源代码,使 WINE 有 140 万行 C 源代码程序。WINE 1.0 真是来之不易呀!
今年,2 月 21 日,微软开放了许多 API 程序接口及其文档,我们似乎无动于衷,看也不看一眼。让
我们想一想,WINE 在黑暗中摸索了整整 15 年,才得以发布 WINE 1.0 版本,使得 Windows 应用程序可
以在 Linux 平台上跑,而且功能还不够理想(实际上,目前,WINE 1.0 能够支持 10,336 个 Windows 应用,
尤其是对 Windows 平台上的软件游戏支持极好。请见:appdb.winehq.org)。说句实在话,WINE 其实就
是在 Linux 平台上把 Windows 应用程序的 API 接口加以实现而已(所谓“Windows 的兼容层”)。在
Linux 平台上,运行 Windows 应用程序,这是客观的需要。微软开放 API 的举措,是真心想与我们做朋友。
如果说,有人认为微软 API 接口开放的还不够彻底,那么,双方可以坐下来谈嘛!完全不必“怒目
相视”,老死不相往来。文档标准问题,情况也一样。目前,虽然 ISO 暂时性地搁置了 Open XML 的推
进计划,在我们国内,就文档标准问题与微软(中国)进行持续性的沟通和探讨(保持对话),也是完

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 40
博客文摘
全必要的。我们应该看到,电子文档标准走向 XML 格式,不论是 ODF,还是 Open XML,都是大势所趋,

都是历史的进步。在电子文档领域中,什么叫“和谐”?“和谐”就是,ODF 和 Open XML 两者的相互
竞争、相互“取长补短”,以求共同发展。WINE 1.0 的发布,给那些闹“民族独立者”以迎头痛击。微
软是敌,还是友?我们必须搞明白。(注:6 月 17 日,微软 IE 浏览器开发团队给 Mozilla 基金会送去一
个大蛋糕,表示对火狐 3.0 发布的祝贺,由此可见,这两个“死对头”其实也是朋友。)

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 41
博客文摘

文档格式的“真实的谎言”

◆胡才勇
博客地址:http://blog.sina.com.cn/hucaiyong

我曾“瞄”了一眼《文档格式的真实谎言》,之所以用“瞄”,是因为我看到以下这段文字时,我
已经没有任何看下去的兴致了,结果有好事者还非把此文贴到我的博客上,只是我依然没有兴趣看完它,
在此对以下这段文字作个标记:
“首先所谓的南非、巴西等国家的上诉针对的是 ISO,质疑的是 ISO 的流程和公信力,与微软的
Open XML 无关。至于结果,那也是南非、巴西和 ISO 之间的事情。在笔者看来,并不是歧视南非、巴西
这样的国家组织。其实作为一个 IT 产业极度不发达的国家,人家 ISO 允许你加入并参与事务,就已经体
现了公正、平等。不知道南非和巴西这样的国家对于 IT 产业有怎样的了解?对于全球的 IT 产业和标准做
了哪些贡献?相反,这样的小国参与重要的 IT 标准的事务极易被人利用(这次的上诉也不排除被利用的
可能性)。所以笔者认为,此次的上诉,ISO 应该首先调查他们上诉的动机,不能因为两个 IT 小国的上
诉就对自己早已经建立和完善的流程产生怀疑。”
近来,微软不断地推进自己开放的举措值得肯定。我也应邀和微软的相关博士们进行过沟通。虽然大
家立场不同,观点也大相径庭,但至少已可以就一些具体问题进行探讨;而且我也能特别感受到微软两
位博士愿意沟通的诚意,特别感佩。相反,一些专门为微软打抱不平的人,似乎总容易急火攻心,口不
择言,缺少最起码的公平、公道之心。似乎一些“小国家”(也许中国也是 IT 的小国)加入 ISO 只能投
赞成票就像其它投赞成票的“更小”的国家那样,否则就是“被人利用”,还去怀疑人家的“动机”。
这样不好。
每个人、每个公司都会面对许多挑战,请先做个深呼吸,Take IT easy(我也会一点英文,只是很差)。
我相信微软明白自己的所有挑战,微软近来极力宣传自己的开放策略,并也开始采取一些具体措施,在
我看来就是微软积极应对“反垄断”困境的一个好办法。微软已有开放的心态了,其他的人更应该轻松
面对,别为微软“打抱不平”打过了头,给人一个负面形象:怎么替微软说话的人这么霸道啊?!
既然有关文档格式的争论还在继续,有人还把《文档格式的真实谎言》贴到我的博客,我也把我此前
曾在多种场合说过的一些观点集中阐述一下。你可以不看,也可以不同意。

“多种标准有利于用户选择”是其中最大的“真实谎言”

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 42
博客文摘
  这种论调具有一定的欺骗性。但可以肯定地说,永不可能出现多种标准的长期并存,多标准最终损
害的是用户选择的自由和权利。多个标准等于没有标准,用户不可能自行选择文档格式标准。不同的文
档格式之间不可能精确兼容,多个标准的最终结果将会让用户无所适从,唯一的结局仍将是微软挟其庞
大的用户群独霸天下。

“转换器”不可能全面解决多格式转换的问题

  关心文档格式的人们,几乎人人都知道 OOXML 与 ODF、OOXML 与 UOF 之间的转换器都在研制中,
但对于文档格式的转换器的是否能全面解决多格式转换问题,我一直持保留态度。因为转换器的实质是
兼容和互操作性问题,如果兼容性得不到实质改变,转换器就很难真正发生作用。此外,OOXML 与
ODF、UOF 的“转换”和互操作并不对等,OOXML 格式说明中众多的类似
“useWord97,LikeWord95,useWord2002”的定义都将是转换的障碍,微软牢牢掌握着转换器研制的主动
权。而且目前这些转换器还没有达到实用的地步,不能现在为了宣传需要就夸大其辞。

“标准应由市场自由选择”,貌似公正的谎言

  在 OOXML 推行的过程中,“标准应由市场自由选择”也是流传甚广的说法,这是貌似真理的谎言,
更需要人们认真对待。国人对“市场”、“自由”等字眼有天然的好感,很容易被这似是而非的观点所
迷惑。其实其中的荒谬性很显而易见:
  过去,市场选择的结果是封闭文档格式 DOC 成为了事实标准,成为了垄断者控制用户、维持垄断的
最佳工具。现在,垄断者力推自己的开放标准,并宣扬标准应该由市场选择其实是垄断者利用自己的用
户群来维持自己垄断的一种说辞。我们一定要注意一些貌似公平的规则中所潜藏的欺骗性。

“采用国产软件用户需要彻底转变”

  一些舆论曾别有用心地扩大采用国家标准需要根本转换的风险,事实是采用微软的 OOXML 也同样
需要彻底改变,同样存在大量的工作量和风险。
  真正的事实是:所有的用户都面临重大转换,采用微软 OOXML 也意味着剧变。

再次重申这些“真实谎言”的存在,是为了说明,这场有关文档格式的“斗争”的复杂性和长期性。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 43
博客文摘
南非、印度、巴西、丹麦对 OOXML 成为国际标准一事提出正式申诉也说明了这一点。虽然有观点认为
“申诉只针对 ISO 与 OOXML 标准无关”,但这不过是新增加的一个谎言而已。例如已披露的丹麦申诉
材料表明,OOXML 的兼容性问题、XML Schema 的缺失、正式版本未发布都是丹麦申诉的原因之一。另
外,从根本上说,正是由于 OOXML 本身的不完善和不成熟,才引发了众多国家标准化组织对允许其成
为国际标准的 ISO 组织的“不信任”。作为 ISO 的“P 成员国”,这四个国家实行了自己的权利和义务,
令人尊敬。而在这些申诉不解决之前,OOXML 是不能成为 ISO 标准的。这可能也是有人急火攻心的主要
原因吧。
在此期间,对于国产软件的批评也一直不曾中断。作为国产软件厂商的一员,我想说的是,任何人
都可以怀疑目前的国产软件企业是否能取得成功,甚至可以怀疑现在的发展方向是否正确;另一方面,
我也相信在相当长时间内仍将是微软一家独大的情况,但我们仍应为国产软件的发展留下机会,保存我
们独立发展的权利和空间。大力加强 UOF 的推广应用将是我们的出路。
愿国产软件界的同仁们能继续奋斗,愿国产软件能早日赢得用户的信任。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 44
博客文摘

开源软件渐成主流

◆顾宏军

博客地址:http://ossplus.linuxpk.com

经过多年的发展,开源已成为一种趋势,开源理念得到 IBM、Sun、Novell 等厂商,甚至微软的认同
和支持,开源软件也成为软件产业的一股重要力量,在操作系统、编程语言、数据库等基础领域,在
CRM、ERP 等企业级应用领域,出现了一大批开源应用,LAMP 开源架构也受到普遍的关注,得到了长
足的发展,很多公司也纷纷制定了其开源战略,在开源领域进行投资。2007 年的开源世界,又出现了些
新的发展趋势。

面向最终用户

经过多年的发展,开源社区已经创造了大量的应用软件:包括操作系统,开发工具,数据库,办公
套件等等,也有 ERP、CRM 等企业级应用,但是要用户采用这样开源产品,光有程序还是远远不够的,
还需要有效集成、市场推广、用户体验、技术支持、用户文档等。

以往开源软件多只注重技术层面,而较少关注其他方面的内容,使得很多开源软件只在部分专业人
士和追随者中间流传,随着越来越多的人意识这这一问题,很多项目或公司开始从用户角度看问题,切
实解决用户遇到的问题,如改进 Linux 下软件安装的 CNR 项目,专注桌面的 Linux 发行版 Ubuntu 等。

CNR 项目统一了软件安装的标准,你只需要用鼠标点击一下就可以实现大多数 Linux 系统下的常用
桌面软件的安装和更新,无论这个 Linux 系统是基于 Debian 的还是基于 Red Hat 的,大大降低的普通电脑
用户安装 Linux 它同时能够把专有商业软件分发给 Linux 用户。

Ubuntu 项目拥抱开源社区,利用社区的力量,专注于集成优秀开源项目,并持续改善用户体验,免
费进行 CD 版分发,使得 Ubuntu 在短短 2 年多时间里拥有里大量用户,被 Dell、Acer 等选中,在部分机
型中进行预装,成为 Linux 桌面的领导者。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 45
博客文摘

面向行业应用

在去年,已经开始大量兴起开源 ERP、CRM 等应用,开源软件进入企业级应用领域,并取得相当成
就。但这些还只是通用企业级应用软件,今年针对特定行业的特定开源应用开始兴起,如面向在线教育
的 Dokeos 系统,医院信息管理的 Care2x 系统等。

面向在线教育的 Dokeos 系统,已帮助世界上 1000 多个组织管理教学与合作活动。它采用 Lamp 架构,
还对 Openoffice.org、OpenLaszlo、RED5 等开源项目进行了有效整合,实现了在线教育所需的课程管理,
测验和调查,作业和成绩、课件制作、视频教室等功能;其功能完善程度完全可比得上同类到商业应用
软件 Blackboard。

医院信息管理系统 Care2x 使用了 PHP、PostgreSQL。支持外科手术、护理、门诊病人、实验室、药
房、安全、受权、调度器、修理、通信等等。支持多语言,WYSIWYG 窗体,用户配置,嵌入式工作区,
具有模块化和可扩展性。一般的医院有各种不同的专科部门,每天都要处理大量的病人、医疗人员(如
医生、护士)等资料。这套系统能建立单一的工作平台,让不同角色的工作人员快速寻找(如病人)资
料、进行采购、排班服务等。

引领技术革新

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 46
博客文摘
曾经很多人抨击开源软件只会跟在商业软件后面进行模仿,而现在虚拟化技术、面向服务架构等前
沿领域也活跃着大量等开源项目。用实例证实了开源软件不只会模仿。

Web2.0 是开源软件应用施展才能的重要舞台,可以说 Web2.0 就是开源软件。Web2.0 应用多构建在
开源软件之上(Lamp 架构),创业公司多选择开源软件作为其开发平台;Web 所面临的挑战:并行计算、
系统部署与管理、单点登陆等,其实也就是开源软件面临的挑战。对这些问题开源社区已提供很多可选
的解决方法,如提供 OpenMPI、Hadoop、MapReduce、GridEngine、Ganglia 等项目解决并行计算问题;
Hyperic 解决系统部署和管理的问题;OpenID 项目解决单点登陆问题。

虚拟化技术可以提高计算系统的利用率,可以让他们自由决定何时以及怎样升级系统和应用软件,
而且能够在需要时迅速部署资源,所有这些都可以帮助客户降低成本。而开源社区的活力给这项技术加
上了飞翔的翅膀。随着开源思想的深入人心,尤其是 Linux 内核的成熟提供了最佳的借鉴平台,开发者将
他们的想法付诸实现变得愈发容易。

目前,开源社区已提供 Xen、OpenVZ 和 KVM 等多项虚拟化方案。Xen 是由英国剑桥大学开发的一
个成熟的开源虚拟化产品,最初只支持 32 位 X86 体系结构上的泛虚拟化客户操作系统。现在 Xen 也支持
64 位的 X86 体系结构以及 Intel 安腾架构和 IBM PowerPC 架构。 而去年 10 月刚刚公开发布的 KVM 虚拟
项目以其小巧灵活和简洁朴素的特点迅速受到业界的欢迎,目前已纳入 Linux 官方内核,给人们带来了内
核级的虚拟技术。

今年的 Linux World 在会议日程中加入了虚拟机——这是个受人欢迎的举动。随着虚拟机不断在
Linux 操作系统中发展,Linux 被看作是未来数据中心基础架构中的一个强大竞争者。Xen 项目已经被 Red

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 47
博客文摘
Hat、Novell 等公司采用,Red Hat 已在其新版企业系统内提供基于 Xen 的虚拟化解决方案。

面向服务的体系结构(SOA)当属目前最为前沿的 IT 行业趋势,而把 SOA 与开源软件的优点相结合,
不仅可以降低客户的 IT 成本,同时还能敏捷地应对不断变化的业务需求。 SOA 虽作为新生事物,但它
已有 Tuscany、STP(SOA Tools Platform、SOA PHP 等多个开源实现。

Tuscany 是 Apache 软件基金会的孵化项目,由在 Apache 软件基金会占有重要份量的 IBM 和 BEA 主
导。Tuscany 的主要目标是为用户提供一组 SOA 基础设施,其中包括 Java 和 C++实现的 SCA/SDO/DAS
标准。STPSTP(SOA Tools Platform)项目是 Eclipse 基金会的重要项目,STP 的目标是为技术人员提供一
个灵活可扩展的框架,技术人员能够在这个框架的基础之上围绕 SOA 方便地进行设计、配置、组装、布
署、监控和管理等工作,STP 提供相关工具来支持开发人员使用面向服务的体系结构进行解决方案构建。

超越开放源码

开源运动所带来的深远影响远不只是几行源代码,它还带来了软件开发方法、硬件设计等多方面的
变革。

1.开发方法变革

从表面来看,开源软件最大的优势是“开放源代码”,但从技术角度来说,归根结底,是两个串联
在一起的基本因素发挥着推动作用:大众频繁有效的参与重构运动。开源模式已经被证明是非常成功的
软件开发模式,SUN、IBM 等已将部分软件通过开源的方式进行开发,很多的 Web2.0 应用也采用和开源
软件类似的开发模式。正如《Open Source Development With CVS》的作者 Karl Fogel 在开篇第一章所说
的,“软件商店里能得到的不是有用的软件”,开源软件的代码质量要明显好于商业软件(一般是指成
功开源软件)。微软 Vista 开发用了 6 年,而 Flickr 每天就发布 8-10 次,Web2.0 应用所推崇的"持续开
发"和"一直 beta"其实就是开源软件的"release early,release offen "。

2.开源硬件

自从 Linux 在开发、聚集程序员、占有商业市场等方面日渐成功后,硬件工程师开始构思硬件设计参
考开源软件的可能性,并开始有同好于互联网上分享硬件的源码(Verilog/VHDL),最重要的有
OpenCores.org。

开源硬件由低端到高端的技术都有,吸引越来越多的工程师加入。同时,由于不少开源硬件都与开

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 48
博客文摘
源软件配合良好,加上 FPGA 技术使处理器制作成本大幅下降,打破了以往硬件设计需要购置昂贵软硬
件的情况,推动了更多人参与硬件 (尤其是 FPGA) 设计。开源硬件能够缩减开发周期以及设计耗费。开
源 IP 核既可以以黑盒模式复用,也可以以白盒模式复用。白盒模式使得设计者能够根据自己特定的需求
来定制特定的核。

虽然目前能够开源的只是硬件中比较软的那部分——计算机辅助设计软件和硬件描述语言写就的源
代码,但是也许多年之后,开源硬件也会和开源软件一样流行。目前,已有相当数量的开源硬件项目出
现:如开源 3D 打印机项目 RepRap,开源信息设备项目 Chumby,开源 Roland 303 MIDI 电子合成器;开
源 MP3 播放器 Daisy;开源 8080 兼容 CPU 等。

开源软件正在飞速发展和完善中,它已被众多普通用户、开发人员所采纳,它正在进入越来越广泛
的软件领域,很多公司也开始采用开源的开发模式,很多开源商业模式也被开发出来。开源的产生和发
展是 IT 行业的必然趋势,开源软件将对整个软件产业的发展产生深远的影响。 开源运动不是昙花一现,
现今它正熠熠生辉,并发散出巨大的生机。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 49
开源社区

开源社区

项目动态

Firefox 3.0 发布 微软 IE 小组献上蛋糕

为了庆祝 Mozilla Firefox 3.0 版的成功正式释出,Microsoft IE 开发小组在 6 月 17 日将一块纪念蛋糕送
到了位于山景城的 Mozilla 总部。

蛋糕上突出显示了蓝色的
Internet Explorer 7.0/8.0 图标。在
Firefox 3.0 正式发布之后,不知道
Microsoft 的 IE 开发者们将如何取长
补短。

事实上,早在 2006 年,Mozilla 正式
发布 Firefox 2.0 版的时候,IE 小组就送过
一次蛋糕了,只不过那时候送的蛋糕是黑
白色的,很朴素。

而现在既然 Mozilla Firefox 3.0 已经正
式发布,那么谋智杯浏览器大赛就应该是
正式步入正轨了!另外提醒无法从

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 50
开源社区
SpreadFirefox.com 下载 Mozilla Firefox 3.0 的朋友,请直接从 Mozilla 中国谋智网络下载。

CentOS 5.2 正式发布

CentOS Linux 是一个依 GPL 规范,及利用 RedHat Enterprise Linux (RHEL) 的源代码 (source code)
来重新编译 (compile) 的 Linux 版本。

CentOS 提供和 RHEL 的 Binary 档案几乎百分之百兼容性,相同的版本 (Release) 和维护
(Maintainence) 更新时间和 RedHat Enterprise Linux (RHEL) 不同的是,CentOS 依从 GPL 的规范,移除了
RedHat 品牌及图片。

下载地址:http://mirrors.kernel.org/centos/5.2/isos/i386/

DVD 地址:http://mirrors.kernel.org/centos/5.2/isos/i386/CentOS-5.2-i386-bin-DVD.iso

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 51
开源社区

Ubuntu 8.10 Intrepid Ibex Alpha 1 发布

来自合作伙伴 LDCN 的消息,根据 Ubuntu 8.10 Intrepid Ibex 发布时间表,Ubuntu 8.10 Alpha1 是于 6 月
13 日发布的。因为各种原因,发布延迟了。在跳票了整整半个月之后,Ubuntu 8.10 Intrepid Ibex Alpha1
终于发布了。Ubuntu 8.10 将于 2008 年 10 月 30 日发布,这个版本将面向更广泛的领域,如高端计算机和
移动桌面。

Ubuntu 8.10 Intrepid Ibex Alpha1 的主要更新信息如下:

* Linux Kernel 2.6.26-2(2.6.26 还未正式发布,因此内核也是测试版)

* GNOME 2.23.4

* GCC 4.3.1

* X.Org 7.3

* Compiz Fusion 0.7.7 Git 版

可以看到,Ubuntu 8.10 Alpha1 已将大多重要组件都更新至了最新的版本。除此之外似乎没有其他变
化。不过,我发现 Alpha1 中新增加了一个主题,叫做“NewHuman”,如下图,一边的 Unity 则是
GNOME 2.24 中将增加的主题。主题是深色系的,适合喜欢深色主题的朋友,下面是 Firefox 3 应用这主
题的效果。不知这个主题是否是将应用的默认新主题,答案只有到最后一个 Alpha 版才会知道。

下载

可能准备有点仓促,Ubuntu 8.10 Alpha1 并未有 LiveCD 介质可供使用,只有 Alternative 版可以安装。
官方说明到 Alpha2 时才会有 LiveCD 的安装介质。

下面是 Ubuntu、Kubuntu 和 Xubuntu 的 8.10 Alpha1 的镜像下载地址,前往下载自己适用的平台即可:

* http://cdimage.ubuntu.com/releases/intrepid/alpha-1/ (Ubuntu)

* http://cdimage.ubuntu.com/kubuntu/releases/intrepid/alpha-1/ (Kubuntu)

* http://cdimage.ubuntu.com/xubuntu/releases/intrepid/alpha-1/ (Xubuntu)

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 52
开源社区

Arch Linux 2008.06 发布

Arch Linux 是一份独立开发的、为 i686 优化的 Linux 发行,它面向高级 Linux 用户。它使用自行开发
的包管理器 pacman 来为最新的应用软件提供更新升级,并进行完整的依赖性维护。Arch 可以从光盘镜像
或者从 FTP 服务器安装,它以一份连续演化的、动态的系统形式运作。缺省的安装提供一份坚实的基础,
用户可再进行定制安装。此外,Arch Build System(ABS)能支持简便创建新软件包,修改原先软件包的
配置,以及通过 Arch Linux User Repository 来将这些软件包与其他人共享。

下载地址

archlinux-2008.06-core-i686.iso :http://archlinux.mirrors.uk2.net/iso/2008.06/archlinux-2008.06-core-i686.iso

archlinux-2008.06-core-x86_64.iso:ftp://ftp.heanet.ie/mirrors/ftp.archlinux.org/iso/2008.06/archlinux-2008.06-
core-x86_64.iso

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 53
开源社区

OpenSuSE 11.0 正式版提供下载

OpenSUSE Linux 发行版,SUSE Linux 是一个易于安装的操作系统, 您可以用她来浏览网站, 发送
电子邮件, 和朋友聊天, 处理数码照片, 播放电影与歌曲, 建立文档与电子表格。你甚至可以用它
来建立网站或 blog, 创建一个家庭网络, 并且开发你自己的应用程序。 她是最新最稳定, 非常完善
的一个 SUSE Linux 版本。 如果您正在寻找一个稳定版本的 Linux 用于您的个人电脑或者家庭服务器,请
在这个地址进行下载:http://download.opensuse.org/distribution/11.0/iso/。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 54
开源社区

惊艳的 Ubuntu 8.10 主题

Ubuntu 8.10 ( Intrepid Ibex ) 将进一步得改善用户视觉体验,相信这也是很多 Ubuntu 用户所期待的。
也许你看这了这个主题会加强你对 Ubuntu 8.10 ( Intrepid Ibex ) 的期待之情吧。这个惊艳的主题被很多国
外的 Ubuntu 用户看好,因为带来很多时尚的元素,让 Ubuntu 的桌面更加的华丽炫目。整个主题的设计
得十分的简洁,而且还让部分操作也变成更加便捷。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 55
开源社区

相当实用的一个挂件,你可以把你常用的快捷方式上在这上面,在它的底部还有一个流动条,当快
捷方式较多的时你可以通过它来切换。如果你注意看图片你会发现这滚动的过程中还有模糊的动态特效。

目前还不清楚 Ubuntu 8.10 的正式版是否会增加这主题,因为美工这方面的要在 Alpha 6 发布之后的
这段时间才冻结。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 56
开源社区

Moblin 应用开发者大会——越南站记行
◆陈绪

2008 年 6 月 16 日到 27 日,两周之内,在亚洲多个国家全面召开的 Moblin 应用开发者大会,掀起了
一股 Moblin 的热潮。众多的开源社区开发者、Linux 爱好者和计算机爱好者,明确了新的大方向,并将
积极投身于 Moblin 社区的开发。

到目前为止,Moblin 大会涵盖的国家包括:中国大陆(北京/上海),台北,日本,韩国,印度,越
南。本人有幸前往越南的河内(首都)和胡志明市,为广大社区开发者(主要是草根),提供了多个
Moblin 的技术专题讲座。本文从旅行全程的生活和大会等多个层面,给大家提供到越南出差和旅行的一
些实战经验,并通过越南大会,管窥 Moblin 将给大家带来的巨大影响和机遇。

前往越南的准备知识

有了越南同事的邀请信,在 7 个工作日内,我获得了前往越南的签证。注意,和去美国不同,申请
去越南的签证是不需要面试的。

越南使用的货币叫越南盾,和人民币的比率大概是 2400:1,和美元的比率大概是 16600:1。中国的银
行是不给兑换越南盾的,所以你需要到中国的银行中去用人民币兑换一些美金。以前,我到中国银行兑
换过,这次我是到工商银行兑换的,兑了 100 美金。到达越南之后,在机场、饭店、金店等均可将美金
兑换成越南盾。

越南和北京的时差是 1 个小时,就是比北京慢一个小时。比如:北京的 12 点,会是越南的 11 点。

河内之旅

越南的两次会议分别在是 6 月 24 日(周二)在河内,6 月 26 日(周四)在胡志明市。于是,我订了
23 日到河内的飞机票,经停广州,计划是下午 5 点多上飞机,大概晚上 10 点抵达河内。很遗憾,当天出
现了大规模的雷雨和闪电,北京的飞机晚点了,一晚就是 6 个小时。我走出河内机场的时候,已经是凌

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 57
开源社区
晨 4 点,机场的货币兑换处也关闭了。和一个出租车司机砍了一下价,他说带我和另外一个越南本地旅
客去市区,中途那个人下,我到达 Hilton 饭店。他要 20 美金,我说 15,他同意了。后来才知道,从机场
到 Hilton 饭店的车程,确实需要 20 美金,只不过他多带了个人,所以感觉划算。

图.河内巴亭广场

6 月 24 日上午 8 点,Moblin 大会在 Hilton 饭店一楼隆重开幕。内容颇为丰富:

1.Than Trong Phuc 先生,Intel 越南总经理致辞,概述 Moblin 和 OSS 的关系;

2.Dr. Hoang Le Minh 先生,来自越南通信和信息部(MIC)下属机构,讲述了越南政府的 Atom、R&D
计划中,iDragon 的研发进展和规划;

3.来自印度的 Intel 同事 Ashok Manchegowda 先生,过来讲述了在 CMPC 上的 Moblin 应用场景和情况;

4.河内 Linux user group 的组织者 David Tremblay 先生,讲述了河内的 OSS 活动情况;

5.Asianux 的第 4 个成员—Vietsoft 公司,就 Asianux 和 Moblin 的开发进展,做了一个报告;

6.Moblin 大赛的相关介绍。

对了,怎么把我的讲座忘掉了。我有两个技术专题演讲:Moblin 社区开发技术,构建 Moblin 的技术

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 58
开源社区
生态系统。非常感谢当地越南通信和信息部(MIC)及其下属机构的朋友,他们为我的英文演讲做了完
美的翻译。同时,当地的社区爱好者,也问了一些 Moblin 的相关问题,后文一并给出解释。

从河内去胡志明市

6 月 25 日中午,乘飞机前往胡志明市。胡志明市,一般称为 HCMC,当然它还有另外一个名字:西
贡(Saigon)。和河内狭窄的街道相比,胡志明市更象一个现代的城市。对了,我发现越南的这两个城市,
都有一个共同点,就是满街的摩托车。男男女女,老老少少,都骑着摩托车,而且大家都带着头盔,其
中很多人带着各式各样的口罩。绿灯一亮,路口的摩托车象洪水一样冲过来。同时,小型的加油站也是
遍布城市的各个区域。我问了一下当地同事:头盔是政府规定必须戴的,旨在解决安全问题,不戴则要
重罚;而口罩是为了对付当地城市的空气污染。

晚上去了饭店附近的一家越南面馆。面汤的味道非常独特,感觉和贵州酸汤鱼的汤差不多。一方面
是饿了,一方面是味道感觉非常好,我一气吃了两碗。所以,这里给大家推荐一下越南的本地面。另外,
来越南之前,就听说这里的“菠萝蜜干”非常好吃和独特,所以在河内就去买了点。这个东西可不是菠
萝,而是另外一种食品,当地人叫 Jackfruit。

胡志明市之旅

图.胡志明市夜景

6 月 26 日上午 8 点,Moblin 大会在胡志明市科技园隆重开幕。除了 Vietsoft 的演讲,换成了一家当地
Linux 发行版提供商--Hecao 之外,内容和河内基本相同,但是交互效果要更好一些。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 59
开源社区
针对我的两个技术专题讲座,超过 120 名的听众,对我提出了数十个问题,覆盖 Moblin 的方方面面,
表现出对 Moblin 的巨大兴趣。有几个当地的 IT 公司直接向我提出,他们应该如何切入 Moblin 领域的问
题。当地负责市场的同事 Mai Sean 告诉我,我说讲述的技术方面的东西,也是大家最愿意听到的。

晚上和印度的同事一起去吃了一下附近的一家印度饭馆,消费不高,味道不错。

6 月 27 日,从胡志明市出发,抵达广州,然后转机,返回北京。虽然广州受到“风神”台风的侵袭,
我的旅程一切顺利,按时抵京。

听众问题总结

最后,针对听众提出的问题,以及我所了解到的,在亚洲别的国家 Moblin 大会中,听众提出的问题,
我简单总结了几个小问答,供大家参考。

Moblin 和 MID 是何关系?

MID 是基于“英特尔®凌动™处理器技术”的 Mobile Internet Device,是一种便携式设备。而 Mobin
是一个优化的 Linux 操作系统和核心软件栈,适用于“英特尔®凌动™处理器技术”平台,也就是大家常
说的“ATOM”。“英特尔®凌动™处理器技术”平台,涵盖 MID、NetBooks、NetTops、汽车的 IVI(In-
Vehicle Infotainment)系统等。

Moblin 的核心特性,在于基于节能的小型设备上,提供丰富的互联网和媒体体验。

同时,Moblin.org 是一个开源社区,包含着 Moblin 的 SDK、技术资料和源代码等。

Moblin 软件架构中,包括哪些组成部分?

Moblin 包括核心的操作系统部件,例如:a)Linux 内核和驱动;b)高级的用户界面和应用程序开发
框架;c)可定制的用户界面(UI);d)丰富的预装和 Intel 优化的应用程序,例如:浏览器,音视频播
放器,照片查看器,媒体播放器等;e)开发者工具,库和其他工具,用于在“英特尔®凌动™处理器技术”
上产生和优化应用程序。

如何加入 Moblin 开发?

一切资料和工具,请前往 Moblin.org 获取。同时,也可以利用该社区提供的邮件列表,IRC 频道来获
得社区支持。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 60
开源社区
当然,我们建议你使用 Moblin.org 上提供的一个工具开始起步。MIC(Moblin Image Creator),它可
以用于从 Moblin.org 上提供的诸多组件中,选出其中你需要的,并产生平台相关的镜像,甚至可以产生
Live CD。

另外,为了解决开发者的硬件不足问题,Intel 的 ISPP(Intel® Software Partner Program)项目,为合
作伙伴提供了获取 Moblin 硬件的机遇,欢迎到 http://www.intel.com/partner 索取。

Moblin 的生态系统如何?

Moblin 在全球生态系统中获得了巨大进展。

就 MID 而言, Asianux 和 Canonical 公司都对 MID 的 Linux 操作系统进行了产品化;而
ODM/OEMs,如爱国、明基、歌乐、技嘉和联想,均宣布了要出货 MID 硬件产品;另外,Adobe, Real

Networks 及全球超过 40 个 ISV 基于 Moblin compliant 的操作系统,发布自己的产品。

对于 Netbooks 和 Nettops 而言,Xandros, Linpus, Asianux 和 Canonical 都计划于 2008 年发布针对
Diamondville 的产品,而 2009 年则发布针对 Pineview 的操作系统;OEM 厂商,如华硕和宏碁,在自己的
硬件产品中,会使用基于 Moblin 的操作系统。

同时,在 Moblin.org 开发者社区中,有成百上千的开发者,正在积极参与和推动开发工作。

展望

看了其他同事对其他国家和地区的 Moblin 大会报告,也亲身参加了越南的大会,看到了这么多热情
的社区爱好者、大学生和业界人士,看到他们对 Moblin 产生的巨大兴趣,深深为 Moblin 的巨大影响和未
来所折服。

祝愿大家和 Moblin 亲密接触,并利用这个巨大的平台,展示自己的创新,早日走向成功之路。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 61
开源社区
Web 2.0 方兴未艾,Enterprise 2.0 的概念又接踵而至,Enterprise 2.0 讲述的是如何将 Web 2.0 与 SOA
结合,并应用于企业当中。在 Enterprise 2.0 概念提出之时,已经存在基于 Web 2.0 和 SOA 的开源应用
了,在这波浪潮中,开源技术有走在了前面。

Enterprise 2.0 开源技术趋势
作者:杨洪波。专注于 BPM/SOA 相关业务,是 Shark 和 jBPM 工作流引擎在国内最早的技术推广者之一,
曾作为独立顾问为多家大型企业实施 BPM 技术培训和项目咨询。CSDN 2007 十大 MVB 之一,现为普元软件
SOA 架构师。

随着 Web 服务标准被逐渐推广和采纳,SOA(面向服务的架构)也因为其在企业软件项目中的重要
性获得了越来越多的认可。而近期 Web 2.0 风光无限,并以暴风骤雨的节奏猛烈袭击着互联网行业,SOA
和 Web 2.0 似乎成了当今 IT 行业最热门的两个词汇,然而,行业内更为先进的思潮是:怎么样将 Web 2.0
结合 SOA 并应用到企业软件中去?答案就是新出现的 IT 名词:企业 2.0。

对“企业 2.0”这个名词最简单的理解,就是把 Web 2.0 技术结合 SOA 应用到企业的内部管理。比如
很多技术公司采用企业 Blog 作为提高理念传播的手段等。而更深的理解,是把在互联网中流行的 Web 2.0
技术的模式和原则应用到企业当中,帮助解决企业内部的业务互通和业务敏捷问题,并将企业内部网络
与互联网相连,以充分利用互联网带来的价值。

企业应用是支撑企业运营的基础,企业应用需求多变,业务复杂,工期紧张。把企业应用转换为企
业 2.0 是件开销巨大的工作,企业不太可能因为“企业 2.0”是新技术就把应用全部采用企业 2.0 的商业产
品来实现。但是企业 2.0 挟 Web 2.0 与 SOA 的综合优势让企业推却不了,在这样的情况下,比较好的方法
是使用开源的企业 2.0 产品先行实验,在比较低的投入下,运行自己的企业 2.0。

实际上,最近开源的企业 2.0 技术与产品也是发展得如火如荼。本文准备从这些产品中选取几例,籍
此分析企业 2.0 的开源趋势。

Web 框架的泛 SOA 化

软件领域一直没有完全探索清楚的一个问题,是业务模块的组件化问题。怎么样划分组件?采用什

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 62
开源社区
么样的粒度?采用什么样的原则来划分?这些复杂的问题伴随着技术和业务的混杂,困扰了一代又一代
的软件人。

SOA 正是在这个领域的探索结果之一。从最早的代码级的面向对象思想,到组件级的 EJB 技术,到
服务级的 SOA 理念,是我们的组件划分的能力不断提升的过程。SOA 的基本特征之一是组件化,而组件
化的本质体现在其背后的动态布署功能。动态布署功能让我们能够更加模块化的开发功能组件,并用几
个组件来实现客户应用。在客户应用上线后,如果需求有新增,则可以开发新的组件,并在线热布署。
如果需求有修改,可以直接修改某个组件,然后动态更新该组件,其他的组件功能不受影响。这样很直
观地提高了系统的可维护性。

组件化开发和动态布署的特性,一直是集中在业务逻辑领域的,Web 中并不存在所谓的组件化开发
的概念。但是,最近著名的 Web 框架开源项目 Struts2.0 启动了一个支持热布署的插件开发功能。该热布
署插件可以让 Web 应用在上线后,通过浏览器上传新的 Web 组件,并在线热布署,这样就可以把新的功
能组件插入到已经上线的 Web 应用中去。

图 1 JRE 与 OSGi 交互图

这个热布署插件是基于 OSGi 实现的,如上图所示。这实际昭示着 Web 框架的 SOA 特征越来越明显,
Web1.0 是互联网应用的开始,Web 框架在 Web1.0 中扮演了重要的角色,而且在 Web1.0 和 2.0 中起到了承
上启下的作用。如果我们认为 Web 2.0 只是表示 REST 架构,只是表示 Mash-up 的构建方式,只是表示

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 63
开源社区
RIA 等信息交互模式,那是不正确的理解。Web 2.0 本质是软件开发人员和用户使用互联网平台的方式的
转变。从这个角度看,Struts2.0 的热布署插件,是 Web 2.0 中的 SOA 特征体现的一个载体。

Web 2.0 的泛 SOA 化

和 SOA 一样,Web 2.0 的最大特征是把软件服务化。企业级的 SOA,其实就是在分析如何把关键的
企业信息资源进行拆分重组,变成可重用可装配技术无关的服务;而 Web 2.0 又从使用者的角度,构成了
另外一个模式的服务化。现在盛行的 SaaS 就是“软件就是服务”的缩写,它把 Web 2.0 和 SOA 结合得更
加的紧密。SaaS 就是在互联网上通过 Web 页面,提供企业应用软件的租赁服务,由此把软件转向永久在
线持续更新的模式。

2007 年 8 月,金蝶发布了开源 Web 2.0 框架 OpenMasks。OpenMasks 是 JSF 规范的产品实现,不过它
整合了 Ajax 的 UI 框架 EXT,并用 Tag 进行了封装。结合使用 Ajax,DOM 和 XSLT,利用
XMLHttpRequest 把数据和显示整合在一起,再加上 JSF 的功能,为用户提供了丰富的使用体验。这些
Web 2.0 的技术,与 SOA 一样遵循了同样的设计原则和哲学、范式。在这样的理解下,Web 2.0 是 SOA 的
一种实现模版,而企业内的 SOA 是 SOA 的另外一种实现模版。

实际上,Web 2.0 的 Ajax 技术引入了企业软件的 2.0 化门面;Web 2.0 的 Mash-up 技术,通过聚合重
组来自不同地方的内容和数据,满足了企业软件的 2.0 化的随需应变的要求;Web 2.0 的 SaaS 概念引入了
企业软件的 2.0 化商业模式;而 SOA 本身,解决了企业软件的 2.0 化技术架构。由这些看来,Web 2.0 的
泛 SOA 化,已经是到了瓜熟蒂落的时间。

BPM 的 SOA 本质

SOA 是创建更灵活的企业基础架构的架构方法,而 BPM 是一套协调的业务流程活动。SOA 使用户
可以轻松完成将业务流程连接到基础系统的任务,从而节省时间和 IT 资源。与之相比,将流程链接到传
统的应用通常要依赖大量不同的专有技术。而且,在采用 BPM 的同时转向 SOA 可以促进 SOA 组件的再
利用,从而最大程度地降低业务流程本身的复杂性。

在 jboss 的 jbpm_bpel 开源实现中,就加入了 SCA 的扩展实现。我们可以在 jbpm_bpel 中加入 SCA 扩
展定义,从而产生 SCA 的构件类型声明,并利用它来完成 SOA 的装配。例如,一个 BPEL 的变量声明可
以包含一个 SCA 的扩展:<sca:property=”yes”>,这样的扩展表明,这个变量代表了一个 SCA 构件的
property,图 2 描述了如何在 jbpm_bpel 中通过 service 和 reference 加入 SCA 扩展。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 64
开源社区

图 2 在 BPEL 中加入 SCA 扩展

SOA 产品的巨人化

位于爱尔兰都柏林的 Iona 公司是 SOA 工具市场的领导者。Iona 早期的 Celtix 与 XFire 合并后,已经
发展成 Apache 的 incubate 项目,那就是 CXF。CXF 是 JAX-WS 的 API 的实现,并且支持多种传输和绑定
机制,而且支持 JBI/SCA 等服务模型。它旨在提供完备的服务创建能力、灵活的复用技术及高性能的服
务组装过程。利用 CXF 创建的服务具有很强的互操作性,可与在其它 SOA 环境中生成的 Web 服务一起
部署。这一特有的灵活性使客户能够以最切合他们业务和技术要求的方式来部署 SOA 基础架构。CXF 发
布了 2.0 RC 版,是 SOA 的比较重要的框架之一,也是由行业巨人主导的产品。

但是,SOA 的巨人化不只限于此。Iona 和 Apache 的结合,还有另外一个更大的 SOA 系列产品——
FUSE。FUSE 能够产生,需要归因于 Iona 对加利福尼亚州的 LogicBlaze 的现金收购。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 65
开源社区
从上面的案例可看出,只有提供一整套企业级质量的产品和服务,才能确保实施部署 SOA 取得成功。
要想完全用开源方式,从零开始构建 SOA 产品,期望这样就能够全方位满足客户需求,是有很大难度的。
开源产品只有象 Iona 这样,从 Celtix 发展到 CXF,从 CXF 发展到 FUSE,一步步地把自己发展成为巨人,
才有可能与 SOA 领域的真正的“巨人”对抗。

无独有偶,JBoss 公司也已经和洛杉矶的 SOA 软件公司合作,在 JBoss 应用服务器上,充分利用 SOA
软件公司的服务管理器(Service Manager)和 WorkBench 产品,来实施 SOA 应用。SOA 软件认为,这次合
作意味着一直由专有平台厂商把持的 SOA 市场上将迅速出现开源厂商的身影,而该公司的执行副总裁
Roberto Medrano 在一份声明中表示,“开源 SOA 的时代已经到来了。”

SOA 的实践化

现在对 SOA 的理论宣传,远远大于真正的项目实践。SOA 提倡的是服务的复用,它强调软件开发应
该面向服务、松藕合并互相调用。但是,怎么样来划分服务?怎么样互相调用?这些问题必须在解决方
案中,用项目实践进行回答。

OSOA 对 SOA 的实现提出了系列的技术规范,其中包括 SCA 和 SDO。Tuscany 是 Apache Incubator
项目中,实现了 SCA 和 SDO 规范的开源项目。读者看到本文时,应该已经发布了 SCA Java 1.0-
incubating 版本,当然它也有 C++版本提供。

图 3 Tuscany 的构件装配

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 66
开源社区

在最新的 Tuscany 实现中,新加了 Contribution 的概念。Contribution 可以对应理解为我们平常的一个
小模块应用,它包括 java 代码和页面等资源。Contribution 是一个 SCA 应用的独立布署单元。在以前的版
本中,是没有这些概念的;SOA 的实践化,离我们越来越近了。

参与、贡献、共享、协作这些草根精神是 Web 2.0 的根本,而这些精神也融汇到了企业软件领域。我
们考虑这样的几个层次:Web 2.0/BPM/SOA。在 Web 2.0 中,通过 REST 方式暴露 SOA 服务接口;用
Mash-up 组合不同来源的数据;用 RIA 作为企业应用的门脸。在 BPM 中,通过不同流程的编制与编排,
对企业外部客户和合作伙伴提供 SLA 服务。在 SOA 中,用各种组件和服务完成服务集成/应用集成和数
据服务。企业 2.0 中的不同技术合作组成了一个大的 SOA 生态圈,而生态圈内的大大小小的开源软件,
形成一个微妙而复杂的依存关系,我们希望这个 SOA 生态圈能够在稳定中快速发展。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 67
知识学堂

知识学堂

Linux 下设备完全驱动(一)

◆郄晓烨

随着 Linux 系统的应用越来越普及,Linux 的使用者已经不再局限于专业的开发人员,普通的计算机
使用者也开始大量使用 Linux 操作系统。 但是作为一种类 Unix 系统,其设计的模式及特点与目前大量使
用的 Windows 系统有很大的不同。习惯了 Windows 系统对于 Linux 的一些概念常常无法准确理解,尤其
是各种设备常常不能在 Linux 上使用。本文将全面介绍 Linux 下设备驱动的框架、块设备驱动和网络驱动
的配置安装、显示设备驱动和声卡驱动的配置安装、移动设备的驱动安装,以及打印机和扫描仪驱动的
安装等,力求让大家能够自如应付处理遇到的各种 Linux 驱动程序的问题。本文使用的操作平台为 Red
Hat Linux。本讲主要概述 Linux 设备驱动框架、驱动程序的配置文件及常用的加载驱动程序的方法;并且
介绍 Red Hat Linux 安装程序是如何加载驱动的,通过了解这个过程, 我们可以自己将驱动程序放到引导
盘中;安装完系统后,使用 kudzu 自动配置硬件程序。

Linux 设备驱动概述

1. 内核和驱动模块

操作系统是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备,驱动硬件是操作
系统最基本的功能,并且提供统一的操作方式。正如我们查看屏幕上的文档时,不用去管到底使用 nVIDIA
芯片,还是 ATI 芯片的显示卡,只需知道输入命令后,需要的文字就显示在屏幕上。硬件驱动程序是操
作系统最基本的组成部分,在 Linux 内核源程序中也占有较高的比例。

Linux 内核中采用可加载的模块化设计(LKMs ,Loadable Kernel Modules),一般情况下编译的

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 68
知识学堂
Linux 内核是支持可插入式模块的,也就是将最基本的核心代码编译在内核中,其它的代码可以选择是在
内核中,或者编译为内核的模块文件。如果需要某种功能,比如需要访问一个 NTFS 分区,就加载相应的
NTFS 模块。这种设计可以使内核文件不至于太大,但是又可以支持很多的功能,必要时动态地加载。这
是一种跟微内核设计不太一样,但却是切实可行的内核设计方案。

我们常见的驱动程序就是作为内核模块动态加载的,比如声卡驱动和网卡驱动等,而 Linux 最基础的
驱动,如 CPU、PCI 总线、TCP/IP 协议、APM(高级电源管理)、VFS 等驱动程序则编译在内核文件中。
有时也把内核模块就叫做驱动程序,只不过驱动的内容不一定是硬件罢了,比如 ext3 文件系统的驱动。
理解这一点很重要。因此,加载驱动时就是加载内核模块。下面来看一下有关模块的命令,在加载驱动
程序要用到它们:lsmod、modprob、insmod、rmmod、modinfo。

lsmod 列出当前系统中加载的模块,例如:

#lsmod (与 cat /proc/modules 得出的内容是一致的)
Module Size Used by Not tainted
radeon 115364 1
agpgart 56664 3
nls_iso8859-1 3516 1 (autoclean)
loop 12120 3 (autoclean)
smbfs 44528 2 (autoclean)
parport_pc 19076 1 (autoclean)
lp 9028 0 (autoclean)
parport 37088 1 (autoclean) [parport_pc lp]
autofs 13364 0 (autoclean) (unused)
ds 8704 2
yenta_socket 13760 2
pcmcia_core 57184 0 [ds yenta_socket]
tg3 55112 1
sg 36940 0 (autoclean)
sr_mod 18104 0 (autoclean)
microcode 4724 0 (autoclean)
ide-scsi 12208 0
scsi_mod 108968 3 [sg sr_mod ide-scsi]
ide-cd 35680 0
cdrom 33696 0 [sr_mod ide-cd]
nls_cp936 124988 1 (autoclean)
nls_cp437 5148 1 (autoclean)

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 69
知识学堂
vfat 13004 1 (autoclean)
fat 38872 0 (autoclean) [vfat]
keybdev 2976 0 (unused)
mousedev 5524 1
hid 22212 0 (unused)
input 5888 0 [keybdev mousedev hid]
ehci-hcd 20104 0 (unused)
usb-uhci 26412 0 (unused)
usbcore 79392 1 [hid ehci-hcd usb-uhci]
ext3 91592 2
jbd 52336 2 [ext3]

上面显示了当前系统中加载的模块,左边数第一列是模块名,第二列是该模块大小,第三列则是该
模块使用的数量。

如果后面为 unused,则表示该模块当前没在使用。如果后面有 autoclean,则该模块可以被 rmmod -a
命令自动清洗。rmmod -a 命令会将目前有 autoclean 的模块卸载,如果这时候某个模块未被使用,则将该
模块标记为 autoclean。如果在行尾的[ ]括号内有模块名称,则括号内的模块就依赖于该模块。例如:

cdrom 34144 0 [sr_mod ide-cd]

其中 ide-cd 及 sr_mod 模块就依赖于 cdrom 模块。

系统的模块文件保存在/lib/modules/2.4.XXX/kerne 目录中,根据分类分别在 fs、net 等子目录中,他
们的互相依存关系则保存在/lib/modules/2.4.XXX/modules.dep 文件中。需要注意,该文件不仅写入了模块
的依存关系,同时内核查找模块也是在这个文件中,使用 modprobe 命令,可以智能插入模块,它可以根
据模块间依存关系,以及/etc/modules.conf 文件中的内容智能插入模块。比如希望加载 ide 的光驱驱动,
则可运行下面命令:

# modprobe ide-cd

此时会发现,cdrom 模块也会自动插入。

insmod 也是插入模块的命令,但是它不会自动解决依存关系,所以一般加载内核模块时使用的命令
为 modprobe。

rmmod 可以删除模块,但是它只可以删除没有使用的模块。

Modinfo 用来查看模块信息,如 modinfo -d cdrom,在 Red Hat Linux 系统中,模块的相关命令在
modutils 的 RPM 包中。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 70
知识学堂

2.设备文件

当我们加载了设备驱动模块后,应该怎样访问这些设备呢?Linux 是一种类 Unix 系统,Unix 的一个
基本特点是“一切皆为文件”,它抽象了设备的处理,将所有的硬件设备都像普通文件一样看待,也就
是说硬件可以跟普通文件一样来打开、关闭和读写。

系统中的设备都用一个设备特殊文件代表,叫做设备文件,设备文件又分为 Block(块)型设备文件、
Character(字符)型设备文件和 Socket(网络插件)型设备文件。Block 设备文件常常指定哪些需要以块
(如 512 字节)的方式写入的设备,比如 IDE 硬盘、SCSI 硬盘、光驱等。而 Character 型设备文件常指定
直接读写,没有缓冲区的设备,比如并口、虚拟控制台等。Socket(网络插件)型设备文件指定的是网络
设备访问的 BSD socket 接口。

#ls -l /dev/hda /dev/video0 /dev/log
brw-rw---- 1 root disk 3, 0 Sep 15 2003 /dev/hda
srw-rw-rw- 1 root root 0 Jun 3 16:55 /dev/log
crw------- 1 root root 81, 0 Sep 15 2003 /dev/video0
上面显示的是三种设备文件,注意它们最前面的字符,Block 型设备为 b,Character 型设备为
c,Socket 设备为 s。

由此可以看出,设备文件都放在/dev 目录下,比如硬盘就是用/dev/hd*来表示,/dev/hda 表示第一个
IDE 接口的主设备,/dev/hda1 表示第一个硬盘上的第一个分区;而/dev/hdc 表示第二个 IDE 接口的主设备。
可以使用下面命令:

#dd if=/dev/hda of=/root/a.img bs=446 count=1

把第一个硬盘上前 446 个字节的 MBR 信息导入到 a.img 文件中。

对于 Block 和 Character 型设备,使用主(Major)和辅(minor)设备编号来描述设备。主设备编号
来表示某种驱动程序,同一个设备驱动程序模块所控制的所有设备都有一个共同的主设备编号,而辅设
备编号用于区分该控制器下不同的设备,比如,/dev/hda1(block 3/1)、/dev/hda2(block 3/2 )
和/dev/hda3( block3/3 )都代表着同一块硬盘的三个分区,他们的主设备号都是 3,辅设备号分别为
1、2、3。 这些设备特殊文件用 mknod 命令来创建:

# mknod harddisk b 3 0

我们就在当前位置创建出一个与 /dev/hda 一样的、可以访问第一个 IDE 设备主硬盘的文件,文件名

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 71
知识学堂
叫做 harddisk。

使用下面命令可以查看设备编号:

#file /dev/hda

/dev/hda: block special (3/0)

其中 Block 代表/dev/hda 是系统的 Block 型(块型)设备文件,它的主设备编号为 3,辅设备编号为
0。

#ls -l /dev/hda /dev/hdb
brw-rw---- 1 root disk 3, 0 Sep 15 2003 /dev/hda
brw-rw---- 1 root disk 3, 64 Sep 15 2003 /dev/hdb
使用 ls -l 也可以看到设备编号,/dev/hdb 代表第一个 IDE 接口的从设备(Slave)也是 Block 设备,
编号为(3/64),还有另外一种设备文件是/dev/tty*。使用如下命令:

#echo "hello tty1" > /dev/tty1

将字符串“hello tty1”输出到/dev/tty1 代表的第一个虚拟控制台上,此时按“Alt + F1”可以看到该字符
出现在屏幕上,这个特殊的文件就代表着我们的第一虚拟控制台。

#file /dev/tty1
/dev/tty1: character special (4/1)
由上可以看到,它的类型为 Character 型(字符型)设备文件,主设备号为 4,辅设备号为 1。同样,
/dev/tty2 代表着第二个虚拟控制台,是 Character 设备,编号为 (4/2)。

当将/dev/cdrom 加载到/mnt/cdrom 中时,只要访问/mnt/cdrom 系统就会自动引入到/dev/cdrom 对应的
驱动程序中,访问实际的数据。

有关设备文件的编号可以看内核文档/usr/src/linux-2.*/Documentation/devices.txt 文件(在 Kernel 的源文
件解包后的 Documentation 目录中),其中详细叙述了各种设备文件编号的意义。

3.使用/proc 目录中的文件监视驱动程序的状态

通过设备文件怎样访问到相应的驱动程序呢?它们中间有一个桥梁,那就是 proc 文件系统,它一般
会被加载到/proc 目录。访问设备文件时,操作系统通常会通过查找/proc 目录下的值,确定由哪些驱动模
块来完成任务。如果 proc 文件系统没有加载,访问设备文件时就会出现错误。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 72
知识学堂
Linux 系统中 proc 文件系统是内核虚拟的文件系统,其中所有的文件都是内核中虚拟出来的,各种文
件实际上是当前内核在内存中的参数。它就像是专门为访问内核而打开的一扇门,比如访问/proc/cpuinfo
文件,实际上就是访问目前的 CPU 的参数,每一次系统启动时系统都会通过/etc/fstab 中设置的信息自动
将 proc 文件系统加载到/proc 目录下:

# grep proc /etc/fstab
none /proc proc defaults 00

此外,也可以通过 mount 命令手动加载:

# mount -t proc none /proc

通过/proc 目录下的文件可以访问或更改内核参数,可以通过/proc 目录查询驱动程序的信息。下面先
让我们看一下/proc 目录中的信息:

# ls /proc
1 4725 5032 5100 5248 5292 crypto kcore partitions
14 4794 5044 5110 5250 5293 devices kmsg pci
2 4810 5075 5122 5252 5295 dma ksyms self
3 4820 5079 5132 5254 5345 driver loadavg slabinfo
4 4831 5080 5151 5256 6 execdomains locks stat
4316 4910 5081 5160 5258 7 fb lvm swaps
4317 4912 5082 5170 5262 70 filesystems mdstat sys
4318 4924 5083 5180 5271 8 fs meminfo sysrq-trigger
4319 4950 5084 5189 5287 9 ide misc sysvipc
4620 4963 5085 5232 5288 apm interrupts modules tty
4676 5 5086 5242 5289 bus iomem mounts uptime
4680 5005 5087 5244 5290 cmdline ioports mtrr version
4706 5018 5088 5246 5291 cpuinfo irq net

需要知道的是,这些文件都是实时产生的虚拟文件,访问它们就是访问内存中真实的数据。这些数
据是实时变化产生的,可以通过以下命令来查看文件的具体值:

# cat /proc/interrupts
CPU0
0: 50662 XT-PIC timer
1: 3 XT-PIC keyboard
2: 0 XT-PIC cascade

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 73
知识学堂
5: 618 XT-PIC ehci-hcd, eth1
8: 1 XT-PIC rtc
9: 0 XT-PIC usb-uhci, usb-uhci
11: 50 XT-PIC usb-uhci, eth0
12: 16 XT-PIC PS/2 Mouse
14: 8009 XT-PIC ide0
15: 0 XT-PIC ide1
NMI: 0
ERR: 0

/proc/sys 目录下的文件一般可以直接更改,相当于直接更改内核的运行参数,例如:

# echo 1 > /proc/sys/net/ipv4/ip_forward

上面代码可以将内核中的数据包转发功能打开。

另外,Linux 系统中提供一些命令来查询系统的状态,如 free 可以查看目前的内存使用情况,ide_info
可以查看 ide 设备的信息,例如:

#ide_info /dev/had

类似的命令还有 scsi_info,可以查看 SCSI 设备的信息。这些命令一般也是查询/proc 目录下的文件,
并返回结果。

系统初始化过程驱动程序的安装

在 Linux 安装过程中,系统上的硬件会被检测,基于检测到的结果安装程序会决定哪些模块需要在引
导时被载入。Red Hat 的安装程序为 anaconda,它提供了自动检测硬件,并且安装的机制。

但是,如果计算机内的某些硬件没有默认的驱动程序,比如一块 SCSI 卡,我们可以在启动后的 boot 提示
符下,输入“linux dd”,在加载完内核后,系统会自动提示插入驱动盘,这时就有机会把该硬件的 Linux
驱动程序装入。

如果在安装系统时,某种硬件总是因为中断冲突(ISA 总线的设备较常见,比如一块 ISA 网卡)没法
正常驱动,或者是缺少驱动程序,那么可以在 boot 提示符下输入“linux noprobe”。在这种模式下,安装
程序不会自动配置找到的硬件,可以自己来选择现有驱动,配置驱动程序的参数,或者选择用光盘或软
盘加载驱动程序。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 74
知识学堂

定制引导盘

系统启动时是如何加载驱动的?下面让我们来看一下 Red Hat 的安装光盘是怎样引导的。当 Linux 安
装光盘启动时,加载位于光盘上 isolinux 中的内核文件 vmlinuz,内核运行完毕后,又将 initrd.img 的虚拟
文件系统加载到内存中。这个文件为 ext2 文件系统的镜像,经过 gzip 压缩,可以通过以下步骤查看该镜
像中的内容:

# mount /mnt/cdrom
# mkdir /mnt/imgdir
# gunzip < /mnt/cdrom/isolinux/initrd.img > /ext2img
# mount -t ext2 -o loop /ext2img /mnt/imgdir
# cd /mnt/imgdir
# ls -F
bin@
dev/
etc/
linuxrc@
lost+found/
modules/
proc/
sbin/
tmp/
var/
# cd modules
# ls
module-info
modules.cgz
modules.dep
modules.pcimap
pcitable

其中 modules.dep 为模块的注册文件,同时有各种模块的依存关系。modules.cgz 为 cpio 的打包文件,

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 75
知识学堂
实际的各种驱动模块就在该文件中。我们可以通过以下命令解包:

# cpio -idmv < modules.cgz

由此可以看到,解包出来的目录 2.4.21-4XXX。进入该目录下的 i386 目录,就可以看到当前启动盘中
支持的所以驱动程序:

# ls
3c59x.o
3w-xxxx.o
8139cp.o
8139too.o
8390.o
aacraid.o
acenic.o
aic79xx.o
……

若希望在系统中加入需要的驱动程序,可以相应地修改这些文件,比如在 modules.dep 中加入该模块
的名字和依存关系,将编译好的驱动模块文件加入 modules.cgz 中,这样就可以制定自己的安装光盘。

硬盘上的系统启动过程与上面类似,但是 initrd 的镜像文件要更简单些,一般在 initrd-2.4.XXX.img
的虚拟文件系统中,只会在/lib 目录下包含 ext3.o jbd.o lvm-mod.o 等少数文件,用来驱动硬盘上的 ext3
的文件系统。加载文件系统后,就可以使用/lib/modules/2.4.XXX/下的 modules.dep 文件及 Kernel 目录中的
各种驱动文件。

自动配置安装

如果安装完 Linux 系统后,又添加了新的硬件,那么系统必须载入正确的驱动程序才可以使用它。在
Red Hat Linux 中,可以使用 kudzu 来配置硬件。这是 PnP 设备的检测程序,当系统使用新硬件引导后,
运行 kudzu(默认会自动运行),如果新硬件被支持,那么它就会被自动检测到。该程序还会为它配置驱
动模块,把结果写入到文件/etc/sysconfig/hwconf 中,kudzu 可以通过对比这个文件发现新安装的硬件,并
进行配置;也可以通过编辑模块配置文件/etc/modules.conf 来手工指定加载模块。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 76
知识学堂
Kudzu 服务默认每次启动时都要运行,如果需要缩短启动时间,使用下面命令可以停止系统启动时的
kudzu 服务:

# chkconfig kudzu off

如果要安装新的硬件,可以手动运行 kudzu 程序。

# kudzu

那么 kudzu 程序如何认识硬件的呢?可以查看/usr/share/hwdata/目录下的文件,根据这些文件中的
PnP 信息,kudzu 可以识别各种硬件设备。

以上介绍了 Linux 下驱动程序的大体结构、主要的加载方式和相关配置文件,在安装 Linux 时加载驱
动程序,并且根据需要定制自己的引导盘,在安装完成后安装新的、即插即用硬件。下一讲开始,我们
将学习具体硬件驱动的安装方法。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 77
知识学堂

Debian 与创始者 Ian Murdock
◆谢心

常常会有人问我使用的是哪种 Linux,我常常不好意思说,我使用的是 Debian。为什么我会不好意思
呢?因为我必须承认“Debian”这个单词不太会念,所以每每只能把这个单词拼写出来。Debian 念起来不
容易的原因在于它本来就不是一个词,而是由两个单词合在一起组成的:Debra 和 Ian Murdock。这是一
对夫妻的名字,Debra 是妻子,Ian Murdock 是丈夫。Ian Murdock 是 Debian GNU/Linux 的创始人,以他心
爱的妻子的名字开头做为 Linux 发行版的名字,来纪念他们的爱情。

幸福的家庭

Ian 和她的妻子 Debra 居住在美国印第安纳州。他们有两个女儿 Regan 和 Keely,以及一个调皮的儿子
Nolan。Ian 在闲暇时喜欢读书,尤其是历史和政治方面的书籍。和众多的致力于开放源代码事业的人们
一样,他也喜欢音乐,不过作为好
丈夫的他同时还精通做饭和园艺。

丰富的职业生涯

Ian Murdock 现在是 Progency 公
司的主席。Progency 公司为客户创

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 78
知识学堂
建和维护基于 Linux 操作系统的服务器应用程序、网络存储设备、商业零售设备和其它基于 Linux 的产品。

Ian 在 1990 年左右开始使用 Linux,并成为一个优秀的开发者。因此,他参与了为数众多的 Linux、
开放源代码项目、自由软件组织和工程。

Linux International 就是 1993 年到 1995 年在 Ian 的带领下建立的。接下来,Ian 在 Free Software
Foundation 工作了两年。

1996 年,Ian 获得 Purdue University 大学的计算机科学(Computer Science)学士学位。

1997 年到 1998 年,Ian 带领志愿者建立了 Software in the Public Interest。紧接着 1998 年到 2001 年,
Open Source Initiative 也诞生了。

此外,作为核心成员 Ian 参加了 Linux File System Standard(现在的 Linux Standard Base)的起草工作。
著名的 Linux Journal 网站的建立也有 Ian 的功劳。

不仅如此,Ian 在 1997 年到 2000 年还在 University of Arizona 大学的计算机科学学院担当系统程序员。
在 2001 年秋天,他又加入了 University of Utah 大学的 Flux Group 从事研究工作。

Debian 的诞生和发展

Ian 在 1993 年创立了 Debian,在之后三年多的时间里他一直领导 Debain 的开发和建设。Debian 是最
早的 Linux 发行版之一。那时 Red Hat、Mandrake、TurboLinux 等发行版本或者不存在,或者仅仅是刚刚
开始研发。所以,Debian 是很早由分散的志愿者共同开发的、开放源代码的软件项目。

Ian 受到 Linux 与 GNU 的鼓舞,最初的目的是让 Debian 成为一个公开的发行套件。它从一个小型、
紧密的自由软件“黑客”小组,逐渐成长为今日庞大且运作良好的开发者与用户社区。现在,已经有超
过 1000 名维护者专门负责 Debian 的维护,在全世界还有数以千万计的使用者。

Debian 也许是众多 Linux 发型版中更新最慢的版本之一了,其发行周期之长在数字时代的今天是难以
想象的。在 Red Hat 和 Mandrake 竞相推出并不太稳定的新版本以占领市场的时候,Debian 在测试;当
SuSE 也忍不住推出新版本的时候,Debian 仍然在测试;最后当 Turbo Linux 都发布了最新的版本后,
Debian 还在测试。Debian 在测试什么?测试的是软件的稳定性。在 Debian 的软件 pool 中,超过 10000 个
软件几乎都要经过稳定性测试。那些有 Bug 的版本将被稳定的发行版丢弃;稳定本版在与其它软件的兼
容性测试中还会面临被淘汰的危险。所以众多的 Linux 服务器都安装 Debian,就是因为它的稳定。

下面让我们来看一看 Debian 的研发速度:

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 79
知识学堂
◆1993 年 Debian 诞生;

◆1995 年 Debian 0.93R6 版本第一次将 Debian 移植至 m68K 体系结构;

◆1996 年 Debian 1.x 开始使用 Linux 2.0 版本的内核;

◆1998 年代号为 hamm 的 Debian 2.0 出现,当时有 1500 个软件;

◆2000 年名为 potato 的 Debian 2.2 出现,有超过 2000 个软件,并且拥有成熟的 APT 架构;

◆2002 年 Debian 3.0 即大家熟知的 woody 发布,有超过 3000 个软件可供安装。

到现在,Debian 的 4.x 版本仍然是个未知数,却已经有超过 10000 个软件在 pool 软件库中等待着
Debian 的维护者去测试和检验。

有一件有趣的事情应该告诉大家,每一个 Debian 版本都有一个对应的名字,1.1 版叫做 Buzz,1.2 版
用 Rex 命名,1.3 版很简单叫做 Bo,2.0 版的名字是 hamm,2.1 版叫 slink,patato 是 2 年前推出的 2.2 版的
名字,3.0 则叫做 woody。为什么每一个版本的名字都如此的奇怪?那是因为 1996 年 Ian Murdock 不在继
续领导 Debian 的开发后,接替他的继任者 Bruce Perens 以前是一个电影公司的员工,因此他用了一些玩
具故事的名字来命名各发行版。0.93R6 版是在 Ian Murdock 的领导下发行的,所以没有这样的名字。

开放式开发

Ian 本人有超过 10 年的软件产业工作经验,他建立了 Debian,把 Linux 从一个单纯的个人兴趣爱好,
变成一种主流的计算机技术。Ian 让 Debian 成功的最大原因在于,Debian 开放的开发模式让全世界的志愿
者有了参与到 Debian 研发的决心。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 80
知识学堂
相对于其它 Linux 发行版而言,Debian 的独一无二之处在于,它从建立开始到现在一直坚持由志愿者
来开发,这种开放的开发模式还将持续到以后。这种开放模式使得任何志愿者都可以随时加入到开发队
伍中。Debian 不是由一个小的、封闭的、独立的开发团队开发的,相反,Debian 延续了 Linux 内核的传
统开发模式:谁用谁开发。这样保证了 Debian 是高质量的、有活力的、真正组件(模块)化的操作系统。

Debian 是一个非常有吸引力的团体,所有人都通过 Internet 进行交流,甚至也只有通过 Internet 才能
交流。Debian 的开发人员几乎从来不见面, IRC(Internet Relay Chat)、邮件列表及论坛几乎就是全部的沟
通方式。这样开发的交流方式也许会导致了一些误解和开发过程中的冲突。因为如果某一领域里的问题,
参与的人非常多,就使得维持人与人之间的交流变得非常困难。因此,现在项目中的某些问题往往由小
团队来进行开发。虽然项目发展到今天这是一个不可避免的结果,但是这也导致了组织或个人之间由于
不知道将要发生的改变而产生的一些抱怨。

原来有很多人抱怨 Linux 内核的开放式开发就像把人拖入一场混乱和灾难,但实际上 Linux 不是灾难,
Debian 也不是。在 Linux 的发展进程中,Debian 起着举足轻重的作用。从某种意义上讲,关注 Debian,
就是在关注整个 Linux 产业的发展。

模块化组件

尽管 Debian 的开发者各自开发他们的组件,但是严格的开发规范让所有的开发人员都可以独立加入
到系统中,而不会干扰或破坏其它的软件包。使用同样的开发工具、遵循同样的开发规范,所有的志愿
者都可以制作出真正的模块化系统。

组件化对于 Linux 发行版这样大型的软件项目来说是如此的重要。就像曾经介绍过的 GIMP 一样,开
放性和组件化对于一个开放源代码的自由软件项目的成功有着十分重要的意义。正因为如此,越来越多
的软件项目采用开放的开发模式和组件化的设计思想。

DFSG(Debian Free Software Guidelines)规定,Debian 软件必须要符合以下标准:

◆对软件的发行没有限制;

◆发行的软件必须包含有源码,并且这些源码的发行也不能有任何限制;

◆可以更改软件,并且可以重新发行更改后的软件;

◆没有歧视,软件的许可方式不应因用户所属的领域或者组织而有所不同。

在很多领域里,Debian 都是一个产生原创软件的胜地。很多其它的发行版都曾拷贝过首次在 Debian

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 81
知识学堂
下发行的软件。

伴随着 Debian 成功的设计思想和开发模式,越来越多的自由软件经过调整修改后加入到 Debian 的软
件库中。总容量达到 8GB 之巨的 pool 软件库,除了包含几乎所有开放源代码领域的自由软件外,甚至还
包含了数目不小的商业软件和共享软件。到了今日,这些软件还按照 US 和 non-US 进行分类。Debian 出
色的软件管理体系成功地管理着这些软件。

Debian 的魅力

数以万计的软件和对多达 6 种硬件体系架构的支持,让
Debian 成为最大的 Linux 发型版之一,支撑它稳定的运行是从 2.1
版本开始出现的 APT 架构。

在 Debian 2.1 (Slink)中,增加了由 Jason Gunthorpe 开发的
APT。其大大简化了 Debian 下软件包的依赖性管理,并实现了下
载安装全过程的自动化。正是 APT,使得在 Debian 中只需要一行
命令就可以进行应用程序的安装。APT 可以自动进行依赖性或冲
突的检测,必要时可以修改其它的软件包。卸载软件时合适的参
数又可以完全卸载所有相关的软件。

APT 架构还带给 Debian 更有魅力的特性,就是各种软件的及
时更新。每一个新版本都是 Debian 的 pool 软件库中标记为 stable
的软件版本的集合,而超过 8GB 的 pool 库中的全部软件分别标记为 stable、unstable、sid、testing 和
expertiment,使用者可以通过 Debian 下载安装最新的 unstable 版本软件。所以,Debian 每一个发行版本都
是稳定的,且又是最新的。

由于 Debian 有超过 10000 个软件包需要整理,整个项目变得非常庞大,对于开发过程的管理也越来
越困难。此外,尽管 Debian 的维护非常规范,从应用程序的发布到安全补丁的检测都有严格的程序,但
是 Debian 庞大的邮件列表也出现了交流问题。以前由全世界程序员共同开发维护一个项目的格局,渐渐
开始缩小了参与者的范围,以求在某种层次上达成观点的共识。这也许是 Ian 在创立 Debian 开放式开发
模式之初没有想到的。

Debian 对开源软件有着很深的承诺,并且觉得应该把这样的承诺化为一份正式的文档。这就是社群
契约(Social Contract)的由来。事实上,现在的 Debian 是一个组织非常好的项目,并且在开放源码运行中
也有着相当的地位。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 82
经验技巧

经验技巧
《Linux 一句话精彩问答》是 Linux 初学者很好的入门文档,想必很多朋友当时都是边看该文档,边
敲打键盘,玩着 Linux 过来的。该文档由本刊副总编陈绪主编,迄今已经收录近千个精彩问答。从第二期
期开始将在桌面应用(即经验技巧)栏目进行连载,希望能帮助到更多刚接触到 Linux 的朋友们。

Linux 一句话精彩问答——系统配置篇(5)

◆陈绪

鉴于目前中国 linux 的发展水平,90%以上的问题均可以用一句话作答,此为本文初衷。

1081 linux 下文件和目录的颜色代表的含义

蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝色表示链接文件;灰色表示其它文
件;红色闪烁表示链接的文件有问题了;黄色是设备文件,包括 block, char, fifo。

用 dircolors -p 看到缺省的颜色设置,包括各种颜色和“粗体”,下划线,闪烁等定义

1082 查看有多少活动 httpd 的脚本

#!/bin/sh
while (true)
do
pstree |grep "*\[httpd\]$"|sed 's/.*-\([0-9][0-9]*\)\*\[httpd\]$/\1/'
sleep 3
done

1083 如何新增一块硬盘

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 83
经验技巧
一、关机,物理连接硬盘如果是 IDE 硬盘,注意主、从盘的设置;如果是 SCSI 硬盘,注意选一个没
被使用的 ID 号。

二、开机,检查硬盘有没有被 linux 检测到 dmesg |grep hd*(ide 硬盘)

dmesg |grep sd*(SCSI 硬盘) 或者 less /var/log/dmesg

如果你没有检测到你的新硬盘,重启,检查连线,看看 bios 有没有认出它来。

三、分区

你可以使用 fdisk,Sfdisk 或者 parted(GNU 分区工具,linux 下的 partition magic)

四、格式化

mkfs

五、修改 fstab

vi /etc/fstab

1084 看分区的卷标

e2label /dev/hdxn, where x=a,b,c,d....; n=1,2,3...

1085 RH8,9 中添加新的语言包

一 8.0 中

1.放入第一张光盘;

2.cd /mnt/cdrom/Redhat/RPMS;

3.rpm -ivh ttfonts-ZH_CN-2.11-29.noarch.rpm(简体中文,建议用 tab 键来补齐后面的部分,以免输入有
误);

4.rpm -ivh ttfonts-ZH_TW-2.11-15.noarch.rpm(繁体中文)

如果你还想装日文、韩文,安装第二张光盘上的 ttfonts*.rpm.

二 9.0 中

9.0 不在第一张盘上,在第三张盘上.rpm 包名分别为:

ttfonts-zh_CN-2.12-1.noarch.rpm(简体中文)

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 84
经验技巧
ttfonts-zh_TW-2.11-19.noarch.rpm(繁体中文)

1086 终端下抓屏

1 cat /dev/vcsX >screenshot 其中,X 表示第 X 个终端

2 运行 script screen.log,记录屏幕信息到 screen.log 里。一会记录到你 exit 为此。这也是抓屏的好方法

这是在 debian 的 cookbook 上看到的。在 RH9 上能用

1087 让一个程序在退出登陆后继续运行

1 nohup command &

2 # command

# disown

1088 man 命令不在路径中时,查看非标准的 man 文件

nroff -man /usr/man/man1/cscope.1 | more

1089 cp 时显示进度

cp -r -v dir1 dir2

cp -a -d -v dir1 dir2

1090 编辑/etc/inittab 后直接生效

init q

1091 让 linux 连续执行几个命令,出错停止

command1 && command2 && command3

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 85
经验技巧
1092 如何将 grub 安装到 mbr

grub> root (hd0, 0)

grub> setup (hd0)

也可以用 grub-install /dev/hda 来安装 grub

1093 安装时把 grub(lilo)写到 linux 分区的引导区还是主引导扇区(MBR)

如果你想电脑一启动就直接进入操作系统启动菜单就把 grub(lilo)写到 MBR 上,如果写到 linux 分区
的引导区则要用引导盘引导。建议写到 MBR,方便点

1094 如何让多系统共存

98 系统的话用 lilo(grub)引导,2k/nt 则使用 osloader 引导多系统

1095 如何在图形界面和控制台(字符界面)之间来回切换

1 图形界面到控制台:Ctr+Alt+Fn(n=1,2,3,4,5,6);

2 各控制台之间切换:Alt+Fn(n=1,2,3,4,5,6);

3 控制台到图形:Alt+F7

1096 Redhat linux 常用的命令

<1>ls:列目录。

用法:ls 或 ls dirName,参数:-a 显示所有文件,-l 详细列出文件。

<2>mkdir:建目录。

用法:mkdir dirName,参数:-p 建多级目录,如:mkdir a/b/c/d/e/f -p

<3>find:查找文件。

用法:find inDir -name filename,inDir 是你要在哪个目录找,filename 是你要找的文件名(可以用通配
符),用通配符时 filename 最好用单引号引起来,否则有时会出错,用例:find . -name test*,在当前目录
查找以 test 开头的文件。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 86
经验技巧
<4>grep:在文件里查找指定的字符串。

用法:grep string filename,在 filename(可用通配符)里查找 string(最好用双引号引起来)。参数:-r 在
所有子目录里的 filename 里找。用例:grep hello *.c -r 在当前目录下(包括子目录)的所有.c 文件里查找
hello。

<5>vi:编辑器。

用法:vi filename。filename 就是你要编辑的文本文件。用了执行 vi filename 后,你可能会发现你无
法编辑文本内容,不要着急,这是因为 vi 还没进入编辑状态,按 a 或 i 就可以进入编辑状态了,进入编辑
状态后你就可以编辑文本了。要退出编辑状态按 Esc 键就可以了。以下操作均要在非编辑状态下。查找文
本:输入/和你要查找的文本并回车。退出:输入: 和 q 并回车,如果你修改了文本,那么你要用:q!回车才
能退出。保存:输入: w 回车,如果是只读文件要用: w!。保存退出:输入: wq 回车,如果是只读就: wq!
回车。取消:按 u 就可以了,按一次就取消一步,可按多次取消多步。复制粘贴一行文本:把光标移到
要复制的行上的任何地方,按 yy(就是连按两次 y),把光标移到要粘贴地方的上一行,按 p,刚才那
行文本就会被插入到光标所在行的下一行,原来光标所在行后面所有行会自动下移一行。复制粘贴多行
文本:跟复制一行差不多,只是 yy 改成先输入要复制的行数紧接着按 yy,后面的操作一样。把光标移到
指定行,输入:和行号并回车,如移到 123 行:123 回车,移到结尾回车

1097 linux 文本界面下如何关闭 pc 喇叭

1 将/etc/inputrc 中的 set bell-style none 前的#去掉;

2 echo "set bell-style none" >> ~/.bashrc;

3 去除 vi 的铃声,echo "set vb t_vb=" >> ~/.vimrc

1098 重装 windows 导致 linux 不能引导的解决办法

如果没有重新分区,拿 linux 启动盘(或者第一张安装光盘)引导,进入 rescue 模式。首先找到原来的/
分区 mount 在什么地方。redhat 通常是/mnt/sysimage. 执行"chroot /mnt/sysimage". 如果是 grub,输入 grub-
install /dev/hd*(根据实际情况);如果是 lilo,输入 lilo -v,然后重新启动。如果分区有所改变,对应修
改/etc/lilo.conf 和/boot/grub/grub.conf 然后再执行上述命令

1099 为什么装了 LINUX 后 win2K 很慢

你在 2000 应该能看见 Linux 的逻辑盘,但不能访问,解决方法是在磁盘管理里,选中这个盘,右击-
>更改"驱动器名和路径"->"删除"就可以了,注意不是删除这个盘

1100 将 linux 发布版的 iso 文件刻录到光盘的方法

在 windows 中使用 nero 软件,选择映象文件刻录->iso 文件,刻录即可

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 87
经验技巧

50 个让你疯狂的软件

以及其开源软件替代方案(一)

作者:immy Atkinson

编译:Cheiron(Linuxpk.com)

不是每个私有软件都可以让人疯狂,对吗?一些软件,像 Norton Ghost,是任何人都用的优秀软件。
但是,这些软件有版权限制的事实让很多开源爱好者们十分恼火。软件的价格不是造成真正差别的原因
(尽管这是很多人从一个软件迁移到另一个软件的原因);事实上,私有软件的很多条件限制了用户体
验,也就是限制了用户。这些足以令任何开发者抓狂。
下面这 50 个软件没有按照详细的次序来排列,仅仅是对应着它们的开源软件替代方案有大致的分类。
在某些情况下,你用这里提到的私有软件写你自己的书可能会遭到挫折。然而,在另一些情况下,也许
你会发现开源软件替代方案并不能完全上手。而且,在其他情况下,你将会学习很多私有软件中真正的
精华,但是开源拥护者们也能够用来自所有开源项目中的同样优秀的软件和方案来替代这些精华。

基本的

1、从 Windows Vista 操作系统到 Ubuntu 操作系统:这是微软的操作系统,但是微软的这个产品
使微软 fans 们的理想彻底破灭了。 开源系统趁着这个机会发展了起来;但是对于一般用户来讲,这两个
操作系统在安装,学习和操作上都是不同的。 如何处理这个问题呢?当 Ubuntu 变的如此简单易用以至
于菜鸟们都能在很短的时间内通过很简单的学习来熟练的操作它。事实上,用户们可以买一台已经预装
了 Ubuntu 操作系统的 DELL 电脑。然而,要记住,大家谈到使用开源软件的时候,开源社区经常关注的
是在 windows/Mac/Linux/Unix 上都能运行的应用程序,其中大多数似乎是针对 Windows 开发的。

2、从 Internet Explorer 浏览器到 Firefox 浏览器:当然,Internet Explorer(IE)是免费的;但是,
那是因为它是 Windows 操作系统的一个软件包。这样的免费和开源软件是完全不同的,开源软件能够让

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 88
经验技巧
用户来更好控制软件到底如何工作。当你感到私有操作系统软件很好用的时候,你任然可以使用开源浏
览器,像 Mozilla 的 Firefox,一个特别的产品,可以通过爱好者们制作的‘add-ons’来扩展自身的功能。

办公套件

3、从 microsoft Office 到 OpenOffice:如果价格让你感到微软是在为难你的话,那么改变你的选
择吧!如果你比较微软的 Office 产品和其他产品,你就会发现,实际上你是在寻找一个包括了 E-mail 客
户端,文本编辑器,表格工具和多媒体演示程序的产品。唯一可以与微软进行猛烈竞争的就是 Google 了
(它包括了 Gmail,Google Docs,Google Presentation 等等)但是,仍然存在争论的是 Google 并不真正的
开源。所以,其他选择中最好的就是 OpenOffice 了,一个开源项目,包括了你想在 Microsoft Office 寻找
的每一件工具,除了 E-mail 客户端。

4、从 Mactopia 到 NeoOffice:这是另一个微软产品,但是现在仅提供给 Macintosh 电脑。试试用
NeoOffice 来替代它吧。 NeoOffice 有 Office 程序所有的特点,包括了用于 Mac OS X 操作系统的文本编
辑,表格,演示,绘画和数据库程序。这个套件基于 OpenOffice.org 办公套件,但是它同时综合了很多
Mac 本身的特点,而且能够导入,编辑和转换其他流行的 Office 程序的文档,比如微软 Office 的文档。

办公工具

5、数学工作从 MATLAB 到 Scilab:MATLAB 对于数字计算是一个很有用的应用程序。它提供
了一种程序语言,允许用户以任何可以想象的到的可视化方式来处理数字。Scilab 是一个开源的
MATLAB 的替代品,它提供了像 MATLAB 那样的可视化的方式来处理数字数据。Scilab 和 MATLAB 是
部分兼容的,都是适合 Windows,Linux 和 UNIX 的工具。

6、从 microsoft Access 到 Kexi:Microsoft Access 是一个通用工具用来创建数据库驱动的应用程
序,以维护办公或者个人数据。Accesee 包括一个内置的数据库引擎,而且他还能通过 ODBC 来连接其它
数据库。另一方面,Kexi 允许用户设计表来增加创建数据的通道,就像 Access 那样。Kexi 也包括一个内
置的数据库引擎而且他还能够导入数据到 Microsoft Access 数据库。另外,Kexi 是开源的,但是 Access 属
于 Microsoft。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 89
经验技巧

7、从 microsoft Word 到 OpenOffice Writer:如果你想要拆开办公套件,然后开始一点点的替换它,
你可以先尝试一下这款产品。Writer 是 OpenOffice.org 软件包中的文字处理组件,它类似于 Microsoft
Word,有着大体上相同的特点和功能。Writer 是可以跨平台使用的,包括 Mac OS X,Microsoft
Windows,Linux,FreeBSD 和 Salaris。Writer 还有一些特有的功能,比如导出 PDF 文件而不需要额外软
件,像所见即所得编辑器那样创建和编辑网页。 Writer 一个超过 Word 的功能是可以处理从 Calc 创建的
数据表,Calc 是 OpenOffice 的一个表格应用程序。

8、从 microsoftExcel 到 OpenOffice Calc:Microsoft 的另一个产品,Excel 是一个电子表格类的程
序,但是它不再是人们的必需品了。 Google Docs 现在能够为您带来在线的,能够共享的电子表格产品。
作为一个能够替代 Excel 的真正的开源产品,还是试试 OpenOffice.org Calc 吧。这个工具提供了丰富的电
子表格功能,庞大的统计学、科学、数据透视表和表格函数。

9、从 Microsoft Visio 到 Dia:Visio 确实是一个优秀的程序,允许用户在很短的时间里以图表的
方法来从那些难于理解的文字和表格里组织信息。但是唯一不好的地方就是这个软件并不开源。作为替
代,用 Dia 吧,一个基于 GTK+的图表创建程序,可以用在 Linux,UNIX 和 Windows 平台上,并且在
GPL 协议许可下发布。 Dia 的灵感大体上是来源于 Visio,这也使得人们易于从 Visio 转到 Dia 上来。

生产力

10、从 Blackboard 到 Moodle:Blackboard 多年来一直是一个用于教育目的的 CMS“工业标准”。
这个程序允许教师们创建课程,管理学生工作量等等。但是 Moodle 作为 Blackboard 的一个开源替代方案
也获得了重要的地位,他帮助教育者用免费的几个软件包来创建有效的在线学习社区。

11、从 Box 到 Cabos:如果你常常共享文件,那么你可能听说过 Box.net,即使你并没有用过它。
不仅是共享文件,Box 还允许您安全的在线存储文件,允许您在付费的情况下在任何电脑、电话和其它移
动设备上提取您的文件 。 Cabos,一个开源的文件共享程序,提供简单的边栏用户界面,支持跨防火墙
传输,代理传输,通用连接和播放,所以支持 iTunes+iPod,“有什么新功能?”搜索,国际搜索,等等。
你所需要的仅仅是 Windows 2000 或更高版本,Mac OS X 10.2.8 或更高版本。就算你没有文件需要存储,
但是至少,你可以用 Cabos 共享文件,而不需要额外的存储空间。

12、从 microsoft Project 到 Open Workbench:Microsoft 允许用户来控制项目,计划表以及有效的
为其他用户组织项目数据。但是,用 Microsoft 来做必须要付钱。作为代替,用开源的 Open Workbench 来

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 90
经验技巧
免费地实现同样的项目功能。如果用户的需求不局限于简单的桌面调度,而涉及工作组、部门甚至企业
级的解决方案,他们需要升级到 CA’s Clarity? system,一个项目和公事包管理系统,能和 Open
Workbench 双向集成。

13、 从 mindjet 到 FreeMind:Mindmapping 是个人和团队之间分享创意的一个方式。这个活动

方式花费时间,但是也节省时间。所以当你能够通过使用 FreeMind 来省钱的时候,为什么要去为另一个
产品付钱呢?FreeMind 能实现 Mindjet 的全部功能,甚至比 Mingjet 更多的功能。这个是“更多的”是事
实哦,因为 FreeMind 是开源的。

图形程序

14、从 Adobe Illustrator 到 Inkscape:Adobe 的矢量绘画软件是业界最好的软件之一。然而,像
Photoshop 一样,价格阻止了许多设计师和艺术家去使用它。尝试用 Inkscape 来代替吧,一个类似
Illustrator,CorelDraw 或者 Xara X 的开源矢量图形绘制软件。 Inkscape 使用 W3C 标准的可放缩的矢量图
形(SVG)文件格式,它支持许多高级 SVG 特性(makers,clones,alpha blending 等等)。Inkscape 合理
的界面让您更容易去编辑锚点,合成复杂的路径,处理位图等等。

15、从 Adobe PhotoShop 到 GIMP:虽然你正在为了升级旧的软件包而付钱,但 Adobe
Photoshop 的价格还是能阻止很多摄影师和图像设计师使用它。试试看 GIMP 吧,尽管这个开源的工具还
不能提供给你所有你需要的,用来处理照片和设计图形的力量。GIMP 代表 Gnu Image Manipulation
Program,它是一个解决方案,接近并逐步赶上 Photoshop。

16、从 Adobe Premiere 到 Avidemux:Premier 是一个艺术的,实时的,非线性的视频编辑软件,
可以编辑很多格式,包括高清晰视频(HD)。支持 16 位色解析,GPU 加速,快速生成效果,甚至是高
级的 DVD 制作。另一方面,Avidemux 也为 Windows,Mac 和 Linux 用户提供了一个简单易用的
DVD/DivX 转换和编辑工具。Avidemux 也提供了脚本支持来实现自动控制,甚至通过开源软件扩展
“dvdauthor”来提供 DVD 制作功能。

17、从 AutoCAD 到 Archimedes:AutoCAD 是一个 AutoDesk 公司的工具,用于设计师们创建设
计图纸——当然,这些设计师大多是指建筑师。Archimedes 是一个开源的计算机辅助设计(CAD)软件,
它主要注重建筑设计。至少到目前为止,AutoCAD 仍然是非常成功的,但是 Archimedes 依然表现出了它
的潜力。后者包括了一个设计师需要的所有绘画特性,但是它的通用性不怎么好。设计师们仍然能够输

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 91
经验技巧
出矢量图形,所以这个开源工具还是有市场的(不过这个意见不是基于 Archmedes 的最新版本的)。

18、从 Microsoft PowerPoint 到 OpenOffice Impress:你能够从这个 Microsoft 的产品上转移,去
使用 Google Presentation 或者是 OpenOffice Impress。这两个工具都包含了完整的演示程序的所有特性,它
们允许用户创建和修改图表以及图片。

19、 从 Microsoft Paint 到 Tux Paint:作为一个不是很正式的图形程序,仍然有很多电脑用户在

使用它,大多数孩子尝试用 Tux Paint 来代替 Paint,这个开源产品不像是传统的图形编辑软件(比如
GIMP 和 Photoshop),它是为年龄在 16 个月左右的孩子能够方便使用而设计的。它的用户界面是直观的,
通过图标,有声的提示和逐字的文字提示来帮助解释这个软件是如何工作的。

20、从 TruSpace 到 Blender: Caligari 提供了一系列的产品使设计师和艺术家们能够构建 3D 图

像——当然要付很多钱。 Blender,从另一方面来讲,提供了一个拥有全部 2D/3D 建模能力(比如绘制,
平滑,塑造,填充,抓取等)的工具,支持调和。然而,这仅仅是 Blender 的性能的一小部分。这个强大
的开源软件是免费下载和使用的。

网络编辑

21、从 Adobe GoLive CS2 到 Mozilla SeaMonkey:GoLive 是 Adobe Creative Suites 产品的一部分,
所以它可以和你的 InDesign 文档一起工作,允许把这些文档转换成网页。但是,在你选择 Adobe Suite 之
前,你也许希望试试 Mozilla 的 SeaMonkey。Mozilla SeaMonkey 项目包含一个网络浏览器,邮件客户端,
HTML 制作程序和 IRC 聊天客户端。设计者的思路是简明的,但是它却运用了表格和 CSS,轻松的处理
了层和其他元素的位置。 扩展包括了 Scribefire,一个和你的浏览器整合的博客编辑器,让你轻松的更新
你的博客。

22、从 Adobe Dreamweaver 到 NVU:当然,Dreamweaver 是一个强大的所见即所得的 HTML 编
辑器,但是其他的选择可以让你省钱。NVU(念作 N-view,代表“新视野”的意思)是一个完善的用
于 Linux 桌面用户的网站制作系统,当然在 Microsoft Windows 用户中也是可以和 FrontPage 以及
Dreamweaver 匹敌的软件。 而且,使用 NVU 来创建网页和管理网站并不需要很高的 HTML 技术和知识。

23、从 Macromedia Flash Professional 到 OpenLaszlo:开发者们用 Flash 来创建网络上的多媒体
元素。这个程序使用了矢量图形,提供了一个超越网络的平台。作为一个开源产品,OpenLaszlo 提供给
开发者一个平台,用来创建拥有桌面客户端软件那样的用户界面的 zero-install 网络程序。而且,

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 92
经验技巧
OpenLaszlo 应用程序在一台电脑上开发就可以运行在所有的网络浏览器和所有的桌面操作系统上。这类
程序,像 Flash,提供了卡通制作,设计,数据处理,服务器通信等等。

24、从 Microsoft FrontPage 到 Bulefish:尽管没有 Dreamweaver 那么强大,FrontPage 作为一个私
有软件还是被广泛用于创建网页。浏览一下这个列表来了解一下在 HTML 编辑器方面你可以选择的开源
软件。试试 Bluefish,也许可以帮你省钱,或者节省时间。

25、从 Windows Notepad 到 ConTEXT:没错,当你购买了 Windows 2.0 以上版本的时候,你就
“免费”获得了这个世界上最最万能的 HTML 编辑器。但是,当你能用开源的 ConTEXT 来工作的时候,
为什么还要这样做呢?这个应用程序体积小,速度快,是个强大的免费文本编辑器,希望作为软件开发
者们的第二选择而开发。

26、从 Altova XMLSpy 到 XML Copy Editor:XMLSpy 是现在市场是最流行的 XML 编辑器之一。
它的编辑特性和对 schema 以及 DTD 开发,还有 XSLT, XQuery 和 XPath 开发的支持使它成为一个终极
XML 编辑器。作为一个开源选择,XML Copy Editor 是一个万能的 XML 编辑器,主要注重于 XML 文件
的文本编辑。而且,XML Copy Editor 还提供许多其他的特性,包括对于 DTD 和 XMLschemas 的验证以
及 XSLT 和 XPath 的自由标签编辑。不过这两个工具都是 Windows 下的应用程序。

轻松玩转 Firefox(1)

◆kennycx(linuxpk.com )

Linux 下的用户常常抱怨,在 Linux 下没有一款集功能和易用性与一体的浏览器,Firefox 的出现
打破了这样的观点。Firefox 是一个自由的,开放源码的浏览器,适用于 Windows,Linux 和 MacOSX 平台。
它体积小速度快,还有其它一些高级特征,如标签式浏览,可以禁止弹出式窗口,特别是它的扩展功能非
常的强,经过定制的 Firefox 可以说是世界上功能最强的浏览器。基本的浏览功能,大家应该都不陌生,
笔者在此向大家介绍一些 Firefox 扩展及其应用。

1 .Firefox 的安装

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 93
经验技巧
Firefox 的安装非常的快捷方便,首先我们需要在 http://www.mozilla.org/下载到最新的版本。

# tar zxvf firefox-1.0.4.installer.tar.gz

# ./firefox-installer

此时会弹出个 Windows 下安装软件的对话框,我们一路前进,最终点击安装按钮。Firefox 就完成
了安装,是不是很人性化的啊。

2. Tab 增强

为了增强 Firefox 的 Tab 功能,我们需要下载 Tabbrowser Extensions 这个扩展。
http://www.firefoxcn.com/2004/12-29/193857.html,点击安装此扩展,Firefox 会调用内置的扩展安
装程序进行安装,如没有自动安装,我们可以将其下载到硬盘,然后单击文件->打开文件->选择你需要安
装扩展的 Xpi 文件,Firefox 就会自动安装(由于扩展的安装类似,后面在介绍到其它扩展,也请用此种
方法进行安装)。

TabbrowserExtensions 是一个标签模式插件!在安装重启 FireFox 后,单击工具->扩展,找到
TabbrowserExtensions 扩展,选择选项,打开它的配置选单,再单击“常规”,选择“单窗口模式”和
“始终用标签页模式”,就可做到单窗口多标签浏览模式。

我们可以借助 TabbrowserExtensions 为 Firefox 配备“打开所有链接”功能。在它的配置窗中点
“标签页组”选项,勾上“关联的标签页作为组操作”,然后点右边的“高级”按钮,勾上“书签组作
为标签页组打开”,然后确定。以后只要在书签里某个文件夹上点右键“在新标签页组中打开”,就能
把该文件夹下的所有书签同时打开,并用不同颜色以区分(如图 1)。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 94
经验技巧
TabbrowserExtensions 扩展还可以指定浏览器中的链接用新标签页打开,方面我们的浏览。单击使
用标签页->链接,在浏览器中的链接选项框中选择在新标签页中打开。在使用标签页->弹出窗口中,选择
网页中来自脚本请求的弹出窗口用在新标签页中打开,那么网页中的弹出窗口将在新标签页中显示出来。

基于 IE 的一些浏览器双击标签页就可以关闭其标签页,TabbrowserExtensions 扩展也可以实现这个功能,
在配置选单中选择操作,在鼠标点击动作下的在标签页上双击,选择关闭标签页,在标签栏上双击选择
新建标签页。这样,在标签页中双击将关闭其标签页,在标签栏中双击将打开新的标签页,是不是方面
了我们的浏览啊。

选择启动->浏览器启动内容,选择恢复最后的标签页会话,这将在下次启动时打开最后的标签页
会话。在备份标签页会话中选择恢复上次强制关闭时的标签页会话,这将在 Firefox 发生异常时不至于丢
失这在浏览的页面。

3 .用 Adblock 扩展阻止广告

我们可以在 http://www.mozcn.org/pub/extensions/adblock/下载到它。Firefox 本身已有阻止弹出式广
告功能,但许多网站的页面内部充斥的各种各样的广告,特别是一些浮动广告单靠 Firefox 本身未必能阻
挡。使用 Adblock 可以做到,在安装完毕后,打开一个网页,我们可以看到,原弹出广告已自动屏蔽,而
网页里的广告仍在。如果是图片式的广告,可以在图片式的广告上点击右键,并选择“AdblockImage”即
可将此广告加入黑名单(如图 2)。如果是 swf 格式,会看到它的周围出现一个灰色的“Adblock”小按钮,
点击按钮,可加入黑名单。这样按需设置完成后,看到的就是一个简洁、清静的页面了。

我们可以用快捷键 Ctrl+Shift+B 启用或禁用 Adblock,按住 Shift 键的同时在某个元素上双击,可

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 95
经验技巧
以立即隐藏该元素,这个操作是暂时性的,再次打开该页面时该元素仍然会显示出来。

4 .鼠标手势功能

我们可以在 http://www.firefox.net.cn/newforum/download.php?id=2227 上下载到汉化的版本,老版
本的 All-in-One Gestures Extension 是不支持最新版本的 Firefox 的。

All-in-One Gestures Extension 扩展一款不错的鼠标手势插件,它允许你通过鼠标手势、遥感手势
或者滚轮导航来完成对浏览器的各种控制。这是一个强大的鼠标动作支持软件,可以自定义非常多的鼠
标动作。并且可以显示鼠标的轨迹。

选择工具->扩展-> All-in-One Gestures->选项,选择“自定义手势”选项卡,在左边的功能栏选择
要的功能,然后点下边的“编辑手势”,可以通过点绘制手势按钮,直接用鼠标“画入”要实现的鼠标
动作。(如图 3)如果要停用某项手势功能,只需要单击勾符号,会变成一个叉符号,就代表此项手势功
能停用了。

5 .快速切换代理

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 96
经验技巧
在 IE 中只能使用一个代理,换个代理需要很繁琐的过程。而基于 IE 开发的其它浏览器(比如:
Maxthon)都增加了 Proxy 的管理功能,而 Firefox 可以通过 SwitchProxy 扩展实现代理的快速切换。我们
可以在 http://www.firefox.net.cn/newforum/download.php?id=1895 下载到这个扩展的中文版。

SwitchProxy 提供快速交换代理的功能,再也不用辛辛苦苦跑到 Option 里面去改了,你可以设定
若干个常用的代理, 然后在状态栏里轻松点击即时切换。安装此扩展后,在 Firefox 的工具栏里会多出代
理服务器切换的多项选项。单击添加会弹出个添加代理服务器的选项框,我们正确设置好代理服务器的
参数,点击确定后就添加成功了。添加多个代理服务器后,只需要在代理服务器选项框中选择我们需要
使用的代理,点击应用,代理服务器就成功切换了(如图 4)。是不是很简单的啊。

6 .使用 Flashgot 进行下载

Flashget 等这些下载工具只在 IE 为内核的浏览器中增加了右键功能,而在 Firefox 中我们一般是先
在 Firefox 中复制链接地址,然后打开下载工具(如 Dx4,Kget 等),最后在这些下载工具中粘贴链接地
址以开始下载进程,整个过程非常的繁琐。如果通过 FlashGot 这个扩展,我们就可以用你指定的软件来
打开网页中的链接。我们可以在 http://www.mozcn.org/pub/extensions/flashgot/下载并安装它。

我们先来配置下 FlashGot 这个扩展,打开 FlashGot 的配置选单,在常规选项框的下载管理器中指
定用什么下载工具下载,在下载选项框中,选中自动下载受监视的文件类型,并选中监视的文件类型,
在里面添加你需要监视的文件类型。而在高级选项框中我们可以指定临时目录和查看日志。

成功安装配置后,我们只需要在下载的链接上单击右键,选择使用 FlashGot 下载此链接,

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 97
经验技巧
FlashGot 就会调用你指定的下载工具进行下载(如图 5)。如果一个页面的链接内容都需要下载,我们只
需要单击右键选择使用 FlashGot 下载全部链接就可以了。

7 .将 Firefox 变成 RSS 聚合新闻阅读器

基于 IE 开发的浏览器中内置的 RSS 阅读器是大家非常好用的,那我们 Linux 下的 Firefox 呢?答
案是肯定的,我们可以通过 Sage 扩展,将你 Firefox 扩展成一个强大的 RSS 聚合新闻阅读器。我们可以在
http://www.firefox.net.cn/newforum/download.php?id=1304 下载并安装它。

我们先对 Sage 进行下配置,在设置选单中,我们可以选择存放 Feeds 的文件夹,默认是放在
Bookmarks 中的,也就是在书签中,可以选择自动更新 Feed 的标题,在 Feed 表现选项框中可以使用自定
义的 CSS。在 http://www.firefox.net.cn/newforum/download.php?id=1998 可以下载到几个非常好看的 CSS 样
式,我们可以根据自己的喜好选择一个适合自己的。

点击查看->侧栏->Sage,打开 Sage 侧边框,或者用快捷键 Alt+s,在一个存在 RSS 文档的页面中,
我们可以点击 Sage 的查询按钮,Sage 会自动寻找当前页面的 RSS 文档,我们只需要在找到后点击添加就
可以了。(向大家推荐一个 RSS 的站点:http://www.sorss.com/rss.htm,里面很多 RSS 资源)现在我
们就可以应用 Sage 扩展来阅读 RSS 新闻了(如图 6),单击更新按钮,可以自动更新你的 Feeds 资源。
如果你的 Feeds 资源过多,你可以使用 Sage 内置的搜索功能迅速的找到你需要的资源。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 98
经验技巧

在下一期的介绍中,将继续介绍广泛运用于 Firefox 的一些插件及扩展。

深入理解 SetUID
◆PHPChina 肥同小可

在 Linux 系统中,文件除了读、写、执行的基本权限外,还有一些特殊的权限,SetUID 就是其中
的一种,与 Linux 系统的安全关系紧密。

Linux 内核会给系统中每个进程关联两个用户 ID,一个是真实用户 ID,另一个是有效用户 ID 或
称为 SetUID(Set User ID)。真实用户 ID 用于标识由谁为正在运行的进程负责;有效用户 ID 用于为新
创建的文件分配所有权、检查文件访问许可,有效用户为该文件的所有者。内核允许一个进程以调用一
个 SetUID 程序或者显式执行 SetUID 系统调用的方式改变它的有效用户 ID。

一、什么是 SetUID

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 99
经验技巧
让我们看一个例子来理解 SetUID 的概念。在 Linux 系统中每个普通用户都可以更改自己的密码,
用户信息保存在文件/etc/passwd 和/etc/shadow 中,看一下这两个文件的权限:

# ls -l /etc/passwd /etc/shadow

-rw-r--r-- 1 root root 3569 6 月 23 06:57 /etc/passwd

-r-------- 1 root root 3387 6 月 23 06:57 /etc/shadow

普通用户对这两个文件并没有写权限,在更改密码的时候不可能将密码写入进去,那么,为什么
普通用户可以更改密码呢?

/etc/shadow 文件由于存有用户的加密口令信息,对系统的安全至关重要,因此只有超级用户 root
对/etc/shadow 可读可写。但是系统必须允许普通用户也能修改自己的口令,要让他们对/etc/shadow 可写,
又不能可读,而且可写又不能允许他们改别人的口令,如何实现?

其实,真正的秘密不在于文件的权限,而是在于更改密码的命令――passwd。

# ls -l /usr/bin/passwd

-r-s--x--x 1 root root 15480 10 月 16 2002 /usr/bin/passwd

SetUID 用命令“ls -l”查看,显示为“s”权限,存在于文件所有者的执行权限位上。SetGID(Set
Group ID)与 SetUID 类似,不同的是针对用户组的权限设置。

当一个程序具有 SetUID 权限时,用户执行这个程序,在执行时就具有这个程序所有者的权限。
passwd 命令具有 SetUID 权限,所有者为 root,也就是说当普通用户使用 passwd 更改密码的时候,实际是
以有效用户 root 的身份执行,并获得相应的权限,将密码写入/etc/shadow 文件,一旦该命令执行完成,
该身份也随之消失。

所以只要能够想明白为什么普通用户可以更改密码就可以大概了解了 SetUID 权限的作用。

SetUID 权限的设置方法如下(下例中 xxx 为一般的读、写、执行权限):

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 100
经验技巧

设置 SetUID: chmod u+s filename 或 chmod 4xxx filename

设置 SetGID: chmod g+s filename 或 chmod 2xxx filename

同时设置 SetUID 和 SetGID: chmod 6xxx filename 或 chmod u+s,g+s filename

取消两种权限:chmod 0xxx filename 或 chmod xxx filename 或 chmod u-s,g-s filename

可以做试验用 root 身份修改 passwd 命令权限,如下:

# chmod 0511 /usr/bin/passwd

再尝试以普通用户身份登录后修改密码,是否还能成功?当然不会。这就是因为取消了 passwd 命
令的特殊权限 SetUID。 为便于我们深入理解,再看下面的例子:

$ touch newfile01

$ ls -l newfile01

-rw-rw-r-- 1 sam sam 0 12 月 4 16:57 newfile01

用普通用户 sam 创建文件 newfile01,看到新建文件的所有者默认为用户 sam。

做如下更改添加 touch 命令的 SetUID 权限:

# chmod 4755 /bin/touch

# ls -l /bin/touch

-rwsr-xr-x 1 root root 32857 4 月 28 2003 /bin/touch

再用普通用户 sam 创建文件 newfile02,看到如下结果:

$ /bin/touch newfile02

$ ls -l newfile02

-rw-rw-r-- 1 root sam 0 12 月 4 17:02 newfile02

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 101
经验技巧
命令 touch 设置 SetUID 权限后,当普通用户 sam 执行 touch 创建新文件时,实际上
是以 touch 的属主――root 身份在执行此操作,既然是以 root 身份执行,当然新建文件的所有者为 root!
这就是 SetUID 的作用。

再看一下 SetGID 的作用,设置 touch 命令 SetGID 权限:

# chmod 2755 /bin/touch

# ls -l /bin/touch

-rwxr-sr-x 1 root root 32857 4 月 28 2003 /bin/touch

此时,再使用 touch 创建新文件 newfile03,会看到如下现象:

$ /bin/touch newfile03

$ ll newfile03

-rw-rw-r-- 1 sam root 0 12 月 4 17:08 newfile03

新建文件的所属组为 touch 命令的所属组,而不是默认的组 sam,这就是 SetUID 的作用,与 SetUID 类似。

至此相信大家已经对 SetUID 的作用有所了解,最后,还有一个大家要注意的问题,作者在讲课中
经常有学生问为什么会发生下面的情况:

# chmod 4644 test

# ls -l test

-rwSr--r-- 1 root root 6144 6 月 23 06:38 test

SetUID 权限位为“S”!其实这是一个小问题,因为 SetUID 只能设置于可执行程序上,如果文件本身不具
备“x”可执行权限,则系统会以“S”的形式警告(仔细想一下,如果没有可执行权限的话设置 SetUID 则
无任何意义)。

二、SetUID 的危险性

对于 SetUID 的使用,可以打一个生动的比喻:有一个绝密机关,不得已必须有些不能见这些秘密
的人进来做一些事情。于是授权一些特殊的“车辆”(没有窗户,车门紧闭,看不到外面,只有一个小

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 102
经验技巧
洞允许乘坐的人伸出一只手臂),带着所乘坐的人开到要去的地方,允许它办完事情马上带他出来。这
样是不是很安全?不一定。如果“车辆”没有经过精挑细选,可能有很多“门窗”,那可就危险了。

做下面这个试验看看:

$ vi /etc/shadow

/etc/shadow: Permission denied.

尝试以普通用户身份编辑/etc/shadow 文件,你会发现这是被禁止的。那么,我们赋予 vim/vi 以
SetUID 权限(以 Linux 为例,其 vi 实际为 vim 的别名):

# which vi

alias vi='vim'

/usr/bin/vim

# chmod 6755 /usr/bin/vim

此时,普通用户使用 vi 即可以编辑/etc/shadow 文件,因为具备 root 身份,可以进行任意读写操作(比如
可以把任何一个用户密码位清空,则用户登录不需要输入密码)。但是使用 more、cat 等命令仍然无法查
看文件/etc/shadow 的内容,只有被授予了 SetUID 的 vi 可以查看和修改。

好可怕吧,如果有一个用户曾有一次获得超级用户 root 权限,并通过类似的方式给自己设置了后
门,以后他就可以随时变成超级用户了(只要他把自己在/etc/passwd 文件中的 UID 改为 0 就可以了)。

再来看一个令人不安的情况:

$ ps -le | grep httpd

140 S 0 8916 1 0 76 0 - 3697 - ? 00:00:00 httpd

$ kill 8916

-bash: kill: (8916) - Operation not permitted

在系统中,普通用户是不可能关闭 root 启动的进程的,但是如果做下面一个动作:

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 103
经验技巧

# chmod 6555 /bin/kill

现在当普通用户执行 kill 时,因为 kill 被授予了 SetUID 权限,在执行的一瞬间具有了 root 的权限
(UNIX/Linux 系统中所有命令的缺省所有者都为 root),想关闭任何服务都可以!

所以,SetUID 权限不能随便设置,同时要防止黑客的恶意修改,怎样避免 SetUID 的不安全影响,
又利用其方便的地方,有几点建议:

1. 关键目录应严格控制写权限。比如“/”、“/usr”等;

2. 用户的密码设置要足够强壮,8 位以上,大小写字母、数字、符号的组合,如:Am@ri31n,且定
期更换;

3. 对系统中应该具有 SetUID 权限的文件作一列表,定时检查有没有这之外的文件被设置了 SetUID
权限。

下面是一个作者编的小程序与大家分享,主要作用是检查有没有/backup/setuid/list 文件记录之外的其
它文件被设置了 SetUID 权限。在系统调试完成,所有需要安装的软件安装结束后,执行下面命令生成检
查对照文件:

# mkdir -p /backup/setuid

# find / -perm -4000 -o -perm -2000 > /backup/setuid/list

命令 find 参数“-perm”为指定文件权限,SetUID 权限位对应 4,SetGID 权限位对应 2;读、写、执行权限
不限制为“000”;“-o”表示 or,就是文件具有 SetUID 或者具有 SetGID 都在搜索之列。

在需要对系统做检查时,执行以下 shell 程序。也可以放在计划任务中定时检查。程序由于需要在
整个文件系统中做查找操作,需要较长时间。

#!/bin/bash

cd /tmp

[ -d setuid.check ] && /bin/rm -d setuid.check

/usr/bin/find / -perm -4000 -o -perm -2000 > setuid.check

for file in `cat setuid.check`

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 104
经验技巧

do

/bin/grep -w $file /backup/setuid/list &> /dev/null

if [ "$?" != "0" ]

then

echo "$file isn't in list, it's danger"

fi

done

/bin/rm -f setuid.check

假设命令 kill 被设置了 SetUID,则会检测提示:

/bin/kill isn't in list, it's danger

另外,如果在一些数据存放的分区想禁用 SetUID 功能,还可以做如下设置:

编辑配置文件/etc/fstab ,找到要设置的分区(如/home)所对应的设置行:

# vi /etc/fstab

LABEL=/home /home ext3 defaults 1 2

修改模式的设置“defaults”,添加“nosuid”选项,并重新挂载/home 分区:

# vi /etc/fstab

LABEL=/home /home ext3 defaults,nosuid 1 2

# mount -o remount /home

设置后,分区/home 上任何可执行程序即使被设置了 SetUID 权限也无法执行,在一些存放数据、
用来备份等功能的分区上做此设置,可以更大限度的保护系统安全。

请您作完本文中的实验后,别忘把文件的权限改回原状,以免带来不必要的麻烦。本文以 Red Hat
Linux 为例讲解,使用其他的 UNIX/Linux 系统同样适用。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 105
经验技巧

PEAR 安装与使用
◆ liyropt(Linuxpk.com )

PEAR 是 PHP Extension and Application Repository 的缩写。提供了实现各种功能的 php 包,使用时直接加
载即可,无须花费时间自己去编写,节省编程时间。

1. PEAR 的安装

当然,系统得首先安装好 PHP。访问 http://pear.php.net/go-pear ,将其存在本地成文件 go-
pear.php,然后执行命令:

php go-pear.php

会出现提示

1. Installation prefix ($prefix) : /home/liyropt/Desktop

2. Temporary files directory : $prefix/temp

3. Binaries directory : $prefix/bin

4. PHP code directory ($php_dir) : $prefix/PEAR

5. Documentation base directory : $php_dir/docs

6. Data base directory : $php_dir/data

7. Tests base directory : $php_dir/tests

1-7, 'all' or Enter to continue:

输入 1-7 可以修改安装路径,如果是默认,请按回车。接下来按一直按回车就可以了。值得一提的是,在
最后,安装程序会在/etc/php.ini 中自动加入 pear 的加载路径。 但这必须在重启 httpd 服务以后才能使用
(/etc/init.d/httpd restart)。

2. PEAR 的使用

一般安装的执行文件不在/usr/bin 下,为了在终端中运行 pear 命令,作一个链接

ln -s /path/to/pear/bin/pear /usr/bin/pear

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 106
经验技巧
用 pear list 可以查看安装了的 pear 包,如果要安装其他的 pear 包,只需:

pear install package.

如安装 包 Numbers_Roman(实现阿拉伯数字与罗马数字之间转换),

pear install Numbers_Roman.

3. 加载 Pear 包

<?php

require_once("Numbers/Roman.php");

?>

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 107
企业应用

企业应用

OSIMS——基于开源的 IMS 核心网
◆ 张懿

电信网:封闭世界的开源需求

3GPP(3rd Generation Partner Project,第三代合作伙伴计划)在 R5 版本中将 IP 多媒体子系统(IP
Multimedia Sub-system,IMS)首次引入到移动核心网。IMS 是提供实时和非实时的 IP 多媒体业务的通用
体系结构,具有分布式、与接入无关,以及标准开放的业务控制接口等特点,它对控制层功能作了进一
步分解,将会话控制实体和承载控制实体在功能上分离开来,使网络架构更为开放、灵活,相比软交换
将承载平面与控制平面分离的思路,可以说 IMS 在架构上更具开放性。IMS 被当前业界公认为未来融合
的控制平台,备受各大标准组织、设备提供商以及运营商的关注。目前,IMS 在
3GPP、3GPP2、ETSI、ITU-T 等标准化组织中都占有一席之地,相关标准制定和完善正在紧张地进行中,
世界各大设备提供商纷纷推出 IMS 的商用或试验产品,部分运营商也开始进行 IMS 业务的试验或试商用。
IMS 将逐渐成为下一代网络的核心控制层。

有鉴于 IMS 在下一代网络中的核心地位,研究 IMS 的框架结构和基于此架构的业务实现,对于未
来电信业务,特别是多媒体业务的发展来说显得尤为重要。运营商可以通过建设 IMS 试验局,研究网络
的平滑演进,业务的兼容性,新业务的可行性,网络安全等新课题,以保证传统网络到基于 IMS 的
NGN(Next Generation Network,下一代网络)的融合过渡和整个电信网的可管理、可运营能力。业务开
发商与业务提供商也需要有一个完全兼容 IMS 标准的试验系统来开发和验证基于 IMS 的新颖、丰富的个
性业务。电信业传统的部署试验系统/试验网的方案是电信运营商基于自身的需求,通过招投标流程向网
络设备提供商或系统提供商采购相关的软、硬件平台,以该平台的功能和业务能力为基础向公众提供相
关的电信业务。这种方案在相对封闭的电信网中,由于其复杂的架构和协议机制,以及较长的开发周期,

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 108
企业应用
有较强的适用性。它将网络与业务的研发过程推向了产业链的上游,待设备或产品发展成熟后,再引入
电信网中,减小了运营企业的投资风险和投资回报周期。但是随着 NGN 与网络融合的趋势日盛,传统电
信网络引入新业务与应用方式的弊端就越来越明显的暴露出来了。

首先,传统方式提供新业务的周期较长,电信运营商无法快速的将用户的需求反馈到业务或应用
中,无法提供差异化业务,陷入只能提供带宽的窘境。

其次,各种电信业务的承载越来越趋向于统一的分组承载,在 NGN 的控制与承载相分离的架构下,各种
类型电信网的核心网趋向于融合。也就是说,不管是固定通信网还是移动通信网,甚至是广播通信网,
会朝着使用相同核心网的方向发展,不同的接入技术可通过相应的网关设备来实现,而业务平台和业务
的发展会越来越富于变化。

另外,不同的通信技术都将持续提高 IP 分组承载能力作为发展的重点,未来丰富而新颖的多媒体
业务都将围绕 IP 技术来展开,互联网现存或发展中的业务必将影响电信网业务的发展,互联网业务的开
发模式也会逐步渗透进电信网的业务开发。

在融合的网络环境下,快速而有效的提供差异化的交互式多媒体业务是未来电信业务发展的重点。
在以客户和业务为中心的发展模式中,如何快速的开发新业务、原型化业务实现,是目前各大电信运营
商都在积极思考的问题。如果能够采用一种更为开放、独立于厂商的方式实现 IMS 核心网和业务平台,
势必会为电信业务的发展注入新的活力。

FOKUS 与 Open IMS Playground

Fraunhofer-Gesellschaft (弗劳恩霍夫应用研究促进协会)[1]是德国也是欧洲最大的应用科学研究
机构。协会成立于 1949 年 3 月 26 日,以德国历史上著名的科学家、发明家和企业家约瑟夫?冯?弗劳恩霍
夫(Joseph von Fraunhofer, 1787-1826)命名。该协会有 58 个研究所,近 13000 科研人员一年为 3000 多客
户完成约 10000 项科研开发项目,年经费 10 亿欧元。其中 2/3 来自企业和公助科研委托项目,另外 1/3 来
自联邦和各州政府,用于前瞻性的研发工作,确保其科研水平处于领先地位。为满足企业及社会的需求
不断的提供高质量的研发服务。弗劳恩霍夫开放通讯技术系统研究所(FOKUS)[2]主要从事智能环境、
下一代网络和自主通信系统、模式驱动工程、电子政务等领域的研究,为来自工业、科研资助和公共管
理领域的伙伴提供网络与技术集成,中间件的适配和管理,服务与应用的建设和管理,分散电信系统的
测量与检测,自动化方法和软件,开展过程优化等方面的技术支持。

作为德国 3G beyond 国家试验床的一部分,FOKUS 在 2004 年 7 月启动 Open IMS Playground(开
放 IMS 试验场)项目[3],该试验场搭建了一个具备所有 IMS 核心组件的环境,这些组件既有来自于

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 109
企业应用
FOKUS 自己开发的系统,也有来自于设备提供商和合作伙伴的产品或实现。通过该试验场,学术机构和
行业合作伙伴可以进行 IMS 相关组件、协议和应用的前期原型化,互操作性验证,组件的功能测试和基
准测试。FOKUS 的开放 IMS 试验场的组件如图 1 所示,主要由以下几部分组成:

图 1. IMS Play ground 组件

◆IMS 核心网:包括了 FOKUS 自己的 CSCF(Call Session Control Function,呼叫会话控制功能)和
HSS(Home Subscriber Server,归属用户服务器)的实现。该部分已于 2006 年 11 月采用 GPLv2 授权协议
的方式开放了源代码。

◆OpenIC:开放式 IMS 客户端,基于 Java 和.NET 环境,可以运行在 Linux 或者 WindowsXP 操作系统的
PC 机上或者运行在 Windows Mobile 的移动设备上。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 110
企业应用
◆SIPSEE:IMS SIP 应用服务器,提供基于 SIP 协议和 HTTP 协议的融合业务环境,实现基于 IMS 的业务。

◆OCS-X:支持 Parlay X Web 服务 API 的网关。

◆XDMS:XML 文档管理服务器,定义了一种通用的机制,使得业务引擎 Service Enabler(例如 PoC“移
动 PTT 业务”、IM“即时通信业务”、Conferencing“多方通信业务”等)能够方便的访问用户的业务相关
信息。

◆Presence 服务器:提供了一个标准兼容的在线状态和事件业务引擎,既可以为客户端提供 Presence 业务,
也能够为其他应用提供服务。

OSIMS 项目

OSIMS 即 Open IMS Core[4],由 FOKUS 研究所在 2006 年 11 月 16 日第二届 International FOKUS
IMS Workshop 上开放源代码,原属于 FOKUS Open IMS Playground 的核心网部分,在 BerliOS 开源项目
管理网站上的项目名称是 Open IMS Core(开源 IMS 核心网)[5]。该项目实现了 IMS 核心网定义的各
CSCF 功能和 HSS 功能。(图 2)

图 2 - OSIMS

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 111
企业应用
通过该项目,向上为开发人员提供了一个符合 3GPP 标准的 IMS 业务控制接口(IMS Service
Control,ISC),使他们可以方便的使用 IMS 的路由特性、触发规则等功能,用于通过不同的实现平台开
发 IMS 业务,例如 SIP 应用服务器、OSA/Parlay 或 Parlay X 网关、下一代智能网平台;向下,可以用来
开发不同的接入网附着到 IMS 核心网所需的组件和概念。

1.CSCF 功能

IMS 系统的信令协议采用 SIP 协议,各个 CSCF 网元可以说都是具备扩展功能的 SIP 应用服务器。
Open IMS CSCF 基于开源的 SIP Express Router(SER)项目[6]构建,SER 可以作为 SIP 的注册服务器、
代理服务器或重定向服务器运行,并且能处理每秒上千的呼叫。SER 具备模块化的结构,方便进行功能
扩充。Open IMS Core 中的每个 CSCF 实体都通过 SER 的动态可加载模块实现,给 SER 增加了符合 3GPP
技术规范要求的相关功能。这些模块具备并行处理的能力,还可以保存额外的状态信息,对负载均衡和
数据量等可扩展性问题也进行了特别的考虑。另外 CSCF 的实现还需要保持尽可能高的处理性能。作为在
SIP 领域广泛采用的 SIP 服务器,SER 具有几乎最好的处理性能。作为 SER 扩展,Open IMS 的 CSCF 也
具有相同的处理能力。Open IMS Core 还保留了 SER 用户脚本工具,可以最大弹性的配置 SIP 处理机制。

P-CSCF(图 3):

图 3. OSIMS P-CSCF

Open IMS Core 的 P-CSCF(Proxy CSCF,代理呼叫会话控制功能)组件可以充当核心网的应用层
防火墙:P-CSCF 判断用户的身份,仅已注册的终点被允许插入消息至 IMS 网络。因此,注册之后,P-
CSCF 要建立至每个 UE(User Equipment,用户设备)安全的通道。为了掌握已注册用户的信息,P-
CSCF 实现了一个反向 SIP 注册服务器,通过拦截注册过程更新用户信息。之后再通过在 SIP UAC(User

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 112
企业应用
Agent Client,用户代理客户端)模式下订购 S-CSCF 的注册包来实现更新用户信息,并接收状态提醒。为
了保障高性能和快速查询,实际的数据被保存在哈希表中。

对于始发的呼叫,P-CSCF 生成唯一的计费向量组,并且在 SIP 消息中插入网络和路径标识符以供
之后的正确处理。被 UE 伪造的信息或者可能造成攻击的信息,会被 P-CSCF 移除和/或修改。当成功注册
到 IMS 归属网络之后,以后的用户消息会基于 IMS 归属网络的 DNS 信息转发。对于出局方向,Open
IMS Core 的 P-CSCF 还可以支持简单的 NAT 功能,不过 NAT 穿越功能模块仅适合于特定的用户位置信息
存储机制。

Open IMS Core P-CSCF 实现的特性包括:

◆信令防火墙和用户身份判断(支持 P-Preferred-Identity、P-Asserted-Identity 头);

◆通过 RFC3680 的“reg”事件实现的本地注册服务器同步;

◆支持路径头;

◆Service-Route 验证/执行;

◆基于会话状态和 Record-Route 的验证/执行;

◆使用 AKA 的 CK 和 IK 建立 IPSec;

◆鉴权的完整性保护;

◆支持 Security-Client、Security-Server、Security-Verify 头;

◆基本的 P-Charging-Vector 支持;

◆支持 Visited-Network-ID 头;

◆支持信令的 NAT 功能;

◆通过 RTPProxy 支持媒体的 NAT 功能。

I-CSCF(图
4):

图4

OSIMS

I-CSCF

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 113
企业应用
I-CSCF(Interrogating Call Session Control Function,询问呼叫会话控制功能)作为一个无状态的
代理服务器角色,通过主叫/被叫用户的公有标识查询 HSS,并基于查询的响应,路由消息至对应的 S-
CSCF。Open IMS Core 的 I-CSCF 实现了至 HSS 的 Cx 接口,因此支持通过 Diameter 协议定位分配给用户
的 S-CSCF 或基于负荷选择一个 S-CSCF 的功能。

在成功接收到 Diameter 的查询响应之后,I-CSCF 采用事务模式转发 SIP 消息,这种方式具有更快
的速度,并且只需要最少的状态信息。为了保护归属网络,I-CSCF 具备防火墙的能力,仅允许采用网络
域名安全(Network Domain Security,NDS)的来自信任网络的消息通过。

Open IMS Core I-CSCF 实现的特性包括:

◆完全的 Cx 接口支持(LIR,UAR)

◆基于用户能力的 S-CSCF 选择

◆支持顺序选择 S-CSCF 转发的功能

◆支持 Visited-Netowrk-ID 头和漫游允许验证

◆支持拓扑隐藏(THIG)功能

◆网络域名安全(NDS)

S-CSCF(图 5):

图 5. OSIMS S-CSCF

Open IMS Core 的 S-CSCF(Serving Call Session Control Function,服务呼叫会话控制功能)也实

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 114
企业应用
现了采用 Diameter 协议与 HSS 通信的能力(通过 Cx 接口)。通过该接口可以实现获取鉴权参数组、更
新注册信息、下载用户签约信息等 3GPP TS 29.228 标准规定的功能。S-CSCF 可以根据用户签约信息的
iFC(Initial Filtering Criteria,初始过滤规则)执行指定的 SIP 路由规则。目前,Open IMS Core 的 S-CSCF
实现了对 IMS Digest AKA 鉴权协议的支持,通过来自 HSS 的鉴权参数组和 UE 传递的值进行比较实现鉴
权功能。

为了保持更快的响应时间,S-CSCF 的注册服务器实现了一个基于哈希表的复杂结构,用户身份
相关的信息被保存在这里,用于以后的呼叫路由处理。这个注册服务器也接受注册状态事件的订购,并
提醒订购者注册状态的改变。

Open IMS Core S-CSCF 实现的特性包括:

◆完全的 Cx 接口支持(MAR、SAR、PPR、RTR)

◆基于 AKAv1-MD5、AKAv2-MD5 和 MD5 协议的鉴权

◆支持 Service-Route 头

◆支持路径头

◆支持 P-Asserted-Identity 头

◆支持 Visited-Network-ID 头

◆支持从 HSS 下载业务信息

◆支持 iFC 触发

◆支持通过 ISC 接口路由消息至应用服务器

◆支持通过“reg”时间服务器的接入限制

◆基于会话状态的处理

2.HSS 功能

如果没有 HSS,IMS 核心网就不够完整,作为 IMS 系统内的集中用户数据库,HSS 存储用户、业
务和应用服务器相关的信息,主要通过 Cx 和 Sh 接口采用 Diameter 协议同 IMS 其他网元通信。FOKUS 的
HSS 功能(FHoSS)基于 Java 编写,并且采用了一些其他的开源代码软件和框架。用户数据被保存在
MySQL 数据库中。FHoSS 的目的主要是满足核心网 HSS 功能要求,所以它仅支持 HSS 的一些基本功能。
目前,FHoSS 支持鉴权参数组的生成,并可以通过基于 Web 的管理接口管理用户的签约数据和相应的
iFC。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 115
企业应用

图 6. OSIM FHoSS

FHoSS 实现的特性包括:

◆支持 3GPP Cx Diameter 应用

◆支持 3GPP Sh Diameter 应用

◆支持 3GPP Zh Diameter 应用

◆集成简单的鉴权中心(AuC)功能

◆基于 Java 的 Diameter 协议栈实现

◆基于 Web 的管理控制台

Open IMS Core 的 FHoSS,实现 HSS 规范所规定的相关功能和接口。在架构上,FHoSS 分为三个层次。

GUI 层:

用于 FHoSS 的管理和监控,提供了一个基于 Web 的人机交互接口。GUI 部分采用 Java 的 Servlet 技术结合
Apache 基金会的 Struts Web 框架实现,提供了一个将业务逻辑和用户呈现分离的简洁架构。

数据访问层:

HSS 相关的操作数据被存储在数据库中,Hibernat 持久性框架被用来构建数据访问层。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 116
企业应用
接口层:

FHoSS 主要实现了采用 Java 编写的三个接口:

◆Sh 接口(用于应用服务器访问 HSS)

◆Zh 接口

◆Cx 接口(用于 HSS 和 I-CSCF、S-CSCF 通信)。

展望

采用开源的 IMS 核心网,提供了一个有别于传统的,依靠设备提供商/系统提供商部署网络、验证
和开发业务的新途径。利用该途径,可以有效的降低 IMS 试验系统和业务实现环境的建设成本,增加试
验网络的开放性,缩短业务的实现周期。可以说采用标准兼容性高的开源项目搭建的 IMS 试验网,是进
行多厂家混合组网,互操作性测试的绝佳实验平台。同时基于此平台,还可以将更多的精力放到如何实
现上层的业务平台和业务上,受益于 NGN 网络的开放接口和标准,这些业务平台和业务在成熟后可直接
应用到电信网中,加速新业务的开发。

Open IMS Core 项目作为开源的 IMS 核心网,虽然其目的并不是作为一种实现,替换厂商的解决
方案,它的主要价值还是在于构建试验网和快速原型化。但是,当信息技术与通信技术越来越紧密地联
系到一起之后,软件业和互联网中的一些新兴概念和方法将会逐步的渗透到电信网中,使原本封闭、复
杂而自成体系的电信网变得更加开放。基于开源思想的系统和软件,不仅已经打破了传统软件业的格局,
势必还将打破电信业的格局和价值链。采用通用硬件平台,开源软件实现的针对特定电信应用领域的解
决方案,将会越来越多的应用于电信网络中,满足电信运营商、业务开发商、业务提供商和用户的多方
需求。我们有理由相信,在这样的价值链中,电信运营商在网络建设中的主导作用将得到进一步的加强;
以客户和业务为中心的开放网络环境给更多中小企业提供了机会,促进电信业价值链的健康发展,电信
业务将会得到极大的丰富。

参考资料:

[1] 弗劳恩霍夫协会主页:http://www.fraunhofer.de/EN/

[2] 弗劳恩霍夫开放通讯技术系统研究所:http://www.fokus.fraunhofer.de/home/index.php?lang=en&seite=

[3] FOKUS 开放 IMS 试验场:http://www.fokus.fraunhofer.de/ims/index.php?lang=en

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 117
企业应用
[4] Open IMS Core 项目主页:http://www.openimscore.org/

[5] BerliOS Open IMS Core 项目主页:http://developer.berlios.de/projects/openimscore/

[6] SER 项目主页:http://www.iptel.org/

使用开源 CRM 进行客户管理
◆顾宏军(Linuxpk.com )

经过多年的发展,开源已成为一种趋势,开源软件成为软件产业的一股重要力量,在 CRM、ERP
等企业应用领域,出现了一大批开源应用;这是一个系列文章,介绍中小企业如何使用开源 CRM 系统进
行客户关系管理,主要内容包括 VtigerCRM 安装,初始化,业务流程,系统维护等,如果时间允许也会
介绍其它的开源 CRM,本文是这一系列的第一篇,讲解 VtigerCRM 的安装,大家有问题都可通过 Linux
宝库获得解答。

提及开源 CRM,最知名的要数 VtigerCRM 和 SugarCRM,VtigerCRM 和 SugarCRM 都是
AMP(Apache+Php+Mysql)架构的,可以运行在 Wdinwos,Linux,MacOSX 等多个平台上。SugarCRM
区分开源版与商业版,部分 CRM 系统插件也是收费的;VtigerCRM 源自印度,最初基于
SugarCRM,VtigerCRM 未区分商业版和开源版,官方提供的所有 VtigerCRM 插件也都是开源的,也因此
选择 VtigerCRM 为例介绍开源 CRM 应用。

安装 VtigerCRM 基础运行环境

VtigerCRM 是基于 AMP(Apache+Mysql+Php)架构的,因此要运行和部署 VtigerCRM 就需要先行安
装 AMP 环境,在不同操作系统下 AMP 环境有不同的安装方式,推荐采用针对所属平台的的 AMP 安装包,
以简化 AMP 环境环境的安装过程,而不是一个组件一个组件的单独安装。

Windows 平台:可以使用 WAMP 或 EasyPhp 等集成安装包

MacOSX 平台:可以使用 MAMP 或 WAMP 集成安装包

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 118
企业应用
Linux 系统:如果是 Ubuntu/Debian Linux 系列,通过一个命令安装完成;命令如下:apt-get install apache2
php5-mysql libapache2-mod-php5 mysql-server

注:VtigerCRM 运行环境在不同系统下安装方式不同,但是系统设置,使用等各个平台下都相同。
Linux 上 AMP 环境安装,如果使用的是 Ubuntu Server CD,Ubuntu 安装的时候,选择了安装 LAMP,系
统将会自动安装 Apache2,PHP5,MYSQL5,在安装了 AMP 环境后,最好立即为 MYSQL 设置一个 root 密
码,并为您的网络应用长须设置好它需要的数据库,用户名和密码。

VtigerCRM 下载与中文补丁

VtigerCRM 下载推荐从官方网站下载,通过第三方网站获取的有可能被篡改过。VtigerCRM 需要
PHP5 才能运行,最新版已不提供 PHP4 支持,另外,PHP 官方也将结束 PHP4 的安全更新。

1、下载 VtigerCRM

在上一步已经安装好 AMP 环境后,将从 VtigerCRM 官方网站下载的代码包,解压后放到 apache
的 web 目录下,VtigerCRM 官方网站:http://www.vtiger.com,VtigerCRM 最新版为 VtigerCRM 5.0.4 版,
5.0.4 版是 VtigerCRM 第一个支持 UTF-8 编码的版本,也因此很多原先 VtigerCRM 的中文(包括韩文,日
文)的支持问题都解决了。

2、解压 VtigerCRM 安装文件

解压缩下载的 VtigerCRM 安装包文件,到 Apache2 的 web 目录下(Apache 设置里 DocumentRoot 参
数所指向的目录),如:/var/www/html 下,当然每个人的安装路径可能不一样。

3、下载安装 VtigerCRM 中文补丁

VtigerCRM 项目官方未包含中文语言支持,所以大家需要自行从网上下载 VtigerCRM 的简体中文
语言包,在 VtigerForge 中有 5.0.2 版 Vtiger 中文版语言包;解压缩中文包,

(1)拷贝解压出的 include 和 modules 到 vtiger 安装根目录下;(全部拷过去),这里需要先修改一下,把所
有 zh-ch.lang.php 改成 zh_cn.lang.php

find . -name zh-ch.lang.php -exec mv {} zh_cn.lang.php \;

(2)修改 config.inc.php

修改:$languages = Array('en_us'=>'US English',);

改为:$languages = Array('zh_cn'=>'Simplized Chinese','en_us'=>'US English',);

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 119
企业应用
注:添加语言菜单,

修改:$default_charset = 'ISO8859-1';

改为:$default_charset = 'UTF-8';

注:设置默认编码,

修改:$default_language = 'en_us';

改为:$default_language = 'zh_cn';

注:设置默认语言为中文

(3)中文字体的问题

在 vtiger CRM 的 Image\Canvas\Fonts 目录下添加中文字体,例如 simsun.ttf,然后修改 fontmap.txt,添加一
行:Simsun,simsun.ttf

注:添加中文字体,可以解决中文视图的显示问题,如果在 Linux 下,有可能有文件名大小写区分的问题

然后修改 include\utils\GraphUntils.php

修改:case 'cn_zh': 改为:case 'zh_cn':

注:网上的 VtigerCRM 中文包几乎都是不全的或者有些错误的,大家如果需要在实际场合使用,最好对
语言包进行下校对与完善。

VtigerCRM 系统安装

1、使用浏览器打开 http://127.0.0.1/install.php,即真正开始 VtigerCRM 系统的安装,推荐采用
Firefox 或 IE 等主流浏览器,然后点击"Start"(注:截图部分取自斐迅 CRM,实际就是 VtigerCRM)

图 1:VtigerCRM 初始化安装

2、安装程序检测系统环境

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 120
企业应用
如果不满足安装需求,会显示为红色,并提示如果进行修改以满足 Vtiger 安装需求;点
击"Next"进入下一步:

图 2:安装程序检测系统环境

3、VtigerCRM 系统基本设置

配置数据库和路径等参数,界面效果如下,输入 MySql 主机名和端口(Host Name),数据库用
户名(MySQL User Name),数据库密码(MySQL Password),数据库名称(MySQL Database
Name),有些虚拟主机空间下,如果指定的数据库不存在,需要先建数据库,然后再执行这步),网站
设置(Site Configuration,默认已经指定,没有特殊情况不需要重新配置),管理员配置(Administration
Configuration,默认为 admin/admin),货币设置(货币名词,货币符号)等,一切配置完毕,点
击"Next"进入下一步。

图 3:Vtiger 安装设置

4、确认安装设置

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 121
企业应用
这一步确认安装设置,查看刚才设置的数据库信息,站点信息,货币信息等是否有问题,如果确认没有
问题,就点击"Next",VtigerCRM 将会开始配置文件写入操作。

图 4:系统设置确认

5、配置文件写入,点击"Next",即开始数据库初始化

图 5:配置文件写入 图 6:数据库的初始化

6、数据库表的创建,数据库初始化

如图 6 所示。

7、VtigerCRM 安装成功

VtigerCRM 在安装成功时,会修改 install 目录和 install.php 文件为一个随机的目录名和文件名,推
荐安装完的系统,将安装文件删除,以免引起安全问题。

8、VtigerCRM 登录

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 122
企业应用
安装完的 CRM 系统,打开 http://127.0.0.1(根据安装的目录等所有差别),使用安装过程中设置的
admin 用户及相应的密码,登录,进行初始化,就可以使用了,具体 VtigerCRM 系统初始化操作将在下一
篇中详细介绍。

图 7:系统安装成功

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 123
嵌入式

嵌入式

如何成为一个优秀的程序员

——致亚嵌就业班的报名者和新学员

◆亚嵌教育(www.akaedu.org) 宋劲杉

作者简介:清华大学自动化系硕士,北京亚嵌教育研究中心(www.akaedu.org)高级讲师,5
年嵌入式系统开发经验,2 年嵌入式行业教学经验。参与多个嵌入式系统项目开发工作,精通 Linux 内

核、 POSIX、TCP/IP、 bootloader 编写、文件系统、ARM 处理器,擅长 ARM 平台上 Linux 系统

的移植和应用开发,熟悉的 ARM 处理器有:S3C2410、PXA255、PXA270 和 EP7312 等。个人博

客地址:http://djkings.javaeye.com/。

我们的老师每天都要应对报名者和学员提出的很多同样的问题,以下是这类典型问题的汇总:嵌
入式行业(或者 IT 业)有没有前途?我听说编程编到三十五岁就没人要了,一定要转行找出路是吗?做
驱动开发和做应用开发哪个更有前途?我一开始看什么书都看不懂,怎么才能理出一个学习顺序?诸如
此类。这使我迫切地感觉到,应该总结这样一份非具体技术问题的 FAQ 了。本文仅代表我个人观点,有
问题欢迎 Email: songjinshan@akaedu.org。

在看这份 FAQ 之前,你必须先读完 ESR 的《如何成为一名黑客》(本文末尾附有中译版),该
文所讲过的道理我不再重复。该文用很大的篇幅讲什么是黑客文化,虽然态度和信仰的确是成功的最关
键因素,但是你肯定会想,做不做黑客跟我没关系,我只是想学个一技之长,找个好工作而已,对吧?
那么肯定更希望获得一些具体的可操作的指导。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 124
嵌入式

1、各种软件技术之间是怎样的关系?

我把软件技术分为三个层次:

◆问题域:计算机图形学、音视频编码、信息安全、模式识别、信息检索、自然语言分析、人工智能、
科学计算等;

◆系统集成:C++和 Java 等面向对象语言、Python 等解释型语言、LISP 等函数式编程语言、GUI、中间
件、编译器与解释器、虚拟机、数据库、网络服务、并行计算、集群、Peer2Peer、系统管理等;

◆ 系统功能:硬件描述语言、计算机体系结构与编程模型、指令集与汇编语言、C 语言、内核、文件系
统、设备驱动、网络协议、POSIX 等。

计算机最终是做什么用的呢?最终是通过问题域的各种技术为用户解决问题的,这些技术都包含
很高深的算法,然而它们必须在一个平台上运行,它们需要利用平台提供的各种基础设施,比如计算能
力、I/O 能力和网络互联能力。系统功能和系统集成层就是用来实现这个平台的。系统功能层实现计算、
I/O 和网络的基本功能,系统集成层对这些基本功能做一些抽象和包装,提供更方便灵活的接口。

2、为什么要学习嵌入式技术?

在亚嵌的学习期间,你将详细了解系统功能层的各部分是如何工作的,也会在面向对象编程、
GUI、数据库、网络服务等系统集成层的技术方向进行探索。嵌入式系统可说是麻雀虽小五脏俱全,虽然
没有 PC 和服务器那么复杂,但计算机系统的各种组成一样也不缺。因此,以嵌入式系统作为切入点开始
学习软件技术是非常好的选择,避开不必要的复杂性,把握计算机系统最根本的概念和技术要点。打下
扎实的基础之后,你的职业发展则完全不必局限于嵌入式领域,即使你日后做 PC 或服务器开发,在亚嵌
所学的知识和技能同样使你终生受益。正如庖丁解牛,心中有全牛,自然就能游刃有余。

另一方面,你一定见到各大网站都有大量的宣传,说现在嵌入式行业前景空前的好,嵌入式人才
紧缺,有几百万职位空缺等等。这些说法也是对的,但我们需要更深入地理解这说明了什么问题。刚才
我们说,嵌入式系统也是一个完整的计算机系统,和 PC 或服务器没有本质的区别,事实上,嵌入式、PC
和服务器的界限已经越来越模糊了。以前的嵌入式就是单片机,只能做简单的运算处理,现在的 ARM 处
理器性能比从前的奔腾还强,打游戏、看电影都没问题,谁能说它不是 PC 呢?另外有些专用的嵌入式系
统已经在充当服务器的功能了,而集群技术更是可以使许多廉价的处理器组合在一起发挥大型服务器的
作用。由于嵌入式越来越多地应用到电器、汽车和各种设施上,无处不在,并且与 PC、服务器呈融合的
趋势,所以嵌入式行业前景空前的好。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 125
嵌入式
那么,为什么说嵌入式人才紧缺呢?其实,学嵌入式系统就是学计算机系统,本质上并没有什么
特殊的只有嵌入式系统才有的技术。说嵌入式人才紧缺,其实质上是说真正懂计算机的人才紧缺。现在
很多学校的所谓“软件学院”培养的软件人才都是一叶障目不见泰山的:只懂 J2EE 和.NET,没学过 C 和
汇编;只会调库函数 sort(),而对各种排序算法一无所知;设计模式、软件工程讲得头头是道,却不知道
好的软件还是要靠牛人靠智商来做的。培养人像蒸包子一样一屉一屉地出,靠软件工程搭一条生产线,
然后让熟练工人站在生产线上拧螺丝,幻想着这样就能生产出好的软件,那是把软件工程和程序员的作
用本末倒置了。现在嵌入式开发对程序员的素质要求更高了,以上这类“软件人才”不能胜任了,因此
说嵌入式人才紧缺。亚嵌的就业班虽然只有几个月,但培养目标是有完整的计算机系统概念的软件人才,
而不是只会拧螺丝的软件工人,这正得益于我们始终坚持做嵌入式培训而不是 Java 或.NET 培训。

3、有人说软件技术变化太快,现在学的东西过两年就要淘汰,是吗?

你知道这话是什么人说的吗?必然是已经被淘汰的人说的。比如 Delphi、BCB、PB 这些开发工具
和语言,都曾经很是风光了一阵,但现在已经完全被 Java 和.NET 取代了。那么 Java 和.NET 会不会被取
代呢,也许在相当长的时间内还不会,但是我看好 Python。

这些被淘汰的程序员有一些共同的特点:只会用鼠标拖拽控件,离开 IDE 就不知道如何工作,学
点儿花拳绣腿的功夫就想吃一辈子,对学习新技术不感兴趣,做一天和尚撞一天钟。现在请回头看看
FAQ1,在整个软件技术领域,这些变化快的技术其实只占了很小的一块,却成了这些人的全部看家本领,
这样的人能不被淘汰吗?

与这些流行的开发工具和语言相反,很多技术和思想是很少变化的。比如,POSIX 和 SUS 标准规
定了一套系统函数接口和基本命令的语义,只有实现了这些才可以称作 UNIX,因此今天的
Linux、Solaris 跟 20 多年前的 UNIX 在系统功能层上是基本一致的。而指导计算机科学发展的数学理论,
甚至是老祖宗们在计算机还没诞生的年代就替我们想好的:布尔代数发表于 19 世纪,直到一个世纪后发
明了计算机和数字电路才有了用武之地;数论在 17 世纪就出现了,一直都被数学家们当成一套好玩的理
论,但只是好玩而已,直到计算机密码学诞生后才发现它的实际用处。

各种流行的开发工具和高级语言虽然变化很快,但是底层的编程语言却非常稳定,各种操作系统
的内核都是用 C 语言写的,以前是这样,以后也不会改变。另一方面,各种编程语言的设计思想也是非
常稳定的。其实世界上只有两种编程语言,一种是 C,一种是 LISP,前者是 imperative 的,是对计算机模
型的抽象,后者是 functional 的,是对数学函数模型的抽象。面向对象是一种重要的软件工程思想,却算
不上一种新的语言模型,应该归在 C 的一类。属于同一类的各种语言其实都大同小异,一个精通 C++的
人学习 Java 需要多长时间?熟悉语法一个星期,熟悉类库三个星期,一个月足矣,以往的经验都可以套

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 126
嵌入式
到新的编程语言上。然而要想习得深厚的算法功底、逻辑思维和抽象思维修养,能够真正说清楚“系统”
是什么,如何分析和设计“系统”,需要多长时间?恐怕要数十年。

4、C 和 Java 哪种语言更好?

计算机科学与编程语言无关,甚至与计算机本身也没太大关系,它研究的对象并不是计算机,而
是人分析问题解决问题的方法论。程序写出来最主要不是为了给计算机执行的,而是为了给人看的,使
用编程语言和使用自然语言一样是为了表达和交流,只不过程序还可以顺便给计算机执行而已。

以上这些话并不是我说的,而是一位著名的计算机科学家说的。所以,在编程语言的层面上争论
是没有意义的。很多初学者错误地认为掌握了编程语言就等于学会了计算机,一种编程语言都还没有掌
握好,更没有上升到方法论的层面,只有这种无知的人才会去争论哪种语言好的问题。掌握了编程语言
远远不等于学会了计算机,而只是最开始的一步,最简单的一步,到了工作中,用到什么语言就去学什
么语言,什么语言过时了就丢掉,编程语言不需要积累因为它太简单了,真正需要积累的是方法论。

很多人喜欢参与到这类争论之中,毫无例外,每个人都在为自己熟练掌握的编程语言辩护,就是
“我会的语言最好,我不会的语言都不好”,其实这些人真正想说的是“我会的语言最好是千秋万代,
我就不必学新的语言,不必适应新的变化了”,概括起来说就是一个字,懒。真正的高手都是会很多编
程语言的,国外有些做技术咨询的,每年都要学好几门新的编程语言,这样才能应对市场的变化。不断
丢掉旧的编程语言学习新的,看起来好像完全是白费力气,没有积累,其实,每种编程语言的设计都有
独到之处,体现了每种语言的精髓,在融汇百家之后积累下来的正是方法论。

争论哪种语言能做的事情更多、功能更强是没有意义的。从理论上说,任何一种符合图灵机模型
的编程语言,加上适当的 I/O 扩展都可以做任何事情,用 shell 脚本也可以写出很像样的游戏来。只不过
各种语言的设计目标不同,表达能力不同,做不同的事情所需的代码量不同而已。

另外一种错误认识是:哪种语言的市场最大,开发人员最多,哪种语言就最好。单从这种意义上
说,Java 的确比 C 更好,所以往届有学员问我们为什么只教 C 语言。请你注意,操作系统内核是用 C 写
的,各种底层的应用程序包括 Java 虚拟机也是用 C 写的。如果你想学 Java,在亚嵌的学习完成后你将有
能力分析 Java 虚拟机的实现,站在计算机系统的高度来学 Java 才会使你成为真正的 Java 高手。如果你只
想速成,想早点学成一门技术去做拧螺丝的工作,那么亚嵌不适合你。

在 FAQ3 里说过,世界上有 C 和 LISP 两种编程语言,你现在学了 C,以后学了 C++、Java、.NET
等等,也仍然只认识了半个世界。LISP 和 Haskell 构成了另外半个世界,现在很常见的 Python 和
JavaScript 等解释型语言也借用了 functional programming 的思想。如果你只管闷着头写代码,而不去广泛

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 127
嵌入式
涉猎,那么你将错过很多精彩。

5、我听说编程编到三十五岁就没人要了一定要转行找出路是吗?

这个观点虽然很流行,但根本不值一驳。现在三十五岁转行的那些人,都具有前面所说的那些特
征,对学习新技术不感兴趣,对探索计算机的本质不感兴趣,得过且过,下了班就是打游戏、看电视,
总之就是懒。如果是开出租、摆摊,勤快人懒人都有饭吃,而 IT 这一行对懒人是非常无情的,懒人就不
该入 IT 这一行,不从自身找原因,却到处散布这种言论,怪社会不好,打击新人的信心,着实可恨。

另外一种情况,编程编到三十五岁,进入公司的管理层,或者自己创业,这都是很勤快的人,如
果他们把这种勤快用在技术上肯定也可以做得更好,所以也无法证明编程编到三十五岁会因为没有出路
而转行。

编程不是个体力活,需要高强度的思考和智力投入,分析能力、思考能力都需要时间积累起来,
所以并不是越年轻干得越好。相反,我认为三十岁以前写的代码都是垃圾,三十岁以后才能写出像样的
程序来。如果希望一辈子走技术的道路而不会被迫转行,就要不断地把自己的工作性质从“体力活”变
成“脑力活”。什么叫“不断地”变呢?这里的“体力活”并不是指种地、盖房子这种劳动,而是指简
单重复地编写代码,这时你会感觉,派给你的工作都能凭以往的经验轻松应付了,但是千万不要满足于
现状,就像温水煮青蛙一样,这是危险的处境!要摆脱这种处境就需要学习、思考、提高,让公司派给
你更有挑战性的工作,在工作中应用新学到的知识和技术就是“脑力活”了,但是用得久了又会变成简
单重复的“体力活”,这时就需要再学习、再提高,所以叫做“不断地”把自己的工作性质从“体力活”
变成 “脑力活”。如果有一天你发现,自己长期陷于简单重复的劳动之中,并且业余时间非常少,无法
学习提高,这说明公司不会用人,你就该考虑跳糟了。

从另外一个角度来说,如果希望一辈子走技术的道路,就要有自己的核心竞争力,这个核心竞争
力决不是凭以往的经验能够做某些工作的能力,而是学习能力、思考能力和解决有挑战性的新问题的潜
力。在 IT 这一行,凭借以往的经验干重复的活是干不长久的,原因很简单,一个问题不会被解决两次,
当你发现你的经验能够解决一类问题时,别人早把解决这一类问题的套路编写成 framework,新上手的人
即使不具备你的这些经验也可以调用 framework 中的类和函数来解决问题,然后在这个 framework 的基础
上积累新的经验解决新的问题。正因为如此,全世界开发人员的经验才会积累起来,促使软件技术发展
得如此迅速。这并不是说经验完全没有用,最关键的,学习和思考也是建立在以往经验的基础之上的。
另一方面,现有的 framework 并不一定是某方面开发经验的完美整合,也需要不断发展,用新的办法重新
解决老问题,以 Web 开发为例,从早期的 ASP、PHP 到后来的.NET、J2EE,到现在的 Ruby on
Rails、Django 等等,这些 framework 解决的是同一问题,就是如何快速有效地开发 Web 应用,这方面的

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 128
嵌入式
经验被不断重新整合,推陈出新。总结一下,什么才是核心竞争力呢?应该是在经验的基础上学习新技
术、解决新问题的能力。

6、做驱动开发还是做应用开发更有前途?

意思就是说,“你告诉我哪个更有前途,我就好好学哪个,另外一个就不用学了”。问这种问题
的学员往往会同时问另外一些问题:我以后就想做驱动开发,你教我这些应用开发的技术有什么用?C++
用得多吗?学了有什么用?我以后不想做 GUI,你教我 Qt 有什么用?

学习最忌讳的就是“有用的就学,没有用的就不学”这种功利的态度。两个问题:第一,在你还
没学进去、还不了解这种技术时,要如何判断这种技术学了有没有用?只能是根据道听途说,看各种论
坛上都怎么说的,岂不知论坛上参与这种讨论的 100%都是菜鸟,有的水平还不如你。第二,就算你学的
技术没有用上,有什么损失吗?从亚嵌毕业的学员从事各种各样的开发工作,有做驱动的,有做系统编
程的,有做 GUI 的,有做 Web 开发的,只要确定了做一类工作,就不可能把在亚嵌四个月学的知识都用
上,但至少也用得上 3/4 的知识,假设剩下的 1/4 你一辈子也没机会用上了,那也就损失你一个月的学习
时间而已,相比于你的收获,这算是很大的损失吗?请注意,上面的假设是不成立的,没用上的那 1/4 也
只是暂时没用上而已,程序员要换工作或者换项目是很常见的,任何人都不可能只涉及一类开发工作,
只要有扎实的基础、完备的知识体系,任何工作都能轻松上手。

扎实的基础,完备的知识体系,我们在安排就业班课程体系的时候,正是以这两点为依据的。有
的课程内容很少有学员在以后工作中会用到,但是缺了这一环就不成为一个完备的知识体系,例如 MMU
和 Cache,那这种课该不该上呢?毫无疑问该上。有的课程培养一种基本的编程思想,例如通过 C++来讲
面向对象编程,通过 Qt 来讲面向对象、事件驱动和状态机编程,这些编程思想是程序员必备的基本素质,
而 C++和 Qt 可能有些学员以后工作用不到,那这种课该不该上呢?毫无疑问该上。至于还有些人争论说
C++不如 Java 用得多,Qt 不如 GTK 用得多,请翻回去看 FAQ4,这种争论是无意义的,有工夫争论谁优
谁劣,不如把两种都学了,会更有收获。

回到做驱动开发还是做应用开发更有前途的问题。我只能说,做好了都有前途,做不好都没有前
途,只会做一样而完全不懂另一样是最没前途的。不要以为内核开发者就不写应用程序,Linus 写了一个
源代码管理系统 git 来维护内核,因为觉得现有的源代码管理系统都不好用。牛人都是这样,需要什么就
写什么,才不管是 kernel space 还是 user space。同样,做应用开发如果不懂内核,也没有办法很好地利用
内核提供的服务写出性能最优的程序。做内核难,因为调试难,要跟踪大量的并发线程,因为入门难,
要写一个 hello world 都需要学很多知识。做应用也难,回头去看 FAQ1,计算机科学从理论到实践大部分
都在上面两层做文章。所以不存在哪个更难哪个更有前途的问题,任何关于哪个更难的讨论都是 too

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 129
嵌入式
naive 的。

7、我一开始看什么书都看不懂,怎么才能理出一个学习顺序?

以前有个学员在学 C 语言时说,“C 语言很多地方都很奇怪,都得用内核的知识去解释,可是你
又不先教我内核,我没法学 C 语言。我只好自己看操作系统的书,看内核代码,可是看不懂。”当然看
不懂了,内核代码都是用 C 写的,如果不学内核就没法学 C 语言,那不学 C 语言又怎么可能看懂内核?
看来这是一个鸡生蛋还是蛋生鸡的问题。

懒真的是人的本性,就连学习的过程都希望是一条路顺利地走下去,不用动脑就能学会的:身后
走过的路都是“已知”,每走一步就把眼前新的“未知”变成“已知 ”,如此一路走来,把所有的“未
知”都变成“已知”就算学成了。可惜,知识不是一条路,而是一个圈,你从任何一个地方跳进这个圈
开始走,身后都是“未知 ”,眼前也都是“未知”。有的人就是不能容忍自己的身后是“未知”:看一
本书,一个新的概念 A 是用我不了解的概念 B、C 来解释的,我连 B、C 都不懂怎么学 A?没法学了!

不是人家书写得不好,而是没有任何办法能把一个圈扯成一条直线的。学习的过程本质上就是一
个循环往复的过程,唯一的办法就是“存疑”:在本子上记着,有 B、C 这样两个概念是我暂时不理解
的,然后就不再去想这回事,而是相信自己已经理解了 B、C,基于自己的理解和假设去学习 A,由 A 再
去理解 X、Y,这样学下去,走完一圈之后再回来,自然就明白当初对 B、C 的假设正确不正确了,理解
了这两个概念,就从本子上划掉,这时需要再走一圈,把原来的一些错误认识纠正过来。所以,任何书
都要至少看两遍,第二遍看的时候你会对很多概念有新的认识,因为你看过这个概念后面的章节,在此
基础上产生了新的认识。古人早就明白这个道理,所以提出了“温故而知新”。

亚嵌的课程体系经过多年教学实践的锤炼,已经很好地理顺了知识之间的关系,使你从最佳的位
置跳进这个圈开始学习,所谓“最佳位置”是指,在你初学的时候需要容忍的“未知”尽可能少,需要
做的假设尽可能少,但要想消除所有的“未知”是不可能的,例如没有学内核就要学 C 语言。根据你以
往的经验和一些运气因素,你对内核的一些假设可能正确也可能错误,但这并不影响你学 C 语言,对内
核的一些错误假设可能会导致在学 C 语言的过程中有些误解,但没关系,只要跟着我们的课程体系一步
一步走下来,这些误解和错误的假设最终都会纠正过来。

8、有哪些好书可以推荐一下吗?

能问出这个问题的都是聪明的学员。看书学习是入门过程中非常重要的一环,如果用一本烂书入

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 130
嵌入式
门,浪费时间还是小事,如果被误导了就麻烦了,如果形成的错误认识不能及时纠正,变得根深蒂固了
就更麻烦了。所以,看书一定要有“品牌意识”,在决定看书学习一门技术时先问问这一领域最权威的
书是哪本,这里列举一些 Bible 级别的书:

The C Programming Language, 2nd Edition;

C++ Primer, 4th Edition;

Structure and Interpretation of Computer Programs, 2nd Edition;

Introduction to Algorithms, 2nd Edition;

Compilers: Principles, Techniques, and Tools;

Advanced Programming in the UNIX Environment, 2nd Edition;

TCP/IP Illustrated, Volume 1: The Protocols;

UNIX Network Programming Volume 1, 3rd Edition: The Sockets Networking API;

Understanding the Linux Kernel, 3rd Edition;

PXA 272 开发经验总结
◆亚嵌教育(www.akaedu.org) 何家胜

pxa 272 是 Intel 公司的嵌入式芯片产品,已经出售给 Marvell 公司。它与 pxa 270 的主要区别在于
pxa 272 内置了 64M 的 flash,更方便了大家的开发。我们在使用 pxa 272 开发一款产品的时候,总结了以
下几个注意点,希望对大家的开发有所帮助。

1. GPIO 作为中断使用

在以前常见的 GPIO 作为中断使用的时候,一般做以下步骤即可:

* 设置 GPIO 复用功能为 一般的 GPIO 功能;

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 131
嵌入式
* 设置 GPIO 为 input 状态;

* 设置产生中断的方式;上升延,还是下降延;

* 设置中断控制器 enable GPIO_X 位。

在其他的平台或许你这样设置就没有什么问题了。但是在 PXA 27x 系列中,你必须设置:

IPR0-IPR39 寄存器;来设置中断的优先级。

另外:我要提醒大家的是。GRER 和 GFER 这两组寄存器用来设置 GPIO 的中断方式。当我们设
置为上升延中断 我们要将 GRER 寄存器对应的位设置为 1,还必须将 GFER 的对应位设置为 0。如果都
设置为 1,那么就出现上升延或者下降延都会产生中断。

根据不同的应用模式选择不同的中断方式。例如网卡就应该设置其中一种延方式触发。GRER 和
GFER 的对应位不能同时设置为 1。如果这样做了,驱动误认为收到或者发送了两次包。 例如:SD 卡中
断可以设置 GRER 和 GFER 的对应位都为 1。这样插入卡和拔出卡就可以用同一个中断。不需要使用两个
GPIO 中断来实现。

2. 一些特殊 GPIO 的设置方法

这里描述的实际上是一种思路。在我实际的开发过程中我们用了 GPIO 10 来作为 touch panel 的数
据读的 pin。当我们用模拟的 SPI 时序来读 touch panel 数据的时候: clk,din,busy,cs 等都没有问题。读出来
的数据就是有问题。

我们找了很长时间。发现我们设置 GPIO 脚的方法如下:

* 设置 GPIO 复选功能为普通 GPIO;

* 设置 GPIO 为输入状态;

* 不用作中断模式;

尽管这样我们获取的数据还是有问题,我们用示波器测试 GPIO 10 有方波,奇怪?难道是作为
HZ_CLK 了?我反复设置了 GPIO 的复选功能作为一般的 GPIO 功能都不管用?

那么到底问题出在那里呢?原来是:OSCC 的 TOUT_EN 位,如果这一位设置了。不管复选功能
怎么设置都是 HZ_CLK 功能。并且程序能通过 GPIO 的寄存器读到数据的变化。

3. USB client controller 使用方法

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 132
嵌入式
这里要讲的实际上是硬件电路相关的内容。大家知道 usb client 实际上是有两种状态:

* 空闲;

* 插入到 PC 连接状态。

那么这两种状态,我们怎么判断呢?这里一般都是通过 PC 的 USB 连接线上的 5V 来迫使一个
3.3V 电路导通到地。通过这个电压的改变来获取插入或者拔出的状态。

在 Intel 给我们提供 PXA 270 的标准开发板(mainstone II)中有一个 STF203-22 的 USBC 的 filter 。这
个小芯片成本可不低。他的作用不仅仅是 filter。如果我们不想使用它,那么怎么做呢?当然我们有一个
低成本方案。就是用 1.5K 电阻将 D+这个信号线拉高。如果不使用这个电阻,我们可能会面临 usbc 不停
的复位问题。这是因为,USBC 的状态中 D-,D+同时为低超过 2.5 微秒,USBC 就判断为复位。

我的这几个经验都是小经验,仅给那些入门朋友一点参考而已,对于那些使用过 PXA272 的朋友
可能没有太多的帮助。

谈谈写程序与学英语
◆亚嵌教育(www.akaedu.org) 宋劲杉

俗话说,没有金刚钻,就别揽瓷器活儿。套用到 IT 业,英语不行,就别做程序员。网上关于程序
员学英语的文章不少,但我想谈谈我自己的看法。首先详细讨论一下为什么程序员离了英语不行,然后
针对程序员应该怎么学英语说说我的体会。

英语是计算机的母语,是程序的母语,所以必然是程序员的母语。程序中的变量名、函数名起得
好不好是决定代码质量和可维护性的最关键因素。高质量的代码应该是这样的:代码基本上是自解释的
(self-explanatory),不需要太多注释,不管代码的规模有多大,具有相关知识背景的读过文档的人都可
以立刻上手、立刻参与维护和开发。要想使代码能够自解释,给变量和函数起个好名字很关键,很显然,
只能用英文起名字,一是用汉语拼音起名字可读性很差,二是英文单词通常比汉语更 expressive(看吧,
如果用汉语来说,就得说"表达能力更强"、"更有表现力"这么罗嗦),由于程序的复杂性,变量和函数往
往表示一些很抽象的概念,起个既准确又简洁的名字并不容易,可是很多时候,用汉语需要很多字才能
说清楚的一件事,用英文一个单词再加点词形变化就能说清楚了。例如 APUE 上讲 sleep 函数的实现,其
中有个变量表示"本来应该睡到某个时刻,但是提前被信号唤醒了,唤醒时与本来应该睡到的时刻相差的

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 133
嵌入式
时间",如果为了简洁而不求准确,这个变量名至少也得叫"未睡到",而书中只用了一个单词 unslept,非
常准确、简洁地表达了这个意思。为了写程序而学英语需要学到什么水平?我认为能起出这种变量名就
够水平了。很多在 IT 外企工作的中国人,说话写文章经常夹杂着英文单词(比我严重多了因为我不在外
企),非常可以理解,确实是为了表达得更准确简洁的需要,而不是纯为了 play zhuangbility。总之,要
写程序必须学好英语,否则连变量名都起不好,这虽然是一个非技术问题,但却是个根本问题,比任何
技术问题都重要。当然,现在很多编程语言也支持用 Unicode 字符给变量和函数起名,但是你见过有人用
汉字写程序吗?根本不实用。有人会辩驳说一页英文翻译成中文往往只占半页,中文不是更简洁吗?但
是你算算打一页英文和打半页中文哪个敲键盘次数多。另外,要读别人的代码也必须学好英语,如果你
不知道 unslept 是由 sleep 变形而来的,就体会不到其中的精妙,只有大量阅读高质量的代码,才能写出高
质量的代码,创作都是从模仿开始的。

说说英语对于看书学习的重要性。中文技术书和
英文技术书的水平根本不在一个量级上,这是有很多原因
的,不能全归结于中文书的作者水平差。最重要的是,出
中文书的低回报率决定了作者不可能花太多心血在上面,
你去 amazon 看看一本书卖多少美刀,再去 chinapub 看看
一本书卖几块钱。老外写一本书,可以做到全书没有一个
拼写错误(当然英文的拼写检查工具更完善也是部分原
因),中文能找出一本没有错别字的书吗?Knuth 可以悬
赏让全世界读者来找磋,中文书作者有哪个敢这么做?不
是因为老外态度有多认真治学有多严谨,而是因为他们赚
到了,就应该拿出高质量的作品来,不然会被读者骂的。

英文技术书的翻译质量通常很差。也不能归结于
译者的水平差,我也翻译过书,也努力想译好,但真的很
难译好。IT 业的新名词层出不穷,像"内核"、"网络"这种
常见术语还好,稍微专一点的术语都没有统一的译名。我
们在教学中发现,很多学员看书时搞不清这本书的名词 A
和那本书的名词 B 是什么区别,来问老师,才发现原来 A 和 B 就是一回事儿。这是一个单词对应多个译
名的情况,还有一个译名对应多个单词的情况,比如 field、domain、realm 都译成"域",block、bulk 都译
成"块",argument、parameter 都译成"参数",attribute、property 都译成"属性",虽然这些词的意思本来就
差不多,但是在一篇文章里,作者可以换着用,不同的单词表示不同的概念,翻译完了一看,都成一个
概念了。英文书背后都有 index,看到一半忘了某个名词是怎么定义的就可以翻 index,而译文通常没有
index,名词都已经乱七八糟了,没法做 index。还有更发指的是,老外喜欢造词,现有的单词上加一点变

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 134
嵌入式
化和组合(例如有人喜欢说 automagically),看着心领神会,想译出来就很费劲。老外即使在技术书中也
经常用一些生动的表达方式和俏皮话,而中文的书面语言非常死板,生动的表达方式只存在于口语中,
如果写在书上就很不像话,这也是很难翻译的一个重要原因。看中文译本,不仅质量差,而且跟不上时
代,通常一本英文书出来,至少要等一到两年才能看到中文译本。两年啊!等你看到这本书的中文译本
时,这个版本都快淘汰了。

然后说说英语在开发工作中的重要性。看书学习通常只起一个引导入门的作用,在工作中更有用
的是手册、文档。学完了 C 语言开始写程序了,谁还会去查 K&R 附录中的库函数?查 man page 才是最
有效率的。然而手册比入门书更少有中文译版,因为手册是随时变的,会随着软件版本更新,而且需要
看这些开发手册的人通常不会有英文障碍,有英文障碍的人即使看了翻译的手册也写不出好程序来,所
以当然没必要翻译了。不管什么技术,官方的手册和技术标准才是最原始的第一手资料,看别的书都是
以讹传讹,由于自然语言不可避免是有歧义的,文档中表达得不准确的地方就会被文档的读者也就是技
术书的作者误解,技术书中再有表达不准确的地方又被译者误解。我们小时候都玩过传话的游戏,几个
人站一排,通过悄悄话传一句话,传到最后变成什么了?所以,学网络协议,就得看 RFC,学 ARM,就
得看 ARM 公司的 Architecture Reference Manual,要学习 C 语言就得看 C99,有歧义不要紧,自己去揣测
原作者的意思,总比道听途说的可靠。

我们的学员出去面试经常被问到的一个问题就是:在开发工作中遇到问题,书和文档上都没有答
案,网上搜一下也没有答案,怎么办?要我说,能看懂源代码的就去源代码中找答案,这称为 hacking,
不管是内核、libc 还是各种 framework,你调用的东西有问题都能从它的代码中找到原因。如果没有能力
hacking,或者时间紧不想去 hacking,最好的办法就是去官方邮件列表和 IRC 问。如果英文不行就没办法
了,只能去一些中文论坛:"各位大虾帮忙,小弟有一个问题求救!跪求!!在线等!!!"在线等了好几
天也无人问津,或者答非所问。岂不知逛这些论坛的没有大虾,都是菜鸟,大虾们都在 IRC 上聊得正欢
呢。我在做 Qt 开发时曾经有一个问题,当时在教育网,上国外网不方便,去各大中文论坛问了好几天也
没人给出满意的回答,后来花钱连了国外网,去 trolltech 官方新闻组提问,只等了几分钟就得到了满意的
解决办法。这次经历给我留下了深刻印象,从此以后再也没有去中文论坛。

那么,如果现在英文水平很差,又想做程序员,应该怎么学英语呢?我下面说的方法有两个前提,
一是你的英文至少达到高中毕业水平,也就是语法基本都学完了,即使用得不熟练也知道有那么回事儿,
二是你希望尽快在工作中用上英语,写程序够用就行,而不是有考 T 考 G 这样的更高要求。

学习英语有听说读写四个方面的要求,做程序员至少需要读和写非常流畅,如果在外企工作还需
要听和说的能力。技术英语和考 T 考 G 是不一样的,一是听和说不像读和写那么重要,不必担心自己
是"聋哑英语",没关系,丝毫不影响你成为编程高手,二是要求的词汇量要小得多。考 T 考 G 都要拿一
本单词书背,很少有人会觉得背单词很有意思,至少我是觉得很痛苦,幸运的是看技术书不需要多少词

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 135
嵌入式
汇量。技术书的描述对象都是局限于一个很窄的领域的,就那么几个单词翻来覆去地用,而且技术书是
为了让人看懂的(不像诗是为了让人看不懂的),比较复杂的词在书中都有定义或解释。有些作者喜欢
卖弄词汇量,用一些很生僻的单词,也有些作者卖弄一些典故,由于文化背景不同很难理解,不过这些
通常都可以无视,不会影响阅读,还是因为技术书是为了让人看懂的。对于学习者来说,阅读能力是最
重要的,等你完成了学习,成为一个合格的开发者时,需要写代码注释,需要写文档,需要通过邮件交
流,写作的能力才开始重要了。所以应该首先从阅读开始练习英语。

现在就拿起一本英文原版书开始看吧。和学游泳一样,阅读的能力只能通过阅读本身来练习。我
的经验是,不必先系统学习了单词和语法再看书,可以在看书时用到什么就补什么。我建议初学者看电
子版,因为现在的词典软件都可以鼠标取词,边看边查很方便,很多勤快人喜欢把查过的单词都抄下来,
我觉得没有必要,反正查字典很方便,下次再看到了就再查,多查几次总会记住的,抄下来就打断了看
书的思路,而且不见得抄下来就能记住。也许是因为我这人比较懒,我用的都是懒办法。很多人不喜欢
看电子书,理由是盯着屏幕看书太累,那么盯着屏幕写
程序累不累?这种人显然不适合做程序员。语法不熟练
怎么办?大多数情况下单词的意思都明白了就不影响阅
读。技术书有时候喜欢用长句,其中可能包含各种从句,
如果实在读不懂就去查语法书,同样也不需要把这种从
句彻底弄明白,只要这一句能看过去就行了,以后多查
几遍书,自然就掌握了。另外,技术书是说明文,通常
不应该有过去时,看到过去时就需要注意了,很可能是
虚拟语气,如果不注意这一点,看到的意思可能和真实
的意思正好相反。

应该从哪本书开始看起呢?从你当前最需要学的技
术书看起。看书是相当花时间的,如果能一边学英语一
边学技术,这时间利用得就很有效率。比如,如果你的
C 语言已经学得相当好了,不要专门为了学英语去重看一遍原版的 K&R。市面上有一些专门的计算机英
语教材,我的建议是不要看,浪费时间,nonsense。初学时最好选一本有中文译本的书,有看不懂的地方
可以翻中文版来对照,但是不要相信中文的翻译,原因在前面讨论过了。如果你是初学编程,没有任何
基础,我可以推荐一本英文很浅显技术也很浅显的书:How To Think Like a Computer Scientist,有
Python、Java 和 C++版本,可自由下载。

要逐渐养成良好的阅读习惯。一是不要每个生单词都去查,有些单词很生僻,查了也记不住,记
住了也不会再见到它了,但是前面讲过,都是作者在卖弄词汇量,无视它丝毫不影响阅读,因此要学会
猜测单词的意思,能不查就不查,继续贯彻"懒"的原则。二是看书不要动口,不念出声也不行,就是不要

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 136
嵌入式
动口,要努力在大脑中建立从词形到语义的直接映射,如果只能从词形到读音再到语义就太慢了,严重
影响阅读速度。三是努力做到每句话都从头到尾只看一遍,不许回头反复看,这一点比较难,必须注意
力高度集中,经常在记忆中暂存前面半句的内容和句式才能做到,但是一旦神功练成就会成倍地提高阅
读速度。最后一层境界,学会 skim,就是略读,很多优秀的作者在组织材料时会给读者一些建议,比如
这一段是扩展的高级话题,和主线的相关度较低,可以先 skim 到后面,注意不是让你 skip 到后面,这一
段还是要读的,但是不必逐字句地读,而是抓主旨,大概讲了个什么概念(有一些下定义的句式),有
哪些要点(有数字编号或 bullet 列表项),适用于哪些场合有哪些注意事项(有
caveat、gotcha、noteworthy 这种字眼),后面可能还会碰到这个概念,虽然你没有仔细看这是个什么东
西,但大体上也知道了,这样就能不影响后面的阅读,这不仅需要高度集中的注意力、熟练的语言能力,
而且要有足够的背景知识去猜测性地理解。但是语言能力还是最重要的因素,我和几个同学交流过,他
们也能熟练地看英文书,但是需要 skim 查一个东西时就觉得还是不如中文书查得快。skim 的技能在查阅
手册时尤其重要,没有人会像看入门书一样把上千页的手册从头到尾看一遍,都是用到哪儿就查哪儿。
总之,锻炼各种阅读习惯就为了一个目的:如何在最短的时间内,在保证正确性的前提下,获取尽可能
多的知识。程序员的学习时间都是非常宝贵的。

以上本着"够 用就好"的原则,多次
提到用懒办法,但是 学技术学英语这两件
事不能懒,贵在坚持。 要养成良好的阅读习
惯也有很多东西需要 坚持,其中最根本的
是持续高度集中注意 力,充分调动记忆能
力、推理能力、猜测 能力,就像考试做阅
读题一样看每一段话。 最根本也是最重要
的,"有英文原版就不 看中文版"这个原则一
定要坚持。一开始看 英文书可能会很慢,
但只要一直坚持就会 慢慢达到原来看中文
书的速度,再坚持下 去就会比中文书看得
更有效率,因为避免 了很多歧义和术语翻
译的问题。有人会说, 项目紧任务急,看英
文资料太慢,这次就 先用中文尽快解决工
作中的问题吧,等以后有时间了再看英文书学习。可是什么时候才会有时间呢?工作总是一个接一个的,
老板怎么会付了工资让你闲着呢?如果你有这样的困难,我的建议是干脆辞职,学好了英文再去工作。
你只要想想,你的同行们在外企全英文的环境下工作,英文和技术每天都在突飞猛进,而你还在用效率
极其低下的方式学习和工作,你和别人的差距不是越来越大了吗?另一方面,现在的在校学生从小学就

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 137
嵌入式
开始抓英语,基础都很好,很多高校也逐渐重视引进原版教材,开设很多英文授课的专业课。你再不奋
起直追,就不觉得以后的职业道路充满危机吗?

最后说说写作。刚开始练习时不要怕写错,能表达清楚自己的意思即可。我看过很多源代码和文
档中的英文,一看就是中国人写的,谓语动词不分单复数,名词复数不加 s,处处可见中国式英语,但是
丝毫不影响我对这些编程大牛的景仰,因为其中的思想我看懂了,并且我认为很强大。我有一个朋友,
中学毕业就出来混的,由于工作的性质总要跟老外打交道,他从来不惧和老外交流,虽然连一个囫囵的
句子都说不出来,但总是能用中学学的那点单词让老外明白他的意思,这一点我就非常佩服。总之就是
说,不要因为不知道怎么写是对的就不敢动笔写,只要敢交流,并且别人能懂你的意思,就是很有效的
交流。而且随着阅读量的增加,自然能写出一手好英文,前面讲过了,创作总是从模仿开始的。不怕出
错才能有一个好的开始,才能逐步练习提高,而练习的最终目的当然还是希望写好,不仅字句通顺无语
法错误,还能适当修辞。

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 138
编读往来

编读往来

Jxy:
很偶然的发现了《开源》杂志,大致连贯地看了下已经出版的 5 期,说说我的感受。

1.杂志在排版上是不断进步的,5 期下来,从封面,到栏目版式,已经形成了一套整体的风格,能给读者带来较深刻的

印象,并且能带来较强烈的认同感。

2.从内容上是不断完善的,很小的一个细节,从 4 期开始将桌面应用栏目更改为经验技巧,这样的定位应该更有利于选

题和读者的投稿,而单纯的桌面应用和企业应用很多层面上是难以划分的。

3.从版权页上能感受到开源杂志的不断强大,从开始的 2、3 个人到如今的队伍,但感觉编辑部力量还有待加强,稳定

的编辑部队伍是这个杂志的保障。

4.匆匆翻阅了下五期,发现杂志有几篇文章很有力度,无论是吴峰光的文章还是 intel 的一些文章,都能代表目前中国

开源某些领域的权威,看得出杂志的编辑在内容上是费了心思的。

5.杂志形式有一些建议,得考虑读者的阅读习惯,PDF 的格式在电脑上阅读起来还是很费劲的,以后可以考虑通过电子

杂志平台出版一些 flash 类的精华版,这在形式上将更加精美,也更有收藏价值。

6.内容上,目前不便发言,5 期内容很丰富,待仔细阅读完成后再来谈谈自己的感想。

ghosTM55:

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 139
编读往来

《开源》的新闻评论非常到位,个人建议杂志在技术报道以及研究的篇幅方面可以进一步增大。并且可以开一

个小板块,将一个月论坛内优秀的技术讨论帖发布上来,这样可以潜移默化的引领一种社区的技术研究氛围。美工方面

再加强一下,可以考虑先从字体开始,在排版的时候尝试使用一些开源的字体。另外就是建议《开源》有一个主色调,

杂志封面可以不一样,但是杂志内容可以有个很个性的色调,保持不变。这样只要读者一看到一份 PDF 文档,马上就

能说:哦,那是《开源》。其它都做的不错了,Keep Walking !!!

pedant:

关于《ZFS 可能将登陆 linux》一文,我查阅了一些资料,说 CDDL 与 GPL 协议是不兼容的,但是具体怎么不兼容

法我就很难了解全部了,据说 CDDL 就是 sun 担心市场被 linux 侵占的东西。ZFS 能被 linux 使用固然是好,但这样对

sun 有什么好处呢?人家可不是什么基金会啊,是一个商业公司,很多员工等着靠它吃饭呢!(另:Sun 将其耗费五亿

美金研发成功的 Solaris 10 免费提供给用户使用,已经被人视为“疯狂”的举动。)呜呼,sun 到底是个什么东西?靠

什么盈利啊!!!

有关 web 版杂志进一步的建议:

办开源杂志本是一个准公益事业,财力精力有限,而正如 linuxpk 所言,很多类似错别字等细节问题难以靠一个

人解决,靠一个人解决也非一个有效的长久机制。

我也愿意作为志愿者帮助复核,但是考虑平日工作关系,无法挤出一段完整的时间,都是零零碎碎的时间,相信

很多朋友有跟我一样的情况。所以,这一次我要提的进一步的建议就是:google sites。

为什么用 google sites?因为可以协作!本来那个 google doc 就可以实现协作编写文档,现在又出了 google

sites,又可以协作制作网页,空间有 google 提供、维护。这样,一些志愿者可以根据自己的时间,随时随地上网协作

修订部分内容,哪怕仅仅是 2 分钟时间,哪怕仅仅是修改了一个错别字。linuxpk 发起人只需要制定每期杂志的主题、

内容,排版、文字修订等工作完全可以通过志愿者完成,这样既省了发起人的精力,又让志愿者享受到“开源”哲学的

乐趣——协作与贡献! 《开源》杂志,就要以开源的方式来办,呵呵 :-)

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 140
编读往来

codingtmd:

我在 cnbeta 上看到了这个连接,就点开了。书我看了,还好,看的出来编写的很用心。但是我想起了我以前,

我大学时期也爱好 linux,也曾和几个同学一起搞过电子杂志,开始的时候热情高涨,但是后来只办了四期就 Over 了。

想想原因,无非如下几点:

1.不正规,完全散兵游击,依赖于休息时间,出稿和排版等工作都没有时间表。

2.坚持下去很难。

3.刚开始的时候影响面很窄,没有多少人看,于是信心和热情渐渐就磨灭了。

我看见上面一个朋友说“一个杂志,尤其免费杂志,开始做,就需要坚持”,真的很有道理,尤其我自己有类

似的经历,人气和影响力是要慢慢积累的,希望《开源》的编委们能好好耐心办好这份杂志,办一件事情容易,但是坚

持把一件事情办好,很难!加油!

www.linuxpk.com 投稿邮箱:opensource@linuxpk.com 《开源》 141