You are on page 1of 78
卷首语 网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《Opensource》 Page 0 of 78
卷首语
网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《Opensource》
Page 0 of 78

卷首语

卷首语

关于《开源》

2008 年,《开源》创刊了,这个在我们脑中酝酿了五年之久的开源电子杂志终于蹒跚 地走到了大家的面前。 5 年,作为一个时间段,能改变很多的东西,曾经听一个人生规划师讲解过,对于人

生的理想,应该以 5 年作为一个时间段划分,逐步实现。《开源》这本电子杂志也迈过了设 想之初的 5 年,完成了一次跳跃。而 5 年时间的沉淀,也是希望《开源》这本电子杂志一 经推出,无论面临多大的困难,也要顽强地存活下去。

5 年前,开源在我国刚刚兴起不久,那时对于开源的概念更多的等同于 Linux,而 Linux 更多的作为一些专业人士手中的“玩物”,大家乐此不疲地玩赏着这个新鲜的东西,在小范 围进行着交流、讨论、推广。

5 年的时间过去了,开源已经深入人心,对于开源,人们的理解不只局限于 Linux ,而

更多优秀的开源项目(MySQLApache)也得到了广泛的应用,开源已经构成了一条完整 的生态链,完全覆盖了从底层的操作系统、中间件,到上层的应用软件、OfficeERP 等 范围,从 IT 环境搭建到 IT 运维,已经提供了更多的开源选择。 IntelSunIBMGoogleOracle 等厂商不同程度地对开源给予了支持,红帽、红旗 等开源厂商不断的发展壮大起来,甚至曾经开源的死对头微软也开始频繁的与开源接触, 寻求与开源社区、开源项目的合作机会。在这样的一个时机,我们认为《开源》这本电子 杂志是时候该与大家见面了。 我们将《开源》定位在关注开源产业的发展、推动开源项目的进展、促进开源应用水 平的提高,受众群体将从开源产业的决策人员向下覆盖到开源应用的初学者。对于办刊思 路,我们本着开放的思想,希望接纳来自各方的意见,群策群力,同时承诺该电子杂志永 远免费阅读。 《开源》本着实用的原则,目前划分了七个栏目,第一个栏目是产业聚集,其中包括 两块内容,第一是资讯,对于发展得如火如荼的开源领域,一月的时间会发生很多很多的 事件,而这个栏目将对一月的新闻有个采集汇总,而第二块内容则是对一些热点事件的深 度或持续的关注,或者评论,或者报道,使读者能清晰地理清开源领域发展脉络。 第二个栏目是博客文摘,作为 Web 2.0 的代表作,博客已经越来越深入得影响了我们 的生活,博客开放的思想与开源多少有着一脉相承的味道。这个栏目我们将选取一些开源 领域重量级人物的博客,做成文摘的形式,使读者在了解开源动态的前提下,更多地了解 到一些前沿的观点。 开源社区是开源的灵魂,这样的观点得到了大家的公认。第三个栏目就将完全关注开 源社区,其中会有从社区走出的开源项目的一些最新动态的报道,对于一些优秀的开源项 目,也将以科普的形式进行详细的介绍。同时,对于我们开源社区的一些活动,开源社区 的一些新技术,来自开源社区的议论都将在这个栏目呈现给大家。

知识学堂这个栏目主要普及开源的知识、文化,以及一些大家都关注的开源应用。以

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

-

1 -

卷首语

讲座和连载的形式让大家都深入的了解开源文化,对于一些长篇的开源应用讲座,也将在 这个栏目进行体现,这类讲座将包括基础的命令讲解到高级的内核解读。 桌面应用将介绍来自桌面的新产品、新工具、新应用,以及各式各样的应用技巧。同 时会对桌面软件进行评测和试用报告,刚刚迈进开源应用大门的初学者能从这里获得足够 的信心,完全地玩转开源的各种应用。 企业级应用则将推出企业级的新产品、新方案,同时对运用开源软件进行 IT 环境搭建 和运维进行指导,介绍能满足于企业级应用的优秀开源项目,对于复杂 IT 环境应用中的各 种问题也将进行讨论,这个栏目的宗旨一句话可以概括:“自从用了开源企业级软件,我们 明显感觉更省钱了。” 混源新视界则是我们推出的一个战略性的栏目,在开源与商业越来越紧密的今天,混 源应用得到了广泛的发展。目前的 IT 环境,很少有纯开源或者纯闭源的软件,开源与传统 的商业软件更多的是融合在一起,协同工作。对于混源这个概念,微软也有着自己的解释, 那就是异构环境,无论是混源还是异构,毕竟是未来的趋势,趋势性的东西就是值得我们 关注的东西,昨天经典的“LAMP”架构到了今天又延伸出了“WAMP”架构,这都是来 自混源的魔力,而受益的都是最终用户。 七个栏目组成了我们第一期电子杂志,《开源》这本电子杂志就如同当年那个笨拙的小 企鹅,需要更多的人关注和支持,需要更悉心的照料,它才能存活下来,才能健康的成长 起来。第一期杂志难免有诸多不尽人意的地方,也希望大家将更多的意见反馈给我们,我 们将尽力将这本开源领域惟一的电子杂志办的更好。 目前编辑部正在筹建阶段,希望有兴趣的朋友可以和我们取得联系,我们希望与众多 的开源朋友一起,以开源理想为指导思想,为开源社区、开源领域提供一份永久的免费杂 志。对于七个栏目的划分,我也进行了简单的介绍,有针对这七个栏目的优秀稿件,希望 大家踊跃投稿。 今天,我们出发了,我们不希望收回迈出的步伐,也不希望一步迈进大坑里。一本持 续的、关注开源的、永远免费的电子杂志,这是我们的愿景,也是我们的奋斗目标。

网站: www.linuxpk.com 投稿: opensource@linuxpk.com

网站:www.linuxpk.com 投稿:opensource@linuxpk.com

- 2 -

版权页

《开源》 版权页

2008 年 1 月

第一期

主办:Linux 宝库 网址:http://www.linuxpk.com 总编:陈杰 副总编:陈绪 编辑部:曹金成

校验排版:邱风 封面设计:红动中国 www.redocn.com 投稿邮箱:opensource@linuxpk.com

声明:杂志部分内容来自开源社区及互联网,目的是加强开源文化交流及开源

应用传播,如有版权问题,敬请联系,我们将在第一时间作出处理。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 3 -

目录

目录

卷首语:关于《开源》 ························· 1

《开源》版权页 ·························· 3

产业聚焦 ····························· 6

资讯······························································································································································6

Linux手机Rokr E8 闪亮CES················································································································ 6 Sun推基于Xen的虚拟平台 ·················································································································· 6 IBM发布开源邮件搜索工具················································································································ 6 KDE 4.0 正式发布 ······························································································································· 7 奇趣加盟LiMo基金会·························································································································· 7 U盘型Linux防火墙问世 ······················································································································ 8 OpenMoko升级硬件平台····················································································································· 8

Asianux走出新模式 ···································································································································9

博客文摘 ···························· 12

促开源与微软互操作性互动来谋求共赢·······························································································12

2007 年:茁壮成长的Linux····················································································································14

更多选择不等于更多标准 ·······················································································································15

开源盈利模式探讨 ···································································································································17

开源社区 ···························· 19

项目动态····················································································································································19

Ubuntu 8.04 Alpha 3 近日发布······································································································· 19 开源的编辑器Notepad++ 4.7.1 发布 ····························································································· 20 软件包管理器RPM 5.0.0 发布······································································································· 20 phpMyAdmin 2.11.4-rc1 发布 ········································································································ 20 开源模拟器QEMU 0.9.1 发布 ······································································································· 21 PCLinuxOS 2008 MiniMe发布······································································································· 21 图像软件Paint.NET 3.22 Beta2 发布 ····························································································· 21

Python维基系统MoinMoin·····················································································································22

KVM开发者大会归来 ·····························································································································26

开源与SaaS ···············································································································································29

知识学堂 ···························· 34

Linux系统管理员进阶【之一】·············································································································34

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

目录

Unix思维思考 ···························································································································· 34

重读 2.4 内核(1··································································································································41

桌面应用 ···························· 49

Ubuntu7.10 使用有感而发 ······················································································································49

Linux下软件的安装与卸载·····················································································································50

二进制分发软件包的安装与卸载 ································································································· 51 源代码分发软件包的安装与卸载 ································································································· 52

GRUB引导故障排除································································································································53

Linux下的多媒体软件 ·····························································································································55

Openserver启动盘制作 ···························································································································57

企业应用 ···························· 58

FreeNAS构建企业存储系统 ···················································································································58

构建LVS集群系统 ····································································································································64 LVS三种模式 ································································································································· 65 LVS集群系统环境 ························································································································· 67

混源新世界 ··························· 71

微软与开源的故事 ···································································································································71

探讨“混源应用”发展之道 ···················································································································77

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

产业聚焦

产业聚焦 产业聚焦 资讯 Linux 手机 Rokr E8 闪亮 CES 近日,在拉斯维加斯举办的 2008

产业聚焦

资讯

Linux手机Rokr E8 闪亮CES

近日,在拉斯维加斯举办的 2008 消费科技电子大展(CES,Consumer ElectronicsShow) 上,摩托罗拉正式发布最新型的多媒体影音手机 Rokr

E8

Rokr E8 新款 Linux 智能手机,以一个软的 MMI(人 机界面),改变了以往的机身模型。Rokr E8 是一个工作 在 GSM/GPRS 中的四频网络手机,此款手机装备有 200 万像素的摄像头,支持多种音乐格式的播放,全屏 HTML 浏览器,以及独特的触觉感应系统。 同时,E8 的软接口加入了创新的 ModeShift 技术, 只需轻按一键,手机、音乐播放器和数码相机三种模式 便随你转换,具有独有的 FastScroll,操控大权也因此牢 牢掌握在手。

FastScroll ,操控大权也因此牢 牢掌握在手。 Sun 推基于 Xen 的虚拟平台 近日, Sun

Sun推基于Xen的虚拟平台

近日,Sun 宣布将推出一种基于 Xen 技术的系统管理程序 xVM,用于开发虚拟机以及 对虚拟机进行管理的 Sun xVM Ops Center 系统。 xVM 系统管理程序能很好地利用 Solaris 10 操作系统的关键特性,例如 ZFS(动态文件 系统),这是一种 128 位的文件系统,它增加了被包含在虚拟存储系统中的地址空间的数量。

IBM发布开源邮件搜索工具

近日,IBM 发布了免费的企业电子邮件搜索工具 OmniFind Personal Email Search IOPES),宣称可辨识用户输入的不完全字符串。该搜索工具支持 Lotus Notes Microsoft Outlook,使用者可自 alphaWorks 网站下载。 该工具采用先进的运算法则,协助用户快速搜索及找到信息,即使电子邮件数据库中 没有“电话”或“号码”等字符串也可以找到电话号码。IOPES 也允许使用者可以建立、 储存及分享个人化的搜索以供未来使用。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 6 -

产业聚焦

KDE 4.0 正式发布

近日,KDE 社区宣布了 KDE 4.0 的正式发布。这标志着漫长艰苦的 KDE 4.0 开发周期 已经告一段落,KDE 4.0 时代已经到来。 在 KDE 4.0 类库方面,各种重要改进几乎无处不在。多媒体框架 Phonon 提供了一种 平台无关的抽象层来支持所有 KDE 程序,硬件编程接口 Solid 使得对可移动设备的操作更 简易,同时也为电源管理提供了更好的工具箱。 在桌面方面,许多新功能也被加入,桌面外壳 Plasma 展现了全新的桌面界面,包括面 板、菜单、桌面部件和仪表板等。现在 KDE 的窗口管理器 KWin 支持高级桌面特效,优化 了窗口交互的操作感。 当然毫无疑问,大量的 KDE 应用程序也都有了长足的进步。在底层库的支持下,众 多可视化造型现在基于矢量美工技术,用户界面改进、新特性也随之受益。另外,甚至还 有新程序加入,其中包括但不限于新的通用文档阅读器 Okular 和新的文件管理器 Dolphin 等,这只是 KDE 4.0 的新技术引入的变化之一二。

KDE 4.0 的新技术引入的变化之一二。 奇趣加盟 LiMo 基金会

奇趣加盟LiMo基金会

日前,奇趣科技宣布加盟 LiMo 基金会,加速推出基于 LiMo 的开放式和全球统一的 移动 Linux 平台。奇趣科技的加盟,不仅给 LiMo 带来了其业界领先基于移动 Linux 设备 软件框架方面的丰富经验,还带来了其拥有的远见卓识的全球客户经验——目前基于奇趣

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 7 -

产业聚焦

科技软件的已交付的设备已经超过上千万部。 奇趣科技将为 LiMo 软件栈提供战略组件,该软件栈实现了将在线服务与本地移动应 用集成在一起的重大突破。这不仅将加速推出符合 LiMo 标准的设备,还将有助于运营商 们构建新型的创收服务体系构架。

U盘型Linux防火墙问世

近日,安全设备厂商 Yoggie 展示了一款 Yoggie Gatekeeper pico 防火墙产品,这款小巧 而智能化的设备实际上是一个基于 Linux 的小计算机。这个小设备可以安装在网络中,通 过内置的多重安全引擎过滤网络上的恶意数据。Yoggie Pico 是一款小巧的 USB 设备,采 用 Intel PXA270 处理器(和很多智能手机以及其他移动设备一样),运行 Linux 系统,可以 实现防火墙和反病毒功能,从而降低所连接的 PC 机在安全方面的 CPU 负荷。

OpenMoko升级硬件平台

CPU 负荷。 OpenMoko 升级硬件平台 日前, Linux 开源手机 OpenMoko

日前,Linux 开源手机 OpenMoko 宣布计划升级其硬件平台,并将升级 后的平台称之为 Neo FreeRunner。 虽然外观上没有甚多改变,但是 据悉处理器、Wi-Fi 网络以及图形部 分均会获得升级。新产品 Neo FreeRunner 拥有 500MHz 处理器,而 2007 7 月公布的 NEO 1973 产品仅 有 266MHz 处理器。 另外一点则是新硬件内置的 2D 3D 图形硬件将支持硬件感应功能, 并支持自动触发行为,而无线网络部 分则升级为支持 802.11b/g 标准的硬 件。 OpenMoko 公司预计将在拉斯维加斯 召开的国际消费电子展上正式展出新的硬件平台,并于 2008 年春季开始供货给开发商。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 8 -

产业聚焦

Asianux走出新模式
Asianux走出新模式

陈 杰

12 20 日,Asianux 联盟成员,中国中科红旗软件技术有限公司、韩国 Haansoft 公司 和日本 Miracle Linux 公司共同宣布,无锡亚联开源软件技术有限公司(Asianux Corporation) 在中国无锡正式注册成立。公司在已成功运用了 4 年的,独特的“4-Co”的合作模式基础 上,继续推进 Asianux 在亚洲的快速发展。Asianux Server 3.0 后终于有了自己的娘家,中 日韩三方打造的 Asianux 统一 Linux 平台也终于有了实体公司,而作为 Asianux 联盟,也 开始迈出探索新模式的步伐。

Asianux 落地

Asianux 联盟独特的 4-CO 商业模式,即共同研发、统一品牌、共同技术支持以及共同 推广,集中了原本分散的研发和支持力量,共同推出富有竞争力的产品,并分别在各个国 家销售,使每个成员都深度受益。随着越来越多的亚洲国家开始有强烈的意愿来发展自己 本土化的软件以及开源软件技术,Asianux 的商业模式得到了亚洲各国开源企业和相关部 门的关注和支持。Asianux 联盟成员表示将会继续发展更多的成员,越南也于今年加入了 Asianux 联盟。 而此次实体公司的成立,可以看作是 Asianux 联盟一个里程碑的事件,从 Asianux 联 盟到 Asianux 品牌的建立,再到无锡亚联公司的成立,Asianux 摸索了一条新的模式。联合 亚洲各国的开源力量,打造一个亚洲统一的开源品牌,这也是 Asianux 联盟的愿景。无锡 亚联的成立,可以看作是长跑中的发令枪,虽然才刚刚起步,但毕竟已经迈过了繁琐的准 备期以及积极的备战期。 中国开源软件推进联盟主席陆首群介绍到:“无锡亚联的成立将积极的推动亚洲开源的 发展,中日韩三国将在开源领域不同层面展开合作,互通有无,而最终受益的将是亚洲的 企业。”同时,他向大家分享了一个小故事:“我有一次去美国访问,在西雅图拜访了三个 有名的企业,一个是微软,一个是波音飞机公司,还有一个星巴克总部,其中波音和星巴

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 9 -

产业聚焦

克都用着大量的开源软件,我在微软总部见到了比尔盖茨,我就问他,微软家门口的企业 都用着开源软件,说明微软也不是不可替代的吧。”陆首群分享的这个小故事告诉大家,开 源的发展非常的迅速,同时,微软也不是不可取代的。 作为中科红旗软件技术有限公司总裁,贾栋一直致力于推动 Asianux 联盟的发展,同 时他也将出任无锡亚联的董事长兼总裁,在谈到无锡亚联的成立,兴奋之情溢于言表:“无 锡亚联落户无锡,得到了无锡市委市政府、崇安区委区政府的鼎力支持。公司由中、日、 韩各国最具实力的 Linux 厂 商投资组建,具有强大的技 术和市场基础。我相信,通 过亚联开源合资公司的实 体,加强 Asianux 联盟在开 发、市场、服务上的力量, 让 Asianux 持续滚动发展, 发挥规模效应,让亚洲广大 的企业、政府和个人用户享 受到开放统一平台带来的品 质和价值。” 而作为无锡亚联的一分子,日本 Miracle Linux 公司总裁,无锡亚联开源软件技术有限 公司副董事长 Takeshi Sato 也表示,Asianux 由中、日、韩三家公司联合成立,并定位于亚 太及世界开源市场。三家公司有超过三年合作开发 Asianux 的经验,并成功的由服务器市 场扩展至移动领域。Asianux 公司的成立进一步加强了我们与全球 IHV ISV 们的合作关 系。Asianux 产品能够得到更多全球厂商更广泛的软、硬件产品的支持认证。三家公司联 合成立新的合资公司,也使得三家公司之间的合作更加紧密,我们将为用户提供具有更加 优秀的稳定性、可靠性及可服务性的产品,并广泛满足中小企业市场到关键业务市场的所 有需求。

有需求。 联盟模式能走多远

联盟模式能走多远

在开源领域,产业联盟、企业联盟都已经不是新鲜事了。在中国,开源软件推进联盟 和 Linux 产业战略联盟就不同程度地推进了开源在我国的发展,到了今天,开源软件推进 联盟也在开源领域发挥着越来越重要的作用。但作为以联盟的形式成立合资企业,无锡亚 联可以称得上是第一个吃螃蟹的人。 作为一种新的模式,能持续多久自然是大家关心的话题。Asianux 商业模式为联合开 发、联合品牌和联合服务,致力于在亚太地区通过深入合作建立一个统一 Linux 平台。并 且在技术层面上,吸纳不同企业的长处就行统一的整合,打造出一个集众人之所长的品牌。 贾栋介绍到:“Asianux 商业模式是大家互惠互利的,大家贡献自己的优势,打造一个知名 的品牌,这对于作为单一的企业是很难办到的。在市场策略方面,因为各国的需求都非常 的大,我们只需要做好自己国内的市场,满足国内的需求就可以了,所以,这样的模式更

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 10 -

产业聚焦

多的是合作,而不存在竞争的关系。” 而除了已经推出的 Asianux Server 以外,Asianux 通过与 Intel 的合作,推出了世界上 第一个针对 Intel MID(移动互联网设备)的产品系列——Asianux Mobile Midinux。它具有 让任何消费者轻松驾驭的界面、丰富的多媒体和互联网应用,并能满足个性化的定制需求。 为介于笔记本和智能手机之间的移动消费类电子设备提供完备的移动操作系统。目前,已 经有包括日立,明基,联想等多家国际一流的硬件厂商开始和 Asianux Mobile 进行合作, 并已经达成了 MID 领域的 Linux 操作系统 OEM 合作和联合研发项目。Asianux Mobile 将 成为继服务器之后的 Asianux 公司的又一个主要增长点。由于亚洲人口众多,经济发展迅 速,消费类电子产品市场巨大,移动操作系统将给 Asianux 公司带来非常可观的软件出口 收入。 Asianux Mobile Midinux 项目的部分研发工作也将放在无锡亚联,将成立全新的团队对 部分功能进行新的研发,对于这个可能成为 Linux 下一个机会的产品,其意义也是重大的, 它可能扭转桌面操作系统一直止步不前的窘境。据悉,MID 设备也将是 Intel 最为主要推 动的一个设备,Intel 高层在最近一段时间的空开场合也不同程度的提到了 MID 设备。 对于此次无锡亚联的成立,英特尔公司开源软件技术中心总监 Ram Peddibhotla 表示, “多年来,我们同 Asianux 的成员 RedFlagMiracle LinuxHaansoft 公司一直在紧密合作, 共同研发拓展诸多英特尔公司的技术,包括多核、LessWatts 和虚拟化解决方案等,从而为 用户提供一个稳定可靠、高效节能的计算体验。现在通过 Asianux,我们希望在英特尔多 条产品线上,从移动互联网终端到多核服务器平台继续携手合作,开创未来。” 从联盟到产品再到公司,这是一个全新的模式,Asianux 联盟已经摸着石头过河一路 走出来了,Asianux Server 也从 1.0 版本更新到了 3.0 版本,在亚洲的 Linux 市场上已经取 得了不小的市场份额,而 Asianux Mobile Midinux 的注入,更为 Asianux 联盟增加了新的活 力和增长点,其独特的模式也将为未来的开源企业树立新的标尺。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 11 -

博客文摘

博客文摘 博客文摘 促开源与微软互操作性互动来谋求共赢 陆首群 BLOG :

博客文摘

促开源与微软互操作性互动来谋求共赢

陆首群

BLOGhttp://www.lupaworld.com/16128/

开源与微软的互操作性 当今时代呼唤开放标准。开放标准是指通过在应用编程接口(API)、通信协议(Protocol) 以及数据和文档格式(Format)方面使用公开发布的规范,来实现各种异构信息系统之间 的互操作性。 对开源与微软来说,互操作性是他们的共同追求,决不是“一头热”的问题。早在 2005 年,我应开源组织和微软双方关于实现互操作性的共同要求,曾邀请双方专家一起讨论, 企图搞出一个共同的、高效的互操作方案,但终因双方利益不同,讨论无果而终。 开源产品的 API 是公开、透明的,微软产品的 API 是属“暗箱操作”,因此在实现开 源与微软的互操作时,出现了不对称、不公平的局面。 微软要与开源实行互操作,可以很方便地设计转换器(或翻译器)。开源要与微软实行 互操作,在设计转换器时就遇到很大困难,因为开源无从了解微软的 API。过去开源一般 采用逆向设计工程或模拟技术的方法,来搜索、解析微软产品的 API 函数;在取得初步成 功时,微软就站出来说,微软的 API 具有知识产权和很多专利,对开源的“侵权行为”微 软要诉诸法律,且矛头直指开源的用户;这时开源也祭出反制之道,在加强开源社会团结 的基础上,正面应对微软的所谓“诉诸法律”问题:“互联网是开放标准、开源结构的直接 产物,互联网上大多是开源技术,具有‘左版’版权,只要你微软上网,开源也有反制资 源,用‘右版’版权来保护‘左版’”。从而迫使微软主管知识产权的副总裁 Horacio Gutierez 出来说话:“微软不会进行诉讼,如果我们想这样做,几年前就做了”;微软负责开源平台 和战略平台的主管 Bill Hilf Sam Ramji 更针对微软这样的“法律恫吓”说:“其实是我们 干了一件错事”。 开放协议层次的互操作 2007 10 15 日我与微软首席研究与战略官 Craig Mundie 会晤时,他认承:在相持 三年后,微软终于接受欧盟的反垄断处罚。我问他,微软承诺:“将向同行开源竞争者开放 互操作性的信息”,在向欧盟开放同时是否也向包括中国在内的全世界开放?Mundie 答复 很肯定:同时也向中国开放。 去年 12 14 日微软负责协议计划的总监 Ajay Sikka 来京与我会晤时,通报微软执行 美国与欧盟的裁定,他说:在中国也与欧盟一样,要落实微软关于开放互操作性信息的承 诺。我问他:“微软是否开放 API 源代码?”他说:“不是”;他说:“我们开放全部内外协 议”,“在这些协议中也包括有关知识产权、机密文档、专利、版权、源代码(参考性许可) 以及授权等”,我说:“欧盟对此满意吗?”,他说:“欧盟官员和参考系:‘文件共享管理 Samba’对此是满意的”。其实,我在以前发表的关于互操作性的系列文章(可参见本博客 网站“我的文章”)中早就指出,实现互操作是分不同层次的,其中包括开放 API 源代码

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 12 -

博客文摘

和开放通信协议等不同层次的互操作;当然开放通信协议层次的互操作不如开放 API 源代 码的互操作效率高(我也向 Ajay Aikka 当面指出,“你们开放协议层次的互操作不是最好 的方式”);但既然欧盟(包括 Samba)“满意”,我也无话可说,总算在互操作方面前进了 一步。 M/N 结盟 2006 11 2 日,微软与 NovellM/N)“结盟”,双方合作开发转换器,实现 Windows LinuxNovell/SuSE),在办公套件方面的兼容性或互操作,这是基于 API 之上实现 Novell Open OfficeODF)与微软-Office 2007.docs XML)的兼容性或互操作,Novell 与微软合作,在“法律”上或在技术上均属于排他性的,他们的“结盟”在国际开源社会 有两种不同反应,一种表示支持,以期实行真正意义上、更高效率的互操作,另一种表示 反对,认为这是微软对开源社会“实施分化瓦解的伎俩”。随后微软分别与 XandrosLinspire、 日本 Turbolinux 也进行了“M/N 模式”的合作(并曾提议与 Red Hat 合作未获成功),微 软(中国)有关主管也希望我能帮助促进中国有关 Linux 企业与微软实行“M/N 模式”的 合作;我曾了解 Novell 自“M/N 结盟”后的业绩,似乎并未达到其预定目标,我也广泛 征求一些国内同行的意见,认为 M/N 作为一种“合作模式”也可考虑在国内进行试点。 文档系统三个层次的互操作 在我已发表的文章中谈到了各种类型的互操作,现在拟重点谈一下文档系统方面的互 操作。文档系统的互操作分三个层次:

1、关于文档生成,信息处理,基本应用程序的兼容性或互操作

办公套件的兼容性属于这个层次的互操作。办公套件分文档(Word)、电子表格(Excel)、 幻灯片(PPT)等几个部分,主要是文档。办公套件的兼容性分层为:内容兼容、格式兼 容和版面兼容,涉及文档格式、操作习惯、接口和二次开发接口等。 一般来说,国内中文 Open Office.SXW ODF)与微软 Office 2003.doc,支持 XP) 的兼容性(主要是文档格式)为 95%或略差一些,可以实用(二次开发接口的兼容性约 70 %,偏低一些,还不至于影响大局);国外英文 Open Office 与微软 Office 2003 的兼容性大 约为 90%,比中文 Open Office 的兼容性要差些(国外对 Open Office 的使用也比国内差); 而微软 Office 2007.docs XML,支持 Vista)与微软 Office 2003.doc,支持 XP)也 不完全兼容,其兼容性大致为 95%或略高一些;为了兼容 Vista 操作系统和微软 Office2007, 微软最新的 Office2003 升级包(Office2003 SP3)将导致很多微软的老版本不兼容,无法访 问新版本(这也可能为开源提供了机遇)。

2、关于文档(信息)的规范、格式的兼容性或互操作

这涉及到 ODFUOFOOXML 三个标准的互操作性。①经国内有关单位核查测试, UOF ODF 具有一致性的条款约占 70%,能互相转换的约占 25%,兼容性约 95%;②微 软与北航合作,设计 UOF/OOXML 转换器,经核查测试,UOF OOXML 一致的条款约 占 60%,可转换的约占 2530%,兼容性约 8590%(在演示现场我曾指出,目前这样 的兼容性水平尚低);③ODF OOXML 一致的条款约占 65%,可转换的约占 2530%, 兼容性约 9095%。 微软要将 OOXML 提升为国际标准,去年曾在国内外引起一场风波,未获通过,今年

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 13 -

博客文摘

3 月底在 ISO 将对微软的修正稿进行第二次表决。微软曾征询我的意见,我认为 OOXML 原本是一个企业标准,如欲提升为国际标准,其条款要增加公开性、透明度;因为将来一 个国家存档的重要文件,如果绑定在一个企业“暗箱操作” 的条款之上,将会带来很大风 险。

3、关于文档(信息)存储的兼容性或互操作

目前已解决在 Windows 操作系统的环境中可以在其磁盘上读、写(Linux 的)ext2ext3 文档;同时,也已解决在 Linux 操作系统的环境中可以在其磁盘上读、写(Windows 的)NTFS 文档,从而实现在异构系统环境中文档存储的互操作。从在 Source Forge 上发 表的这方面成果来看,也有我们中国人的贡献。 总之,无论开源或微软,在互操作性问题上,都需要互动、开放、妥协和合作,才能 做到双赢;均要以互相尊重(决不可辱骂恫吓、恶言相加)和理性务实的态度,实现更深 层次、更富效率的互操作性。

2007 年:茁壮成长的Linux

袁萌

BLOGhttp://blog.csdn.net/yuanmeng001

今年即将过去。毫无疑问,回顾以往,在这一年里面,事实证明 Linux 在茁壮成长, 而不是所谓“恨铁不成钢”。 在 2007 年,全球自由软件运动所取得的最大进展是,确立了自由软件作为世界软件市 场“正当”(“valid”)竞争者的合法地位。 今年 9 月,欧盟就微软市场垄断的最终裁决, 导致 12 21 日微软向自由软件组织签定协议,公开了自己许多服务器协议的机密文档, 其中有不少有关微软私有专利的细节(比如相关专利号),打开了 Linux 顺利进入市场,获 得广泛应用的一扇大门。 回顾过去,大约在十年之前,SUN 公司要求获得微软“Active Directory”的技术文档, 以便建立与 Windows 的“互操作性”,遭到微软拒绝,结果把微软告上了法庭。欧盟经过 很长时间的调查,尤其是,在 2003 11 月,Samba 自由软件组织的发起人之一,Jeremy Allison 出庭作证,说明了在没有相关微软“协议文档”的情况下,实现“互操作性”的困 难性,从而否决了微软拿 Samba 来“说事”,诡称“由于存在 Samba 计划,可以实现(Windows Linux)之间的互操作性,由此证明存在市场的竞争性”,从而说明微软不曾垄断市场的 谬论。由于 Samba 的积极介入,导致 2004 3 月欧盟做出微软垄断市场的裁决,但是, 微软立即上诉,硬是不认帐。到了今年 9 月份,欧盟做出了“最终裁决”,微软眼看混不过 去了,才不得不低头认错,认罚。在 12 21 日,微软与 Samba 团队设立的自由软件社团 组织签约了“停战”协议,确立了 Linux 合法的市场地位。 Samba 团队,为 Windows Linux 实现互操作性,做出了历史性的贡献,绝非“Samba 能仿造的都仿造了,连 Win 的域控制器都造出来了,Windows 域对用户的认证都能接管, 所以说简直是抄袭,盗版。此外,Samba 通过软件领域的反向工程方法,分析使用了和文

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 14 -

博客文摘

件打印共享相同的端口,工作方式,域认证接口等。99%模仿了微软专有的文件打印共享

协议,相同的工作原理。就像早期 linux 模仿 Unix,仿的太像了,SCO 公司一发威,Linux 为了不涉及版权,去掉了那些专有的程序,而用自己新开发的。速度,稳定性马上就差了 不少。文件和 打印共享是微软的。NFS Sun 的。这两大局域网协议都是有主的。如果 人家追究起来是逃不掉的。如果微软认为“开源软件 Samba 因为模仿了文件打印共 享, 构成侵权,应该从 linux 发行版中去除”,那 linux 可就不方便多了。现在人家没追究,主 要是微软宽宏大量和 Samba 开发团队是非商业公司追究不易”这种说词。 现今,Samba 团队决定:向全球自由软件开发者提供访问微软相关协议文档的便利, 只要他们愿意。

更多选择不等于更多标准

胡才勇

BLOGhttp://blog.sina.com.cn/hucaiyong

丹麦哲学家布里丹曾写过一则寓言:有头毛驴,在干枯的草原上极为幸运地找到两堆

草,由于不知道先吃哪一堆好,结果在无限的选择和徘徊中饿死了。这被称为“布里丹效

应”。

这个寓言多年来一直是针对人类的选择而言的,即面对多种选择,人们往往无从选择。 但我现在看它,心境已完全不一样,社会发展到现在,物质生活极为丰富,人的自由度也 大了许多,已经到了可以有更多选择,追求更多选择的时代。以上面的寓言为例,在仅有 的两堆草里选,而且是在此后也不知道哪里还有草的情况下,这不叫选择,更不是我们现 在所说的更多选择。反而更像标准之选,是只能二取一的抉择,非左即右,非生即死。 什么是更多选择呢,我认为应该像大型超市,即使是最普通的商品,超市也会摆满货 架,琳琅满目,比如牛奶,有众多品牌、众多类型的口味和包装,每个人都可以根据自己 的偏好进行选择。但这种选择是建立在统一的牛奶标准之上的,因为标准统一,我们需要 考虑的只是自己的偏好,也可以在众多选择中放任自己的偏好,还可以随时改变自己的偏 好,正是在这种种偏好的满足下,我们才成就了“我们决定自己的口袋,我们决定我们的 购物篮”的“上帝”之感。假设牛奶的标准不一致,我们才真会感到无所适从。可以说, 多个标准往往会让我们无从选择,反而限制了我们选择的自由。我曾举过手机充电器的例 子,每个厂家都有自己的充电器标准,甚至每个型号都有自己的充电器标准,我们又何曾 多了更多选择。 多标准不仅会限制我们的选择,在很多时候,还可能造成极大的危害。因为多标准而 造成的教训有很多,比如: 1904 年的巴尔的摩火灾,因每个城市的水管标准都不同,所以从别的城市赶来救援的 消防队员只能望“火”兴叹,最终 80 个街区被烧为平地。 同样在美国,据说铁路规格不同是美国南部输掉美国南北战争的重要原因之一。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 15 -

博客文摘

近期的教训也有,因为测量单位英式与公制的区别,美国航空局曾丢失了一个价值 1.25 亿美元的火星轨道飞行器。 在我国,以办公软件为例,多年来,封闭文档格式的存在严重阻碍了各中文办公软件 之间的文档互通,用户几乎是别无选择地被长期锁定在某一软件上。这不仅不利于国产软 件的发展,对于用户本身来说,长期被锁定一家软件会对文档的长期保存带来极大隐患。 正因为如此,制定统一的中文文档格式国家标准 UOF 成为我们共同的诉求。 我一直坚持这样的观点,更多的选择应建立在统一的开放的标准基础之上。以 UOF 为例,UOF 作为统一的开放的中文文档格式,可以真正实现不同办公软件之间文档的兼容 和互换,帮助用户逐渐摆脱对单一产品的依赖,确保文档信息的持久生命力。UOF 独立于 具体的操作系统、独立于具体的办公软件产品,也独立于具体的开发语言和运行环境。依 据该标准,任何厂商都可以开发符合标准的办公软件和应用系统,现有的文档格式可以和

UOF 进行转换,从而实现文档的互通和互操作。这将极大丰富用户对办公软件的选择余地。 但我们也清楚看到,直至目前为止,文档格式标准之争还未终结,多标准有益论的论 调时有出现。这其中的谬误我曾经在众多的场合进行过分析和批判,可以肯定地说,永不 可能出现多种标准的长期并存,多标准最终损害的是用户选择的自由和权利。多个标准等 于没有标准,用户不可能自行选择文档格式标准。不同的文档格式之间不可能精确兼容, 多个标准的最终结果将会让用户无所适从,唯一的结局仍将是微软挟其庞大的用户群独霸 天下。因此切实加强对 UOF 的推广力度,是我们惟一的选择。 在这里,我想到近期的一个新闻热点——蓝光 DVD HDDVD 的对垒。这两种格式

DVD 厚度不同,互不兼容,统一的标准一直难以出现,市场和用户都出现观望态势,

两者的推广之路都受到标准不统一的阻碍。目前,这种状况有了突破,华纳兄弟宣布放弃

HDDVD 转而支持蓝光 DVD,使蓝光阵营进一步壮大,舆论一致认为 HDDVD 格式处于劣 势,占据上风的蓝光有望成为新一代 DVD 标准。但也有意见指出,电子市场变化迅猛, 如果标准的市场化不紧跟上,即使成为统一标准,也面临严峻挑战。多年受困于标准之乱

DVD 行业,可能已经错过了他们最好的发展时期,借标准一统天下的目标或许能实现,

但天下已经不是从前的天下了,近几年崛起的视频网络的发展已经改变众多消费者的观影 习惯,对于 DVD 的发展可以说是雪上加霜。 与 DVD 标准情况相似,标准推广和市场化的时机极为重要。UOF 出台后,惟有真正 应用起来,推广开去,才能发挥其作用。目前正值微软技术转型,用户的使用习惯经历巨 变,需要重新建立,这将为国产软件的发展创造良好的机遇。可以说,这一机遇的把握与 否将直接关乎国产软件乃至我国信息产业的发展成败。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 16 -

博客文摘

开源盈利模式探讨

Michael Tiemann

BLOGhttp://michaeltiemann.lupaworld.com

昨天,我的博客被 Stephen Walli 收藏为链接。他收藏其他人的博客为链接是否也意味 着我不是“它”?呵呵 他的主题很吸引我,而且我觉得他开始把球抛向一个令人感兴趣 的方向,于是我觉得我也要添加我的想法。 从我的赚钱经验来看,开源帮助企业盈利有三种方式(假设您也就职于开源企业):

1.使您必须将工作重心放在实际价值上面。若没有实际价值,那么软件的价值将变为

零。企业可以做的最糟糕的事情就是将自己的脑袋放在沙子上,并假装这个世界并未改变。 当然,像美国佛罗里达房地产市场(无论是上世纪 20 年代还是当前这个时代)或互联网股 票泡沫那样,运气更好的人要比明智的人更容易赚到钱。但是,如果您知道某些产品的价 值即将变为零,那么为什么还要觉得还可以在价值降到零之前找到其他比您更笨的人,而 去购买这些产品呢?由于了解到这些产品将不名一文所获得的自由可以促进人们将工作重 心放在实际价值上面: 是否有助于客户提高收入? 降低成本? 解决需要付费解决的商业问题? 能够及时且在预算范围内提供? 能够比您的竞争对手灵活,且响应能力更强? 提供高质量的产品? 创建某种能够解决新问题的客户忠诚度? 凭着我对美国和日本传统商业文化和历史的了解,美国更关注这些问题中的第一个问 题,并试图通过某种 ROI 等式对其进行量化,而日本则关注这些问题中的最后一个问题, 这些问题中的第一个问题作为协定的一部分实现,并在流程中更改游戏。无论哪种方式, 都是从战术或战略上进行管理,由于专注商业问题,所获得的自由正是针对绝大多数现代 企业家备受困扰的技术愚昧的解药良方。

2.第二个收益是透明度。萨班斯-奥克斯利法案的目标是透明度,但是该法案的很多

配置和需求还很繁琐,以至于透明度的收益在报告需求的困境中难以实现。形成对比的是, 开源软件可以提供一个能够具有渗透力的自然的透明度。开源通过作为一个一贯的信号(往 往是秘密的),消除不胜任者的庇护所,从而在制度上鼓励透明度。而且,很多企业家和众 多公司生存在一个不断否认的状态中,包括他们的员工、产品、质量或战略。足够的透明 度可以鼓励人们真正应对问题,而不是花费精力隐藏他们。

3.第三个收益(我可以确定这将是区别于其他博客所有者的一个普遍收益——Stephen

在前面已经提到过)是用户驱动创新。对于不可预见的人们以不可预见的方式使用软件解 决即使存在您也从未听过的问题,要想公平地评估它所产生的收益是不可能完成的事。当 十亿相关联的人能够遵循法律公平地成为用户创新者时,知识多样化的收益、源自 whitebox 和开箱即用使用情况测试的强劲性,以及创新可能性的实现,所有这些都可以变

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 17 -

博客文摘

为现实。

我要说的是,用户驱动创新是迄今为止我们所能看到的最毋庸置疑的优势,但是,我

也认为是凭借前两个先决条件才使得第三个收益成为战略优势,它们不仅仅只是一个能够

观察到的现象。

在建立开源业务时,需要避免以下这三个“想法”:

1.认为您需要投资风险资金才能启动开源业务。与将“母乳喂养是最好的方式”作为

喂养健康宝宝的方式的方法相同,我认为当风险投资人在开源公司方面进行投资时,有 95% 的投资人都将产生弊大于利的结果。我认为他们将选择错误的想法,出于错误的理由 进行投资,并将在他们的投资失败后极度抱怨。所以不要试图说服一个尚未了解开源的行 业,而是寻求方法有机地创建您的公司。我估计到目前为止,在糟糕的专有解决方案方面 有意浪费的投资要比所有软件 VC 可以获得的资金多出 10 倍以上,而对于已经证实需要 并愿意付费的客户来说,这也提出了一个值得注意的可以更好运营的机遇。让他们相信您 可以通过开源弥补他们的损失,并最终获得成功!

2.每个事件支持模型。

3.通过开源赚钱的冷嘲热讽使人们选择专用。这是一个不可救药的观点,原因有以下

几点:它让人们相信创建专有软件是正确的;它通过专有软件使人们混合、分层、混杂或

以其他方式影响开源;它混淆视听,使人们迷惑开源是否是一个开发模型,并能够基于价

值主张赚钱。根本没有软件位价值!

我该怎么办?

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 18 -

开源社区

开源社区 开源社区 项目动态 Ubuntu 8.04 Alpha 3 近日发布 颇受爱好者期待的 Ubuntu 8.04 “ Hardy

开源社区

项目动态

Ubuntu 8.04 Alpha 3 近日发布

颇受爱好者期待的 Ubuntu 8.04 Hardy”刚刚发布了一个 Alpha3 版本,现在已经可 以通过 Ubuntu FTP 下载试用。 更新列表: 改进的字体微调和渲染:就我个人而言,目前的字体显示方面我已经非常满意,不知 Hardy 还会在这方面有什么改进; 移动平台的全面支持:无论是应用程序,还是电源管理。Hardy 已准备全面向移动平 台发动进攻。届时如果 MIDUMPC 等移动设备上,也将会有 Hardy 的声音;

桌面特效:假如 Compiz 0.7 能如期发布,Hardy 将会根据现在 Gutsy Compiz 的反馈

信息,另结合强大的 Compiz 0.7,继续提供给 GNU/Linux 桌面用户更好的桌面体验; KDE 4 for Kubuntu:我们之前得到有关 KDE 4 不会在 LTS 版中集成的消息看样子要成

为过去了。KDE 4 将会集成至 7.10 Hardy 中! 全新的主题:Hardy 的革新可不能仅仅在内部,外观同样会有。据称 Hardy 将一改用 了已久的 Human 主题,将一更加“现代化”的主题替换之。到时,图标、控件、边框、 还有登陆界面,都将给人耳目一新的感受!

模块版 OOo OpenOffice.org 一直紧密地与 Ubuntu 集成着,如果用户不想用 OpenOffice.org 而删除它,可能会把一些重要的软件包也删除掉。但是 Hardy 中,OOo 将会与系统之间做比较大的变动,将其模块化、精简化,去除相当数量的 Java 软件包, 节省磁盘空间,不知是否会方便用户删除它? 精简软件和库:Hardy 可能会对目前的软件和库做一些比较大的改动,合并或去除一 些功能重复或有替代品的软件包和库,从而节省 CD 空间,也带来整个系统的高效的 精简;

X.org 7.3Hardy 将搭载最新的 X.org 7.3,另外将为显示调整提供更好的工具。如果 AMD 的驱动赶得急的话,到时 A 卡和 N 卡用户都将得到非常完美的显示支持了!

自动 Bug 报告:为了打造更加稳键的系统,Hardy 将会有自动化的 Bug 报告系统,当

然用户的隐私还得放第一; 启动信息显示:有人反应在 Gutsy 下去掉 usplash 都无法看到启动信息喽,那怎么排障 呢?Hardy 会改改了。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 19 -

开源社区

开源的编辑器Notepad++ 4.7.1 发布

Notepad++是一款非常有特色的编辑器,作为开源软件可以免费使用,具有以下功能:

内置支持多达 27 种语法高亮度显示(囊括各种常见的源代码、脚本,值得一提的是,完美 支持.nfo 文件查看),也支持自定义语言; 可自动检测文件类型,根据关键字显示节点,节点可自由折叠/打开,代码显示得非常 有层次感。这是此软件最具特色的体现之一;

可打开双窗口,在分窗口中又可打开多个子窗口,允许快捷切换全屏显示模式(F11)

支持鼠标滚轮改变文档显示比例,等等; 提供数个特色东东,如邻行互换位置、宏功能等等 现在网上有很多文件编辑器,这 个却是不可多得的一款,不论是日常使用还是手写编程代码,都能让你体会到它独有的优 势和方便。

软件包管理器RPM 5.0.0 发布

RPM RPM Package Manager,它是许多流行的 Linux 发行版的软件包管理工具,譬

Red Hat/FedoraSUSEMandriva 等。经过七个月的开发,RPM 最终在近日发布了稳 定版本 5.0.0。此版本使 RPM 成为了一个完全跨平台及可重用的软件包管理工具。 根据 RPM 5.0.0 的发布公告描述,该版本获得了下列新特性:

RPM 代码库已移植到所有主流平台,包括 BSDLinuxSolarisMac OS XWindows/Cygwin。现在支持使用所有主流的 C 编译器套件编译,如 GNU GCCSun StudioIntel C/C++等。

添加了包规范 (.spec 文件)

RPM 的编译环境进行了全面的修补,支持链接外部的第三方库。

RPM 包支持 LZMA 压缩、XML Archive(XAR)文件格式。

RPM 5.0.0 的源代码可从这里获取。

phpMyAdmin 2.11.4-rc1 发布

近日发布了 phpMyAdmin 2.11.4 的第一个候选版本(RC),这是一个错误修正版本。 phpMyAdmin 是一个打算通过 Web 来处理 MySQL 管理的 PHP 写的工具。目前它能创建并 且删除数据库,建立/删除/修改表格,删除/编辑/添加字段,执行任何 SQL 语句,在字段上 管理键。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 20 -

开源社区

开源模拟器QEMU 0.9.1 发布

QEMU 是一个开放源代码的虚拟机应用程序。最近,该软件发布了 0.9.1 版。新版本 包括许多改进和增强,如支持从主机目录引导 TFTP、针对 Solaris Tap 设备模拟、支持 选择 CPU 模型、支持 MIPS 64 FPU、支持 Xscale PDA 模拟、支持 ColdFire 系统模拟、 支持 MIPS64、支持只读 Parallels 磁盘映像、支持 SVM(x86)虚拟、支持 CRIS 模拟等。

PCLinuxOS 2008 MiniMe发布

PCLinuxOS 是一份纯英文的自启动运行光盘,它最初基于 Mandrake LinuxPCLinuxOS 完全从一张可启动光盘运行。光盘上的数据实时地解压缩,从而使得这一张光盘上集成的 应用程序多达 2G,这包括一份完整的 X 服务器,KDE 桌面,OpenOffice.org 以及更多即 刻可用的程序。除了作为自启动运行光盘来使用,你也可以通过一套易于使用的光盘安装 程序将 PCLinuxOS 安装到硬盘。额外的应用程序可以通过一份友好的 apt-get 前端 Synaptic 来添加或删除。

图像软件Paint.NET 3.22 Beta2 发布

Paint.NET 是一个图像和照片处理软件,它由华盛顿州立大学的学生开发和维护并由微 软公司提供项目指导,早期定位于 MS Paint 的免费替代软件,现在逐渐发展为一个功能强 大且易用的的图像和照片处理软件,支持图层,无限制的历史记录,特效,和许多实用工 具,并且开放源代码和完全免费,界面看起来有点像 Photoshop,该软件的开发语言是 C#

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 21 -

开源社区

Python维基系统MoinMoin

杨 晶 自 1995 3 25 日第一个 Wiki 网站诞生以来,Wiki 系统以其简洁的语法规则,方 便的在线编辑和完善的版本管理功能、得到越来越多用户的青睐,已应用到企业内部网站、 社区交流和个人知识管理等领域。Wiki Engine 也由最初的几个发展到上百个,使用各种开 发语言开发。比较有代表性的有 Python 开发的 MoinMoin ZWiki;用 Perl 开发的 TWiki UseModWiki;用 PHP 开发的 MediaWiki PhpWiki;用 Java 开发的 JSPWiki 等。本文 介绍的 MoinMoin 就是用 Python 脚本语言开发,是一套具有模块化设计和高灵活性的 Wiki 系统,以 GPL 协议发布,源代码开放。著名的 Python 社区 http://www.python.org/moin/Debian 社区 http://wiki.debian.org/Wiki 系统都是使用 MoinMoin 来搭建的,如图 1 所示。

MoinMoin 来搭建的,如图 1 所示。 项目起源 该项目最初由德国人发起, Moin

项目起源

该项目最初由德国人发起,Moin 是德国方言早上好的意思,MoinMoin 的叫法是借用 了 WikiWiki 这种 Wiki 习俗。MoinMoin 最初是在 PikiPiki 系统的基础上发展起来的。PikiPiki 的作者叫 MartinPool,由于想比较一下用 Python 实现的 Wiki 系统与 Java Perl 语言实现 的 Wiki 系统在代码质量和性能上的区别而开发了只有一个文件几百行代码的 PikiPiki

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 22 -

开源社区

统。PikiPiki 系统的代码量小,结构简单,但已具有了 Wiki 系统的基本功能,如在线编辑 和全文搜索等。为 Wiki 系统的实现提供了一个简单而稳定的框架,其提出的以纯文本方式 把数据存放在文件系统中的做法一直沿用到现在的 MoinMoin 系统。除 MoinMoin 外,还 有几个 Wiki 项目也是基于它的代码开发的,如 MonkeyWiki DiamondWiki 等。现在, PikiPiki 系统已停止开发,最后的版本为 2000 年发布的 1.63 版。

发展历史

MoinMoin 使用了 Python 脚本语言开发,是跨平台的、可运行在 Linux/Unix/BSDWindows Mac OSX 系统上的 Wiki 系统。项目始于 2000 年,2000 7 29 日发布了第 一个以 MoinMoin 命名的版本——MoinMoin 0.1,这个版本的作者是 JurgenHermann,他在 PikiPiki 1.62 版代码的基础上进行开发。第一版的 MoinMoin 的功能和 PikiPiki 差不多,只 修正了一些 Bug 和增强了显示的效果,没有增加新的功能。 2002 5 10 日,MoinMoin 1.0 正式发布,MoinMoin 开始完全转向 Python 2.0,不 再支持 Python 1.5,同时该版本还增加了很多新的功能,如附件、E-mail 通知、变量替换 和预览等。至此,MoinMoin 已完全摆脱了 PikiPiki 的影子,自成一派。 2004 12 6 日,MoinMoin 1.3 版发布,这是 MoinMoin 最重要的一次版本更新, 以模块化的思路重新设计了内部代码结构,能在不改变核心代码的基础上很方便地通过宏 (Macro)、分析器(Parser)、操作(Action)和主题(Theme)来扩展 MoinMoin 的功能, 如图 2 所示。

)来扩展 MoinMoin 的功能, 如图 2 所示。 开始使用 UTF-8 字符集,并作为 MoinMoin

开始使用 UTF-8 字符集,并作为 MoinMoin 系统惟一支持的字符集;可以使用高性能的

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 23 -

开源社区

Twisted 服务器作为 Web 服务器,以提升服务器的处理能力;支持 ACL(访问控制列表) 安全设置,这是 MoinMoin Wiki 开始支持内容管理系统(CMS)的一个重要改进;支持单 实例多服务;支持更好的文本搜索引擎。从 MoinMoin 1.3 版开始,MoinMoin 已完全可胜 任企业网站和企业知识管理平台等关键应用领域的需求。 现在最新的 MoinMoin 发行版是 1.5.3,支持 GUI 在线编辑器功能,MoinMoin 2.0 版也 已在开发当中。 从 JurgenHermann 启动 MoinMoin 这个项目开始就吸引了大量优秀的 Python 程序员, 他们为 MoinMoin 项目贡献了高质量的代码和文档,使 MoinMoin 不断创新,功能不断完 善。MoinMoin 社区很活跃,在各种大型的开源盛会上都能看到它的身影,如 Google Summer Of Code 2006 EuroPython2006 等。现在,MoinMoin 已成为互联网上最流行的 Wiki 系统 之一,在 http://www.c2.com/cgi/wiki 网站评选的十大 Wiki Engine 排行中高居第一位,而紧 随其后的分别是 MediaWiki PhpWiki

项目应用

MoinMoin 系统的网站是 http://moinmoin.wikiwikiweb.de/,网站搭建在 MoinMoin 系统 之上,如图 3 所示。

MoinMoin 系统 之上,如图 3 所示。 用户可以在网站上找到很多有关 MoinMoin

用户可以在网站上找到很多有关 MoinMoin 的资料。包括 MoinMoin 的安装步骤、MoinMoin Wiki 语法参考和一些常见问题的 FAQ 等,这些资料都是世界各地的 MoinMoin 用户通 过 Internet 贡献的。在这个网站还能下载各种有用的扩展插件,以扩充 MoinMoin 的功能, 如在线回复、在线投票和日历等。如果需要的功能现在 MoinMoin 还不具备,还可在网站 上的 FeatureRequests 页面提出具体需求,在下一个版本就很有可能包含所提交的功能需求 了。MoinMoin 系统中的很多功能都是这样开发出来的。在访问网站时,用户还可以发现 MoinMoin 系统的很多系统信息都是中文,这得益于 MoinMoin 系统的 i18n 设计和世界各

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 24 -

开源社区

地中文用户的贡献,它已被翻译成 20 多种语言。如果想对 MoinMoin 的中文化做出贡献, 可以登录 http://moinmaster.wikiwikiweb.de/网站,注册一个用户并加入一个语言组后就可以 进行翻译。MoinMoin 开发社区充分利用了 Wiki 系统方便的在线交流的特点,使社区与用 户的联系更加紧密,更加有效。不仅仅 MoinMoin 项目采用这种方式,很多开源项目都是 采用这种方式与用户沟通,使用户也渗透到软件开发过程中来,使用户与社区共同发展、 成长,最终用户反馈社区,促进社区的发展状大。我们相信随着 MoinMoinPloneZope3 这些优秀的 Python 应用被越来越多的国内用户所接受,MoinMoin 将会成为国内 Wiki 系统 的主流。国内知名的 Python 社区啄木鸟社区的网站就是使用 MoinMoin 来搭建的,该社区 依靠 MoinMoin 强大的在线协作功能,编写和整理了大量有关 Python 的资料,是学习 MoinMoin,学习 Python 的好地方,如图 4 所示。 MoinMoin 是一个成功的、优秀的开源项目,世界各地的志愿者通过国际互联网联系

在一起,创造了 MoinMoin Wiki 系统,创造了

在一起,创造了 MoinMoin Wiki 系统,创造了 MoinMoin 开源社区。不论水平高低,贡献 大小,只要有时间,有贡献的精神,都可为这个社区出一分力。作为回报,用户也将会得 到更强大、更可靠、更安全的系统。本文作为一篇 MoinMoin 的简单介绍,希望能帮助大 家了解 MoinMoin 社区,了解开源社区。同时,更希望大家能从中认识开源社区,认识开 源文化,从而能投身到开源社区中,为开源社区贡献你的智慧。

编者按:虚拟化的发展离不开开源的贡献,无论是 Xen 还是 KVM,如何发展开源虚拟化也 成为当今的热门话题,8月 28~30日在美国亚利桑那州的图森(Tucson)市举行了第一届 KVM 开发者大会,作为主要的开发人员,本文作者一行三人参加了此次高峰会议,在大会中也 发出了来自中国的声音,并为中国的开源爱好者带回了第一手的前沿资讯。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 25 -

开源社区

KVM开发者大会归来

董耀祖 徐雪飞 赵云峰

VMware 上市受人追捧、股价节节攀升的今天,虚拟化已经成为了人们耳熟能详的 词汇,在开源的世界里,虚拟化同样如火如荼的发展着,KVM 虚拟化项目从诞生之日起 就了开源社区人员的欢迎,并且很快的纳入到了 Linux Kernel 计划当中,成为开源虚拟化 的一颗闪亮明星。 KVM 最早由 Avi Kivity 等人开发,并于 2006 8 月推向社区,10 月被 Linux 社区接 受。它以其代码简单、易于理解掌握以及不需要重新安装等优点很快受到了业界的欢迎与 及 Linux 项目创始人 Torvalds 的支持,并于 2006 年底被集成进 Linux 2.6.20 版内核,从此 成了为 Linux 的一个组成部分。KVM 的管理者(maintainer)是 Avi Kivity,他也因此成为 Linux 内核核心小组和 Linux 虚拟化小组的主要成员。与此同时 KVM 的开发团队也快速成 长起来,到今天发往 KVM 邮件群里的邮件每天都接近一百封,包括很多原来其他开发社 区里的资深开发者都加入了 KVM 的开发。Intel IBM 等公司也投入了相当的人力到 KVM 的项目的开发中,成为 KVM 开发的主力军。

KVM 开发者社区

随着开发团队的增强,尤其是 KVM 社区的扩大,举办第一届 KVM 开发者论坛的计 划从今年初就浮出水面。笔者作为 KVM 的主要开发者,受邀于 2007 8 26 日到 31 日 参加了在美国亚利桑那州的图森(Tucson)市举行的讨论会。作为 KVM 项目的创建者 Qumranet 公司组织了这次会议,目的是在 KVM 项目成立周年之际聚集 KVM 的开发者和 爱好者们一起回顾 KVM 一年的成长 历程,讨论 KVM 的现状和规划 KVM 的未来发展 方向。同时一起研 究开发中的所遇到 的问题、挑战和解 决方法,并对社区 开发的协作方式以及对 Linux 虚拟化的发展方向作深入的探讨,包括与开源社区中其他虚 拟化项目的协作如 Xen lguest。 图森市位于亚利桑那州南部,靠近墨西哥边境,是一个位于沙漠中的城市,常年高温, 仙人掌比人还高。KVM 开发者论坛就选在了图森市的一处旅游胜地的度假村,笔者顺便 拍下了度假村门口的巨型仙人掌。所谓的旅游胜地是图森市的一处山谷,从那里能看到整 个城市,感受夏夜静静的图森。大约有五、六十位来自不同国家的社区成员及爱好者参加

网站: www.linuxpk.com 投稿: opensource@linuxpk.com

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 26 -

开源社区

了此次会议,包括来自中国大陆的笔者 3 人。虽然人数不是很多,但是主要在开源软件方 面有突出贡献的公司如 IntelIBMHPNovell Red Hat 等都派人来参加了这次会议。 有趣的是 VMWare 也派了几位工程师参加此次会议。

KVM Xen 和谐发展

KVM 开发者大会上,Intel 的多核软件主管 Sunil Saxena 分析了 KVM 的市场定位和 开发模式。他提到,今天 VMware 是虚拟化领域的市场领导者,Microsoft 是潜在的强大的 竞争者。XEN KVM 是虚拟化领域的新锐,目前还很弱小。他提到 Xen KVM 都是由 开源社区开发的,KVM 的大部分代码也是直接从 XEN 中移植过来,KVM 的很多开发者 也都来自 XEN 项目组,虽然 KVM XEN 是两种不同的虚拟机实现方式,各有不同的优 点和使用场合,但是 KVM XEN 应该互相协作,减少为不同而不同的无效竞争,尽可能 使用相同体系结构和实现方法,以提高开源社区的效率。 在此笔者非常赞同 Sunil 的观点,VMware 早在 98 年就投入到虚拟化的研究,如今凭 借着对市场长期研究的优势和专利技术,在服务器虚拟化领域取得了很高的市场份额,最 近 VMware 又成功上市,筹集了大量资金可以投入研发和销售以进一步巩固它的领先优势。 Microsoft 凭借自己在操作系统方面的垄断地位,一旦推出自己的虚拟化方案,肯定会取得 不小的市场分额就如同他多年前进入办公软件(office)领域或浏览器领域一样。KVM Xen 要想在虚拟化领域占有一席之地,就必须互相合作共同进步,至少在目前。

社区开发模式的结晶

KVM 项目从产生到收录到 Linux 内核中仅用了几个月的时间,在如此短的时间取得这 么大的进步是很惊人的,这其中有来自社区人员的不解努力,背后也有着众多企业的支持, 这充分体现了开源开发模式的优越性和先进性,可以说 KVM 是这种社区开发模式的结晶, 它凝聚了无数人的智慧和劳动成果。 来自 Intel Sunil 介绍了 Intel 在虚拟技术方面的最新动向,如 EPT(extended page table) VT-dVirtualization Technology for Directed I/O)技术。在 EPT 之前,XEN KVM 使 用影子页表来实现内存的虚拟化,这种软件方法非常复杂并且浪费内存。EPT 技术通过增 加额外的一层页表,使得硬件可以直接利用客户机页表获取客户机物理地址,然后通过额 外的 EPT 表将客户机物理地址转化成物理地址。EPT 消除了复杂的影子页表软件实现,简 化了 VMM 的实现,增强了系统的性能。笔者相信 EPT 技术将很快成为一个标准的虚拟化 技术。另外 VT-d 通过实现对设备的 DMA 操作的重定向,提供了在虚拟机和 I/O 设备之直 接通信的架构,实现了虚拟机对直接拥有的设备的支持。 IBM Rusty Russell,也是 Lguest 的维护者(maintainer),介绍了 KVM-lite,将以支 持 paravirt_ops 为主的 lguest KVM 的设备模型结合起来,可以使 KVM(用户程序)可 以运行在没有硬件虚拟化技术支持的处理器上,KVM-lite 是对 KVM 的一个很好的扩展。 同时来自 IBM Carsten Emde 介绍了 KVM IBM S390 架构上的设计和构想,但是对

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 27 -

开源社区

KVM/S390 的实现还在进行中;来自 IBM Hollis Blanchard 介绍了 KVM IBM Power PC 上的设计,KVM/PPC 实现了部分功能,可以运行 Guest 的前 50 条指令。 Qumranet Uri Lublin 介绍了动态迁移,虚拟机的内存一般较大,不能一次迁移所有 的内存,否则一次迁移需要较长的时间从而导致服务中断较长时间。动态迁移先分批迁移 最近没有使用的内存,当已经迁移的内存在完全迁移前又被客户机修改时,这块内存需要 重新迁移。当剩余的未迁移内存少到一定数量时,虚拟机在一个很短的时间,大约十几毫 秒至几十毫秒时间,暂时停止服务,将整个虚拟机迁移到远端,同时立即启动迁移到远端 机器上的虚拟机以重续暂停的服务。 Qumranet Dor Laor 介绍了泛虚拟化设备的(para-virtualized)驱动程序,泛虚拟化 驱动程序可以大大减少虚拟机和主机 Linux 之间的上下文切换次数,从而可以很大程度上 提高 IO 设备的性能。Dor 主张实现一条私有的虚拟总线(virtual I/O 总线),泛虚拟化设 备就挂在这条总线上。但是,一些人建议使用虚拟 PCI 总线,因为虚拟 PCI 总线更通用, 更规范,这个讨论还在进行中。

来自中国的声音

笔者中的董耀祖和赵云峰向大会作了关于 KVM 性能优化和测试方式方法;SMP 支持 的设计和改进建议;和关于内核中断控制器仿真实现的架构及其进展的报告。这也是本次 大会第一个来自中国的报告,体现了国人在 KVM 社区的贡献和地位。在 KVM-18 发布时, KVM 的性能只有 XEN 1/3,但是经过笔者和开源社区开发人员近 2 个月的调试和优化, 今天的 KVM 性能和 XEN 已经 在伯仲之间。同时该报告凝结 的是 Intel 开源技术中心对 KVM 的巨大贡献、我们对 KVM 并行多处理(SMP)的 支持和实现以及我们对内核中 断控制器仿真的实现和技术推 动。

另一个来自中国的报告由 笔者中的徐雪飞给出,介绍了 KVM Intel 安腾

KVM 在 Intel 安腾 (从左至右依次为赵云峰、徐雪飞、董耀祖)

(从左至右依次为赵云峰、徐雪飞、董耀祖)

IA64)架构上的设计。

KVM/IA64 实现了所有 KVM 必须的功能,实现了同时运行单处理器的 Linux windows2003 server 的功能,同时 KVM/IA64 具有很好的性能(与 Xen/IA64 相似)。在报 告的间隙,笔者也当场进行了演示,利用位于上海的安腾机器,远程同时启动了 Linux windows 客户机。作为第一个运行在非 x86 平台上的 KVM/IA64,演示非常成功,与会者 看了后都希望尽快看到源程序能尽快进入 KVM

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 28 -

开源社区

KVM 社区的发展方向

在两天半的时间中,白天大家聚在会议室听来自世界各地不同国家不同公司的开发者 对 KVM 发展方向和技术的看法。晚上组织方安排了比较轻松自由的鸡尾酒会,通过一种 比较随意的方式让平时只能通过电子邮件交流的开发者们能有面对面的交流的机会。在每 天正式会议结束之后,还有一些称之为 BOFbirds-of-feather)的讨论。如同其名,BOF 是一群与会者可以自由的发表自己的意见和发问的地方,没有国籍、地域、辈分的约束, 每一个人可以畅所欲言,也可以打断别人的发言。 笔者参加了关于泛虚拟化设备总线形式的 BOF 讨论。大部分参与讨论的技术人员都认 为虚拟 PCI 总线够通用,可以很好的应用在 KVM 泛虚拟化设备中。但是这遭到了来自 S390 开发者的强力反对,主要原因是 S390 系统没有 PCI 总线。来自 Qumarent Dor 不排除虚 拟 PCI 总线,但是也愿意尝试一种更高效的虚拟总线。笔者是虚拟 PCI 总线的始倡导者, 也是坚决拥护者。笔者认为开源社区必须统一虚拟设备的标准,使之成为一个独立于 hypervisor 实现的标准设备。只有这样,Xen KVM 甚或 Vmware 才有可能在未来共用由 第三方开发的虚拟设备驱动程序,而不必使整个开源社区将精力花在无意义的为不同而不 同上,避免对虚拟设备驱动程序的重复开发上。从讨论的结果来看,大多数的人还是认为 虚拟 PCI 总线是一个不错的选择。 另外对于 KVM 的用户模式,是定位在服务器加固(server consolidation)还是面向客 户端(client)使用,不同的公司有不同的定位和看法。Avi 想将 KVM 定位为一种通用的 虚拟化工具,不同的用户模式都可以利用它作进一步的裁剪(customization)。笔者以为对 KVM 的用户模式的不同认知,或多或少会影响 KVM 的发展方向,如对 SMP 的支持,扩 展性的延伸等等。在未来的一年里,笔者认为 KVM 将在 SMP,性能,扩展性,EPT/NPT, VT-d 和直通设备(pass-through),安全性等方面会有长足的发展。 链接 Avi Kivity Avi Kiviky是 KVM项目的维护人和领导者,也是 Qumranet公司的资深软件工程师。Qumranet (Qumran 是位于发现圣经《死海古卷》洞窟附近的古老聚落)总部和研发中心位于以色列, Avi 本人也主要在以色列的 Qumran 工作。他曾经参与过 Xen 的开发.在此之前参与过 ScaleMP 项目并发明了 Versatile SMP (vSMP) 架构,Exanet,参与创立了 Avionitek。

开源与SaaS

顾宏军

SaaS Software-as-a-service(软件即服务)的简称,一般认为它与“on-demand software” (按需软件)the application service provider(ASP,应用服务提供商)hosted software(托管

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 29 -

开源社区

软件)具有相似的含义,是一种通过 Internet 提供软件的模式,厂商将应用软件统一部署在 自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服 务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。 SaaS 不仅适用于中小型企业,所有规模的企业都会从 SaaS 中获利。但普遍认为对于 许多小型企业来说,SaaS 是采用先进技术的最好途径,相比较传统软件销售方式而言 SaaS 具有很多独特的特征。 SaaS 取消了传统的软件授权费用,厂商将应用软件部署在统一的服务器上,免除了最 终用户的服务器硬件、网络安全设备和软件升级维护的支出,客户不需要除了个人电脑和 互联网连接之外的其它 IT 投资就可以通过互联网获得所需要软件和服务。此外,大量的新 技术,如 Web ServiceSOA,提供了更简单、更灵活、更实用的 SaaSSaaS 供应商通常是按照客户所租用的软件模块来进行收费,用户可以根据需求按需订 购软件应用服务,而 SaaS 的供应商会负责系统的部署、升级和维护;而传统管理软件通常 是买家需要一次支付一笔可观的费用才能正式启动。 当 Salesforce 轰轰烈烈的上市,并一路席卷 CRM 市场的时候,SaaS 概念被其演绎的 淋漓尽致。Salesforce 并不出售 CRM 软件,它只是在互联网上搭建了一个平台,人们缴纳 少许租用费就可以在网上使用这个 CRM 系统,使用者无需花费高昂的费用购买 Licence, 无需自己安装软件,无需购买硬件服务器,无需配备专门的维护技术人员,所有要做的就 是打开浏览器使用它。 这种基于互联网的 SAAS 风潮正在愈演愈烈,Google 将整套的 Office 搬上了互联网, 大名鼎鼎的 Photoshop 也能在网上使用,连微软、IBM 也成立网络软件部门,雷曼兄弟的 1 亿港币投向了金蝶的 SAAS 产品,马云的 3 亿人民币砸进以 SAAS 为本的阿里软件,一 些中小型软件商更是嗅到了这里面翻盘或向沉甸甸的大软件商叫板的机会。

SaaS 真的那么好么?

企业采用 SaaS 服务模式节省了大量用于购买 IT 产品、技术和维护运行的资金,且像 打开自来水龙头就能用水一样,方便地利用信息化系统,大幅度降低了中小企业信息化的 门槛与风险。但是我们在看到 SaaS 可能改变整个软件工业的同时,我们也要看到传统 SaaS 模式潜在的问题或风险,中小企业(SME)使用传统 SaaS 模式进行信息化应用很可能是“看 起来很美”。 短期与长期:软件租赁和购买的选择,和现实生活的租住房子还是购买房子的选择有 很大类似,租赁只是获得使用权,而非所有权,另外国人的习惯还是更相信购买的东西才 是自己的。租赁适合企业缺资本,无人才时采用,或非核心部门采用,但凡稍有能力时, 企业还是会考虑购买软件,现场部署。因为 SaaS 软件每年的租用费用看似不高,但是使用 越久越有依赖性,每年租赁费用积累起来,不比购买所需的开支少。 迁移成本:日常租住房屋时,一个地方租住段时间就换地方是很平常的,有时还要请 搬家公司帮搬东西。但在软件租赁中,更换服务商的成本很高。因为各家软件运营商的软 件是不互通的,客户在原先运营商处的商业数据,很难迁移到新服务提供商处,属于典型

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 30 -

开源社区

的上船容易,下船很麻烦。也许市场上会出现专业的“SaaS 搬家公司”。 运营商风险:刚才提到运营商之间的数据迁移很麻烦的事情,如果您的运营商倒闭了, 客户如何获得原属于自己的数据,客户在取回数据后如何处理,是导入到新运营商处,还 是其它处理将是个大问题。没有配套软件的数据就有一堆无用的数据库文件。 软件定制问题:个人应用,娱乐应用存在相当的共性,而企业应用很多时候,有企业 独有的需求,这种情况下,软件租用运营商几乎是很难为客户提供定制的,因为定制意味 着新版本,定制会对其软件升级更新等带来很大麻烦。 数据安全性:随着企业业务越来越离不开网络,大量的数据都存在与计算机中,而企 业数据多半是机密性的,如果这些数据存放在软件运营商处,尤其国内的诚信等缺失的情 况下,安全性谁来保证。

况下,安全性谁来保证。 基本上,现在媒体宣传的 SaaS

基本上,现在媒体宣传的 SaaS 模式,多是原来的商业软件,摇身一变换种方式发布授 权,进行收费,改一次性支付许可费为按年支付许可费。这种模式其实并未从根本上取消 “软件授权”,也非真正的“软件即服务”。

开源商业模式

Opensource 自从诞生之日起,它的商业模式就不断地在被探索。开源在一般人眼里就 是免费,即使不是免费也是廉价的代名词。 但开源软件的发展需要资本的支持,我们不能 指望开源体系里面每一件东西都是捐来的,于是人们寻找开源的商业模式,这也是开源必 须的发展之路。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 31 -

开源社区

SaaS 商业结构
SaaS 商业结构

开源软件的授

权方式注定了开源

不可能走传统商业

licence

软件靠卖

老路,因为开源软

件版权不是某个人

的,而是属于某个

松散的技术社区或

组织,无论从商业

还是道德的角度想

等同封闭代码软件

一样卖许可都是不

可能的,或者说是

靠不住的。使得很多的开源软件的商业模式都是将开源软件作为一种附属品,增值品存在。

免费的开源软件与收费的商业版组件捆绑是典型的做法,比如说收费的书籍教程、嵌入式

模式(硬件收费)、混合模式(特有商业模块收费、高级版本收费)等。这些商业模式都是

将开源软件作为其 它东西的陪衬而存在的模式。

广义 SaaS

当我们提到"软件即服务"的时候,突然感觉这个词汇天生就是为开源软件而创造的。 开源软件的自身特征也决定了 Software-as-a-service(软件即服务)将是最好的开源商业模 式:免费的开源软件+收费的专业服务,这是真正以开源软件为中心的模式,这些服务包 括培训、实施、定制开发、软件托管等。 广义的 SaaS 的概念既包括在线托管型 SaaS,也应该包括现场实施型 SaaS,只是这种 现场实施服务,不是靠授权收费,而是靠服务收费。红帽的订阅模式,众多开源软件的定 制化、服务销售模式,都是对 SaaS 理念进行的有力的支撑和延伸。

开源 SaaS 模式

开源 SaaS 是一种广义的 SaaS 模式,因为开源软件没有授权费,所以所有开源软件现 场部署也可算是"软件即服务"的一种体现。另外,开源软件 SaaS 还可免除上文提到的商业 软件实施 SaaS 时潜在的各种风险。 开源软件没有授权费用,而且可能会出现同一开源软件的多家 SaaS 运营商,如果老运 营商出现问题,客户可在数据导出后,将数据很方便的迁移到另外一个服务提供商处,免 除了采用商业软件 SaaS 时,运营商出现问题时,难以更换服务商的问题。 开源软件传播的自由性,使得用户可通过多种途径获得软件。在用户需要本地部署、 需要特定功能时,用户可很方便的将原 SaaS 运营商处的商业数据导入到本地系统内,还可

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 32 -

开源社区

自行开发所需特定功能,或聘请专业的开源软件服务公司代为进行,免除了商业软件 SaaS 时,难以迁移到本地,或迁移成本很高的问题。 开源 SaaS 模式大概可分为两大类: ◆开源在线版 SaaS,通过一对多的服务模式,满足客户共通的需求,开源软件公司只需要 维护这一个系统,就能给千万个客户提供服务,公司的维护和开发工作也相对少了,客户 的成本也降低了。 ◆开源现场版 SaaS,通过一对一的服务模式,满足客户特有的需求,如现场部署、定制开 发、现场培训等需求,这种服务模式适合不需复制性的客户,相对效率比较低,但可满足 客户灵活性需求。 另外,使用开源软件做 SAAS 模式的时候开发周期大大缩短,优势非常明显。 开源 软件一般都会有相对坚固和强壮的底层架构,源代码开放使得在其基础上开发 WEB 应用 可以更快速,而 LinuxApacheMysql 等优秀开源软件可以提供从操作系统、web 服务器、 数据库等全套的 SAAS 基础解决方案。 目前一些用开源软件做出的 SAAS 应用渐渐的出现了,highrisehq.com 这个刚上线就备 受欢迎的 CRM 是基于开源的 Ruby on Rails。可喜的是,国内也出现的开源的 SAAS 应用, 基于开源组合 pyhton/zope/plone 的在线团队项目协作产品 EveryDo。这些都预示着开源软 件相当适合实施 SaaS 模式。

SaaS 的未来

最近的一次市场研究机构 IDC 对微软的渠道合作伙伴的研究报告显示,软件即服务 (SaaS)被传统的独立软件供应商看作一个巨大的机遇。76%的被调查人员认为 SaaS 将极

大地影响该合作伙伴市场前景,70%的解决方案开发商认为这是一个巨大的机会。

IDC 预计更多的公司将会在明年进军 SaaS 领域,其中包括 SAP、微软、思科和 IBM 。 虽然目前 SaaS 在软件总收入中占的比例很小(大约 2%),但预计这个比例将会以每年 25 %的速度增长 ,并且到 2011 年,SaaS 软件收入将会达到 145 亿美元。 虽然在 IDC 的报告中,没有提及开源软件,但是在即将到来的 SaaS 时代,开源软件 最适合实施 SaaS 将得到验证,开源商业模式也会得到很好的完善和补充;开源 SaaS 模式 将同时向预制型在线租用和按需定制型现场部署两方面发展。 CIO 选择 SaaS 的最主要原因是,部署起来非常快捷,没有许可证费用和搭建基础环节 的费用,而且能够处理好一般的业务流程。SaaS 的启动成本不高,因此企业有足够的灵活 性,在遇到问题后改变方向并加快发展。相比之下,由于应用软件都已经打包完毕,所以 就缺少这样的灵活性。 选择 SaaS 的另一个原因是,它可以促使企业使用标准化的业务流程。现在很多公司都 过分夸大流程的独特性,过分强调定制服务。而且,即使使用了标准的 SaaS 工具,并不意 味着每个企业从中得到的结果也相同。因为如何配置和使用 SaaS 是一种秘方,配置和使用 方式不同就会产生流程差异。

方式不同就会产生流程差异。 网站: www.linuxpk.com 投稿: opensource@linuxpk.com

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 33 -

知识学堂

知识学堂 知识学堂 Linux 系统管理员进阶【之一】 张育人 作为一个 Linux

知识学堂

Linux系统管理员进阶【之一】

张育人

作为一个 Linux 系统管理员,我看了许多有关 Linux 的文档和书籍,并为学习 Linux 付出了许多艰苦的努力。我曾在《开放系统世界》上介绍过初学 Linux 时要掌握的基础知 识,以及如何寻找解决问题的方法。 当真正获得了一份正式的 Linux 系统管理工作后,我更加深刻地理解了 Linux 的灵魂: 服务与多用户。Linux 系统知识是非常广博的,但是只要掌握了重点知识,管理它并没有 想象中的那么可怕。 在随后的几篇文章中,我会将作为系统管理员的一些工作心得和总结出来的经验系统 地介绍给读者。这些内容包括系统管理的基础知识、局域网环境下的 Linux 管理及应用、 Internet 环境下的 Linux 管理及应用、如何能“可持续”地学习 Linux 等。本篇主要讲讲 Linux 系统管理的基础知识。

Unix思维思考Linux

由于 Linux 是参照 Unix 的思想来设计的,理解和掌握它就必须以 Unix 的思维来进行, 而不能以 Windows 思维。 不可否认,Windows 在市场上的成功很大一部分在于技术思想的独到之处。可是这个 创新是在面对个人用户的前提下进行的,而面对着企业级的服务应用,它还是有些力不从 心。多年来在计算机操作系统领域一直是二者独大:Unix 在服务器领域,Windows 在个人 用户领域。由此可见,用户需求决定了所采用的操作系统。 不管什么原因,如果要学习 Linux,那么首先要将思维从 Windows 的“小水池”中拖 出来,放入 Unix 的海洋。下面我们就来看看 Linux 究竟有哪些独到之处。

Shell

对于 Shell——壳,习惯 Windows 的读者肯定是非常陌生的,因为 Windows 只有一个 “Shell”(如果可以说是 Shell 的话),那就是 Windows。用一句话容易理解的解释就是, Shell 是用户输入命令与系统解释命令之间的中介。最直观的说法,一种 Shell 有一套自己 的命令。举一个容易理解的例子,Linux 的标准 Shell Bash ShellSolaris(一种 Unix) 的标准 Shell B ShellDOS 的“标准 Shell”是 DOS。“列文件明细”这个动作分别要用 命令“llls -ldir”来实现。说“标准 Shell”是因为 Linux 可以支持几种 Shell,有 Bash ShellKSH Shell TCSH Shell 等。 Linux Shell 是以命令行的方式表现出来的。读者可能会不理解,Windows 从命令行

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 34 -

知识学堂

“进化”到了图形界面,那么 Linux 现在还使用命令行岂不是一种倒退?当初我刚刚接触

Linux 时就曾有过这种想法。可是后来发现,如果使用图形界面,那么分配给应用软件的

资源就少了,在价格昂贵的服务器上,能够以较低的硬件配置实现同样的功能是非常重要

的。

下面举例说明,一台服务器有 512MB 内存,假设其中 256MB 用于处理图形界面,若要安

装一个需要 384MB 内存的数据库软件,惟一的办法就是扩大内存。但是如果使用命令行,

系统可能只需要 64MB 内存,其它的内存就可以供数据库软件使用了。使用命令行,不仅

是内存,而且 CPU 及硬盘等资源的占用都要节省很多。所以,作为服务器使用命令行是优

点而不是缺点。

既然 Shell 有这么多优点,接下来就要学习它。由于各版本的 Linux Bash 为默认 Shell

所以下面关于 Shell 的一些技术细节都以 Bash Shell 为准。Shell 有下面几个重点部分:

◆文件安全与权限

◆文件资源查找

◆命令

◆输入与输出

◆文本过滤

◆环境

Shell 脚本

◆运行级

1.文件安全与权限

Linux 系统用文件来表示一切,可以是目录、文档、链接、块设备、套接字、字符设备、

命名管道或其它各种各样的对象。文件相关的属性有类型、权限、硬链接、属主、属组、

大小、更新时间和名称等。用“ll”命令列出清单,输出第一列的首字母表示文件类型,

其它部分表示文件权限;剩下的每一列对应上述所说的一个关键属性。见如下实例: # ll

total 28

-rwxr--r--

1 root

root

70 Sep

9

2003 cpusers

drwx------

3 root

root

4096 Mar 10 14:43 Desktop

-rwxr-xr-x

1 root

root

181 Nov 12 17:32 mail-check-report.sh

-rwxr--r--

1 root

root

2860 Nov 12 18:30 mail-quota.report

-rw-r--r--

1 root

root

7 Sep 26 16:38 minicom.cap

-rw-r--r--

1 root

root

511 Sep 26 16:37 minicom.log

-rw-r--r--

1 root

root

3673 Mar 11 00:23 passwd

文件类型解释如表 1 所示。

1:文件类型一览表

d

目录

l

符号链接(指向另一个文件)

s

套接字文件

b

块设备文件

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 35 -

知识学堂

c

字符设备文件

p

命名管道文件

- 普通文件,或者更准确地说不属于以上几种类型的文件 权限要配合属主和属组来理解,r 代表可读,w 代表可写,x 代表可运行。三个字母为 一段,第一段代表属主权利,第二段代表属组权利,第三段代表其它用户权利。如果相应 权利位为“-”,则表示不具有这种权利。 链接分为硬链接和软链接,硬链接和原有文件是存储在同一物理地址的两个不同的名 字;软链接类似于 Windows 中的快捷方式,本身的内容是被指向文件的内容。 文件大小的单位是 KB,注意这里不一定就是真正的大小,因为文件有各种类型,例 如目录的大小大多数是 4096KB。 与 Windows 不同,Linux 文件没有固定扩展名,但是扩展名遵循一定的标准。

Linux 下能够更改这些设置的主要命令有 chownchgrpumask setuid,具体用法此 处就不详细介绍了,可以通过“man 命令名”来学习。例如,对于 man 命令的使用方法可 以使用“man man”来学习。 需要注意的是,在 Linux 中需要区分大小写,例如,ls LS 是两个不同的命令。

2.文件资源查找

对于文件资源的寻找最有效的方法就是搜索,find grep 是最主要的两个命令。find 引用 文件属性进行查找,所谓文件属性,就是指文件名、文件权限等类型的属性。grep 根据文 件内容进行查找,能够分析文本内相关的数据,但是它对二进制文件无能为力(二进制文 件是给 CPU 看的)。

3.命令

掌握 Shell 命令是学习 Linux 基础的基础,除去前面提到的命令外,Bash 还有不少内置的 命令,详见表 2。 表 2Bash 内置命令 命令 说明

alias

设置别名

bg

使一个被挂起的进程在后台继续进行

cd

改变当前工作目录

echo

显示字符串或变量的值

exit

退出 Bash

eval 将命令所带的参数作为一个命令行来执行 export 使变量的值对当前 Bash 的所有子进程都可见

fc

编辑历史命令列表里的命令

fg

使一个被挂起的进程在前台继续进行

help

显示 Bash 内置命令的帮助信息

kill

终止某个进程

pwd

显示当前工作路径

read

从标准输入读取字符串序列

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 36 -

知识学堂

time 显示执行其参数命令所使用的用户和系统累计时间 unalias 删除已经定义的别名

text expr [expr]

if expr then cmd fi 用于实现单分支结构

if expr then cmd else cmd fi

case

for

用于测试一个表达式 expr 的真假

用于实现双分支结构

esac

do

用于实现多分支结构

用于实现 for 型循环

done

while

do

done

用于实现当型循环

until

do

done

用于实现直到型循环

break

用于跳出循环结构

continue 用于重新开始下一轮循环 引用这些内置命令不需要 Shell 环境的配合,也就是不需要对命令的所在进行设置。 除了这些内置命令外,还有许多的“外部”命令,这些命令依赖于 Shell 环境。后面

我将讲述 Shell 环境,它们一般处于/bin/usr/bin//sbin /usr/sbin 等目录下,可以用 echo $PATH 查看系统 Shell 环境默认的路径设置,在这些路径下寻找可执行命令,同样“man 命 令名”提供了很好的教学。

4.输入与输出

Shell 的基本任务是处理输入和输出,在很多文档和书籍中提到标准输入和标准输出的 概念,可以认为标准输入就是键盘,标准输出就是屏幕。Bash 可以从标准输入中获得命令, 也可以用其它方式获得输入,例如文件输出同样可以输出到别的地方。这种使用非标准输 入输出(I/O)的方式叫做 I/O 重定向。关于重定向操作的操作符号见表 3。 表 3I/O 重定向操作符 符号 解释 举例 解释

>

重定向到新的输出

ls > files.txt

列文件清单并将结果存入 files.txt 文件

>>

追加重定向到新的输出

ls >> files.txt

列文件清单,并将结果追加到 files.txt 文件

<

重定向到新的输入 sort < files.txt files.txt 的内容排序

<<

追加重定向到新的输入

sort << files.txt

files.txt 的内容排序

| 将输出通过管道传递到输入 ls | sort 列文件清单并排序 重定向有什么作用呢?比如系统需要在某种情况下回复 E-mail,并且它的内容又是固 定的,这时使用重定向可以把固定内容写入一个文件,回复 E-mail 的时候输入采用这个文 件即可。

5.文本过滤

假如需要写一个文件,这个文件是由许多其它文件中的段落或列组成,并且这些段落 和列的内容是不断变化的,这时用拷贝粘贴来手工完成这个任务就显得非常低效。聪明的 方法是使用文本过滤,写一个脚本来形成这个文件。 文本过滤是 Unix/Linux 的一大特色,Linux 的文本过滤几乎可以满足任意的文本过滤 需求。文本过滤主要由 awk sed 来完成,这不是两个简单的命令,而是代表了两种过滤 方式。awk 对于列操作比较有优势,但对于行操作则远不如 sed 方便。关于这部分内容,

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 37 -

知识学堂

可以参考专门讲述 awk sed 的文档。

6.环境

Shell 环境就是当用户使用这个 Shell 的时候一些设置,比如命令从哪里寻找等。当打

开一个命令窗口(无论是从本机还是网络),想要列出文件明细的时候,输入命令 ll,但如

果系统没有默认的环境,就会提示命令找不到,必须输入/usr/bin/ll 才可以列出文件清单。

默认的设置存在 Shell 相关环境文件中,这些文件是/etc/profile/etc/bashrc 及用户目录下

.bash_profile .bashrc,有时候还会用到/etc/skel 下的文件。简单地更改环境的命令是

export。下面的例子说明了如何使用这个命令,请依次输入以下的英文命令(不要输入解

释): MYNAME=Fisher export $MYNAME echo $MYNAME

在上面命令中,第一行表示设置变量 MYNAME 的值为 Fisher;第 2 行表示导出变量到 Shell

3 行表示显示变量。

然后屏幕上会显示下面结果:

Fisher

假如将所有的可执行文件都移动到/root 文件夹,做如下的设置才能保证不输入命令的路径

就可以找到它们:

#PATH=/root

#export $PATH

7.Shell 脚本

从我的角度看来,Shell 最重要的特性就是 Shell 脚本。所谓 Shell 脚本,作用与 Windows

中的批处理相同,就是将一组命令写到一个脚本文件中,运行这个脚本就可以自动运行这

一组命令。不同的是,Linux Shell 脚本要强大的多。Linux 脚本对于维护任务的自动化

是非常有帮助的。

下面用一个日常维护的例子来说明。有一次我维护一个 Windows 2000 系统和一个

Linux 系统,需要让这两个系统每隔一分种检查某个文件是否存在,若存在则自动重启。

Linux 下用一个脚本就很简单地解决了这个问题;而在 Windows 中,必须安装一个第三

方软件才能解决问题。

Shell 脚本对于维护任务的规范化也有很大的帮助,有经验的管理员会把某个应用的安

装与维护用脚本来完成,由于很多应用服务安装一次后很久都不会有再次安装的机会,而

每次安装要配置的东西都非常多,将配置过程写入脚本,到了下一次安装的时候就可以防

止遗漏某些步骤,避免了手工操作的不规范化。

Shell 脚本的编写不需要学习编程语言,只要能够掌握 Shell 的命令和一些脚本过程即

可完成大多数系统维护任务。例如,某个系统增加用户的同时还需要给账户设置磁盘限额,

并给其一个初始口令。此外,令这个账户 telnet 到系统可以更改密码。用一个脚本来完成,

首先配置一个有相同磁盘限额的账户 abc 作为模板,然后使用如下脚本来代替 useradd 命令。

#!/bin/bash

# Bash 脚本第一行总是以上形式给出

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 38 -

知识学堂

# 随后以#开头的行为注释行

/usr/sbin/useradd -s /usr/bin/passwd $1

# 调用增加用户 useradd 这个命令,参数由输入读入,设置登录为更改密码 /usr/sbinedquota -p abc $1

# 调用 edquota 命令设置磁盘限额与 abc 账户设置的一致

# edquota 命令只有在安装了 Quota 软件的情况下才存在 /usr/bin/passwd $1

# 调用 passwd 命令设置这个账户的密码(初始密码)

# 脚本到这里结束

打开文本编辑器,例如 gedit,将这些脚本内容拷贝到其中,保存成/root/myuseradd.sh

脚本文件,用“.sh”后缀表示这是一个 Bash 的脚本,运行命令“chmod a+x myuseradd.sh” 使之能够被执行,然后在同目录下运行“./myuseradd.sh aaa”就可以添加具有上述特征的 账户 aaa 了。 前面我曾介绍过,很多服务器是没有 X 界面的,那么在文本模式下对文件编辑器的掌握就 是编写 Shell 脚本的必要基础。Linux 文本模式下的文本编辑器主要为 vi Emacs,想要了 解它们可参考有关它们的详细文档。 要想成为一个好的系统管理员,Shell 脚本是要掌握的重要技能之一。

8.运行级

运行级是系统启动到何种状态的定义,了解运行级的内容有助于系统管理员解决一些 棘手的系统启动或关闭故障。 系统含有七种运行级别,详见表 4。 表 4:各个运行级别的用途

运行级别 0

启动和停止整个系统

运行级别 1

单用户或管理模式

运行级别 2

多用户模式,部分网络服务被启动

运行级别 3

正常操作运行模式,启动所有的网络服务

运行级别 4

用户定义的模式,可以使用该级别来定制所需要运行的服务

运行级别 5

缺省 X-Window 模式(即 Linux 图形模式)

运行级别 6

重启动

每一个运行级别对应一个运行级别目录/etc/rcN.dN 17。运行级别目录中含有一 系列启动服务的脚本。这里的“服务”可以是守护进程、应用程序、服务器、子系统或脚 本进程。在系统启动的过程中,将会启动一个名为 init 的进程(它是系统中所有进程的祖 先)。它所要完成的一部分工作就是看看需要启动哪些服务,应当缺省地进入哪一个运行级 别,通过查看/etc/inittab 配置文件来获得上述信息。事实上,/etc/rcN.d 中都是一些链接, 真正的文件放在/etc/rc.d/init.d 中,系统管理员可以写一些脚本放在这些目录中来判断启动 或关闭故障。

对于 Shell 的重点内容介绍到这里就结束了。虽然 Linux 不仅有 Shell,还有内核与 X-Window,但 Shell Linux 系统管理员每天都要面对的、最亲密的伙伴,系统管理员可

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 39 -

知识学堂

以用 Shell 管理各种应用(注意,这里的应用包括了操作系统服务和应用服务)。

服务

仅仅理解 Shell 是不够的,我们还要了解 Linux 的主要特征:服务。

1.服务本质

读者可能还记得前边文章提出的 Samba 服务,这个服务的功能就是将 Linux 服务器的 磁盘共享给 Windows 用户使用。大家也许会问,现在的普通 IDE 硬盘那么便宜——不到 1000 元就可以买到 120GB,甚至更大的,在 PC 上就可以存所有的文件,不需要共享服务 器的硬盘来保存文件。那么这个服务还有什么必要吗?很有必要!因为服务器的保护是非 常严密的,不仅硬盘是 SCSI 的,还有 RAIDUPS 和定期备份,而且配备专人(系统管理 员)来维护。这些措施保护的是什么?是数据。当辛辛苦苦写了一篇文章,或者经过艰苦 努力做了一个实验报告,其中包含了很多无法再得出的数据,一旦硬盘毁坏,这些无价的 东西就会损失。若给每个人的 PC 按照服务器标准来配置上面所提到的各种保护措施,那 么这个硬盘的价格是非常的惊人,普通用户是根本无法承担的。可见,服务的本质是将昂 贵的设备或有限的资源提供给多个用户进行共享。 2.Linux 提供的服务 有的朋友只想将 Linux 拿来自己使用,也就是说用来做桌面系统,这时的体验是 Linux 做桌面系统还不如 Windows 舒服和方便。当我是个人用户的时候,的确也是这种思维,甚 至因为 Linux 要面对看起来好像“过时”的命令行和更多的英文,而恐惧和讨厌它。但是, 在一个企业网络环境下,为了降低成本,服务处处可见。最常见的应用就是打印机共享, 给每个人配打印机肯定不如大家一起用一台打印机省钱。即使在家中使用计算机,很少人 会给每个 PC 申请一条电话线,而是通过某种服务来共享连接。也就是说,在计算机越多 的环境下,服务越有存在的必要。 一旦触及到服务,就会发现良好的 GUI(图形用户接口)远不如稳定性、安全性和服 务的可管理性重要。因为稳定性与安全性是服务质量的两个重要指标。

Linux 提供服务与 Windows 提供服务有个很显著的区别。打个比方,去饭店吃饭,名

Linux 的厨师提供给各个小料成分、使用方式等,由用户自己来调制喜欢的菜肴;而名

Windows 的“厨师”提供的就是一道做好的菜,“经理”Microsoft 说,Windows 调查了

大量普通消费者的口味,尽量保证这道菜符合每个人的口味。这个例子意味着 Linux 是可 定制的系统,除了必须的服务软件外,其它很多没用的东西是可以不安装的。由于软件都 是有安全性问题的,越少软件组成的系统其安全性就越高。Linux 以其可定制的特性保证 了系统的高安全性。 此外,Linux 是一个松耦合系统,而 Windows 是一个紧耦合系统。耦合表示的是各个 部件之间的关联程度。使用 Linux 的时候服务 1 瘫痪了,不会影响到或很少影响到服务 2; 而在 Windows 中,经常可以碰到某个服务瘫痪导致整个系统崩溃的情况。Linux 的稳定性 由此可以得出结论。

正是由于 Linux 的可定制与松耦合优势,使它很适合作为服务器系统为网络提供服务。

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 40 -

知识学堂

在后续的文章中读者可以看出,无论是在局域网还是 Internet 情况下,服务都处于一个中 心位置,Linux 将会在这些地方大显身手。

多用户

还记得 DOS 吗?当一个人在计算机前操作 DOS 操作系统的时候,其它人是无法通过 网络或其它方式来使用这个系统的。上面提到服务的本质就是资源共享,只能供一个人使 用的系统根本无法成为服务系统。 Linux 的多用户是由内核直接支持的,这意味着无论采用哪种 Shell 都可以享受到多用 户带来的好处。现在主流的操作系统,无论 UnixLinux 还是 Windows,都支持多用户。 在大家对 Linux 如何应用有了清楚的认识之后,可以接着阅读后续的文章。

重读 2.4 内核(1

贺永利

由于并没有想到要把这一系列的学习笔记做任何文章的形式,所以突然要这样做的时

,就比较仓促,内容也多有删节.原始内容可以到下面的网址查到:

对于正在 coding 的程序员,最终还是要到代码的海洋中冲锋陷阵,这些笔记大多和代码, 具体的细节有非常紧密的关系,从期刊上看起来会比较费力,不过好在可以到上述网址查到 原文. 笔记的整理格式是按照目录/文件的字母顺序来的,或许并不适合顺序阅读,去找原文, 当作资料看好了.这里给个梗概吧.文中多有引用各处的资料,还有网友的研究成果,再次统一 致谢. 如有版权问题,请联系期刊编辑. 文中内容也无法保证完全正确,见谅. 所有文章基于 linux kernel 2.4.0 这个版本,为什么不是 2.6? 因为开始的时候看的 2.4,既 然开始了,就坚持到结束吧.

arch/i386/fault.c

页面异常, swap, address space, shmem, filemap 从文件开始,而不拘泥于文件。此文件内只 有两个函数。

1. verify_write

int

verify_write(const

void * addr, unsigned long size)

此函数主要应用于检查用户传递的内存块是否"可写". 可写意味着:

a)内核容许其写,vma 的记录; b)相应的物理页面已经分配,即虚存已经有了对应的映射. 主要使用者是 access_ok (include/asm-i386/uaccess.h).

access_ok 大量应用于和用户空间进行数据交换的时候检查用户传递的内 存是否合法.以避免在内核中产生页面访问异常,被别有用心的程序破坏了"

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 41 -

知识学堂

好形势".

下面是此函数,以及注释.

/*

* Ugly, ugly, but the goto's result in better assembly

*

在操作用户传递的内存时检查其有效性,如果容许则预先扩展其堆栈

*

或者为虚拟内存分配物理页面

*/

int

verify_write(const

void * addr, unsigned long size)

{

……. vma = find_vma(current->mm, start);//寻找 vma 满足 start<vma->end if (!vma) goto bad_area; //访问非法地址 if (vma->vm_start > start) //访问堆栈空洞,需要扩展用户堆栈 goto check_stack; good_area:

…… for (;;) {

if (handle_mm_fault(current->mm, vma, start, 1) <= 0)//检查 page table->

goto bad_area;

//page dir->page 本身, 有任何没有分配的页面,即刻分配物理

if (!size)

//页面

break;

}

return 1; check_stack:

if (!(vma->vm_flags & VM_GROWSDOWN)) //必须是堆栈(或者有 VM_GROWSDOWN 属性)

goto bad_area;

if (expand_stack(vma, start) == 0) //只是扩展其 vma 中的地址范围

goto good_area; bad_area:

return 0;

}

//还要给扩展的堆栈分配物理页面

就这个函数本身,其中的注释已经足以理解其逻辑. 需要着重强调的是:

a) vma vma 是内核管理虚拟内存的手段,其中记录了进程所拥有的虚拟地址的范围和属性,是处理 内存异常的依据之一. 如果进程所有的虚存较多,vma 还可以组织成平衡树,以加快查找速

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 42 -

知识学堂

,不过这是 vma 资源的管理算法,而不是内核的逻辑. 逻辑和具体资源管理算法应该区别 对待,以免陷入万劫不复的细节中去.所以, find_vma 本身的细节不用去追究,否则分析之粒 度就过于详细,反而迷失于内核之中了. b) handle_mm_fault (mm/memory.c) 此函数其使用在这里是"不务正业", 使用在本文件的下一个函数 do_page_fault 才是正道. 其逻辑是比较简单的. 内核假定有三级页面映射,此函数顺着指定地址摸下去将涉及到的 page table entry, page dir entry, 逐个检查一遍如有未分配之 page dir , page, 就分配一个并设 置好相应的 entry.其复杂之处在于 handle_mm_fault->handle_pte_fault(也在 memory.c 之中):

先来注释一把:

/* 此段不翻译了,我们不是在翻译内核源码. */ static inline int handle_pte_fault(struct mm_struct *mm, struct vm_area_struct * vma, unsigned long address, int write_access, pte_t * pte)

{

/*

* We need the page table lock to synchronize with kswapd * and the SMP-safe atomic PTE updates. */ spin_lock(&mm->page_table_lock); entry = *pte; if (!pte_present(entry)) { //pte 不存在,映射有问题,又分为两种情况 spin_unlock(&mm->page_table_lock);

if (pte_none(entry))

//第一种情况:根本没有建立,或者已经被断开

return do_no_page(mm, vma, //页面不存在, 就是没有,或者被 try_to_swap_out

address,

write_access,

// 断开, 这种页可以属于 page cache

pte

// 参见 filemap_nopage 了解 page cache 的换入

);

管理

}

return do_swap_page(mm, vma,

//第二种情况: not present, 那么就属于 swapper_space

address, pte, pte_to_swp_entry(entry), write_access );

//如果是 read 时产生陷入或者时 pte 的映射问题

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 43 -

知识学堂

//或者是一个非法的操作, 已经在 do_page_fault 过滤掉了 if (write_access) { //由于页面写保护产生的陷入, OS 却容许用户写入 if (!pte_write(entry)) return do_wp_page( mm, //就是处理 COW 的第二步 vma, //Copy on Write address, //第一步是建立一个不容许写的页 pte, entry //却在 vma 中赋予用户写的权限 );

entry = pte_mkdirty(entry);

}

entry = pte_mkyoung(entry); establish_pte(vma, address, pte, entry); spin_unlock(&mm->page_table_lock); return 1;

}

这里要强调的是页面的换入. 有以下途经分配/换入页面,从而建立页面映射. I)第一种情况:根本没有建立,或者已经被断开.换入函数 do_no_page(mm/memory.c), 首先 尝试 vma->vm_ops->nopage,如果 vma 没有提供 nopage 操作就使用 do_anonymous_page 分 配一个空闲页面. (本次分析细节到此结束) II)第二种情况是被交换到了 swap space 则通过 do_swap_page swap 文件读入内存(或者 从 swap cache 找回).此函数还涉及计 COW, 这里不再讨论. 页面的释放和换出这里页简单 提提,首先定义匿名页面是 page->mapping(address mapping) NULL 的页面.页面换出当然 是 try_to_swap_out 所为 .try_to_swap_out 换出非匿名页的时候是直接断开页面映射.匿名的 clean 页面的映射也是直接断开,因为不需要写入交换文件.如果是 dirty 的匿名页,则分配一 个 swap (swap file 中的一个页面)然后将 swap 页的 entry 写入 pte,并置 pte 为页面不在内 存.try_to_swap_out 区别对待这三种页面,handle_pte_fault 换入页面的不同操作相对应. 总结一下页面的周转:try_to_swap_out handle_pte_fault 看过去, 换出要不就是 swap space,要不就是 page->mapping->a_ops->writepage(mm/vmscan.c 函数 page_launder, 应该注意到无论是 swap cache 还是 page cahche 都使用 writepage 换出页面).换入要不就是 swap space,要不就是 vma->vm_ops->nopage(分配干净页面就不算进页面周转了). 下面的问题就是 page->mapping->a_ops->writepage vma->vm_ops->nopage 到底是 什么函数,怎样赋值?

先看 page->mapping->a_ops->writepage,搜索 page->mapping,在函数

do_generic_file_read(mm/filemap.c)中发现 page->mapping 来源于 inode->i_mapping.

do_generic_file_read->

add_to_page_cache

读入一个页面的文件后,将页面加入 page cache,

同时赋予 page->mapping addrspace.

另外在做搜索的过程中应该注意函数

网站:www.linuxpk.com 投稿:opensource@linuxpk.com 《开源》

- 44 -

知识学堂

add_to_page_cache_locked(mm/filemap.c)此函数建立 page cache 内页面的 page->mapping 映 射.搜索调用 add_to_page_cache_locked 的函数得知, shmem_nopage(mm/shmem.c)建立的 page->mapping 来源于 inode;add_to_swap_cache (mm/swap_state.c)建立的的 page->mapping 映射是 swapper_space(也在 swap_state.c).顺着这些线索,可以找到,其实写页面最终和一个 inode 相关联,这也于理相符. 我们推断换入用的 vma->vm_ops->nopage 最终也和 inode 相关. 看看 vma->vm_ops->nopage 的情况. 直接搜索 nopage,发现有两种 vm_ops,filemap_nopage(* area,address, no_share)(mm/filemap.c), shmem_nopage( * vma,address, no_share)(mm/shmem.c). 现在看来,vma 可以获取文件映射(mmap,参考函数 generic_file_mmap),shemem,或者匿名页,来建立其终物理页面的映射.从这些线索分 析,filemap_nopage 利用 page-mapping readpage 从文件读入页面内容,呼应了刚才的猜 想.shmem_nopage 只是通过 vma 相关联的文的 inode mapping swap space 寻找被交换 出去的 shemem 页面,并不用来从文件读取页面内容.寻找到的页面(或者新分配的)就加入 page cache (如果是从 swap cache 找到的则需要从 swap chache 移出).到这里再看 page cache

swap cache 的界定,page->maping 的值如果是 swapper_space, 则页面处于 swap cache,

page->maping 的值是其他 add space,比如 filemap, shemem 设置的 mapping,则称页面在 page cache .希望还没有迷路.(:此段分析再以后多次出现,应该比这里的分析的好!)

2. asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code) 不是想在 这里详细介绍 i386 cpu 的处理机制,而是给出中断处理在 linux 中的线索,以资参考。中 断或异常发生后,i386 终止执行当前运行的指令流(参考:),保存必要的状态根据当前的 运行级别(内核/用户),从 idt 选择合适的 gate,执行指定地址的处理函数。我们以页面异 常为例。首先看页面异常门的设置。首先要看 idt 地址。在系统启动的时候,boot 程序已 经初始化了一个 idt,但是在 kernel 中,还要重新指定定 idt 地址并用 lidt 加载内核的 idt。 从 arch/i386/kernel/traps.c 的函数 trap_init 看过去 . set_trap_gate:

static void

{

init

set_trap_gate(unsigned int n, void *addr)

_set_gate(idt_table+n,15,0,addr);

}

引用了 idt 地址, idt_table,定义在 traps.c 文件的开始 处:

/* The IDT has to be page-aligned to simplify the Pentium …. */