You are on page 1of 123

卷首语

开源 2008 年第 8 期 1
卷首语

卷首语
Linux:从 LiveCD 到自启动 U 盘
  USB 接口设备,想必大家都并不陌生,USB 设备用得多了,当然对 USB 标准也有所耳
闻。数年前,USB 2.0 将 USB 传输速度从 12Mbps 大幅提升到 480Mbps,而现在,USB
3.0 标准也即将问世。Intel 正率领一众业内厂商开发下一代的 USB 3.0 标准,速度有望再次
提高 10 倍,目前,USB 3.0 标准已经完成了 90%左右,预计今年第四季度全部完成。
  USB 3.0 标准发布,传输速率将得到大幅提升,这对于时常使用 USB 接口数码设备的
朋友将是一个福音,同时,对于传统的 Linux 操作系统领域,也将带来一定的冲击。
  传统的 PC 电脑,人们都习惯于将操作系统预装到 PC 电脑的硬盘上,通过硬盘启动操
作系统开始作业。随着光盘技术的发展,在 2000 年前后,几个德国人在 Linux 发行版
Debian 的基础上,发明了“on-the-fly”技术,把操作系统压缩到一张普通的 CD 光盘上,
通过该 CD 启动计算机,而根本不需要硬盘之类的存储介质,他们将此独立为一个 Linux 的
衍生版本,取之名曰 Knoppix,而人们将通过此种方式运行电脑的操作系统光盘称之为
“LiveCD”。
  Linux LiveCD 的诞生,对于 Linux 的推广及扩大应用起到了很大的促进作用。在当时,
桌面 Linux 很多功能并不完善,Linux 作为一个新生事物受到人们的普遍怀疑,很多人希望
尝试一下这个有别于 Windows 的操作系统,但又恐不适应或者不满足自身使用需求而感到
畏惧,LiveCD 的出现很好地解决了这一问题。在不需要将系统安装在硬盘的情况下,人们
只需要插入一张 CD 就可以尝试 Linux 操作系统,在熟悉了 Linux 环境的日常操作或者认可
了这一新的操作系统时,人们再将其安装于硬盘上。同时,一些 Linux 爱好者,积极推动
Linux 的普及,但是发现很困难,当将朋友的电脑操作系统换成 Linux 后,结果朋友根本不
会使用,这不仅受到了朋友的责备,也使其丧失了对 Linux 的信心,结果适得其反。
LiveCD 出现后,人们只需要传递一张普通 CD,就能很好的推广 Linux,朋友在高兴的时候
插入 CD“玩玩”,而并不影响其正常使用 Windows 工作,并且随着 Linux 的不断升级,
能使其不断尝试升级后的 Linux,从而最终认可这一操作系统。
  随着 Linux 桌面的不断完善,LiveCD 遇到了瓶颈。人们发现,Linux 能很好的满足其需
求,能完全能取代 Windows,或者用户体验比 Windows 更加出色的时候,LiveCD 已经显
得不合时宜,主要来自三个原因,其一是 CD 的读写速度已经不能满足于需求,无论是当时
52X 的 CD 光驱还是 16X 的 DVD 光驱,运行 LiveCD 已经显得非常吃力,并且随着 Linux

开源 2008 年第 8 期 2
卷首语

桌面应用不断丰富,人们已经不能满足运行程序等上数分钟的状态了。第二个原因是普通的
CD 并不是一个能随时轻松自由读写的存储介质,LiveCD 一般只支持读操作,而并不支持写
操作,也就是人们通过 LiveCD 运行电脑后的所有操作及更改,并不能进行保存,而下一次
启动 LiveCD 得到的依然是一个崭新的系统。最后一个原因就是普通 CD 的读写寿命都很短
暂,并且很容易受到“污染”而使其作废,这种情况下,人们就不可能完全地将自己的工作
交由一张“不靠谱”的 CD。因此,LiveCD 更多的是爱好者手中的一个玩具。
  随着闪存 U 盘不断降价以及 USB2.0 的出现,人们发现 U 盘能很好的取代 LiveCD 的
CD 存储介质,能将操作系统预装到 U 盘里面,开机自启动。2006 年年底,法国 Mandriva
公司将 Mandriva Linux 预装到 U 盘里面,推出了 “Liveflashkey”(容量为 2GB),两周
之内销售了 10 万个,随后相继推出 4G 版、8G 版,在法国掀起了自启动 U 盘的热潮。
  自启动 U 盘比之过去的 LiveCD 有着多方面的优势,最主要的原因是 U 盘能自由的进行
读写操作,人们能将在操作系统上的更改进行保存。目前,U 盘的寿命在正常的读写操作情
况下,被证明能使用 10 年左右,这和传统的存储介质硬盘相比也毫不逊色,同时,USB
2.0 的读写速度与 CD 相比,已经快了数十倍,在 U 盘上运行程序与硬盘上运行程序的差距
正在缩小。
  就在 8 月 19 日,百度宣布以闪存及配套技术全面代替硬盘存储,而其承载全球检索及
索引存储的运算集群中的硬盘已全部拆除,这是闪存与硬盘这两种新老存储介质竞争中的一
次胜利。闪存具有快速、安全、低功耗等优点,而此前被硬盘厂商诟病的容量小、成本高的
缺点正在得到改善,目前市面上 16G 的闪存盘价格在 400 人民币左右,而 8G 的闪存盘价
格更是低至到 200 元,而这种更快、更大、更便宜的趋势正在加速的演进中,闪存介质的
兴起已经成为未来一种趋势。
  随着闪存介质的发展,尤其当 USB 3.0 标准出台的时候,我们应该看到一个由闪存软件
组成的市场。在这里,任何的软件都存储在闪存上,运行任何需要的软件都只需要插入一个
U 盘甚至是 SD 卡等其他闪存设备,当然这也包括了 Linux 等操作系统。我们甚至可以继续
设想,具有丰富定制功能的 Linux 操作系统被各个行业、各个领域进行个性化定制,而从事
不同职业的人们不论走到哪里,只需要随身携带一个闪存设备,就能随时随地拥有一个完全
属于自己的操作系统。

开源 2008 年第 8 期 3
卷首语

开源 2008 年第 8 期 4
目录

目录
卷首语..................................................................................................................................................2
Linux:从 LiveCD 到自启动 U 盘.................................................................................................2

产业聚焦..............................................................................................................................................7
《开源》杂志成立专委会和顾委会.............................................................................................7
Vmware 与 Ubuntu 加盟 Linux 基金会..........................................................................................8
奥运开幕式惊现 Windows 蓝屏.....................................................................................................8
浏览器使用率月度统计.................................................................................................................8
QQ for Linux 1.0 如期而至............................................................................................................9
OpenWeb 基金会成立...................................................................................................................10
美国上诉法院裁定:违反开源许可条款即构成侵权...............................................................10
ISO 驳回印度等四国上诉............................................................................................................10
Linux 将开始主导 MID 市场........................................................................................................11
谷歌与开源组织合作觊觎低价 Linux 市场................................................................................12
红旗发布 Linux 奥运预览版........................................................................................................13
十大轻量级的 Linux 发行版........................................................................................................14
SaaS 和云计算:开源软件的危机...............................................................................................16
开源“云计算”...........................................................................................................................17
云计算的一个问题.......................................................................................................................18

开源通讯............................................................................................................................................20
Intel 向 AKA 社区捐赠 Atom 开发平台......................................................................................20
富士通南大软件积极回馈 Linux Kernel 社区............................................................................21
甲骨文公司在中国推进 UBL.......................................................................................................22
WPS 将运行在 Linux 系统上.......................................................................................................23

开源社区............................................................................................................................................24
SourceForge 宣布 2008 年度社区选择奖.....................................................................................24
Linuxpk 首发 VIM 用户手册 7.2 中文版.....................................................................................24
“小芭比” Puppy Linux 中文版问世........................................................................................25
Java 播放器 YOYOPlayer1.1.3 发布............................................................................................26
Pidgin(Gaim)发布 2.5.0 版............................................................................................................26
GNOME 2.23.6 正式发布.............................................................................................................27
微软赞助 Apache 的背后..............................................................................................................28
自由软件的伟大胜利...................................................................................................................29
工作与社区奉献并不矛盾...........................................................................................................31
开源 CMS 驱动 Web 2.0...............................................................................................................34

开源 2008 年第 8 期 5
目录

知识学堂............................................................................................................................................38
Linux 下设备完全驱动(三).....................................................................................................38
PC 的足迹(中)..........................................................................................................................50

经验技巧............................................................................................................................................57
Linux 一句话精彩问答——系统配置篇(6)...........................................................................57
编写包含图形界面的 shell 脚本:Zenity 介绍...........................................................................61
如何在 Linux 操作系统中收看奥运直播....................................................................................68
如何给 Grub 加密码......................................................................................................................70
Linux 系统下光驱软开关与限速.................................................................................................71
修改 Linux 下 22 端口方法介绍...................................................................................................72
有关加强 Linux 安全的配置说明................................................................................................73
pdftk 随心所欲操作 PDF 文件.....................................................................................................75
屏幕窗口的收纳盒——Screen 工具............................................................................................77

企业应用............................................................................................................................................79
建立可全面监控 Squid 代理服务器............................................................................................79
基于 djbdns 打造安全的 DNS 应用..............................................................................................90
使用 Vtiger CRM 进行客户管理..................................................................................................98

嵌入式..............................................................................................................................................108
MMU 与 Cache............................................................................................................................108

开源小知识......................................................................................................................................120
为什么开发者需要了解软件的知识产权?.............................................................................120
软件产品为什么需要许可协议?.............................................................................................121

编读往来..........................................................................................................................................122
Linuxpk.com 8月十大热门帖...................................................................................................122

开源 2008 年第 8 期 6
产业聚集

产业聚焦

《开源》杂志成立专委会和顾委会

  《开源》杂志发布第八期之际,决定成立专家委员会和顾问委员会,同时 Linux 宝库
(Linuxpk.com)成为中国开源软件推进联盟(COPU)成员。
  《开源》电子杂志成功发行七期,已经成为中国开源领域下载量最大、传播范围最广、
影响最深的电子期刊杂志。此次通过成立专家团队的方式对杂志的方向进行把握,同时对杂
志的内容进行指导,使其成为开源领域一本具有专业性和权威性的电子杂志。
  专家委员会成员均来自第三方的开源领域专家,专拣委员会成员包括:倡导开源与国产
软件的倪光南院士、将开源软件库从芬南背回中国的宫敏博士、致力于原汁原味引入自由软
件的袁萌教授、内核专家毛德操教授、QualiPSO 项目负责人许洪波教授,以及来自美国的
陈怀临先生。
  顾问委员会主要来自开源厂商及支持开源的厂商专家成员,目前包括:中科红旗总裁贾
栋、中标软件副总裁曹冬、
Intel 中国 Linux 和开源战
略经理陈绪、微软平台战
略总监李科研,以及 EMC
中国实验室主任兼首席科
学家毛文波。
  相信随着专家委员会
和顾问委员会的成立,将
为《开源》杂志带来新的
发展机遇,同时进一步提
高其专业性与权威性,为
开源业界、开源社区奉献
一本精品的开源杂志。

开源 2008 年第 8 期 7
产业聚集

Vmware 与 Ubuntu 加盟 Linux 基金会


  目前,VMware 核心业务为虚拟软件,此举
不但可提高电脑的安全性,而且有利于企业用户
压缩硬件开支。业界人士称,VMware 加入
Linux 基金会后,会进一步加强与 IBM 等成员的
合作力度,从而最终使终端用户受益。
     Canonical 公司是 Ubuntu 社区背后的商业
Linux 基金会近日宣布,虚拟软件开发商 支持公司,与 Redhat 公司重点开发企业级 Linux
Vmware 与 Ubuntu 的商业支持者 Canonical 公 不同,Canonical 公司致力于面向消费者的 Linux
司已成为其新成员。今后这三家厂商将与其他成 桌面开发,是一支推进全球自由/开源软件发展
员密切配合,以进一步加强产品开放性。 的重要力量"。

奥运开幕式惊现 Windows 蓝屏
  
8 月 8 日,第 29 届夏季奥运会正式拉开帷幕。
2008 北京奥运会开幕式的盛大隆重不仅征服了国
人,也赢得了世界各国媒体的交口称赞。
  当来自微软的工程师还在为 Windows XP
Embedded 在奥运开幕式顺利完成任务而兴奋不
已的时候(美联社的报道称微软动用了 120 台基于
XPe Axon Media Servers),却不知有人在鸟巢
奥运开幕式现场 H 区 3 层的顶棚拍摄到
Windows 经典蓝屏的照片。

浏览器使用率月度统计
尽管最新的日度统计显示,Firefox 在 7 月底 统计却表现出了些许不同的态势,IE 在 7 月占有
市场占有率已经超过 20%,而 IE 则已经降至 率小幅回升,Firefox 的份额增长则主要来自于
70%以下。但 Net Application 刚刚放出的月度 Safari 的下滑。

开源 2008 年第 8 期 8
产业聚集

长期保持下滑事态的 IE,7 月份占有率从 73.01% 新版 FF3 占有率提升 3.36%,旧版 FF2 下滑


回升到 73.02%。从版本区分来看,本月 IE6 升级 3.11%。整体来看,Firefox 的增长主要抢夺的是
的用户较多,IE6 份额下降 0.64 个百分点,而 Safari、Opera 和其他浏览器用户,如 Safari 从
IE7 则上升了 0.65%。 6.31%下滑至 6.14%,Opera 从 0.73% 下降至
Firefox 的份额从 19.03%上升至 19.22%,其中 0.69%。

QQ for Linux 1.0 如期而至


  7 月 31 日,QQ for Linux 1.0 将如期而至,   3、发布支持 64 位版本的安装包
首个对外的预览版本提供下载。
  分别提供了.rpm、.deb 和 .tar.gz 三种打包   在后续的版本中,将会合入以下功能:
模式提供下载。QQ for Linux 与 Windows 版本
的 QQ2009 界面风格保持了一致。   1、支持截屏
  第一个版本功能还稍弱,但是对 QQ 来讲已   2、支持发送自定义图片(截屏)
经具有历史意义了,并在发布 1.0 版本不久推出   3、和好友间传输文件
了后续改进计划。   4、支持来消息的声音提示
  5、支持群管理
  近期会优先解决以下问题:   6、支持好友分组的管理
  7、支持好友备注的显示
  1、支持后台 Tcp 连接方式   8、优化稳定性和性能
  2、降低安装包对软件系统的需求

开源 2008 年第 8 期 9
产业聚集

OpenWeb 基金会成立
这一新的基金会将提供私有和公众数据与 Web
服务的最佳访问模式。
  Facebook 率先宣布支持这一新的基金会,
  在今年 OSCON 大会上,Six Apart 宣布 Google、MySpace、Plaxo 以及其它互联网新贵
Open Web Foundation 成立,这是一个专门从 都参与了连署,他们各自均表示将自己的产品与
事开发和认可 Web 相关标准及特效的技术组织。 平台按统一标准进行对接。

美国上诉法院裁定:违反开源许可条款即构成侵权

  8 月 13 日,美国最高上诉法院 关厂商足够的注意。


做出一项法律判决:凡违反开源许可   在我国,违反 GPL 规则的现象,
条款即被视为侵犯了相关作者的知识 比比皆是,如同盗版现象。现在,违反
产权,而不仅仅是违反了相关的经济 GPL 规则,如同盗版一样,处于同一个
合同。同时,上诉法院要求各地方法 法律级别。因此,有关厂商应该及早注
院参照执行此项裁决。对此,国际法律界普遍认 意自己的经营活动,查看是否有违反开源许可条
为,该项法令意义极为重大,首次确立了开源许 款的地方,以免将来被动。
可条款的法律地位。此项法令应及早引起我国有

ISO 驳回印度等四国上诉
批准 OOXML 为国际标准
  8 月 15 日,据国外媒体报道,国际标准化组   ISO 及 IEC 是在驳回了巴西、印度、南非和
织(以下简称“ISO”)及国际电工委员会(以下简 委内瑞拉等四个成员国针对 OOXML 国际标准投
称“IEC”)本周驳回了四个成员国的申诉,批准 票程序的申诉后,正式给 OOXML 开绿灯放行的。
微软 OOXML(Office Open XML)为国际文档标 四国的申诉未获得 ISO 技术管理委员会和 IEC 标
准。 准化管理委员会三分之二成员的支持。这四国认

开源 2008 年第 8 期 10
产业聚集

为,今年 2 月召开的国际标准投票会议违反流程, 成最后文档处理程序后,在未来数周内正式发布


导致 4 月 1 日召开的最终投票中 OOXML 获批成 这一国际标准。
为国际标准。   不过,上述四国仍可向 ISO 及 IEC 执行委员
  ISO 表示,已正式批准“ISO/IEC DIS 会提出上诉,如果上诉成功,仍有希望阻止
29500”(OOXML 的官方名称)为国际标准。如果 OOXML 成为国际标准。
没有成员国提出进一步申诉,标准委员会将在完

Linux 将开始主导 MID 市场


  市场研究机构 ABI Research 在本周一指出, 统包括 LiMo、Moblin 及 Maemo,其中,LiMo
2013 年全球移动网络设备(Mobile Internet 是由六大移动通讯厂商所共同建立的 Linux 开放
Devices,MID)出货量将达 5000 万台,而该市 移动平台,而 Moblin 则是英特尔的 Linux 开源
场将由 Linux 操作系统主导。 计划,专攻移动网络设备、Netbook 及其它嵌入
  ABI 认为,MID 市场将是第一个实际让所有 式设备,Maemo 则是由诺基亚主导的开放社区
移动操作系统都在同一个起跑点的平台,摆脱智 移动设备平台,该公司的 Nokia N810 Internet
能手机市场所存在的历史包袱,使 Linux 操作系 Tablet 就采用了 Maemo。
统得以取得大部份的市场占有率。   ABI 研究总监 Stuart Carlaw 表示,在诺基
  所谓的 MID 指的是比移动电话大一些、比迷 亚的支持下,Maemo 已进入移动网络设备市场,
你笔记本电脑小一些,像是笔记本、可以放进外 而 Moblin 则可藉由英特尔的推动及其与 Atom
套口袋的多媒体上网设备。根据另一市场研究机 的密切整合下进入该市场,另外 LiMo 目前亦活
构 Forward Concepts 的定义,MID 应具备高分 跃于该市场,与微软 Windows Mobile 相较,
辨率屏幕,大小介于 4~6 吋之间。 Linux 平台的弹性、定制化与成本优势都确立了
  目前专为移动网络设备设计的 Linux 操作系 Linux 在该市场的主导性。
  Carlaw 分析,更重要的是,Linux
操作系统有能力提供一个横跨不同设备
的整合平台,一个能够涵盖移动网络设
备、智能手机及中间设备的单一平台确
是很吸引人。
  Forward Concepts 亦认为,
Linux 将是该领域的主要操作系统,并
估计移动网络设备的出货量将自 2008
年的 30.5 万台,成长到 2012 年的
4000 万台,达到 120 亿美元的收入规
模。

开源 2008 年第 8 期 11
产业聚集

谷歌与开源组织合作觊觎低价 Linux 市场
  8 月 6 日消息,据国外媒体报道,在美国旧 到太多的关注。除此之外,谷歌还积极地与
金山举行的 Linuxworld 大会上,一位开放源代 Wine 这样的模拟软件进行协作。Wine 可以让使
码开发者透露,为在迅速崛起的低价 Linux 操作 用 Linux 的用户使用微软 Office 这种原本只能在
系统市场占据一席之地,谷歌(Google)正与开源 Windows 上运行的软件。而 Wine 也将被捆绑安
社区紧密合作,在操作系统中整合谷歌出品的应 装在 GOS 系统中。
用程序。   GOS Gadget 3 系统还将预装谷歌的 Picasa
  开源软件开发商 Good OS 创始人兼总裁刘 软件,同时提供谷歌 Gmail 的网络链接。该系统
戴维(David Liu)当天透露,谷歌正与开源社区合 将会在今年九月发布,产品完全免费,该公司正
作,以便在低价 Linux 笔记本、台式机当中预装 在与电脑厂商接洽,希望能够成为低价笔记本电
大量谷歌应用软件,其中包括谷歌在线办公套件、 脑的预装系统。
谷歌桌面应用软件和电子邮件收发软件等等。业 美国市场研究公司 IDC 此前发布的预测报告显示,
界人士称,虽然目前低价 Linux 笔记本仍处于初 到 2012 年时,全球超便携笔记本电脑出货量将
生阶段,但预计今后一两年内这类产品出货量将 达 900 万台。这种超便携笔记本也称为“网络笔
大幅增长。 记本”,如华硕“易 PC”(Eee PC)即属于此类产
  刘戴维称,就 Good OS 即将推出的一款 品。华硕首席执行官沈振来此前曾表示,虽然今
GOS Gadgets 3 操作系统来说,它将预装大量谷 后低价 Linux 笔记本销量将呈增长趋势,但总整
歌应用软件。该 Linux 操作系统专门针对低价笔 体上看,Windows 笔记本出货量仍将高于 Linux
记本用户而开发。除谷歌常用网络应用软件外, 笔记本。
GOS Gadgets 3 还集成了桌面小游戏、系统检测、
无线网络状态检测等应用工具。事实上,在微软
Windows Vista 和苹果 Mac OS X 操作系统中,
也集成了各类迷你应用软件。
  刘戴维接着表示,虽然上述谷歌应用软件都
免费对外提供,但谷歌中国员工已把这些产品整
合到 GOS 操作系统中,以确保这些应用软件能
够在 GOS 中流畅运行。他透露,虽然 Good OS
和谷歌中国并没有正式宣布该合作消息,但双方   刘戴维称,他的公司正与数家笔记本制造商

技术人员已为整合工作投入了大量精力。对于刘 接触,以说服这些厂商在低价笔记本上预装 GOS

戴维的上述言论,谷歌还没有发表评论。 Gadgets 3 操作系统;如果进展顺利,GOS

  虽然官方并未正式宣布此项合作,但是双方 Gadgets 3 低价笔记本有望于今年 9 月上市。

仍将通力合作保障这些程序的正常运转。Liu 表   除此之外,微软和苹果也分别在其各自的操

示,谷歌并不希望自己与开源组织之间的合作受 作系统中整合有迷你应用程序。

开源 2008 年第 8 期 12
产业聚集

红旗发布 Linux 奥运预览版


  红旗 Linux 奥运预览版是中科红旗向北京奥   ◆Windows 集成(系统启动后,可通过欢迎
运会的献礼产品。当然,该版本作为红旗 Linux 向导中该工具将 Windows 用户相关信息及配置
桌面发行版测试阶段的产品,还有很多不成熟的 导入进来;它将 Windows 的 Administrator 视
地方有待完善。 作 root 账户,并可导入账户相关属性,其中包括
  红旗 Linux 期待用户在感受红旗 Linux 奥运 密码、我的文档、墙纸、分辨率设置和网络配置
预览版从安装到使用界面所带来的奥运风的同时, 等信息。值得注意的是,作为 Beta2 阶段,本版
能对红旗 Linux 下个桌面发行版产品 (Version 本还不支持 Windows Vista 系统。)
7.0)有一初步了解。红旗 Linux 也希望有兴趣的
用户将意见和建议反馈回来。   问题澄清:
  ◆声卡驱动问题比较多,可能很多情况下没
  系统亮点: 有声音
  ◆LiveCD(本版本只支持 LiveCD 方式的预览   ◆Intel 集成显卡在通过图形方式设置分辨率
和安装,其他安装方式暂不提供) 时,有出现崩溃的可能
  ◆KDE 4.1   ◆集成的媒体播放软件运行不够稳定
  ◆奥运主题

开源 2008 年第 8 期 13
产业聚集

十大轻量级的 Linux 发行版


  这篇文章向大家介绍十个最有用而且大家也
都很熟悉的轻量级 Linux 发行版,其中有八个本   DeLi(DeLi Linux 表示 “Desktop Light”
来就是轻量级的,而且对计算机的配置要求也不 Linux)是一个针对老计算机的发行版,支持从
高,最后的两个可以通过自已的定制安装来实现 486 到 Pentium III 或类似的计算机。专注于桌
轻量级系统。 面用途,包括:电子邮件客户端、图形界面的网
页浏览器、办公软件(文字处理、电子表格)等等。
包括了 Xorg 和开发工具的完全安装不会需要超
过 750 MB 的硬盘空间。

■ 中型发行版
■ 迷你版
  Damn Small Linux DSL 是一个非常体积小
  Vector Vector Linux Standard GOLD 是一
的发行版。它是一个 50M 大小的 LiveCD,也能安
个完全免费下载的发行版,它包括了各种软件。
装到硬盘上。DSL 能完全的在 RAM 里运行,而
Vector Linux 是一下基于 Slackware,而专门为
且你可以通过软件仓库为它安装更多的软件。
低配置的老计算机设计的。在一台只有 Pentium
DSL 的推荐配置
200、128 内存以及 3G 硬盘空间的老机器上高效
是 P200 和
的运行。在即将发行的 VL Light 完全安装只需要
64MB 内存。
350M 的空间以及 64M 的内存来运行。

  Puppy
  Zenwalk 是另一个基于 Slackware 的发行
Linux 也是以
版,它追求的是轻便、快速,
Live CD 的开式
并没有过多的软件。虽然它
发行,它运行的
以 i686 为标准,但也是完全
最低内存要求可以达到
兼容 i486 的。Zenwalk 的配
32M,并且它的启动速度
置要求是 Pentium III 处理器、
很快,一般都能在 60 秒内完成启动。
1 28M 内存和
Puppy Linux 的目标是打造一个易用的系统,
2G 的硬盘空
不需要太多技术方面的要求。
间。

  Feather Linux 是一个大小为 128M 的发行


  
版,与 DSL 一样,它也是基于 knoppix(knoppix
是基于 Debian Linux)定制而成的,它集成了人
  Antix 是一个基于
们日常的常用工具。
Mepis 定制的轻量级系

开源 2008 年第 8 期 14
产业聚集

统。Antix 的最低配置要求是 P266 处理器和 项目,因此又称之为 GNU/Linux。


64M 的内存。由于 antiX-M7 采用的 i686 的内
核,所以不能在一些旧的处理器上运行了,如   Slackware Linux 是 由 Patrick Volkerding
Pentium I, AMD K5, AMD K6… 开发的 GNU/Linux 发行版。与很多其他的发行
  版不同,它坚持 KISS(Keep It Simple Stupid)的
  PClos TinyME 是一个基于 PCLinuxOS 定制 原则,就是说没有任何配置系统的图形界面工具。
的系统。它集成了 Abiword、Opera 浏览器、 一开始,配置系统会有一些困难,但是更有经验
Audacious 音乐播放器以及 Sylpheed 邮件客户 的用户会喜欢这种方式的透明性和灵活性。
端等程序。TinyME 的配置要求是 Pentium 处理   当然,轻量级的 Linux 发行版还有很多很多,
器、64M 的内存。 如 ttylinux、SLAX、CD Linux 等。这十大轻量
级也是作者自己评出来的,或许你认为有更好的
■ 可通过定制安装来打造自己的轻量级系统 轻量 Linux,不过还是要谢谢作者与我们分享了
  Debian 是一个自由的操作系统,由于 他对轻量级 Linux 的看法。现在的 U 盘容量都那
Debian 采用了 Linux 内核(一个操作系统的核心), 么大,选一个自己喜欢的轻量级 Linux 装到 U 盘
但是大部分基础的操作系统工具都来源于 GNU 里也是一个不错的选择。

开源 2008 年第 8 期 15
产业聚集

SaaS 和云计算:开源软件的危机

陈伟

  SaaS(Software as a Service,软件即服务) 抵触,但从实质上说,Google 的确使用/修改了


和云计算(Cloud Computing)作为当前两个热 其它的开源软件,并因此而得利,但他的确没有
门的应用领域受到众多的追捧与炒作。它们两者 向社区返回相应的代码。
共同的一个特点是用户通过网络浏览器访问或使
用软件(Web 应用,Web Applications),而   第二个方面:当数据在用户和服务提供者之
这些软件驻留在提供者的服务器上。这里,不论 间进行传递时,Web 应用产生在大部份开源软件
哪一个术语是你所喜欢的,至少有以下两个方面 许可证没有说明的关于用户数据隐私的话题。
的原因,Web 应用对开源软件提出了挑战。
  从上可以看出,随着 Web 应用的兴起,其
  第一个方面:因为网络应用不需要采用传统 方便性已经抑制了对他们的任何批评,而当前信
的方法来发布软件,他们旁路了诸如 息技领域,对普通用户而言,方便是最大的驱动
GPL(General Public License)等开源软件许可 力,这个驱动力比软件的自由和软件的安全都要
证的要求——修改者必须返回代码给社区。最终 大得多。
的一个结果,像 Google 这样的公司能在网络应
用上利用开源软件的优点,而将他们所做的任何   当前软件市场的方向是:某一天应用都能作
修改当成自己的财产。因为 Google 的商业模式 为一个服务来运行。而由此为开源软件带来了一
不需要发布基于开源软件所做了修改后的软件, 个问题:Web 应用是 FOSS(自由/开源软件)的
而只需要在此基础上提供服务——Web 应用。从 “癌症”。在当前主流的开源许可证(GPL)下,
形式上看,Google 的做法没有与开源许可证相 在 10 年内,如果 90%的软件都以服务的方式来

开源 2008 年第 8 期 16
产业聚集

运行,都采用 Google 的方式而不返回代码,那 四个自由,还有另外一个自由,及数据的自由也


么开源软件的发展真是遇到了重大的危机。 是 FOSS(开源/自由软件)需要考虑的——当用
户将应用和数据转移到网络上时,用户希望仍然
  在 Web 应用盛行的年代,作为用户,应该 控制自己的数据,因为它们依然是用户的数据。
享有知道什么代码运行在我的计算机上和什么代
码我正运行在你的计算机上的权利;以及我的数   SaaS 和云计算是开源软件发展的机遇,但机
据在传递和存储在非由我控制的计算机上的安全 遇与危机也仅仅是咫尺之遥。作为一个探讨,当
性如何。 前主要的开源软件协议(GPL)是否能跟上信息
技术发展的步伐,即使在长时间的争论之后,
  一般而言,自由软件基金会的创始人 GPL v3 能否解决上述的两个问题。答案是显而易
Richard Stallman 先生关心的是源代码的自由, 见的,不能。我们需要有更完善的开源协议来避
而我们也需要也关心在 Web 应用中我们的数据 免 SaaS 和云计算给开源软件所带来的危机。
的自由。在 Web 应用的年代,参考自由软件的

开源“云计算”
陈杰

  移动领域是开源软件寻求突破的一个重点,   因此,对于谁将成为“那片云”的问题,业
但最近喧嚣尘上的“云计算”也蕴含着开源软件 界一致的观点就是云计算将架构在开源软件之上,
发展的巨大机遇。对于云计算的定义,业界争论 并且大部分基础应用都将基于开源软件。因为大
不一,但一个比较一致的看法就是云计算是基于 家都知道,作为集中式的服务平台,开放性永远
Web 的一种服务,是 SaaS 应用的升级版本,它 是其关键要素之一,同时开源软件的灵活性和可
消除了用户在传统硬件、软件、专业技能方面的 扩展性也完全吻合云计算的发展趋势。
投资,而完全脱离技术与部署中的复杂性而轻松   正因为如此,众多的开源社区人士反而开始
获取。 担忧云计算的兴起将给开源软件带来一场巨大的
  在今年 Gartner 的报告中就认为,削减成本 危机。云计算的兴起将给开源软件带来危机,作
将推动大多数软件服务(SaaS)提供商以某种方 为服务的云计算平台,不需要采用传统的软件发
式采用开源软件的创新技术。在两年时间里, 布形式,开源的许可证对其就缺乏了约束力,即
90%的软件服务将以某种方式以开源软件为基础, 索取开源代码,而并不回馈代码给社区,其回馈
软件服务提供商将在操作系统、应用服务器和数 方式则是基于 Web 服务。这就出现了问题,这
据库的层面上使用开源软件以降低成本。开源软 些企业通过索取了开源代码,并且进行了修改,
件一直提倡软件免费,以服务的形式进行付费, 也因此获利了,但是对于开源社区的可持续发展
本质上和 SaaS 是雷同的。 并没有带来任何益处。

开源 2008 年第 8 期 17
产业聚集

  比如 Google Maps 并不开源,但是其足够开放,


那么,是否云计算就是洪水猛兽,它的出现 以至于成为整整一代新应用的关键组件,
将让开源软件丧失生机呢?云计算的兴起,使开 programmableweb.com 上的一个总结显示
源软件面临了前所未有的挑战,但这个危机是可 Google Maps 支持了差不多 90%的地图
以通过完善目前的开源许可,甚至出台一些新的 mashup,从这点上看,云计算是完全能延伸开
开源协议解决的,其实,我们更应该看到的是云 源软件的应用,只是将代码封装成了模块,或者
计算为开源软件带来的巨大发展机遇。 是一个子系统。
  我们首先必须认清开源成功或者赖以生存的   开源的成功来自于用户开发和使用的低门槛,
几个关键要素,许可证允许和鼓励对于开源软件 而云计算的发展必将带来大规模的开源应用及部
的再发布、修改乃至发展其分支;一个体系结构 署,这在一定程度上降低了开源软件进入的门槛,
要使程序能被作为组件在任何可能的地方重用, 也活跃了开源社区的二次开发及应用推广。同时,
以及可以被扩展,这包括代码的重用和模块功能 云计算的平台可能会是私有的,但是其上运行的
的重用;最重要的一点是低门槛,不仅使用户能 软件可以有商业软件与开源软件的选择,来自
Rightscale 的 Eicken 甚至认定云计算平台上的所
有软件都将是开源的,最主要的原因就是目前私
有软件许可证没有支持云计算部署的方式。
  尽管开源协议不能防止云计算提供者的封锁,
但至少允许开发人员在云计算中部署开源软件,
而且随着云计算平台的发展,也将带动更多新的
开源软件及应用的产生,最近,雅虎、英特尔和
惠普就宣布结成一个研究联盟,共同创建一项名
很轻松的一试身手,对于开发人员,能在此平台 为“测试平台”云计算研究的开源项目,推进云
上轻松的修改与分享代码。 计算技术的发展。可以预见的是,随着云计算概
  云计算作为一个基于开源软件的平台,可能 念不断清晰,各大厂商在此领域加大投入,势必
并不开源,但这不妨碍其具有开放性,或者说该 将会有更多优秀的开源项目诞生,同时,也将活
平台可以作为一个可重用的组件存在。开源倡导 跃目前的开源项目,在应用广泛展开的时候,焕
代码的可重用,云计算提倡的是服务的可重用性。 发第二春。

云计算的一个问题

毛文波

  近来时常听到如下问题: 什么是云计算? 它与 提问者最终未能得到满意的答复。 而我自己却总


网格计算有什么不同? 再仔细聆听回答, 常常感到 是因此进入了 déjà vu 的状态: 因为几年前也老听

开源 2008 年第 8 期 18
产业聚集

到: 什么是网格计算? 它与分布式计算有什么不同? 以用户未知的方式访问到未加密的用户数


而且提问者也似乎不甚满意所得到的答复。 据。" (Increasingly, service is being offered
  前些天看到了一篇 Gartner 的分析报告: by a chain of providers, each invisibly
Assessing the Security Risks of Cloud offering processing or storage services on
Computing (云计算安全风险的评估)。 与许 behalf of a service provider that might not
多通常的也颇有点费解的说法, 如云计算是网格计 be directly controlling any of the technology,
算 2.0, 是低价格的网格计算, 等等不同, Gartner and each able to invisibly access
报告从一个形象化的解释出发对云计算引入了面 unencrypted data in its facility。)
对一个问题的讨论.首先,Gartner 也对云计算   那么不是每一家云计算方案提供商都充分强
给出一个通常的说法:(云计算是)在极大规模 调使用加密,如 SSL(Secure Sokets Layer),技术来
上可扩展的信息技术能力向外部客户作为服务来 保护用户数据了吗? 为何 Gartner 还认为用户数
提供的一种计算方式 (Gartner defines cloud 据可以被云计算服务提供商或转接包商以非授权
computing as "a style of computing where 的方式获取呢?
massively scalable IT-enabled capabilities are   Gartner 的分析确有其独到之处。我们知道
delivered 'as a service' to external customers SSL 加密技术是针对网络安全有效使用的, 即用户
using Internet technologies。") Gartner 报告 数据经过 SSL 协议加密后可在网络上或在外部存
继续道: "云,顾名思义,是指某种大的,可进入 储器(如磁盘)上是以密文的形式安全地通信或存
的,但从外部来看是不透明的东西,你不能从云 储。Gartner 考虑的云计算安全问题恰恰是在计
外看穿入云内,你只不过假定它是工作 算部件核心中:即用户数据在内存中是如何保护的。
的。" (The word "cloud" suggests 由于需要进行计算, 用户数据在内存中是不可对其
something big and accessible, but externally 进行加密的。
opaque。 You can't see into the cloud — you 用户数据在内存中的安全问题可以认为是计
just assume that it works。) 于是乎 Gartner 引 算平台安全问题。所以云计算一个重要问题是计
入了正题: "显然, 一个云计算的服务提供商因而会 算平台的安全问题。计算平台安全问题一般来讲
具有(远远超过以前计算方式的)自由度来回避对 要比网络安全复杂些。目前实现方案要用到一些
用户给出许多细节的具体说明, 如其所在地,员工 不同计算机学科及实践的方法。我们在道里项目
情况,所采用的技术,运作过程,以及其向外(向下)转 中采用可信计算(Trusted Computing)加虚拟化
包的承包商情况" (Obviously, a service (Virtualization)技术来实现计算平台安全问题。
provider has far more flexibility by avoiding
specifics about its location, staff, technology,
processes or subcontractors。) 再往下才是要
害: "越来越多的情况是,计算服务是由串成一条龙
的服务商来提供的,每一家接包的服务商都以不甚
可见的方式为上一家转包的服务商来提供计算处
理或数据存储的服务, 因而使其可能无法直接对下
家使用的技术有所控制, 甚至每家都可能在其内部

开源 2008 年第 8 期 19
开源通讯

开源通讯

Intel 向 AKA 社区捐赠 Atom 开发平台 福珑 2F 迷你电脑正式发布


  7 月 13 日,由 AKA(阿卡社区)组织的嵌   日前,采用龙芯(loogson)2F 高性能通用
入式 Linux 技术讲座(英特尔专场),在清华大 处理器的中科龙梦福珑 2F 迷你电脑正式对外发布。
学信息技术研究院 FIT 大楼 1 区 312 室举行。 福珑 2F 迷你电脑,集高性能、高可靠、低功耗于
Intel OTC 介绍了 Moblin 社区的情况和在 Linux 一身,延续了其优异的低功耗设计。其主要面向
上如何编写驱动程序等内容。同时,OTC 在这次 个人及企业用户,适用于门户网站、电子商务的
讲座上,向 AKA 社区捐赠了 2 套最新的 ATOM 中间层计算而开发,能够很好的满足中小型企业
开发平台。此前,Intel 公司曾对中国开源软件推 对计算性能、品质、可用性要求较高的需求,亦
进联盟承诺将进一步加大对国内开源社区的支持 可作为科研开发的平台使用。
和投入,并扩大支持范围。
蓝色迪杰与 Mandriva S.A. 签订全面合作协议
红旗 2000 公司发布新产品 RedOffice 4.0   7 月 16 日北京蓝色迪杰科技有限公司与
  7 月 1 日,红旗 2000 正式发布新产品 Mandriva S.A.(法国)签订全面合作协议,双方
RedOffice 4.0。这是一款全面创新的产品,以用 将在软件外包、OEM 预装、中小企业解决方案等
户体验为核心,以寓意清晰的图形界面代替传统 领域展开合作。Mandriva 是国际著名的 Linux
的菜单交互,大大加强了易用性。同时它具有强 厂商,在欧洲拥有大量用户。蓝迪科技与
大的兼容性,支持国家标准 UOF 和国际标准 Mandriva 的合作始于 2007 年 7 月,一年来
ODF。近年来,红旗 2000 公司一直在探索开源 Mandriva 将大量开发、测试及质保工作以软件
软件新的商业模式,此次 RedOffice 4.0 发布后 外包形式交付蓝迪科技完成。在此基础上,
将采取网络销售模式,公司由此也将开始向服务 Mandriva 决定以蓝迪科技作为其在中国的业务
模式转移。 代表全面进军中国市场。

永中 Office2009 发布全面支持国家文档标准
  7 月 18 日 永中科技在北京召开永中 Intel OSCON 展望 Moblin 未来
Office2009 新产品发布会,新的永中 Office     7 月 21 至 25 日 , 是 OSCON ( Oreilly
2009 产品与微软 Office2007 实现了精确兼容, OpenSource Convention)十年庆。英特尔中
并对国家文档标准(UOF)进行了全面支持。 国开源技术中心(OTC)的陈绪和张晓波远赴美
国俄勒冈州波特兰市,代表中国 Intel 参与该会,

开源 2008年第8期 20
开源通讯

并在会上展示了来自中国和韩国的 MID 样品,获 平台产品对 Linux 的支持,包括 VIAC 处理器、


得参会者的热烈欢迎。同时,该次大会的主体演 新一代威盛 Nan 处理器,以及与之搭配的芯片组,
讲中,美国 OTC 的首席技术官 Dirk Hohndel 展 图形芯片和网络芯片。此外威盛电子于 7 月 26 日
望了 Moblin 的未来,并宣布 Moblin2.0 的预览 向 Linux 社区公布了 800 页的程序设计指导,覆
版将于 8 月亮相。Moblin 为 Intel 发起并做出巨 盖了 PadLock 安全工具,CX700 和 VX800/820
大贡献的开源社区,旨在推动和普及 Linux 在移 芯片组。这是 VIA 支持发展基于 Linux 的开源驱
动领域的全面应用。Dirk 表示,希望 Moblin 成 动迈出的又一步。
为一个真正的全球开源社区项目,并包含来自各
个公司和更多开源爱好者的贡献。 华硕采用 Device VM Splashtop 轻量级操作系统
  DeviceVM 的 Splashtop 将被多款华硕笔记
富士通南大软件积极回馈 Linux Kernel 社区 本电脑采用,Splashtop 是轻量级操作系统,让
  7 月 14,Linux 内核 2.6.26 版发布。在 用户在开机后几秒内就能使用电脑。华硕从今年
2.6.26 的内核中包含了富士通南大软件公司提交 六月起,进一步扩大集成 Splashtop 系统的华硕
的 Patch 共计 50 件,修正内核代码 454 行。从 电脑产品的范围。作为世界领先的主板、元件和
2004 年开始,公司开始参加 Linux 内核的品质强 笔记本电脑生产厂商,华硕已把 Splashtop 系统
化工作,到 Linux 内核 2.6.26 版发布为止累计向 集成到其最新的 P5Q 系列产品中,集成
内核发送 Patch 共计 170 件。 Splashtop 系统的主板已扩大到 12 种。新的产品
包括 P5Q Deluxe, P5Q-WS, P5Q3 Deluxe 和
天石网通 LifeCube 系统采用龙芯 2E 芯片 P5Q-E。
  7 月,天石网通自主研发的嵌入式多功能网
络服务平台(LifeCube 系统)通过“龙芯 2E”
系列平台的技术移植和测试工作,根据双方前期 2008 中国开源软件竞赛暨开源软件创新与企业应
的合作与沟通:下一步双方将结合龙芯“2E”系 用大赛拉开帷幕
列平台以及我公司在嵌入式 Linux 方面的技术优   7 月 2 日,“2008 中国开源软件竞赛活动暨
势,针对农村和社区信息化,小区物业管理,行 开源软件创新与企业应用大赛”在北京正式拉开
业数据采集等方面推出一系列产品解决方案。通 帷幕。本次竞赛活动是在国家科技部和原国家信
过此次合作,使得 LifeCube 系统具备了跨平台部 息产业部历年支持下举办的每两年一届的第三届
署的能力,也使得龙芯系列产品在嵌入式领域, 大赛。本次竞赛活动由科技部火炬高技术产业开
行业专用设备等方面,具备更广泛的应用前景, 发中心、科技部高技术研究发展中心联合主办,
使以龙芯 CPU 为核心的龙芯产业化又向前迈出了 中国软件行业协会共创软件分会(共创软件联盟)
重要一步。 与中国高新区协会软件园分会具体承办,本次竞
赛受到了国家 863 计划的支持,以及中国开源软
威盛加大对开源支持力度 件推进联盟的支持。
  7 月 25 日,威盛电子(VIA)任命 Harald
Welte 为威盛开源联络官。Harald Welte 将负责 “开源行动日” 技术推广巡讲活动正式启动
帮助完善威盛的开源策略,优化威盛 x86 处理器   7 月,开源行动日活动依次在武汉、长沙、

开源 2008年第8期 21
开源通讯

广州、南京、苏州、上海、大连等城市软件园区 的国家电子政务基础信息库项目,由国家发改委
举行。开源行动日活动是由共创软件联盟、 牵头,包括国土资源部、水利部等 11 个部委单位
Sun、Intel、中科红旗公司、中科方德等公司共 共同建设。此次中标是继中标金宏工程后,金蝶
同组织的一个技术交流活动,Sun、Intel、中科 Apusic 再次入选国家级重点电子政务建设。
红旗、中科方德等公司的技术人员与软件园开展
面对面的技术答疑、技术指导,提供专题技术培 ODF 时代来临: IBM Lotus Symphony
训或技术合作。 推出 1.0 正式版
  IBM 近日宣布推出一套基于 ODF 的免费办
中标软件举办“中标普华藏文 Office 办公软件” 公软件 Lotus Symphony,用于创建和共享文档、
培训班 电子表格和幻灯片。Symphony 的推出标志着开
  继年初原信息产业部、上海市政府联合向西 放文档格式(ODF)已趋于成熟,并再次兑现了
藏自治区政府赠送了 3.2 万套、价值 1500 万元的 IBM 的承诺,将办公生产软件从不断支出的财务
中标普华藏文 Office 之后,5 月中标软件又为来 负担改进为高效经济的生产工具,以此支持企业
自西藏自治区拉萨、日喀则地区的十余名信息主 将资金投入到更为创新的业务领域。
管开展了“中标普华藏文 Office 办公软件”培训
班。日前中标软件深入藏区,在拉萨、那曲等地
继续为当地近 1000 名学员提供藏文办公软件培 广东进行《广东省 Linux 电子政务应用产品目录》
训,此举得到了上海市政府相关部门、西藏藏语 征集工作
言委员会以及西藏各地政府等多方面的高度评价。   为继续落实《广东省 Linux 软件推进计划》,
促进我省 Linux 应用产业的进一步发展,将成熟
甲骨文公司在中国推进 UBL 的 Linux 应用产品纳入我省 Linux 应用产品推荐
  甲骨文公司致力于 Linux 企业级的应用, 目录,作为政府采购的依据之一。2008 年 6 月,
Linux 试验室使用多种手段测试 Linux 的性能、 开展了第四期《广东省 Linux 电子政务应用产品
可靠性、可延展性和高可靠性,这些工作已经体 目录》征集工作,目录征集时间为 6 月至 12 月。
现在 Linux Kernel 当中。甲骨文 Unbreakable
Linux(UBL)不是一个新 Linux 的发行版。UBL
是一个为企业提供 Linux 操作系统支持的服务项 广东开展 Linux 软件产品及解决方案推进发展
目。甲骨文公司提供高质量和丰富的服务使得企 情况调研工作
业得以成功的使用 Linux 操作系统。   为了解和总结广东省 Linux 软件推进计划实
施成效和存在问题,为下一步制定 Linux 软件或
金蝶 Apusic 中标自然资源和地理空间基础信息库 相关开源软件及解决方案推进政策提供借鉴和参
项目 考,决定就全省 Linux 软件产品及解决方案应用
  7 月,金蝶中间件有限公司(以下简称金蝶 推进及发展情况开展调研工作,同时在调研过程
Apusic)中标自然资源和地理空间基础信息库项 中,我委将发现并推荐一批自主创新且具有较强
目。自然资源和地理空间基础信息库建设项目是 市场拓展能力的 Linux 软件或相关开源软件及解
“两网一站四库十二金”中率先通过批复并启动 决方案,重点扶持或优先纳入政府采购目录;发

开源 2008年第8期 22
开源通讯

现并推荐一批成功的典型应用单位,成为扶持建 台上运行。不久,国内的 Linux 用户就可以在其


设的示范试点单位;还将就调研实际,评选表彰 Linux 系统上安装使用优秀的国产办公套件金山
一批优势企业、成功应用单位和先进个人。调研 WPS。据悉,浙大网新已将 WPS 作为兼容内核
时间为 8 月到 9 月。 Linux 系统上的标配应用软件之一,全面预装。

百资科技发布新版获宏碁 Aspire one 捆绑订单 欧盟将对中国开源产业调研


  8 月 1 日,Linpus Linux Lite 1.0.9 版发布,   由欧盟发起的开源软件项目
并于 4 日在美国旧金山召开的 LinuxWorld 展会 FLOSSInclude,是由多国参与的开源软件分析项
上正式发布展出。Linpus Linux Lite 是百资科技 目,其项目中国合作方清华大学网络中心将于
面向低价电脑和移动设备市场的一款产品,该产 8-9 月携手中国开源软件推进联盟就开源软件在
品可针对企业的特定需求进行调整,适用于屏幕 华使用状况进行深入调查研究。
为 4.8-32 吋的各种装置上,语系方面支持多国语
言。Linpus Linux Lite 已获宏碁等多家厂家采用, 中国软件公司为 Linux2.6 增加 CPU 支持
并于第三季起开始出货。   7 月天津津科电子有限公司基于
ARM926EJS 的最新芯片——三星 S3C2450 上为
CSIP 完成了“主要浏览器兼容性评估”工作 Linux 2.6.21 内核添加新的 CPU 的支持,同时为
  “主要浏览器兼容性评估”工作是为用户和 uboot 1-1-4 添加 S3C2450 的支持。
网 站 开 发 者 提 供 了 主 流 浏 览 器 (Internet
Explorer、Firefox、Opera 等)的基本信息,分 各地 Linux 社区进行时—青岛
析了各浏览器对网页的兼容性技术问题,提出了   7 月 11 日青岛五四广场,青岛 Linux Users
一些行之有效的解决方案,从而使网站开发者对 Group 成员召开会议,讨论适合初学者使用的
兼容性问题有一个全面清晰的认识,有助于浏览 GNU/Linux 发行版本等技术问题,会议沿袭了世
器兼容性技术问题的解决。 界各地 Linux User Group 自由发言的聚会形式。
青岛 Linux Users Group 成立于 2007 年 8 月,
WPS 将运行在 Linux 系统上 旨在为青岛本地 Linux 用户提供一个共享和交流
  近日,浙大网新公司与金山软件公司建立了 的平台,普及以 Linux 为代表的自由/开源软件,
协作关系,浙大网新公司将为国内知名的金山 致力于自由/开源软件在企业、联络外企和科研院
WPS (Windows 版)办公套件提供必要的技术支 校的推广。
持,以使得其能在兼容内核 Linux 以及 WINE 平

开源 2008年第8期 23
开源社区

开源社区

SourceForge 宣布 2008 年度社区选择奖


SourceForge 宣布了 2008 年度社区选择奖:
  最佳项目、最佳企业项目和最佳教育项目皆为 OpenOffice.org;
  最有可能成为下个 10 亿美元收购项目:phpMyAdmin;
  最佳多媒体项目:VLC;
  最佳游戏项目:XBMC;
  最可能改变世界的项目:Linux;
  最佳新项目:Magento;
  最有可能被起诉侵犯专利的项目:Wine Is Not an Emulator;
  最有可能让用户被过时的行业协会为保护死亡的商业模式起诉的项目:eMule;
  最佳系统管理工具:phpMyAdmin;
  最佳开发者工具:Notepad++。

Linuxpk 首发 VIM 用户手册 7.2 中文版

  Vim 是全球最著名的编辑器之一,作者 Bram Moolenaar。


其用户手册是随编辑器发布的最经典学习教程。该用户手册的中
文版由 vim 资深用户 slimzhao 精准翻译。事实上,在 7.2 版本发
布的当天,slimzhao 就将中文用户手册升级到 7.2。但是由于
latex 排版问题,直到 2008 年 8 月 19 日,其 PDF 版才在 linuxpk
得以首发。

  下载地址:
http://bbs.linuxpk.com/thread-33846-1-1.html

开源 2008年第8期 24
开源社区

“小芭比” Puppy Linux 中文版问世


  Puppy Linux 4.00 就是一个相当迷你的 Linux 操作系统(ISO 不到 88MB),它是在今年五月的发
布的,但 Puppy Linux 4.00 并没有专门发布中文的版本,由于 Puppy Linux 优秀的特性,受到了国内
很多 Linux 喜爱,Puppy Linux 的汉化工作也由这些 Puppy 的粉丝在支持。“小芭比 Linux”——
Puppy Linux 4.00 中文 ISO 测试版已由中文 Puppy Linux 开发者之家正式推出。

  下载地址:
    http://puppy.cnbits.com/ftp/incoming/qqdanfiles/puppy_400_cn_beta1.iso

  说明:该 iso 在一步到位包 0.2.2 基础上制作而成,现暂名为“小芭比 linux”,大小为 100MB,欢迎


大家测试并提出改进意见。
  内置输入法:智能拼音、双拼、五笔字型
  中文控制台:sakura
  网络接入程序:网络配置向导和 PPPOE 管理工具都已中文化。

开源 2008年第8期 25
开源社区

Java 播放器 YOYOPlayer1.1.3 发布


YOYOPlayer 的主要定位是 Linux 下的用户,因
为 Linux 下几乎没有一款集成性高的音频播放软
件,并且读取中文标签经常会出现乱码,由于
YOYOPlayer 是国人开发的,所以对中文的支持
绝对可以放心,并且可以自定义标签的读取和写
入编码。
  支持 snd、 aifc、 aif、 wav、 au、
mp1、mp2、mp3、ogg、spx、flac、ape、m
ac 等音频格式音乐。支持 10 波段均衡器,支持
ID3v1/v2、APE 和 Vorbis 标签的读取和写入,
支持设置标签编码,支持以标签重命名文件。支
YOYOPlayer 是一个用 JAVA 编写的,跨平台的
持同步歌词滚动显示和拖动定位播放,并且支持
音乐播放软件。是一个集播放,歌词显示于一体
在线歌词搜索功能。 支持多播放列表,支持多种
的音频播放软件。由于 JAVA 的跨平台性,您可
视觉效果. 真正永久免费并且开放源代码,也不存
以在几乎任何平台下使用此软件,这样可以免去
在任何功能或时间限制。
您每个平台装一种特定播放软件的烦恼。

Pidgin(Gaim)发布 2.5.0 版
  近日,Pidgin 发布了最新的 2.5.0 版本,Pidgin 是一款
功能强大支持多个协议的开源即时通讯软件。包含的 IM 协议
有 AIM、Bonjour、Gadu-Gadu、 Groupwise、 ICQ、
IRC、 MSN、 QQ、 SILC、 SIMPLE、 Sametime、
XMPP、Yahoo! IM、Zephyr 等,十分全面。值得一提的是,
QQ 不再以插件形式支持了,而是直接可以使用了。

Pidgin 功能特色

  * 提供易于转换交谈对象的分页视窗对话
  * 容许用户在同时间登入不同帐户
  * 经由插件可加入额外的功能
  * 能将对方的别名改为真名

开源 2008年第8期 26
开源社区

  * 能将根本是同一人的不同分身帐户组合成相同的“通讯者”
  * 能够进入会议及接收留言
  * 当欲捕捉的特定对象改变状态时,可发出提示或播放音效

GNOME 2.23.6 正式发布


  GNOME2.23.x 系列是不稳定的版本,其目的主要在于为稳定版的 GNOME2.24 做一系列的测试。
随着 GNOME2.23.6 的发布。GNOME2.24 代码也已经冻结了,也就是说,在 GNOME2.23.6 中出现的
所有新特性基本上都会应用 GNOME2.24 中。下一个版本 GNOME2.23.90 预计会在本月 18 号发布,更
详细的信息可以参观 GNOME2.23 开发的日程表。

  你可以从下面的链接下载到你想要的 GNOME2.23.6

   platform sources - http://download.gnome.org/platform/2.23/2.23.6/


   desktop sources - http://download.gnome.org/desktop/2.23/2.23.6/
   admin sources - http://download.gnome.org/admin/2.23/2.23.6/
   bindings sources - http://download.gnome.org/bindings/2.23/2.23.6/
   devtools sources - http://download.gnome.org/devtools/2.23/2.23.6/

  申明:此版本的主要目的是用于测试,尽管它能够顺利地安装,但我们并不能保证其稳定性

开源 2008年第8期 27
开源社区

微软赞助 Apache 的背后

陈杰

  最近,看到了国内很多媒体关于"微软每年捐 LGPL 许可证,也就是说,微软第一次基于开源许


赠 Apache 基金会 10 万美元"的报道。微软全球 可证 LGPL,向开源社区贡献了代码。
开源软件项目主管 Sam Ramji 在开放源代码会议
(Open Source Convention)上宣布微软每年向   这才是我们更应该去关心的内容,这也是微
Apache 基金会(ASF)赞助 10 万美元,以支持开 软积极参与开源表现出来更实质性的东西。如果
源软件的发展。报道中都指出:微软此举将使其 说赞助表明了微软的一种姿态,表达了对开源社
成为 Apache 基金会的"白金"赞助商,这是 区的一种善意,那么第一次基于 LGPL 协议贡献
Apache 基金会最高等级的赞助,另外两家白金 代码则表明了微软参与开源的决心。这是微软与
赞助商分别是 Google 和 Yahoo。 开源世界纷争多年后一个里程碑式的事件,也是
微软与开源世界多年努力后的一个共同的、重大
  对于微软再次掏钱赞助开源组织我并不感到 的转折点。
惊讶。最近两年,微软积极参与开源,在开源世
界中装载微软的影响力,在不同的开源项目中,   此前,微软一直宣传 Shared Source 这个概
我们都能看到微软的身影,同时,在大大小小的 念,在 05 年阿姆斯特丹举行的 EuroOSCON 上
开源活动中,也都能看到微软以 Sponsor 的身份 提出了 5 个新的 License(三个主 License 以及两
出现。 个衍生版):Microsoft Permissive License(及
Microsoft Limited Permissive License)
  这就出现了一个问题,微软赞助开源已经习 Microsoft Community License(及 Microsoft
以为常,对于微软这样的企业,一年 10 万美金的 Limited Community License)和 Microsoft
赞助同样也是一件很轻松的事情。(当然,这也许 Reference License。其中,微软互惠许可
对于 Apache 基金会来说是一笔可观的费用,正 (Microsoft Reciprocal License)和微软公共许可
如 Sam Ramji 所言,这笔赞助可让基金会付薪水
给行政人员及其他人员,以便 ASF 开发人员更专
注于开发优秀的软件。)

  但是,仅仅掏钱赞助开源就能表明微软参与
开源的决心吗?我看未必,为开源掏钱这对于微软
来说已经根本算不上什么。其实,有一件事更值
得我们去关注,Sam Ramji 在赞助的同时宣布,
微软将向 ADOdb 贡献一款补丁,ADOdb 是一
个 PHP 数据访问层,此次发布的补丁将首次基于

开源 2008年第8期 28
开源社区

(Microsoft Public License)在 07 年 10 月获得了   微软第一次向开源社区贡献的代码究竟值不


开放源代码促进会(Open Source Initiative)的认 值钱?究竟值多少钱?我觉得这个已经不在重要。
可。 对于微软这样的企业,你能去要求他一年掏几十
万甚至上百万赞助开源,但让其心甘情愿的贡献
  虽然已经正式成为 OSI 认可的开源协议,但 代码,这就不是轻易能够做到的。因为它代表了
这两项协议并未得到更多开源人士的认同,更多 一个企业的整体战略,这些东西是不能用金钱衡
人认为这两项许可本质上仍然是"只许看,不许摸 量的。而此次贡献代码正是其整体战略的一个体
的许可证",尽管 MS-PL 已经与 BSD 许可极为类 现,它代表了微软接下来的发展方向,这是一个
似。而此次微软向社区贡献的代码基于 LGPL 许 信号,也表明了一种决心。
可证,而不是微软自己的开源许可,这就是一个
很了不起的进步。   微软大中华区平台战略总监李科研曾经和我
提到:"从微软参与开源的角度而言,主要包括四
  GPL 协议由 Richard Stallman 为 GNU 计划 个支柱性的策略,就是'参与、合作、成长、学
而设立,在 07 年 6 月发布了其衍生版本—— 习'"。如今,我觉得应该再加上两个字,那就
GNU Lesser General Public License(LGPL),中 是"贡献",这不仅表达了微软参与开源的一个诚
文译为"较宽松公共许可证"或者"函数库公共许可 意,也为微软与开源的合作铺平了道路。其实,
证",其目的是为了应用于一些软件函数库。因此, 我一直认为,在中国,微软与开源企业应该更加
此次微软基于 LGPL 向社区贡献代码也被更多的 紧密的合作,做大、做强中国的软件市场,这对
自由软件人士认为:这是微软首次公开支持 GNU 微软、对开源、对软件产业,都将是一条共赢的
计划。 道路。

自由软件的伟大胜利
袁萌

  2007 年 7 月,美国自由软件作者 Jacobsen 法律(尤其是知识产权法律)的保护,只能算是


控告 Matt Kartzer(及其公司)不正当地使用了他 经济合同侵权。这对全球自由软件社区无疑是一
的自由软件(Java 模型铁路的接口程序)使用许 次重大打击。
可条款(一定要注明该程序的出处及其作者姓
名),要求法院发布禁止令。2007 年 8 月,美国   2008 年 8 月 14 日,美国最高上诉法院
加州地方法院作出一审如下判决:驳回禁止令的 (The appellate court)驳回了美国加州地方法
申请,理由是自由软件使用许可条款不属于美国 院的一审判决,认定这是一桩知识产权侵权案例,
授权范围(The scope of the license)的概念, Jacobsen 的禁止令申请最终获得美国法律的支持。
因而,自由软件使用许可条款的要求得不到美国 毫无疑问,美国最高法院的此项判决,意义十分

开源 2008年第8期 29
开源社区

重大。 要求地方法院参照执行。此项裁决,有什么意义?
  通常认为,既然是自由/开源软件,允许人
  在我们国内,一般人不把自由软件看在眼里, 们自由使用,为什么还会构成法律侵权?在以往,
荒谬地称其为“免费软件”,更有甚者,妄称其 人们认为,违反了开源使用许可条款,顶多只能
“毫无商业价值”,存在商业模式所谓的“硬伤 算是违反了一项“经济合同”。解决经济合同纠
”。我们国内某些自诩“国产 Linux”的软件生 纷(官司),根据“谁主张,谁举证”的原则,
产厂商肆无忌惮地滥用自由软件而不怕引火烧身, 你说我犯规,拿出证据来!打这种官司,很麻烦,
令人佩服。8 月 14 日,美国最高法院的这次判决, 很费时,真的打不起。但是,现在就不一样了。
对于 GPL 自由软件使用许可条款而言,无疑是一 如你果违反了某项开源许可条款,人家到法院告
次伟大的法律胜利。对全球自由软件社区而言, 你,只要有证据(这种“非经营”性的证据很容
更是一个等待时间太长久的盛大节日。从此,在 易找到),法院就可以向你直接发出“禁制令”
法律意义上,自由软件真正地站起来了。 (Injunction),禁止你的经营活动,而不仅仅
是经济罚款了事(经济处罚)。大家都明白,这
  近日,孙永杰发表文章声称:自由软件创新, 就麻烦了。
没有商业价值。非常明显,这无异于全盘否定了
自由软件(国际运动)。现今,自由软件具备了   在我国,违反 GPL 规则的现象,比比皆是,
不可否认的法律地位(法律确认了其授权方式)。 如同盗版现象。现在,违反 GPL 规则,如同盗版
在当代软件生态系统中,比如互联网世界,自由 一样,处于同一个法律级别(水准)。因此,有
软件几乎无所不在,无所不能,你怎么能说自由 关厂商应该及早注意自己的经营活动,查看是否
软件毫无商业价值?微软前总裁 Bill Gates 的名 有违反开源许可条款的地方,以免将来被动。
言“GPL 必然导致没有人愿意写软件,提高其性 (注:有兴趣者,请参阅“United States Court
能”,今天不再灵验了。 of Appeals for the Federal Circuit
2008-1001”判决书,原告是 Robert
  回顾过去十年,我们可以看出,自由软件在 Jacobsen,被告是 Matthew Katzer 及其相关公
我国境内没有得到认真的对待,各种谬见四处泛 司。判决书共计 15 页,裁决的结论在 15 页,其
滥,毒害着人们的思维。美国最高法院的判决, 中指明了开源许可协议的许可条款是
似乎远隔千里,不管我事。但是,此项法律判决 “enforceable copyright conditions ”(“强
迟早波及我国,只是时间早晚的问题。谁说自由 制性的版权条款”)。事实上,开源许可协议
软件没有商业模式(所谓“硬伤”)?这简直是 (Artistic)的要求很低,只要求引用时必须注明
瞎说。谁说自由软件不能卖钱?就看你怎么卖法 程序作者的姓名,这远比 GPL 规则的要求宽松多
了(这属于商业机密)。 了。上诉法院认为,开源程序的作者,虽然允许
程序代码被不确定人群使用,但不代表该作者放

  对我国 Linux 厂商的警示 弃了一切权利,例如:名誉权。开源软件的广泛


传播,必定增加作者的知名度。由此,我们发展
  美国最高上诉法院做出的这一裁决规定凡违
“国产”系统软件的政策也应作出相应的调整,
反开源许可条款即被视为对相关作者的版权侵犯,
把开源软件混同于国产软件恐怕不可取了。)

开源 2008年第8期 30
开源社区

   工作与社区奉献并不矛盾

Xoops 国际项目负责人 姜太文

  参与开源社区有着多种多样的形式,而本文 部分最活跃的项目大都属于这一类,比如论坛程
作者作为开源 CMS 系统 Xoops 的国际项目负责 序 phpbb、内容管理 XOOPS 等。
人,将讲述他是如何参与到开源社区当中的,并
在参与社区研发的同时,如何平衡个人本职工作
与社区奉献的关系的。
  社区型开源项目体现了最彻底的开源精神,
  开源项目根据其运作模式和规模,大致可分 源码是开放的,项目的开发过程是开放的,团队
为三类。 和社区的管理也是开放的。这类开源项目可以看
作团队型项目开放式发展后的结果,但由于在团
  由商业公司支持的开源项目,项目的开发者 队成员的流动性、社区组成上的复杂性和管理上
和社区管理者一般是商业公司的雇员,由商业公 的松散性等因素,它们在开发管理上有其独特性。
司开放部分或全部源码,并形成一定的用户社区
这类项目的代表国外有 OpenSolaris,国内有互   开放源码、开放开发、开放管理
动 在 线 的 维 客 开 源 版 , Mysee 公 司 的
OpenMysee , 以 及 近 来 开 始 在 国 内 发 展 的   社区型开源项目是由来自社区的成员在志愿
Oracle 的 Berkeley Db 社区等。这类项目在管理 的基础上靠个人兴趣和爱好参与开发的,保护团
上依托于商业公司,具有较多的公司管理色彩。 队成员尤其是核心的热情显得尤其重要。然而不
其中一个特色:源码是开放的,开发是封闭的。 可回避的是来自社区的开发者在开发能力和代码
这一点在国内的一些开源项目中由于对版权协议 风格等各方面都存在差异,如何在保证开发质量
的特别定义而体现得尤其明显,因而也突出了自 的同时使每个团队成员受到足够的尊重甚至是鼓
由软件与开源软件的区别。 励,这是项目负责人是要特别重视的。

  由个人和小规模团队组成的团队型开源项目,   在我们项目这几年的发展过程中,就有一些
由于核心开放和管理团队规模较小,复杂度不高, 成员因各种原因热情受到打击而离开了社区,其
项目的管理比较简单直接。这类项目包括近来比 中有极为关键的核心成员,对项目的发展造成不
较流行的 WYSWYG 在线 web 编辑器 FCKeditor 同程度的伤害。
等。
  我自己从几年前开始接触目前的开源项目,
  由开源社区自发产生和支持的社区型开源项 在提交的代码受到肯定后开始积极的参与各个子
目,无论是开发者、管理者还是用户都来自社区, 项目组的开发,自己的能力不断得到提高,最后
以志愿者身份贡献于社区。SourceForge 上绝大 成为整个项目的负责人和主开发;这其中团队成

开源 2008年第8期 31
开源社区

员之间的相互鼓励和交流学习起了至关重要的作 然不能忽视,特别是东亚文化的内敛矜持和欧美
用。 文化的开放直接之间的差别在某些特定环境下会
激化团队中存在的矛盾。
  目前我们的开发团队有 100 多成员,其中核   我们这个开源项目最初是由来自东亚和欧洲
心开发组是流动性的,规模维持在 10 人左右。进 的核心成员共同主导,其中主开发来自日本;后
入开发团队时间比较短的或是对项目了解还不是 来团队核心中欧美成员逐渐占绝大多数,主开发
很深的,我们会鼓励其参与团队的讨论;当他的 与其他成员之间的交流存在某些障碍,日积月累,
开发水平或是对项目的熟悉达到一定程度之后就 矛盾的激化使核心团队的协作无法正常进行,最
可以获得 SVN 的提交权限,此时会特别协助他掌 终以投票的方式请原来的主开发离开团队。这种
握对协同工具的使用和对代码质量的控制,在其 直接甚至于有些无情的方式,在我们看来是很难
提交有问题的代码后通过私下交流协助更正。这 接受的,但对项目的发展确实必要的。当然这位
种开放式开发的方式虽然增大了工作量,但对团 主开发一直是受社区尊重的,他是这个项目的创
队的建设和长期发展是必需的。 始人,为了项目的发展他接受了这个决定而没有
采取过激的行为。
  同时随着项目的发展壮大,团队组织结构的
复杂性增大,但却缺乏明确的监管机制。在这样   不过从另一方面来讲,在开源社区项目以分
的情况下,需要制定相对繁琐的管理规则,使各 支(Fork)的形式分裂发展是一种正常现象,至
个项目组的工作具有一定的透明度,形成开放的 少不是消极的行为。一个开源项目发展到一定阶
管理机制。这势必降低某个特定项目组特定任务 段,由于核心成员之间对长期发展规划和开发思
的效率,但却保障了项目长期发展的稳定性。 路存在不同意见,就会有一部分成员单独成立一
开源社区里的合与分 个新的项目,这就形成了分支。开源社区里不同
分支之间不是相互仇视的敌对关系,更多的是具
  社区型开源项目的团队成员来自五湖四海, 有一定竞争性的相互激励关系,比如操作系统里
成员之间缺少类似于商业公司的雇佣关系,团队 众多的 Linux 分支和 Web CMS 里众多的 Nuke
组织结构相对松散无序。团队的存在和发展完全 衍生项目等。
依靠成员之间愉快的合作关系。而作为一个国际
性的开源项目,成员之间主要是通过在线论坛或   完美主义与实用主义的结合
是 IM 交流;开源项目的开发者原本就具有比较
强的个性或是重视个人自由度,而不同成员之间   开源项目的开发者大部分具有 Geek 情结,
形形色色的表达方式和高低不同的语言能力更增 把项目当作自己的作品而不仅仅是一个产品或是
加了成员之间交流的复杂程度。 商品,追求完美的设计开发,醉心于代码的精雕
细刻。但是作为一个完整的开源项目的另一边,
  另一方面,随着国际化程度的提高,不同文 用户却更专注项目提供的代码的实用性;换句话
化之间的差异日益缩小,特别是在开源社区,来 说用户希望得到的是一个产品设置是商品,他们
自东西方不同国度不同行业的成员可以在同一社 希望不断看到有新的版本出现,对软件新功能和
区内交流学习;然而文化差异带来的交流障碍依 性能改进的关注甚于对代码质量的关心。作为一

开源 2008年第8期 32
开源社区

个健康发展的开源项目,必须要处理控制好代码   本职工作与开源奉献之间的平衡
设计开发的质量和软件开发周期之间的平衡关系,
同时开发者要舍得牺牲自己追求完美的目标,兼   与受雇于商业公司而参与开源项目的开发源
顾用户对产品功能和易用性的需求。社区型开源 不同,社区型开源项目的参与者大部分都是在自
项目产生于社区,其开发者也来自社区,用户群 己的业余时间参与开发和管理。如果自己日常工
的存在和壮大是这类开源项目发展的基础。 作内容与所参与的开源项目没有太多相关性,就
  在我们的项目中曾经发布过一个系列,以用 会存在个人和工作时间安排的问题。特别是开源
户的功能需求为导向,追求新功能和发布速度, 项目的开发一般都是开发者个人的爱好和强烈兴
忽略了开发质量,给后续开发埋下了隐患,其结 趣点所在,在控制不好的情况下对开源项目的过
果是导致了整个项目的开发停滞了较长一段时间。 多投入会影响到日常工作和个人生活,对参与者
这个系列对项目的负面影响到目前还没有完全消 个人和项目的长期发展都是不利的。这个问题无
失。 论在欧美国家还是在国内,都是存在的。
  在基于 Web 的开源项目里有一对具有对比
性的例子。WordPress 是目前应用最广的 Blog   我们项目的上一任主开发员在一年前辞掉自
系统,拥有大量的用户和活跃的开发团队。在它 己的工作,全时做新版本的架构设计和底层开发;
的初期版本中,在结构设计和代码实现上存在不 一开始他自己充满信心,团队成员也很受鼓舞。
同程度的问题,不过它为用户提供了一个简单易 然而随着时间推移,来自经济和家庭生活的压力
用而功能新颖的个人发布系统,满足了用户的需 逐渐显现,经过大概半年时间,他已经无法继续
求,同时很好的控制了发布周期,逐渐吸引了大 维持高效的开发。后来由于身体和心理等方面的
量的用户,形成了稳定的用户社区,并与开发团 原因,终止了对这个项目的参与,对项目开发和
队形成了良好的反馈。另有一个 Web CMS 系统, 团队建设的持续性带来了双重伤害。
与我们的项目差不多同时从 Nuke 中形成分支。
他们的开发团队做了长期复杂的设计开发工作,   我们中文社区有一位成员,从四年前开始参
在发布的时候已经是一个很优秀的 CMS 系统, 与项目的设计和开发工作。当时他还是初二学生,
但是由于开发周期过长,同时系统设计过于复杂, 从简单的文档写作和教程开始,参与的工作逐步
造成用户群的流失,已经很难再恢复良好的开发 深入。他很好的处理了自己的学习和项目参会之
和反馈机制。 间的平衡,只有在假期和周末才参与社区的工作,
平时基本以学习为主。几年下来,他已经为项目
提供了很多经典的文档和设计作品。

  一个成功的开源项目不仅仅是一个软件,而
是一个由开发团队、管理组织、用户社区等各方
面形成的有机体。项目的成长依赖于每个方面的
稳定健康的发展。

开源 2008年第8期 33
开源社区

开源 CMS 驱动 Web 2.0

顾宏军

  Web 2.0 的快速发展离不开开源内容管理系 商业 CMS 系统比也毫不逊色,开源内容管理系


统的支持,当前流行的 Blog、Wiki 等系统都采 统以 php+mysql 架构的居多,也有部分
用了开源 CMS 系统,甚至有人认为是开源 CMS Asp、Java、Ruby 等语言实现的。开源内容管理
系统导致了 Web 2.0 的产生并快速发展,同时, 系统发展迅速,用户众多,并且这一优势还将继
开源 CMS 系统也随着 Web 2.0 逐渐发展壮大, 续保持并发展。
已经在开源社区形成了一股不可忽视的力量。
完善功能与用户体验
  网络的兴起,信息的更新以爆炸式增长,如
何对信息进行迅速的整理、发布等操作,成为人   早期的开源内容管理系统仅仅是进行信息发
们迫切要解决的问题,为解决这一问题内容管理 布:如新闻、投票、论坛等,并且界面粗糙,而
系统(CMS)应运而生。内容管理系统提供了简 现在开源内容管理系统功能已相当完善,涉及内
易的操作、丰富的功能和完善的权限管理,为用 容管理的各个方面,界面开变得美观漂亮。比较
户提供了一个低成本、高效率、实时协作的在线 一下默认安装的 postnuke 和 joomla,您就很容
方案。 易发现,开源 CMS 系统的进步,现在的开源
CMS 系统在重视功能的同时,也在重视用户体验,
  内容管理系统是一个很泛的概念:从商业门 开源内容管理系统开始有漂亮的外观,符合大众
户网站的新闻系统到个人的 Weblog 都可以称内 的审美需求,并且贴心的细节设计。
容管理系统。CMS 大致可分为框架型和应用型两
大类,一种是框架型,本身不包含任何应用实现,   开源内容管理系统的开发都是采用社区方式
只是提供了底层框架,具体应用需要一定的二次 开发,一开始就有最终用户的参与,用户参与功
开发;另外一种是应用型,即本身是一个面向具 能提案,参与设计,用户参与测试,产品发布之
体类型的应用实现,已经包含了新闻评论管理、
投票、论坛、WIKI 等一些子系统,比如
postNuke Xoops 等。

  内容管理系统是开源软件较早进入的领域之
一,迄今为止,已有过百种开源内容管理系统出
现,能够被广泛接受和使用的应该有超过 10 种。
早期的有 postnuke、php-nuke,现今正在流
行的 Xoops、Joomla、Plone 等,还有新星
MODx 等。这些开源内容管理系统在很多场合和

开源 2008年第8期 34
开源社区

后,又由用户在实际项目中进行应用。可以说开 良性的商业模式
源内容管理系统是从用户中来到用户中去。是全
体用户的智慧的成果,这正是开源开发模式带来   开源内容管理系统是最早开始商业化探索的
的优势。所以开源 CMS 能以最快速度满足用户 开源领域之一。已发展出几种成熟的商业模式,
的功能需求,对用户体验的改善也能及时进行。 有的已形成很完整的商业链。现在开源内容管理
在这个重视体验的网络时代,用户体验可以说关 系统商业模式主要包括与主机提供商集成,提供
乎项目的命运,Ajax 等改善用户体验的技术在开 预安装其 CMS 的虚拟主机;提供模板定制服务;
源内容管理系统中得到了充分的发挥。 提供功能定制开发服务等几类。但这些模式都有
难以做大做强的问题,提供开源内容管理系统服
务的公司都有很强区域性,相信未来会有更好的
商业模式出现。
内置 SEO 特性
  几乎每种开源内容管理系统项目,都有几个
  内置 SEO 特性将成为内容管理系统的标准功 专门提供为其用户提供主机空间的服务商,如提
能。在关注功能与用户体验的同时,开源内容管 供 Joomla 空间的 Lunarpages、siteground,
理系统,将内置 SEO 特性。 提供 wordpress 空间的 wphosts、Blue Host,
提供 plone/zope 空间的 ingenihosting 等。这
  所谓 SEO 是指遵循搜索引擎的搜索原理,对 些主机空间提供商,寄生于开源内容管理系统项
网站结构、网页文字语言和站点间互动外交略等 目,同时也对开源项目进行赞助,保持项目的顺
进行合理规划部署,以改善网站在搜索引擎的搜 利发展。
索表现,进而增加客户发现并访问网站的可能性
的这样一个过程。现在因特网上信息成爆炸式增   开源 CMS 实现了内容管理与表现的分离,
长,而搜索引擎是人们查找信息的主要来源之一, 这就提供了另外一种商业模式:提供模板定制服
如何让搜索引擎能够更快更准确的从自己网站上 务。开源 CMS 一般都只自带几个默认模板,很
索引信息,是很多网站的迫切需求,SEO 就是为 多时候用户都希望自己的网站界面能够是独一无
解决这一问题。开源内容管理系统内置 SEO 特性, 二的,能够更美观些,这时很多美工团队开始提
使得很多原本要进行的复杂劳动由内容管理系统 供开源 CMS 的模板定制服务。国外已有很多这
自动进行,省却了很多麻烦。 种类型的公司,如专门提供 joomla 模板的
rockettheme、joomlart,国内也有部分公司涉
  以后 SEO 特性将成为评估一个内容管理系统 足这一行业。
的重要指标。目前开源内容管理系统
Joomla、MODx 以及国内的 dedeCMS 等都已   如果说定制开源内容管理系统模板为美工人
内置 SEO 功能或选项;用这些系统建立的网站几 员提供了一种生财之道,那么对开源内容管理系
天之内,即可被搜索引擎收录。 统进行定制开发、技术服务则为开发人员也提供
了种生财之道。虽然开源内容管理系统功能在不
断完善,易用性也在提升,但要普通用户能部署

开源 2008年第8期 35
开源社区

一套 CMS 还是很容易出问题的,这就需要有人 单的网页,一个留言功能即可,并不需要论坛、


提供专业的开源内容管理系统相关技术服务。另 在线商城等高级功能。对这种客户做静态网站,
外每个用户总是特定的需求,而开源内容管理系 后期更新就显麻烦,而用 joomla、xoops 系统就
统项目官方是没法同时满足所有要求的,只能满 显大才小用,这时就需要既灵活,有小巧的 CMS
足大部分人的要求。这使得针对开源内容管理系 系统。再者,如果需要建立大型行业门户网站,
统的二次开发服务开始受到青睐。 它们有的开发 现有的 joomla、等开源内容管理系统都无法拿来
插件对开源 CMS 的某些功能进行强化,如 就用,都需要进行大量的调整才能使用,如果能
Joomlatwork 的 Joomla sef 强化了 Joomla 的 将这些调整整合起来,形成一个新的 fork,相信
SEO 功能,有的更可根据客户需求进行内容管理 会得到很多人支持。
系统功能定制开发。
新项目不断出现
  开源内容管理系统世界,商业运作相对完善
的要数 Plone 系统了,Plone 现在在全球有上百   虽然开源内容管理系统市场已经相对成熟,
家提供专业服务的公司,包括:培训、开发、模 主流开源内容管理系统已有相当市场,但新的开
板服务、咨询、主机提供等。这些商业公司为了 源内容管理系统还是不断出现。它们的出现有的
维持其商业利益,也直接或间接参与项目开发完 是为解决现有内容管理系统的固有问题,有的是
善其所支持的开源 CMS 系统,形成了良性发展 为应用新的技术,但都有特定的诉求,这也是上
的好势头。但是这种服务公司都有很强的区域性, 内容管理系统向专业化方向发展的需要。比较有
难以做大做强,相信在这些问题得到解决的同时, 代表性的要数 MODx。
会有更多更好的商业模式出现。
  MODx 是一个新的开源 php 开发框架。
细分市场 MODx 与其它 PHP CMS 系统相比,功能并不丰
富,它不支持论坛、购物车或者社会网络等功能。
  目前开源内容管理系统多是追求大而全,期 相反,它将全部精力用于勾勒网站内容管理和站
望一套系统可以解决所有问题,而实际这种想法 点设计,还采用了时髦的 AJAX 技术。MODx 适
是不太可能实现的。客户要求是千差万别的,不 用于搭建外观华美,以内容发布为主并针对搜索
可能有一种内容管理系统会放之四海而皆准。所 引擎进行优化的网站。它没有采用复杂的模板系
以我以为今后的开源内容管理系统将会同时向专 统,没有要求网页格局必须是三列(或固定宽
业化和通用化两个方向发展,向通用化发展,即 度),也没有要求在模板中填入复杂的 PHP 代码。
现在的成熟内容管理系统继续完善、扩展功能; MODx 的模板系统是通过在标准 XHTML 文档中
向专业化方向发展,即出现新的专用内容管理系 插入少量相关标签(tags)的方式工作的。这种
统,或原来内容管理系统出现 fork,使得每种内 与传统 CMS 模板系统的区别深受用户的欢迎,
容管理系统都有其擅长、专攻的应用范围。这也 它赋予了网页设计人员更多的控制能力,令网页
是社会分工的必然结果。 的外观更具灵活性。

  如现在很多小型企业建站,都只需要几个简   目前,MODx 发展势头良好,已出现多家以

开源 2008年第8期 36
开源社区

它为基础的专业服务公司,国内在上海有公司就 项目的 SNS 服务功能和易于使用的特性让越来越


采用 MODx,并且已有几十个成功案例。可以说, 多的用户喜欢并开始使用他。它是基于大型
新兴开源 CMS 系统多是对 CMS 市场需求进行细 SNS(social networking service)的网络交际
分的结果,它们都有其适合的应用场合。 平台。国内已有两家公司提供 OpenPNE 二次开
发与技术服务,并且 fork 出了一个专门针对中国
不断拓展新的领域 用户的 sns 项目 openkaku。Pligg 是类似 Digg
的 Web2.0CMS 系统,网页设计师可以使用
  开源内容管理系统除了在传统的内容管理领 Pligg 做他(她)想做的任何事情。稍微懂一些 PHP
域继续发展外,还进入新兴的 web2.0、sns 等领 和 Mysql 的知识即可安装 Pligg。如果需要修改
域。现在已经有 和管理 Pligg,可能有点难度。对于精通 Web 开
DotNode、AroundMe、PeopleAggregator、 发语言的朋友,Pligg 是一个定制化非常强的
OpenPNE、Pligg 等多个开源的社交网络系统。 CMS 系统。
DotNode:功能和界面完全是 Orkut 的克隆版,
最早的开源 SNS 系统。AroundMe:在功能上比   这些新型开源内容管理系统的出现,在不断
较全,包括 Blog、WIKI、论坛、圈子、频道等 壮大开源内容管理系统的同时,也给了很多有创
功能。相比之下,PeopleAggregator 更像是 业梦想的提供了一把有利的武器。很多人利用这
MySpace 的翻版。PeopleAggregator 在用户体 些开源内容管理系统开始实践自己的创业梦想。
验上做的比较好,几乎每一步要做什么、怎么操
作,都能够一目了然。   内容管理是定制性很强的领域,市场也相当
广泛,在这市场里,开源内容管理系统已取得相
当成就,很多原有商业内容管理系统也因为开源
系统的竞争而不断调整策略,最终也进行开源投
身开源的怀抱。开源内容管理系统现在可以说是
群雄并起,这些开源项目都将要经过市场的检验,
它们中的很多,可能不适用发展需要,将成为历
史,但开源内容管理系统整体将不断前行,不断
发展。开源内容管理系统将朝着朝着更加人性化、
更加智能化、更加专业化的方向发展。新的开源
  PeopleAggregator 系统不论是从程序结构
商业模式也将出现,让我们期待开源内容管理系
还是产品结构,都做的比较严谨。而 OpenPNE
统更美好的明天。

开源 2008年第8期 37
知识学堂

知识学堂

Linux 下设备完全驱动(三)

郄晓烨

  图形化的界面能让我们方便地享用 Linux 的强大功能,而且现在 Linux 的图形化界面已经越来越完善。


Linux 中经常使用的图形显示系统是 X-Window,但是由于其与常见的 MS Windows 系统有很大的差
异,所以在使用时常会遇到一些问题,比如无法驱动显卡、显示器参数错误、花屏和图形界面无法启动
等。因此,本文将在简介 X-Window 的基础上,介绍如何安装常见显卡和声卡的驱动程序、相关的配置
文件,以及参数调整等内容。

X-Window 概述

  X-Window 是一套显示系统,包括
Server 端和 Client 端,他们之间使用 X 协议
互相通信。X 诞生于 1984 年,在较短的时
间内它就发布到了 11 个版本—X11。X11 经
过多年的发展,现在已经发布到 X11R6。X
Client 将希望显示的图形发送到 X
Server,X Server 将图形显示在显示器上,
同时为 X Client 提供鼠标、键盘的输入服务。
因为 C/S 结构,可以将 X 的 Server 和 Client
分别运行在两台计算机上,甚至可以安装一
些软件,让 Windows 作为 X Server,让
Linux 作为 Client,将 KDE 或 GNOME 等桌
面环境显示到 Windows 主机上来。
                                图 1
  图 1 所示让 Windows 作为 X Server。

    使 用 Xmanager 1.3.9 , 在 Windows XP 上 运 行 X Server , 然 后 运 行 一 台 Linux 主 机 下 的

开源 2008年第8期 38
知识学堂

startkde,将 KDE 桌面环境显示在 Windows XP 下。

    使 用 startx 命 令 可 以 启 动 X-Window 系 统 。 实 际 上 , 是 在 一 台 计 算 机 上 同 时 运 行 Server 和


Client,在运行 startx 之后,首先启动的是 XFree86,它是 Linux 平台上最常用的 X Server 端;然后,
又运行 X 的 Client 程序,如 startkde(KDE 的启动脚本)或 gnome-session(GNOME 的启动脚本)。
它们利用 X 协议连接本机的 X Server,将图形显示出来。

  Linux 上经常使用的 X Server 程序就是 XFree86,它的任务是驱动显示卡、显示器、鼠标、键盘等


设备,为 X Client 提供显示、输入服务等。
  XFree86 的主要文件目录如下:
   XFree86 文件所在的主要目录为/usr/X11R6;
   XFree86 的可执行程序文件目录为/usr/X11R6/bin;
   XFree86 自带的驱动程序所在目录为/usr/X11R6/lib/modules/drivers;
   X 的配置文件及启动脚本所在目录为/etc/X11;

  XFree86 的启动配置文件目录为/etc/X11/XF86Config 或 XF86Config-4,如果这两个文件都存在,


XF86Config-4 文件优先。

  Xfree86 自带了一些设备的驱动,具体位置在/usr/X11R6/lib/modules/drivers,如果机器显示卡
太新,无法使用 X-Window,比如使用了 Intel 的 855GM 芯片组中集成的显卡无法启动 X,则可以考
虑升级 XFree86。当前 XFree86 成熟的版本是 4.3,最新的版本 4.4 正在完善之中。从以下的链接中可获
得 4.3 版的 XFree86 所支持的所有显卡列表
  http://xfree86.linuxforum.net/4.3.0/RELNOTES2.html#3。
  XFree86 官方版本下载网站是 http://www.xfree86.org/downloads.html ,中国的镜像网站是
  http://xfree86.linuxforum.net/downloads.html。也可以从中科红旗网站 http://www.redflag-
linux.com/source/download/XFree86_driver4.3.tgz 下载。

  下载后安装 tgz 包:
   # tar zxvf XFree86_driver4.3.tgz
   # sh install.sh

安装 Intel i865G 芯片组显卡驱动

  Intel i865G 是一种比较新的显卡芯片组,它内置了显示模块,但是安装较早的 Linux 版本 X-


Window 有可能无法启动。处理这个问题的方法是,一种是直接升级到 XFree86 4.3;另一种是通过
Intel 官方的网站 http://downloadfinder. intel.com/scripts-df/support_ intel.asp?iid=HPAGE

开源 2008年第8期 39
知识学堂

+header_support_download&下载驱动程序。

  在该链接的下载页面可以选择下载 RPM 包,也可以选择下载 tar.gz 的压缩文档。尽管这两种的安装


方式略有不同,但是经过以下三步基本上可以让显卡在 X-Window 中正常使用。

  1.安装驱动程序
  (1)选择下载 RPM 包:
  # rpm -Uvh --force intelgraphics_ 20040607_i386.rpm

  (2)选择下载的是 tar.gz 压缩包要执行下面代码:


  # tar xzvf IntelGraphics_060704.tar.gz
  # cd dripkg
  # ./install.sh

  这时程序将自动安装,安装程序将更新/usr/X11R6/modules/drivers/i810_drv.o 的驱动程序,使
其支持新的 i865G 芯片组中的显卡。

  2.选择驱动程序
  有三种方法可以选择驱动程序:
  (1)如果是 Red Hat 系统则可以运行下面代码:
  # redhat-config-xfree86

图2
  图 2 显示为使用 redhat-config-xfree86。这个命令可以自动侦测显卡、配置分辨率和色深,以及选

开源 2008年第8期 40
知识学堂

择 Advanced 页面,然后单击 Video Card 的 Configure 按钮,选择正确的显卡。但是,如果是 Red


Hat Linux 8.0 之前版本,则没有这个命令,应该运行下面代码:
  # Xconfigurator

  这样程序会一步步提示选择正确的驱动程序。
  这两种方法都会将结果写入/etc/X11/XF86Config 配置文件。

  (2)直接更改 XFree86 的配置文件


  直接更改 XFree86 的配置文件这种方法在 Linux 系统中比较通用,运行下面命令:
  # vi /etc/X11/XF86Config

  或者 XF86Config-4

  在其中找到下面代码,将 Driver 后面改为 i810,表示使用 i810_drv.o 驱动程序:


  Section "Device"
  Identifier "Videocard0"
  Driver "i810"
   VendorName "Videocard vendor"
   BoardName "Intel 865"
  EndSection

  该配置文件中其它需要注意的地方如下:
  Section "Monitor"
   Identifier "Monitor0"
  VendorName "Monitor Vendor"
   ModelName "Unknown monitor"
   HorizSync 31.5 - 37.9
   VertRefresh 50.0 - 70.0
   Option "dpms"
  EndSection

  上面这个部分是设置显示器的类型,不知道自己的显示器叫什么名字没关系,但需要将显示器的垂
直刷新率和水平刷新率正确设置,这两个参数可以查看显示器的说明书。以上是 15 英寸显示器最常用的
频率,如果这个参数设置错误,显示器就会花屏或黑屏。

  Section "Screen"

开源 2008年第8期 41
知识学堂

   Identifier "Screen0"
   Device "Videocard0"
   Monitor "Monitor0"
   DefaultDepth 16
   SubSection "Display"
   Depth 16
   Modes "1024x768" "800x600" "640x480" //默认会使用最高的分辨率
   EndSubSection
  EndSection

  这里是设置显示模式的地方,包括屏幕的分辨率和色深,默认使用最高的分辨率。如果想使用较低
的分辨率,那么将高分辨率删除就可以了,在这个配置文件中显示器会使用“1024×768”分辨率,色深
是 16 位色。有关 XF86Config 文件的详解可以参看它的 man page:
  # man XF86Config

  (3)让 XFree86 自己生成 XF86Config 文件


  运行下面命令:
  # XFree86 -configure

  XFree86 将自动侦测显卡及显示器,在用户的主目录下生成一个名叫 XF86Config.new 的文件。可


以用以下命令测试这个文件运行是否正常:
  # XFree86 -xf86config ~/XF86Config.new

  这个代码是指定 X Server 使用 ~/XF86Config.new 作为配置文件。


  如果有白色 X 型的光标显示,就可以按“Ctrl+Alt+Backspace”结束 X。然后运行下面的命令,用
新的配置文件来替换系统配置文件。
  # cp ~/XF86Config.new /etc/X11/XF86Config

  3.启动 X-Window
  运行 startx,启动 X-Window。这种方式依赖于控制台(tty),将 X-Window 作为当前控制台
的 Shell 子进程来运行。

  另一种方法是运行桌面管理程序 gdm(GNOME 桌面管理程序)、kdm(KDE 的桌面管理程序)或


xdm(XFree86 的桌面管理程序)。这种方式不依赖于当前的 Shell,即使当前 Shell 关闭,X-
Window 一样会继续运行。
  以上三步是 Linux 下安装 X-Window 显卡驱动程序的通常步骤,绝大多数显卡都可以经过以上的步

开源 2008年第8期 42
知识学堂

骤正常使用,所不同的是下载地址和具体的驱动程序的生成方式可能不一样。

  比如,笔记本电脑上常用的 Intel 815 集成显卡的安装,我们同样可从 Intel 网站上下载 815 显卡部


分的 RPM 包,网址为 http://downloadfinder.intel.com/scripts-df/filter_results.asp?
strOSs=39&strTypes= DRV%2CARC&ProductID=797&OSFullName= Linux*&submit=Go%21。
# rpm -ivh xfcom_i810-1.2-3.i386.rpm

  然后重复以上的第二至第三步:
  # redhat-config-xfree86 //选择正确的驱动程序
  # startx //启动 X-Window

安装其它显卡的驱动

1. 安装 GeForce FX 6800 显卡驱动

  如果购买了 GeForce FX 6800 显卡(包含其它 nVIDIA 显卡),希望玩玩刚刚发布的 DOOM3,结


果却发现 X-Window 无法启动,这时可以去 nVIDIA 网站 http://www.nvidia.com/object/linux.html
下载最新的显卡驱动。

  nVIDIA 的 Linux 驱动程序做得相当精细,下载后得到文件 NVIDIA-Linux-x86-1.0-6106-


pkg1.run,运行它就可以看到一个 tui(文本用户界面):
  # chmod 700 NVIDIA-Linux-x86-1.0-6106-pkg1.run //设置执行权限
  # ./ NVIDIA-Linux-x86-1.0-6106-pkg1.run. //运行安装程序

  程序将会一步步提示安装 nVIDIA 的驱动。该驱动包含两部分:一部分是内核驱动,用于命令行界面


的驱动,在安装这部分时,如果不是它支持的几种内核版本需要编译内核;另一部分是针对 XFree86 的
驱动。
  运行中常常出现的错误是在编译内核时找不到内核的源文件,用以下方法可以解决这个问题。先下
载安装 Kernel 的源文件:
  # rpm -ivh kernel-sourceXXX.rpm //在 Red Hat 安装光盘上
  或者
  # tar zxvf linux-2XX.tar.gz .X //可以从网上下载,比如 kernel.org

  指定源文件位置:

开源 2008年第8期 43
知识学堂

  # ./ NVIDIA-Linux-x86-1.0-6106-pkg1.run. --kernel-source-path=<kernel 源文件目录的位置>

  安装驱动程序后,如果有问题可以参考刚才安装 Inter i865 显示驱动的方法,来调整显卡的驱动和


参数,运行 redhat-config-xfree86、XFree86 -configure 或直接更改/etc/X11 下的 XF86Config 文件。

  另外,如果希望直接得到 nVIDIA 的驱动程序,不想自动安装,可以运行以下命令将包中的文件解开。


  # ./ NVIDIA-Linux-x86-1.0-6106-pkg1.run -x

  在./NVIDIA-Linux-x86-1.0-6106-pkg1/usr/share/doc 目录下,有一个 XF86Config.example 的


文件,如果遇到 XF86Config 文件配置有问题,可以直接查看该文件中的显卡驱动部分内容。

  2.安装 ATI 9800 显卡驱动


  从下面地址 http://www2.ati.com/drivers/linux/fglrx-4.3.0-3.11.1.i386.rpm 可以下载 ATI 9800
显卡驱动 fglrx-4.3.0-3.11.1.i386.rpm 文件,然后执行:
  # rpm -Uvh --force fglrx-4.3.0-3.11.1.i386.rpm //强制升级/安装驱动程序包

  注意,要看看是否有错误发生,如果有请仔细查看出错信息。
  # fglrxconfig //使用 ATI 的配置工具配置驱动程序

  该程序会提问一些问题,当问到是否创建一个 XF86Config-4 文件时,要回答“y”,这样就可以生


成新的配置文件。
  # startx //重新启动 X
  # fglrxinfo //可以查看驱动程序是否安装成功

  3.常见显卡驱动的下载地址
  ◆nVIDIA 显卡驱动程序地址 http://www.nvidia.com/object/linux.html。
  ◆ATI 显卡驱动程序地址 http://www.ati.com/support/driver.html(ATI 网站访问速度较慢,可以
多试几次)。
  ◆VIA 芯片集成显卡驱动程序 http://www.viaarena.com/?PageID=296。
  ◆SIS 显卡驱动程序地址 http://www.mypcera.com/qu/2/soft1/xsis.rpm。
  ◆Intel 芯片组显卡驱动程序地址 http://downloadfinder.intel.com/scripts-df/support_intel.asp?
iid=HPAGE+ header_support_download&。
  ◆Intel 笔记本迅驰显示驱动程序地址 http://downloadfinder.intel.com/scripts-
df/filter_results.asp?strOSs=39&strTypes=DRV%2CARC&ProductID= 922&OSFullName=
Linux*&submit=Go%21。
  ATI 系列笔记本驱动程序要升级 XFree86。

开源 2008年第8期 44
知识学堂

  如果实在找不到显卡驱动程序,可以试着按照上面的介绍升级 XFree86 到 4.3 或 4.4。它自带有一些


显卡驱动程序,如 ATI M9000 笔记本显卡、SIS 显卡等驱动程序。

  4.内核支持显示模式调整
  在命令行界面下,可以调整内核的显示模式,让它使用较高分辨率,设置方法如下。
  (1)使用 GRUB 作为 boot loader,则运行命令:
  # vi /boot/grub/grub.conf

  在 kernel /vmlinuz-2.4.21-4.EL ro root=LABEL=/行后添加 vga=0x314。这是设置显示模式,vga


是 Kernel 的参数,0x314 表示的是 16 进制的 314 换算成 10 进制为 788,所以 vga=788 跟与 vga=
0x314 是一样的。我们把该行改为下面一行:
  kernel /vmlinuz-2.4.21-4.EL ro root=LABEL=/ vga=0x314

  这时会发现 Linux 启动时显示一个企鹅图标,使用的是 800×600 分辨率,vga 参数含意如表 1。

  (2)使用 LILO 作为 boot loader,则在/etc/lilo.conf 文件中将 append 处改为如下一行:


  append=" root=LABEL=/ vga=0x314"

  之后运行下面命令:
  # lilo -v

  使用新的配置文件更新 MBR。

常见显卡故障的处理

  当无法启动 X-Window 时,应该仔细查看出错信息。以下为 X-Window 启动不成功的常见原因。

  1.当屏幕为全黑或花屏时,一般是显示器参数设置有误。首先应该按“Ctrl+Alt+Backspace”,结
束 X-Window。然后查看显示器说明书,在/etc/X11/XF86Config-4 或 XF86Config 文件中,将水平和
垂直刷新率改成正确的值,或者运行 redhat-config-xfree86 和 XFree86-configure。

  2.XF86Config 文件损坏或丢失,运行 redhat-config-xfree86 或 XFree86 -configure。

  3.没有控制台所有权。比如,以 shrek 用户登陆,然后用命令“su - joan”切换为用户 joan,这时


使用 startx 就会出错,提示没有该控制台的所有权。这时,可以用 exit 退出 joan 的 Shell,然后再运行
startx。

开源 2008年第8期 45
知识学堂

  4.硬盘没有空间。在使用 KDE 或 GNOME 时,每次启动 X-Window 都要占用一定空间放临时文件,


如果/tmp 或主目录下无法写入文件,这时 X-Window 就会出现一些奇怪的错误。

  5.显卡驱动有问题。下载安装正确的驱动,运行 redhat-config-xfree86 或 XFree86 -configure。

  6.xfs 服务没有启动。xfs 是字体服务,它不启动则 X-Window 无法启动。使用下面命令可以启动该


服务:
  # service xfs start
  或者
  # /etc/rc.d/init.d/xfs start

  如果希望该服务每次自动启动,则使用下面命令:
  #chkconfig xfs on

声卡驱动程序概述

    Linux 下 声 卡 的 驱 动 是 作 为 普 通 内 核 模 块 来 加 载 的 , 系 统 内 置 的 声 卡 驱 动
在/lib/modules/2.XXX/kernel/drivers/sound/目录下。以下是系统内置的声卡驱动模块:
  # ls /lib/modules/2.XXX/kernel/drivers/sound/
  ac97_codec.o cs4232.o forte.o uart401.o
  ac97.o cs4281 i810_audio.o via82cxxx_audio.o
  ad1848.o cs46xx.o maestro3.o ymfpci.o
  ad1889.o emu10k1 rme96xx.o
  audigy es1370.o soundcore.o
  cmpci.o es1371.o sound.o

  结合前一篇所介绍的内容可以知道,系统在启动时会通过以下两个文件来加载模块 :
/etc/modules.conf 和/etc/rc.d/rc.sysinit,声卡也是在这里加载的。如果新安装了一块声卡,在 Red
Hat Linux 中则可以使用 kudzu 命令来搜索声卡,并且自动配置。如果系统中没有内置的驱动程序,则
可以按以下步骤来安装(以 VIA 的 8237 南桥集成声卡为例)。
  从 VIA 的网站 http://www.viaarena.com/?PageID=294 上下载最新的驱动程序
LinuxAudiov230.gz。
  解压缩:
  # tar xzvf LinuxAudiov230.gz
  编译 src.rpm 包:

开源 2008年第8期 46
知识学堂

  # rpmbuild --rebuild viaudiocombo-2.2-3.src.rpm

  如果没有 rpmbuild 命令则运行:


  # rpm --rebuild viaudiocombo-2.2-3.src.rpm

  # cd /usr/src/RPM/RPMS/iX86 //这里的 X-Window 根据机器情况而不同


  # rpm -ivh --force viaudiocombo-2.2-3.iX86.rpm //安装编译好的驱动程序

  Intel 主板的集成声卡一般使用的是 i810_audio.o 作为驱动,目前新版本 Linux 内置的驱动可以直接


支持。

Linux“万能声卡驱动”安装

  计算机中的声卡千差万别,除了 Intel、VIA 等大厂的声卡外,大多数声卡都没有专门写 Linux 下的


声卡驱动程序。那么怎样在 Linux 中使用找不到驱动程序的声卡呢?可以试一试 Linux 下的“万能声卡驱
动”,它可以驱动大量的声卡。

  目前主要有两种万能声卡驱动:一种是 ALSA(Advanced Linux Sound Architecture),它采用


GPL,针对 Linux 系统源代码公开,主页是 http://www.alsa-project.org/;另一种是 OSS(Open
Sound System),它是商用软件,针对主流 Unix 系统,Linux 也在它的支持之列,主页是
http://www.opensound.com/。

  1.安装 ALSA 驱动程序


  (1)查找声卡型号
  从 http://www.alsa-project.org/alsa-doc/处查找是否有使用的声卡型号,如果有则一定要从此处
点击后面“details”链接来查找安装方法。这里以安装创新 Soundblaster Audigy 声卡的驱动为例,其
它的声卡请查看 details 中的具体方法。

  在安装之前需要安装内核的源代码包,可以从 Red Hat 光盘上安装 kernel-sourceXXX.rpm 包,或


者从 kernel.org 网站上下载当前系统版本的源代码包。

  安装源码包:
  # rpm -ivh kernel-soureXXX.rpm
  或者
  # tar zxvf kernel-2.XXX.tar.gz
  # cd /usr/src/linux2.XXX/ //到源代码的目录中

开源 2008年第8期 47
知识学堂

  # cp /boot/config-2.XXX ./.config //将当前版本的内核配置文件拷贝至源码目录

  (2)下载驱动程序
  从 http://www.alsa-project.org/alsa/ftp/driver/下载驱动程序 alsa-dirver-1.0.6rc1.tar.bz2;从
http://www.alsa-project.org/alsa/ftp/lib/下载库文件 alsa-lib-1.0.6rc1.tar.bz2;从 http://www.alsa-
project.org/alsa/ftp/utils/下载工具 alsa-utils-1.0.6rc1.tar.bz2。

  (3)安装驱动
  # cd /usr/src
  # mkdir alsa
  # cd alsa
  # cp alsa* ./
  # tar -xjvf alsa-driver-1.0.6rc1.tar.bz2
  # cd alsa-driver-1.0.6rc1
  # ./configure --with-cards=emu10k1 --with-sequencer=yes;
  # make
  # make install
  # chmod a+rw /dev/dsp /dev/mixer /dev/sequencer /dev/midi

  安装 lib 包和 utils 包:


  # cd ..
  # tar -jxvf alsa-lib-1.0.6rc1.tar.bz2
  # cd alsa-lib-1.0.6rc1
  # ./configure
  # make
  # make install
  # cd ..
  # tar -jxvf alsa-utils-1.0.6rc1.tar.bz2
  # cd alsa-utils-1.0.6rc1
  # ./configure
  # make
  # make install

  (4)更改配置文件
  # vi /etc/modules.conf
  alias char-major-116 snd

开源 2008年第8期 48
知识学堂

   alias snd-card-0 snd-emu10k1


  # module options should go here
   alias char-major-14 soundcore
   alias sound-slot-0 snd-card-0
   alias sound-service-0-0 snd-mixer-oss
   alias sound-service-0-1 snd-seq-oss
   alias sound-service-0-3 snd-pcm-oss
   alias sound-service-0-8 snd-seq-oss
   alias sound-service-0-12 snd-pcm-oss

  但是,ALSA 驱动后的声卡默认是不发声的,可以用 ALSA mixer 来开启。直接运行以下命令可以全


部开启所有的音量:
  #./audunmute

  也可以使用以下命令来设置音量的大小:
  # amixer -c 0 sset 'Master',0 100%,100% unmute
  # amixer -c 0 sset 'PCM ',0 100% unmute

  可以编辑/etc/modules.conf 文件,添加如下一行让声卡每次启动时调整音量为 100%:


  post-install snd-card-0 amixer -c 0 sset 'Master',0 100%,100% unmute && amixer -c 0 sset
'PCM ',0 100% unmute

  2.设置 OSS 声卡驱动


  (1)从 http://www.opensound.com/download.cgi 选择下载 OSS 的版本,如针对 2.4 内核的驱动,
或者针对 2.6 内核的驱动。
  以下是 2.4 内核驱动的下载地址 ftp://www.se.opensound.com/pub/oss/linux/oss3991e-linux-
x86-v24.tar.gz。

  (2)安装驱动程序:
  # tar zxvf oss3991e-linux-x86-v24.tar.gz
  #./oss-install

  将会自动安装其中包含的驱动程序。安装驱动模块前,请使用命令 modprobe -r 或 rmmod 把原有


的驱动程序卸载。
  以上为 Linux 声卡驱动的大致安装过程。因为 Linux 下的声卡众多,不可能有一个固定的安装步骤,
但大致的步骤是,先编译出针对目前内核版本的驱动模块,然后再使用 insmod 或 modprobe 加载上去,

开源 2008年第8期 49
知识学堂

更多的是通过/etc/modules.conf 文件自动加载。理解/etc/modules.conf 文件很重要,这是大多数


Linux 系统加载模块的文件,有些 Linux 是/etc/conf.modules 文件。如果声卡是非即插即用的,可以在
/etc/modules.conf 文件中使用 options snd-card-0 io=0x300 irq=5 来设置 I/O 资源及中断号。

PC 的足迹(中)

Intel 开源软件技术中心 王齐

奔腾的心

  1993 年 3 月 22 日,一个全面超越 486 处理


器的 586 处理器面世,Intel 为了区别之前的 486
处 理 器 , 特 意 将 这 个 处 理 器 命 名 为
Pentium。Pentium 处理器有三个基本版本, 指令分支预测。拥有这些全新功能的 Pentium 处
P5、P54C 和 P55C 处理器。P5 处理器是 Intel 理器,其综合性能比之前的 486 处理器高得多。
第一个将指令 Cache 和数据 Cache 分离的处理 在 Pentium 处理器面世后,Microsoft 发布了最
P54C 处 理 器 实 现 了 Local APIC , 一 种 替 代 新一代操作系统 Win95。Win95 和 Pentium 处
8259A 的全新的中断控制器,P54C 处理器的前 理器使得 Wintel 组合步入黄金时代,一时间这个
端总线可以支持 2 个处理器;P55C 处理器支持 组合在 PC 领域,打遍天下无敌手。
MMX。除此之外 Pentium 处理器支持两个指令
流水线,分别是 u 流水线和 v 流水线,支持动态

AMDK5 处理器
Pentium 的照片

开源 2008年第8期 50
知识学堂

个对于 IA32 具有划时代意义的内核 P6。基于 P6


内核的第一个处理器 Pentium Pro 于 1995 年 11
月发布。如果说 386 处理器使 x86 处理器由原始
迈向文明,P6 内核使 x86 处理器从文明步入现代。
  P6 内核有三个版本,分别是 Klamath、
Deschutes 和 Katmai。
    Pentium Pro 和 早 期 的 Pentium II 使 用
Klamath 内 核 。 Pentium II 的 后 期 版 本 ,
Celeron Covington(赛扬一代,一个失败的处
理器),Celeron Mendocino(赛扬二代,一个
时 代 的 经 典 , 赛 扬 300A 可 以 轻 松 超 频 到
450MHz)、First Xeon(志强一代 Pentium II
Xeon ) 、 Celeron Dixon ( Mobile Pentium
AMD K6 处理器
II ) 使 用 Deschutes 内 核 。 Pentium
  AMD 迅速做出回应,在 1994 年 AMD 在微
III、Pentium III Coppermine、Xeon Tanner 和
处理器技术论坛年会上展示了 AMD 未来最新的
Xeon Cascades 使用 Katmai 内核。这些内核优
产品 K5 处理器,计划中的这颗处理器比同主频
点多多,一代更比一代强。
的 Pentium,其性能高出 30%。但 AMD 的 K5
  与 Pentium 相比,Pentium Pro 内核做出了
计划却一波三折,产品迟迟无法面世,直到 1996
极大的变化。Pentium Pro 内核的出现几乎终结
年 3 月,这颗处理器才正式发布。AMD 也在这
了 CISC 和 RISC 孰优孰劣的争论。x86 处理器一
一年遭受了巨大的打击,第一次解雇了大约 450
直使用 CISC 指令集,CISC 指令集最大的问题是
名员工。
指令的不对等。这种不对等的指令造成指令流水
  直到 1997 年 4 月推出 K6 处理器后,AMD
线的不对等,Pentium 处理器 u、v 流水线的不
才扭转颓势,在此之前 AMD 的处理器技术一直
对等正是源自于此。不对等的指令流水会影响系
落后于 Intel,只是靠着低价策略维持着较低的市
统负载均衡,导致流水线利用率较低。
场占有率。K6 处理器的推出是 AMD 公司的一个
里程碑,这颗被评论家称为“AMD 有史以来最好
的,最强大的,最具战略性的产品”从某种程度
上说挽救了 AMD,从这以后 AMD 才有资格在设
计能力上和 Intel 一较高下。随后 AMD 发布了一
系列基于 K6 内核的处理器,包括 K6,K6 II,K6
II+,K6 III 和 K6 III+几个子系列,几十种处理器。
据 AMD 称,从内核效率的角度上来说,K6 与同
主频的 Pentium II 性能相当,而 Pentium II 的发
布时间却是 1997 年 5 月 7 日。
  在 AMD 发布 K6 处理器之前,Intel 推出一
Pentium Pro

开源 2008年第8期 51
知识学堂

  从 Pentium Pro 处理器开始,IA32 处理器 再也不能无视 AMD 在 PC 领域上的成就,一场


不再执行复杂的多字节的 IA32 指令,处理器的译 CPU 主频的竞争徐徐拉开帷幕。
码逻辑将 IA32 指令分离为长度固定的指令原语
μops。虽然处理器的指令还是 CISC,但是在指 生死时速
令 流 水 中 运 行 的 却 是 标 准 的 RISC 指 令 — —
μops。Pentium Pro 的这些革新,使其可以使用   “你 CPU 现在的频率是多少?是否需要升级?
在 RISC 实现已久的 Superscaler 机制和乱序执行, ”,中关村的每一个摊位都在向行人兜售着手中
这 也 是 有 人 戏 称 Pentium Pro 处 理 器 是 披 着 的处理器。“现在还不想升级,因为 Pentium IV
CISC 外衣的 RISC 机的主要原因。 马上就要问世,我这次可要一步到位”,路过的
  P6 的后续处理器,如 Pentium II,Pentium 一个行人不屑地回答着。
III 在 Pentium Pro 的基础上进行了许多改进。如   “这样设计的处理器效果可能不好,我的研
Pentium II 处 理 器 增 强 了 电 源 管 理 功 能 , 将 究人员还没有完成最终的量化分析,可能这样的
PAE36 替换为 PSE36,FSB 总线协议从 GTL 省级 处理器对某些计算密集的课题有帮助,但是我们
为 GTL+,增加了 SYSENTER 和 SYSEXIT 指令加 的客户不一定需要这样的处理器…”,Intel 的一
快 系 统 调 用 的 处 理 ; 而 Pentium III 又 在 位总设计师的话还没有说完。
Pentium II 处 理 器 的 基 础 上 , 将 MMX 升 级 为   “我的部下天天都在和各类客户打交道,客
SSE,生产工艺也一直再提高。但是这些变化远 户需要的是什么我们比你们这些闭门造车的人清
没 有 Pentium 到 Pentium Pro 这 次 变 化 大 。 楚得多。主频,客户需要的是主频。失去这个制
Intel 的 P6 处理器取得了商业上的成功,但是这 高点,Intel 将失去全部”,Intel 一位资深市场
种商业上的成功并不意味着技术的绝对领先。 总裁高亢的声音刺破云霄,全场鸦雀无声。
  AMD 一直在努力。K6 内核的成功使 AMD   Pentium IV 处理器被迅速催熟。2000 年 11
在 PC 处理器市场站稳脚跟,而之后的 K6 II,K6 月 20 日,Pentium IV 问世,最高主频为
III 内核不断对 Intel 的 P6 内核穷追猛打。这些处 1.5GHz,一举超越之前所有 PC 处理器的主频。
理器以较高的性能价格比不断蚕食着 Intel 的市场, 这颗处理器使用 Netburst 构架,为了提高处理
而在这个过程中 Intel 力推的 RDRAM 并不被市 器的主频,Pentium IV 将指令流水线从 Pentium
场接受,加上 i820 芯片组的严重缺陷,使得在这 III 的 10 级扩大到了 20 级。这种流水线级数的提
一时间段里 AMD 活得相当好。
  AMD 没有满足 K6 的成就,于 1999 年 6 月
23 日,推出 K7 处理器,并将之命名为 Athlon,
中文名为速龙。K7 处理器将前端总线的速度提高
到 200MHz,并在 2000 年 3 月 6 日,率先推出
1GHz 的 Athlon(基于 K75 核心)。这是有史以
来 AMD 处理器的主频第一次超过 Intel 的处理器。
在同年 6 月,AMD 连续推出 Thunderbird 和
Duron 处理器。至此 AMD 在中高低端处理器领
域都具有和 Intel 直接对话的能力。此时的 Intel Pentium IV

开源 2008年第8期 52
知识学堂

高有利于处理器频率的提升,在处理器中如果一 是 Pentium IV 指令流水可以直接使用的指令;


条指令的执行需要 10ns 完成,如果将这条指令 增加了 BTS(Branch Trace Store)逻辑,处理
的执行分为 10 步完成,处理器的主频为 1GHz, 器最后一个转移指令、中断和异常可以记录在这
如果将这条指令的执行分为 20 步完成,处理器的 里;使用硬件实现数据预取;使用前端总线传递
主频就可以达到 2GHz。 中断信息而不是之前的 3-wire 的 APIC 总线;并
  Pentium IV 后期使用的 Prescott 内核的指 在前端总线上增加了 BTB(Branch Target
令流水线已经达到了 31 级,Pentium IV 处理器 Buffer)。
也 开 始 不 断 刷 新 PC 处 理 器 主 频 的 记 录 ,
Pentium IV 发布时的最高频率是 1.5GHZ;2001
年 8 月 27 日 Intel 将 这 一 记 录 提 高 到 了
2.0GHz;2002 年 1 月 7 日,这个值为 2.2GHz;
2002 年 4 月 2 日是 2.4GHz;2002 年 11 月 14
日,Pentium IV 3.06GHz 发布,Intel 在这个产
品中第一次引入了超线程技术;到了 Pentium IV
时 代 的 后 期 , 号 称 为 Extreme Edition 的
Pentium IV 将主频提高到了 3.8GHz。后来更有
位来自日本的超级玩家,将 Pentium IV 主频的
记录提高到令人恐怖的 7132.82MHz。
  Pentium IV 主频的提高并没有与性能的提升
AMD athlon
成正比,而是呈一个底数相当大的对数增长。虽
  这些新增的功能足以证明 Pentium IV 确实
然 Intel 一再强调 Pentium IV 比 Pentium III 快
使用了有别于 Pentium III 的技术,只是这些技
得多,但是许多测试结果显示 Pentium IV 除了
在某些视频、音频等一些多媒体应用有不俗的表
现外,在其他的大部分应用中其得分不如
Athlon,甚至不如 Pentium III。
  Pentium IV 过长的流水线很容易被打断,一
条预测不成功的转移指令,外部中断事件和异常
处理都可以打断指令流水的执行。打断指令流水
线、清空指令流水线的代价对于 Pentium IV 显
得过于昂贵,因为 Pentium IV 的流水线太长了。
  流水线性能将直接影响处理器的性能,Intel
天才的工程师们耗尽了脑汁增加了一项又一项功
能,提高指令流水的效率。
  Pentium IV 中没有 L1 指令 Cache,而是使
用了 TC(Trace Cache),在这个 TC 中不是直 AMD Athlon X2
接存储 IA32 的指令,而是 μops,因为 μops 才 术再多也弥补不了体系结构上的缺陷。在主频与

开源 2008年第8期 53
知识学堂

效率呈对数增长,与功耗呈指数增长的大前提下,     怎 样 的 赞 誉 对 Sanders 都 是 不 够 的
功能上的增强显得苍白无力。 Sanders 和他的 AMD 的故事是最可怕,也是最
  在这段时间里,AMD 主要以 Athlon XP 系 英勇的。Sanders 年复一年,顽强挑战这个星球
列处理器对抗 Pentium IV,Athlon XP 系列处理 上最成功、最有竞争力的公司 Intel,在挑战的几
器是 AMD 历史上跨时最长,影响最大的一代处 十年来,AMD 一直在英特尔的巨人影子下挣扎
理器。2001 年 10 月,AMD 使用 Palomino 内 与生存,其产品虽不乏亮点,却也必须在 90%以
核的第一代 Athlon XP 处理器面世,2002 年 4 上的时间里忍受着失败的无奈与孤独。但是无论
月 和 2003 年 1 月 , AMD 陆 续 推 出 基 于 在任何时候,Sanders 都没有向这个最强大的公
Thoroughbred 内核和 Barton 内核的第二、第 司低头,时刻没有忘记反击。
三代 Athlon XP 处理器。   不懈的努力取得了回报。2003 年 4 月 23 日,
    Athlon XP 处 理 器 率 先 使 用 了 PR AMD 发 布 了 基 于 x86-64 ( 后 来 改 名 为
(Performance Rate)值标定处理器而不是直接 AMD64)技术的 Opteron 处理器,这是世界上
使用主频,如 Athlon XP 2000+处理器的主频是 首款真正兼容 IA32 指令集的 64 位 PC 处理器。
1.67GHz,而其与 Pentium IV 2.0G 的性能相当。 在此时,64 位处理器的竞争早已进入白热化阶段。
PR 值的提出实际上是 AMD 的不得已,从主频的 1991 年 MIPS 推 出 第 一 个 商 用 64 位 处 理 器
提升速度上看,AMD 的 Athlon XP 无法和 Intel R4000;DEC 在 1992 年 3 月推出 Alpha21064
的 Pentium IV 抗衡。不过 AMD 的 PR 标定有些 处 理 器 ; 1995 年 Sun 推 出 了 64 位 的
保守,许多 Benchmark 程序的结果显示 AMD 的 UltraSPARC 处理器;IBM 也在 1998 年发布了
PR 标定值超过实际值,Athlon XP 2000+的实 64 位的 RS64-II 处理器,但这些 64 位处理器都
际性能超过了 Pentium IV 2.0G。 是针对服务器平台。
  PR 值的出现,使客户逐渐认识到高频未必意   Itanium
味着高能,但是在 Intel 巨大的市场营销能力和前
期产品优势明显的巨大惯性作用下,多数客户认
为 Pentium IV 可能并不完美,但至少比 AMD 的
Athlon XP 稍微强些。AMD 在无奈中选择等待。

铩羽而归

    2001 年 2 月 15 日 , AMD 宣 布 , Jerry


Sanders 将于 2002 年 4 月辞去 CEO 的职位,但
仍 保 留 董 事 会 主 席 一 职 , Hector Ruiz 将 接 任
CEO 职位。这一消息震惊整个世界,全球媒体和
网站的头条和热点新闻都让位给这一消息。人们
用各样的语言赞美他,有人称他为“梦幻的领袖
”,有人称他为“硅谷最后一个牛仔”,“IT 界
最后一个硬汉”。

开源 2008年第8期 54
知识学堂

第一个基于 x86 架构的 64 位处理器是 Intel 的 理器频率,具体地讲就是编译器需要对指令标注


Itanium 系列处理器。Itanium 处理器的构架最 某种标签,处理器通过这些标签来判断先后指令
初由 HP 提出,后来 HP 邀请 Intel 加入,并共同 的相关性,而不是像 RISC 处理器使用纯硬件逻辑
在 1994 年发布 IA64 的开发日程,Itanium 的名 完成这些工作,也不像 VLIW 处理器使用编译器
称源自 Itanic,即 Titanic 去掉字首“T”,后来 完成这些工作,从而在简化硬件逻辑的同时提高
Itanium 的发展历程又一次证明了“Titanic”这 了指令的并行度。但是在处理器发展过程中,任
个词是一个魔咒。 何一个新技术都不能背离当时的技术发展水平和
  1999 年 6 月,英特尔公司在微处理器论坛上 市场需求,任何一种背离都将最终导致一场灾难。
宣布推出 IA64 指令集架构,IA64 指令集与 IA32     2001 年 5 月 , 第 一 款 基 于 安 腾 处 理 器
指令集在理论上兼容。与此同时,AMD 宣布了 (Itanium)的服务器惠普 RX9610 面市。安腾
x86-64 指令集,构建“Sledgehammer”处理 发布时的欢呼雀跃与惨淡的销售额成为鲜明的对
器,这个处理器能够运行之前所有 32 位应用程序。 比,到 2001 年底安腾的总销量不到 1000 台,而
后来有分析家认为,这一刻决定了 IA64 处理器的 在整个 2002 年安腾也只销售了 3500 台。
命运,实际上这一结果早在 Intel 和 HP 决定使用   安腾的 EPIC 构架决定了以前基于 IA32 构架
EPIC 构架时就已经种下。 的程序不经过编译器的重新编译不会取得较高的
    EPIC 是 Explicitly Parallel Instruction 效率,绝大多数测试表明 IA32 的应用程序直接在
Computing 的 缩 写 , 即 显 式 并 行 指 令 计 算 。 安腾上运行的效果远不如在 IA32 构架的处理器上
EPIC 构架与 RISC 和 CISC 构架有较大的不同,和 运行,即使 Intel 后来专门为 Itanium 定做的 32
VLIW( Very Long Instruction Word )构 架有 位模拟器也远弥补不了体系结构上的问题。而
些类似。有关 EPIC、RISC 和 VLIW 构架问题的 Intel 也不可能将所有基于 IA32 的应用都移植到
研究可以专门写一本书另行讨论。这里可以肯定 安腾平台上。这颗本是所有 RISC 芯片终结者的处
的是 EPIC 构架的提出丰富了计算机体系结构,这 理器,却被 AMD 的 x86-64 抄了后路。
是一次技术层面上一次大胆的创新。事实证明   最初,AMD 高调发布的 Opteron 处理器并
EPIC 确实是一种提高指令流水线效率的有效方法。 没有得到热捧,Opteron 在中国的发布会甚至没
RISC 处理器使用 Superscaler 技术在一个周 有什么像样的厂商参加,与安腾发布相比,
期内发射执行多条指令,由硬件判断指令的依赖 Opteron 只恨自己的名字前面是 AMD 三个字母。
关系并允许乱序执行,由硬件来提高指令的并行 不同开局给 Intel 和 AMD 带来截然相反的命运。
度,目前采用这种技术的处理器比比皆是;而 Itanium 的 EPIC 太超前了,超前到了当时没有合
VLIW 将这些工作交给编译器来完成,并由编译 适的软件能够高效的运行在 Itanium 之上。尽管
器将能够并发执行的指令合并为一个超长指令, 炫耀 Itanium 处理器如何先进的文档摞起来比姚
一次并发执行,目前 TI 的 6 系列的 DSP 使用了 明还高,也改变不了英雄无用武之地的命运 。
这种技术,采用这种技术的优点是简化了指令流 Opteron 处理器仅凭向下兼容已有的 32 位应用
水线设计的复杂性,处理器可以因此获得更高的 这一条,就在商业上打败了不可一世的
频率,更多的执行部件。EPIC 是这两种技术的结 Itanium。
合,使用编译器和处理器协同提高指令的并行度,   2004 年第二季度 Opteron 处理器的销量是
以此简化处理器指令流水的设计,获得更高的处 Itanium 的 十 倍 。 IBM 和 SUN 宣 布 支 持

开源 2008年第8期 55
知识学堂

Opteron,更糟糕的是连昔日 Itanium 的缔造者 资源,来处理这些 CISC 指令。而 Intel 的工程师


HP 也宣布推出基于 AMD 的 64 位服务器。发布 偏偏绕不过这些,偏偏天天都要面对这些不完美。
时风光无限的 Itanium 不得不低下高傲的头,成 真的天才有几人愿意天天直面世上的不完美。
为继 PowerPC 处理器之后又一个“封闭式系统 尽管 Intel 没有公开承认,但在大多数人眼中,安
”。 腾,这个耗资 20 亿美金,浸透着无数天才心血,
  Intel 实际上是自己打败了 Itanium,向下兼 带给处理器史上一次伟大革新的产品,离我们愈
容对于 Intel 天才的工程师们实在是一个过于沉重 走愈远。看着安腾的背影,心中想的只有老子在
的负担。一条 CISC 指令非要首先分解为等长的 两千年前说过的“治大国如烹小鲜”。
μops 才能进入指令流水,为了解决这个问题
Pentium IV 连 L1 指令 Cache 都替换成了 TC,   敬请期待下期 PC 的足迹(下)完结篇:
即便这样处理器还是需要提供额外的机器周期, 真假双核、酝酿的反击和多核时代等章节。
使用一些额外的流水线节拍,牺牲本不该牺牲的

开源 2008年第8期 56
经验技巧

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

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

1121 让 fedora 开机后自动 login

  1 rpm -ihv autologin-1.0.0-7mdk.i586 rpm


  2 建立文件 /etc/sysconfig/autologin
  在里面加上一行.
  USER = root

1122 如何配置让哪些服务启动

  1 运行 ntsysv 或者 setup 命令,进入菜单进行配置;


  2 chkconfig --list 显示服务
  chkconfig name on/off 打开/关闭“name”服务

1123 安全删除 linux

  步骤 1 dos 下使用 fdisk /mbr 或者用 win2000/xp 的光盘启动进入故障恢复控制台,使用命令


fixmbr
  步骤 2 格式化 linux 分区为 windows 分区即可

1124 用 grub 引导进文本界面

  进入 grub 之后,按 a,输入 空格 3 就可以引导进入文本界面,但是不修改系统的运行级,只在当

开源 2008年第8期 57
经验技巧

次有效
1125 先测试 patch 是否运行正常,暂不将更改应用到 kernel

  patch --dry-run

1126 redhat 和 debian 上的软件安装卸载用法

  卸载一个软件包:
  rpm -e <package-name>
  dpkg -r <package-name>
  显示一个软件包的内容:
  rpm -qvl <package-name.rpm>
  dpkg -c <package-name.deb>
  显示所有已经安装的软件包:
  rpm -qvia
  dpkg -l
  打印一个包的信息:
  rpm -qpi <package-name.rpm>
  dpkg -I <package-name.deb>
  检验包 characteristics:
  rpm -Va
  debsums -a
  检验一个文件属于哪个包:
  rpm -qf </path/to/file>
  dpkg -S </path/to/file>
  安装新软件包:
  rpm -Uvh <package-name.rpm>
  dpkg -i <package-name.deb>

1127 强制新用户首次登陆后修改密码

  #useradd -p '' testuser; chage -d 0 testuser

1128 日志维护工具 logrotate

  在/etc/logrotate.conf 中配置,定义 log 文件达到预定的大小或时间时,自动压缩 log 文件

开源 2008年第8期 58
经验技巧

1129 Linux 中默认的管理员叫什么

  root

1130 如何产生一个长度固定(例如文件长度为 1M)字节的空文件,即每个字节的值全为 0x00

  dd if=/dev/zero of=/tmp/zero_file bs=1024 count=1024

1131 查看某文件的一部分

  如果你只想看文件的前 5 行,可以使用 head 命令,


  如:head -5 /etc/passwd
  如果你想查看文件的后 10 行,可以使用 tail 命令,
  如:tail -10 /etc/passwd
  你知道怎么查看文件中间一段吗?你可以使用 sed 命令
  如:sed –n '5,10p' /etc/passwd 这样你就可以只查看文件的第 5 行到第 10 行。

1132 查找当前目录下文件并更改扩展名

  更改所有.ss 文件为.aa
  # find ./ -name "*.ss" -exec rename .ss .aa '{}' \;

1133 patch 的使用

  语法是 patch [options] [originalfile] [patchfile]


  例如:
  patch -p[num] <patchfile
  -p 参数决定了是否使用读出的源文件名的前缀目录信息,不提供-p 参数,则忽略所有目录信息,-
p0 ( 或 者 -p 0 ) 表 示 使 用 全 部 的 路 径 信 息 , -p1 将 忽 略 第 一 个 "/" 以 前 的 目 录 , 依 此 类 推 。
如/usr/src/linux-2.4.16/Makefile 这样的文件名,在提供-p3 参数时将使用 linux-2.4.16/Makefile 作为
所要 patch 的文件。
  对于刚才举的 Linux 内核源码 2.4.16 升级包的例子,假定源码目录位于/usr/src/linux 中,则在当前
目录为/usr/src 时使用"patch -p0 <patch-2.4.16"可以工作,在当前目录为/usr/src/linux 时,"patch -
p1<patch-2.4.16"也可以正常工作

开源 2008年第8期 59
经验技巧

1134 将 file.txt 里的 123 改为 456

  方法 1
  sed 's/123/456/g' file.txt > file.txt.new
  mv -f file.txt.new file.txt

  方法 2
  vi file.txt
  输入命令:
  :%s/123/456/g

1135 将一个分区格式化为 ext3 日志文件系统

  mkfs -j /dev/xxxx

1136 开启硬盘 ATA66

  /sbin/hdparm -d1 -X68 -c3 -m16 /dev/had

1137 查看当前运行级别

  runlevel

1138 查看当前登陆身份

  1 who am i
  2 whoami
  3 id
  注意 1 跟 2 的小区别

1139 删除 rpm -e 删除不了的包

  1、如果在删除包之前删除了包的目录
  rpm -e --noscripts
  2、如果系统里一个包被装两次(由于某些异常引起的)

开源 2008年第8期 60
经验技巧

  rpm -e multi-installed-pkgs –allmatches


1140 如何定制用户登录时显示的信息

  在/etc 目录下放一个名字叫 motd 的文本文件实现的,例如,建立自己的/etc/motd:


  $cat /etc/motd
  welcome to my server !
  那么,当用户登录系统的时候会出现这样的信息:
  Last login: Thu Mar 23 15:45:43 from *.*.*.*
  welcome to my server

编写包含图形界面的 shell 脚本:Zenity 介绍

高延斌

  Linux 作为桌面系统正在越来越多的受人关注。为了改善用户体验,很多的程序员付出了大量的努力,
不只是为了让普通用户得到更容易从 Windows 上迁移到 Linux 上,同时也为传统的系统管理员提供了更
多的方便。

  系统管理员通常需要在命令行上完成两类任务:批处理任务和交互式任务。相信熟悉 shell 编程的朋


友都不会对前一种方式感到陌生。对于后一种方式,如何能够提供命令的执行效率,让交互更方便和顺
畅是最重要的。随之产生的就是一些基于对话的交互方式,比如 dialog 命令:

  dialog --menu TestDialog 0 0 5 1 Menuitem1 2 Menuitem2

  可以产生如下的对话框:

图1

开源 2008年第8期 61
经验技巧

  通过这些简单的基于文本的对话框,我们获得了与程序基本的交互的能力。当图形界面被引入之后,
我们有了各种更好的选择,比如 Xdialog, gdialog 和 Kdialog,分别是基于 X.org, Gtk+和 KDE 的图形
对话框。使用的方法也和 dialog 命令大同小异。比如以下 Kdialog 的例子:

  kdialog --title "ACAP entry" --password "Please enter the server access code:"

  会产生一个询问密码的对话框:

图2

  这里要为大家介绍的是 Zenity,是基于 Gtk 的一个对话框工具,可以很方便的应用于 shell 脚本之中,


并提供更方便的交互方式。比如你希望在脚本中输入一个日期作为参数,可以你有很多的脚本,这次应
该用什么格式输入呢?MMDDYY?还是 dd-mm-yyyy?而使用 Zenity 可以让你更轻松的选择:

图3

开源 2008年第8期 62
经验技巧

  #zenity –calendar –date-format=%d-%m-%Y

  选中的日期将以“%d-%m-%Y”的格式返回,和 date 命令对日期格式的定义是一样的:


“04-08-2008”

  下面我们用一个示例脚本来演示一下 zenity 的用法:

#!/bin/bash

FINDLOG="Find MyApp log files"


ADDUSER="Add a new user"
CONHOST="Connect to a remote host"

function findlog
{
DATESEL=`zenity --calendar --title="Select a day" --text="To view the log files of 'My App'
updated in a single day, please select a date" --date
-format=%m-%d-%Y`
zenity --text-info --title="myapp-$DATESEL.log" --filename="myapp-$DATESEL.log"
}

function adduser1
{
USERNAME=`zenity --entry --text="Please input user name:" --title "Input User Name"`
PASSWORD1=`zenity --entry --text="Please input passoword:" --title "Input Password" --
hide-text`
PASSWORD2=`zenity --entry --text="Please input passoword again:" --title "Input
Password" --hide-text`
while [ "$PASSWORD1" != "$PASSWORD2" ]
do
zenity --error --text="Passwords do not match"
PASSWORD1=`zenity --entry --text="Please input passoword:" --title "Input
Password" --hide-text`
PASSWORD2=`zenity --entry --text="Please input passoword again:" --title "Input
Password" --hide-text`

开源 2008年第8期 63
经验技巧

Done
ENCRYPTEDPASSWORD=`echo $PASSWORD | makepasswd –clear-form=- --crypt | awk
‘{print $2}’`
useradd $USERNAME –p $ENCRYPTEDPASSWORD
}

function conhost
{
HOSTSEL=`zenity --list --editable --separator="@" --print-column=ALL --title "Host
Selection" --column Host --column User Toast root`
ssh ${HOSTSEL#*@}@${HOSTSEL%@*}
}

############################
#
# 主程序
#
###########################

# zenity --info --title="Zenity Demo" --text="Press Enter to start the demo program of Zenity"

export SELECTION=`zenity --list --radiolist --title="Command Center" --text="Select the


operation you want to perform" --column "" --column "Command" Tru
e "$FINDLOG" False "$ADDUSER" False "$CONHOST"`

if [ -z "$SELECTION" ]
then
exit 0
fi

if [ "$SELECTION" = "$FINDLOG" ]
then
findlog
elif [ "$SELECTION" = "$ADDUSER" ]
then
adduser1

开源 2008年第8期 64
经验技巧

elif [ "$SELECTION" = "$CONHOST" ]


then
conhost
fi
  这段代码做了几件简单的事情。首先主程序部分(见注释)是一个由 zenity 生成的列表,用来让用
户选择最常用的几个功能:

图4
  这个是一个用到了 Zenity 提供的 List 功能。注意,缺省情况下这个对话框的返回值是被选中行的第
一列的值,但是因为第一列被设置成了 Radiobox,所以返回的是第二列的值。如果希望多选的话,可以
使用—check-list 选项。
  选择了希望执行的操作之后,就会转到对应的 shell 函数。这个脚本提供了三个功能,搜索某一个应
用程序在某一天的日志文件,添加一个新用户和用 SSH 连接到另一个主机。
我们先来看一下第一个功能。这个功能需要的输入是一个日期,然后查找名字为“MyApp-日期.log”的
日志文件。

图5

开源 2008年第8期 65
经验技巧

  需要的只是选择一个日期。
  第二个功能是添加一个用户。需要输入需要添加的系统用户的名字:

图6

  输入用户名之后,需要输入两次用户的密码。因为使用了—hide-text 选项,用户输入的字符都被显
示成“*”。

图7
 
  如果两次输入不一致,会被要求重新输入。

图8

  如果输入正确,那么一个系统用户将被成功添加。

  第三个功能是连接一个远端的主机。这次仍然是使用 List,但是没有使用 Radio List,所以可以通过


点击一行任何一个位置来选择:

开源 2008年第8期 66
经验技巧

图9

  这两个参数:--separator="@" --print-column=ALL 的作用是返回 Toast@root 这样格式的字符


串,这个显然不符合 SSH 的要求,所以用 bash 的字符串替换功能来处理一下再作为 SSH 的参数:ssh $
{HOSTSEL#*@}@${HOSTSEL%@*}
  上面就是对这个脚本的简单解释,只是一个示例,在实际的工作中,zenity 还可以提供更多的能力
来帮助大家写出更易用和强大的脚本来。

作者介绍:IBM 中国开发中心 Lotus Notes 产品开发经理。2000 年开始在 IBM


公司工作,分别在 WebSphere 和 WPLC 部门担任工程师,项目组长和部门经
理。从 2000 开始接触 Linux 和其它开源软件,一直关注开源社区和开源软件的
发展,Linuxpk.com 和 Chinaunix.net 的 Linux 版的版主。

开源 2008年第8期 67
经验技巧

如何在 Linux 操作系统中收看奥运直播

作者:Stuff
翻译:小老鼠杰利

  似乎频道列表离线了,也许是由于 1000 掘客用户同时试图获取流媒体的缘故。我正尝试收集


sopcast 的非其他站点的频道 URL。很快将要升级了。如果你知道一个可用的奥运流媒体的 sopcast 的
URL,请反馈给我们。

  以下是你如何能够在 Linux 上收看奥运会的现场直播。


  提示:你也可以在 Windows 下用 sopcast 看奥运会,但是由于我不用它所以这里我不会讨论
Windows 下的 sopcast。

  第一步:获得 VLC

  Ubuntu:

  sudo apt-get install vlc

  其他发行版:登录 http://www.videolan.org/vlc/

  第二步:获得 sopcast,把它解压到自己的文件夹

  wget http://download.sopcast.cn/download/sp-auth.tgz
  tar xvzf sp-auth.tgz
  cd sp-auth

  第三步:连接 p2p 的 sopcast 的流媒体

  方法:

  ./sp-sc-auth sop://[sopcasturl] [shareport] [streamport] > /dev/null &

开源 2008年第8期 68
经验技巧

  流媒体列表:http://www.sopcast.org/channel/

  XML 格式的所有列表:http://www.sopcast.com/chlist.xml

  Google 上有更多流媒体。

  提示:并非所有流媒体都有视频。

  提示 2:如果 sp-auth 反馈出一个错误,你也许需要下载 stdc++5 库

  链接:http://www.sopcast.com/download/libstdcpp5.tgz

  示例:
  ./sp-sc-auth sop://broker1.sopcast.com:3912/48606 3904 8904 > /dev/null &

  第四步:启动 VLC

  打开网络流媒体:http://localhost:[streamport]/tv.asf

  提示:在它允许你连接流媒体之前也许你不得不等待 20 秒左右。

打开 VLC
播放效果 

开源 2008年第8期 69
经验技巧

如何给 Grub 加密码

MySQL 中文网 叶金荣

  目的是为了防止他人修改 grub,用单用户模式启动。
  grub 加密码只需要修改 grub 启动文件,增加一行 password 关键字,可以采用明文存储或者
MD5 加密后存储。下面我们介绍一下用 MD5 加密的方式。

  1、先用 /sbin/grub-md5-crypt 产生一个 MD5 密码串

  /sbin/grub-md5-crypt
  Password:
  Retype password:
  $1$oWpTe$/MWUUYbBlF.2RUZK8nbWU0

  原始密码是 "abc"。

  2、修改 grub.conf 文件

  default=0
  timeout=5
  splashimage=(hd0,0)/boot/grub/splash.xpm.gz
  hiddenmenu
  password --md5 $1$oWpTe$/MWUUYbBlF.2RUZK8nbWU0
  title Red Hat Enterprise Linux AS (2.6.x-xx.EL)
  .........

  这里要注意, password 这样必须加在 splashimage 和 title 之间这段,否则不能生效。


  然后重启机器,就会发现想要修改 grub 菜单,就必须要先按 P 然后输入正确的密码才可以继续了。

  再附上一个用 sed 修改 grub.conf 方法,可以利用这个方法批量修改所有的服务器。

  GRUB=/boot/grub/grub.conf
  TEMP=/tmp/grub.conf

开源 2008年第8期 70
经验技巧

  grep -v password $GRUB && cat $TEMP | sed -e 's/hiddenmenu/hiddenmenu\npassword --


md5 \$1\$oWpTe\$\/MWUUYbBlF.2RUZK8nbWU0/g' > $GRUB

Linux 系统下光驱软开关与限速
  一、光驱的软开关:

  eject -r cdrom ##弹开指定光驱设备的仓门

  弹开指定光驱设备的仓门,如只有一个光驱,直接用 eject 就可,如有两个光驱设备根据/dev/下设


备文件来指定设备,如我的机器上还有一 台 COMBO CDROM,设备文件为/dev/cdrom1,要用 eject
-r cdrom1 来执行。

  关上仓门用-t 的参数,如关上我的 COMBO 就用以下命令:

  eject -t -r cdrom1 ##关上仓门用-t 的参数

  并且有 eject 还有个好处就是可以自动将光驱挂上文件系统,弹出时也自动卸下文件系统。

  二、光驱的限速:

  eject -x n cdrom ##制定光驱速率为 n

  n 为最大的倍速。在实际使用中 n 要大于等于 4,对上限没有限制。

  eject 还附一小软件 volname,用来读取光盘的的名称,用法:,如果你的 Linux 没有 X-


Windows,在 TEXT 模式下可以方便地知道光盘的 volume。

  volname /dev/cdrom

  提示:汉字文件名的问题。如用 eject 挂上的光驱文件系统,光盘上如有汉字的文件名会都是“??”,


经 查 看 eject 的 源 代 码 , 发 现 是 调 用 /etc /fstab 这 个 文 件 中 的 设 置 来 挂 设 文 件 系 统 的 , 只 要 将
iocharset=gb2312,codepage=936 加到/dev/cdrom 这一行的倒数第三列,重新用 eject 来挂接光盘,
你会发现已经能正确显示汉字文件名了。

开源 2008年第8期 71
经验技巧

修改 Linux 下 22 端口方法介绍
  第一种方法:

  01 假如要改 SSH 的默认端口(22),那么你只要修改:/etc/ssh/sshd_config 中 Port 22,这里把


22 改成自己要设的端口就行了,不过千万别设和现已有的端口相同哦,以防造成未知后果。

  02 假如要限制 SSH 登陆的 IP,那么可以如下做:

  先:修改/etc/hosts.deny,在其中加入 sshd:ALL

  然后:修改:/etc/hosts.allow,在其中进行如下设置:sshd:192.168.0.241

  这样就可以限制只有 192.168.0.241 的 IP 通过 SSH 登陆上 LINUX 机器了。当然在做为服务器方面,


我都不装 gnome 和 KDE 的,而且很多东东都不装,这样增加安全系数。

  第二种方法:

  首先修改配置文件

  vi /etc/ssh/sshd_config

  找到#Port 22 一段,这里是标识默认使用 22 端口,修改为如下:

  Port 22

  Port 50000

  然后保存退出

  执行/etc/init.d/sshd restart

  这样 SSH 端口将同时工作与 22 和 50000 上。

  现在编辑防火墙配置:vi /etc/sysconfig/iptables

开源 2008年第8期 72
经验技巧

  启用 50000 端口。

  执行/etc/init.d/iptables restart

  现在请使用 ssh 工具连接 50000 端口,来测试是否成功。如果连接成功了,则再次编辑


sshd_config 的设置,将里边的 Port22 删除,即可。

  之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改 conf 的过程中,万一出


现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试以免发生连接不上必须派
人去机房,导致问题更加复杂麻烦。

有关加强 Linux 安全的配置说明


  众所周知,网络安全是一个非常重要的课题,而服务器是网络安全中最关键的环节。Linux 被认为是
一个比较安全的 Internet 服务器,作为一种开放源代码操作系统,一旦 Linux 系统中发现有安全漏洞,
Internet 上来自世界各地的志愿者会踊跃修补它。然而,系统管理员往往不能及时地得到信息并进行更
正,这就给黑客以可乘之机。相对于这些系统本身的安全漏洞,更多的安全问题是由不当的配置造成的,
可以通过适当的配置来防止。下面就简单列出以下几点,以供大家参考:

  1、用防火墙关闭不须要的任何端口,别人 PING 不到服务器,威胁自然减少了一大半。

  防止别人 ping 的方法:

  1)命令提示符下打

  echo 1 > /proc/sys/net/ipv4/icmp_ignore_all

  2)用防火墙禁止(或丢弃)icmp 包

  iptables -A INPUT -p icmp -j DROP

  3)对所有用 ICMP 通讯的包不予响应

  比如 PING TRACERT

开源 2008年第8期 73
经验技巧

2、更改 SSH 端口,最好改为 10000 以上,别人扫描到端口的机率也会下降

  vi /etc/ssh/sshd_config

  将 PORT 改为 1000 以上端口

  同时,创建一个普通登录用户,并取消直接 root 登录

  useradd 'username'

  passwd 'username'

  vi /etc/ssh/sshd_config

  在最后添加如下一句:

  PermitRootLogin no #取消 root 直接远程登录

  3、删除系统臃肿多余的账号: userdel adm userdel lp userdel sync userdel shutdown userdel


halt userdel news userdel uucp userdel operator userdel games userdel gopher userdel ftp 如果
你不允许匿名 FTP,就删掉这个用户帐号 groupdel adm groupdel lp groupdel news groupdel uucp
groupdel games groupdel dip groupdel pppusers

  4、更改下列文件权限,使任何人没有更改账户权限: chattr +i /etc/passwd chattr


+i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow

  5、chmod 600 /etc/xinetd.conf

  6、关闭 FTP 匿名用户登陆

开源 2008年第8期 74
经验技巧

pdftk 随心所欲操作 PDF 文件

刘颖

  Adobe PDF 作为目前应用最广泛的电子文档格式之一,具有诸多优点,比如,不失真、文字效果好、


支持多种语言,以及保密性好等。在此,笔者介绍一个能够在 Linux 下对 PDF 文件进行各种操作的实用
工具——pdftk。pdftk 是由 Sid Steward(PDF 文件专家)编写的一个 PDF 增强软件,即所谓的 PDF
Hacks。它可以合并或重组 PDF 文件,给 PDF 文件添加密码,以及设置文件操作的权限等。下面以 Red
Hat 9.0 为例说明其安装和使用方法。

  安装方法

  从 http://www.accesspdf.com/pdftk/上可以下载 pdftk 的安装程序压缩包 pdftk-1.00.tar.gz。需


要注意的是,安装该软件包需要 Java、C 和 C++的编译环境。
  用如下命令解压缩该软件包,并进行编译、安装:
  # tar xzvf pdftk-1.00.tar.gz
  # cd pdftk-1.00/pdf
  # make -f Makefile.RedHat
  # make -f Makefile.RedHat install

  “make”命令需要根据操作系统的发行版选择相应的 Makefile 文件,比如,如果使用的是 Debian


系统,则选择“Makefile.Debian”文件。

  应用实例

  pdftk 工具安装完成后,就可以利用它操作 PDF 文件了。下面举例说明该工具的一些典型用法。


 
  1.合并文件
  使用该工具能够将多个 PDF 文件合并成一个新文件,命令格式如下:
  # pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

  以上命令将把文件 1.pdf、2.pdf 和 3.pdf 合并成一个名为 123.pdf 的新文件。该命令还可以使用参


数,写成如下格式:
  # pdftk A=1.pdf B=2.pdf C=3.pdf cat A B C output 123.pdf

开源 2008年第8期 75
经验技巧

  注意,参数的有效格式只能是单个的大写字母,比如 A、B、C 等。
  pdftk 同样支持通配符模式,格式如下:
  # pdftk *.pdf cat output combined.pdf

  以上命令可以把当前目录下所有 PDF 文件合并成一个名为 combined.pdf 的新文件。

  2.重组文件
  pdftk 工具能够从几个 PDF 文件中分割部分内容合并成一个新的文件,命令格式如下:
  # pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf

  以上命令表示将文件 one.pdf 中的 1~7 页、two.pdf 中 1~5 页和 one.pdf 中的第 8 页分割出来,


依次合并为一个名为 combined.pdf 的新文件。

  3.加密文件
  随着 PDF 文件被越来越广泛地应用,为提高文件的安全性,给 PDF 文件加上密码和权限限制越来越
有必要。pdftk 工具能够满足这些要求,下面分别予以说明。
  (1)设置文件修改密码
  设置文件修改密码的命令格式如下:
  # pdftk mydoc.pdf output mydoc.new.pdf owner_pw mypass1

  执行以上命令后,对文件 mydoc.pdf 进行修改时需要输入的密码“mypass1”(自行设定)。同时,


该命令将 mydoc.pdf 文件重新命名为了 mydoc.new.pdf。
  (2)设置文件打开密码
  设置文件打开密码的命令格式如下:
  # pdftk mydoc.pdf output mydoc.new.pdf user_pw mypass2

  执行以上命令后,打开文件 mydoc.pdf 时需要输入密码“mypass2”(自行设定)。


  (3)设置操作权限
  给 PDF 文件设置完密码后,文件的缺省属性会自动变为禁止所有操作(没有密码的情况下)。如下
命令可以打开某项操作权限,比如打印或复制等。
  # pdftk mydoc.pdf owner_pw myps1 user_pw myps2 output mydoc.new.pdf allow printing

  该命令给文件 mydoc.pdf 设置了修改文件密码“myps1”和打开密码“myps2”,并允许普通用户


进行打印操作。
  (4)取消密码
  取消密码的命令格式如下:

开源 2008年第8期 76
经验技巧

  # pdftk mydoc.new.pdf input_pw myps2 output mydoc.pdf

  该命令取消了原先为 mydoc.new.pdf 文件设定的密码“myps2”,并把文件名改回 mydoc.pdf。

  4.将 PDF 文件解码


  如下命令可以解码 PDF 的文件流,解码后的文件可以用文本编辑器进行编辑:
  # pdftk mydoc.pdf output mydoc.clear.pdf uncompress

  小结

  通过以上介绍,读者掌握了几个 pdftk 的常用命令,对 PDF 文件的使用会更加游刃有余。除此之外,


pdftk 还有很多功能,比如,将 PDF 文件变成一页、给 PDF 文件加水印、修复受损 PDF 文件等。更详细
的使用说明,可以通过命令“pdftk -help”进行查阅。

屏幕窗口的收纳盒——Screen 工具

林思敬

  在 linux 字符界面下工作,经常会遇到需要同时处理多个任务的情况,比如,在 Shell 上编写某个程


序时,碰巧又需要重启某个服务,同时还要 FTP 一个大文件。开启很多窗口显然会造成管理的混乱,使
用 Screen 可以避免这种情况。它是一个多元化、多功能的全屏幕窗口管理器,通过它用户只需要打开一
个终端窗口就可以处理很多事情(进程)。此外,Screen 还可以让前台进程享受后台进程的“待遇”。

  正是因为 Screen 的种种实用功能,它已经成为 Unix/Linux 日常操作的必备“利器”。下面先熟悉


它的一些常用命令,然后再通过具体例子说明它的使用方法。

  1.Screen 常用命令
  使用 Screen 非常简单,只需在 Shell 下键入“screen”命令便可打开一个 Screen Session; “-
ls”参数会显示目前所有的 Screen Session;“screen -d [keyword]”命令会将某进程放到后台运行;
“screen -r [keyword]”则会将后台进程恢复到前台。
  在每个 Session 下,所有命令都是先按“Ctrl+A”键,然后再按相应的键即可。常用的命令有:
  C 开启新的 Window;
  N 切换到下一个 Window;
  P 切换到前一个 Window;

开源 2008年第8期 77
经验技巧

  W 列出已开启的 Window;


  K 强行关闭当前的 Window;
  [ 进入 Copy Mode,在 Copy Mode 下可以使用“vi”中的命令;
  ] 粘贴在 Copy Mode 中选定的内容;
  ? 显示帮助信息;
  D 将目前的 Screen Session(可能含有多个 Window)放到后台执行。

  2.一个实例
  举例说明 Screen 的应用。
  首先开启一个 Screen 窗口,然后使用 joe 编辑一个文件。如果需要临时离开,在不退出编辑状态的
情况下,先键入“Ctrl+A”再键入“D”就可以将编辑进程隐藏到后台执行。这样防止了其它人修改正在
编辑的文件。运行“ps -e”命令可以看到正在运行 joe:
  6264 pts/2 00:00:00 bash
  6354 pts/2 00:00:00 joe

  想恢复这个 Session 只需要键入“screen -r”命令。当有多个 Session 时,系统将提示如下内容:


  $ screen -r
  There are several suitable screens on:
  6263.pts-1.ec-base (Detached)
  6382.pts-1.ec-base (Detached)
  Type "screen [-d] -r [pid.]tty.host" to resume one of them.

  输入如下命令,可以恢复指定 PID 的 Session:


  $ screen -r 6263

  退出 Screen 的 Session 只需要键入 exit 命令即可。成功退出后将有以下提示:


  [screen is terminating]

开源 2008年第8期 78
企业应用

企业应用

建立可全面监控 Squid 代理服务器

曹江华

  代理服务器的功能是代理网络用户取得网络信息,它是网络信息的中转站。随着代理服务器的广泛
使用,随之而来的是一系列的安全问题。由于没有对代理服务器的访问控制策略作全面细致的配置,导
致用户可以随意地通过代理服务器访问许多色情、反动的非法站点,而这些行为往往又很难追踪,给管
理工作带来极大的不便。

部署 Squid 服务器

  1. 各种代理服务器的比较
  Linux 下的代理服务器软件很多,但是被广泛应用的只有 Squid、socks、Apache 等几个实践证明
是高性能的代理软件。下面我们分别来比较一下这几个软件,如图 1 所示。

  虽然上面所列种类还不太全面,但是所谓窥一斑而知全豹,从中我们也可以看出什么样的代理服务
器是被用户广泛使用的。Squid 是 Linux 下一个缓存 Internet 数据的代理服务器软件,其接收用户的下
载申请,并自动处理所下载的数据。也就是说,当一个用户想要下载一个主页时,可以向 Squid 发出一
个申请,要 Squid 代替其进行下载,然后 Squid 连接所申请网站并请求该主页,接着把该主页传给用户
同时保留一个备份。当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速
度相当快。目前,Squid 可以代理 HTTP、FTP、GOPHER、SSL 和 WAIS 协议,暂不能代理
POP3、NNTP 等协议。Squid 可以工作在很多操作系统中,如 AIX、Digital、Unix、FreeBSD、HP-
UX、Irix、Linux、NetBSD、Nextstep、SCO、Solaris、OS/2 等。Squid 支持以下协议:
客户端协议:HTTP、FTP、Gopher、WAIS 、SSL
缓存及管理协议:ICP、Cache Digests、SNMP、HTCP

开源 2008年第8期 79
企业应用

图 1 Linux 下主流代理服务器比较

  2.Squid 工作原理和流程图

  1)代理服务器的工作机制
  代理服务器的工作机制很象我们生活中常常提及的代理商,假设你自己的机器为 A 机,你想获得的
数据由服务器 B 提供,代理服务器为 C,那么具体的连接过程是这样的。首先,A 机需要 B 机的数据,A
直接与 C 机建立连接,C 机接收到 A 机的数据请求后,与 B 机建立连接,下载 A 机所请求的 B 机上的数
据到本地,再将此数据发送至 A 机,完成代理任务。

  2)Squid 工作流程

开源 2008年第8期 80
企业应用

图 2 Squid 工作原理图

  ◆客户端计算机向 代理服务器 端发送一个数据需求封包;


  ◆代理服务器 端接收之后,先比对这个封包的『来源』与预计要前往的『目标』网站是否为可接受?
  如果来源与目标都是合法的,那么代理服务器 端会预计开始替客户端计算机获取信息。
  ◆代理服务器首先会到自己的硬盘里面,也就是所谓的 cache (缓存) 查看一下有没有 客户端计算机
端所需要的数据,如果有的话,那就将数据直接送到客户端计算机端,而不向互联网获取信息。
  ◆将数据传回给客户端计算机端使用。
  ◆在经过以上三部查寻知道缓存没有数据,或者数据过期之后,代理服务器会向互联网上面的目标网
站要求数据;
  ◆在将数据取回之后,代理服务器会先将取得的数据储存一份到缓存当中。
  ◆最后才将数据传回给客户端计算机 端使用。

  3.安装和配置 Squid 服务器


  通常说来,安装 Squid 有两种方法:一是从 Linux 发行版本中获取该软件的 RPM 包进行;二是安装
从 Squid 的官方站点 http://www.squid-cache.org/ 下载该软件的源码进行编译后安装。首先要确认是
否已经安装 vsftpd 可以使用以下命令查看:

  [rpm -q squid]

  如果在系统安装时已经把 squid 安装上了,那么我们就可以直接对 vsftpd 进行配置使用了。否则,


可以通过 Rat Het Enterprise Linux 图形界面下的“添加/删除应用程序”工具进行安装。具体方法是,
选择“主选单”→“系统设置”→“添加/删除应用程序”,在弹出的界面中选中万维网服务器的
“squid”选项,单击“更新”即可,见图 3。

开源 2008年第8期 81
企业应用

图 3 安装 Squid 代理服务器

  也可以从 Squid 站点 www.squid-cache.org 获取该软件的源代码安装包,包括 gz 和 bz2 两种压缩


方式。

  监控 Squid 工作情况

  1.使用 Linux 命令和工具

  分别使用 KDE 系统卫士和 netstat


命令检查 Squid 代理组服务器允许情况,
和端口使用情况,如图 4。

  如果你的桌面出现图 3 类似的情况
表示 Squid 代理服务器基本运行正常。

2.使用 cachemgr.cgi
1)cachemgr.cgi 配置过程

                 图 4 查看 Squid 服务器运行进程和端口

开源 2008年第8期 82
企业应用

  squid 本身提供一个 cgi 程序,文件名为 cachemgr.cgi,squid 安装完后将它复制到 Apache 服务器


下的 cgi-bin 这个目录下即可使用。

  #cp /usr/lib/squid/cachemgr.cgi /home/httpd/cgi-bin

  下面我们通过 apache 进行监控 squid ,修改配置文件/etc/http/conf/http.conf,添加以下内容:

  <Location /cgi-bin/cachemgr.cgi>
  AuthTypeBasic
  AuthNamw"Squidadmin"
  AuthUserFile/usr/local/squid/etc/squid.pwd
  require valid-user
  </Location>

  生成口令文件:

  #cd /usr/local/squid/etc
  #htpasswd -c squid.pwd squidadmin “创建密码文件 ”
  New passwd:
  Re-type new passwd:
  Adding password for user squidadmin
  #chown apache:apche squid.pwd “将认证口令文件的属主改为 apache”

重启 squid 与 http ,要察看 Cache Manager 提供的信息时,请在浏览器的地址列中键入 http://服


务器的名称或 IP 地址/cgi-bin/cachemgr.cgi。首先看到用户认证界面,经过认证后进入登录界面,输入
代理服务器地址和端口号,见图 5。

图 5 cachemgr.cgi 登录界面

开源 2008年第8期 83
企业应用

      
  输入管理员名称和口令,按“continue”按纽进入 Squid 监控界面见图 6。

图 6 cachemgr.cgi 实时监控界面

  (2)重点解读监控数据
  cachemgr.cgi 提供的数据非常详细,下面重点解读一些内容:

  ◆Memory Utilization(内存使用情况)
  内存是 Linux 所管理的最重要的资源之一。内存管理系统是操作系统中最为重要的部分,因为系统
的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚
拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。Linux 支持虚拟内存,
就是使用磁盘作为 RAM 的扩展,使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘,腾出

开源 2008年第8期 84
企业应用

内存给其他目的。当原来的内容又要使用时,再读回内存。Memory Utilization 监控界面见图 7。

图 7 Memory Utilization 监控界面

  一个内存池是主要的物理内存逻辑区分,包括一个工作或工作组。你能检查正在使用每个进程的内存,
空闲的内存,以及泄露的内存。
  ◆Event Queue(事件队列)
  ◆Async IO Function Counter(同步 IO 运行)
  ◆DISKD Stats(磁盘使用情况)
  ◆Current Squid Configuration (配置文件通常是处于隐藏状态)。
  ◆comm_incoming(低水平网络 IO 情况)
  ◆IP Cache Stats and Contents(IP 缓存使用情况)
  ◆FQDN Cache Stats and Contents(域名缓存使用情况)
  ◆Internal DNS Statistics(内部域名统计)
  ◆External ACL stats(扩展 ACL)
  ◆HTTP Header Statistics(HHTP 包头统计)
  ◆Cache Utilization(缓存使用情况)
  ◆Full Histogram Counts(柱状图统计)
  ◆Process Filedescriptor Allocation(进程分配)
  ◆5 Minute Average of Counters(5 分钟统计平均值)

开源 2008年第8期 85
企业应用

  ◆60 Minute Average of Counters(60 分钟统计平均值)


  ◆Cache Client List (缓存客户端列表)
  ◆General Runtime Information(squid 服务器总体运行情况列表)见图 8。

图 8 Squid 总体运行情况

  3.安全应用 cachemgr.cgi 监控

  cachemgr.cgi 可以监测的数据包括:网络流量、使用协议、系统负载、数据包发送时间等。透过它,
基本上所有进出数据都无所遁形,不管拿来做例行的网络监测工作,还是拿来做报告,都是非常优秀的

开源 2008年第8期 86
企业应用

工具,让您的网络流量透明化,通过对这些数据的分析,网络管理员可以深入了解网络当前的运行状况。
不过如何保护这些信息只能给授权的人士获得,将变得额外重要。除了前面介绍的控制访问外最好使用
SSL 协议保护敏感的监控网页。
  保护 HTTP 通讯:SSL 的一个常见的用途是保护浏览器和网络服务器之间的网络 HTTP 通讯,但这并
排除应用于不加保护的 HTTP。其方法主要是,对普通 HTTP 加以 SSL 保护(称为 HTTPS),但有一个重要
的区别:它使用 URL 类型 https 而不是 http ,而且使用不同的服务器端口(默认的是 443)。限于篇幅
SSL 配置过程读者可以参考一些修改书籍。配置 SSL 完成后。使用浏览器访问首页输入:https:// IP 地
址或者域名 /cgi-bin/cachemgr.cgi 在 Linux 下 Firefox 浏览器屏幕提示 https 安全。注意浏览器位置栏
和右下角的安全标志,见图 9。

图 9 Firefox 浏览器 https 安全性提示的界面

  注意客户端如果使用 IE 的话,此时只有右下角的安全标志。通过 SSL(Secure socket layer)进行


HTTP 传输的协议就是 HTTPS,它不但通过公用密钥的算法进行加密保证传输的安全性,而且还可以通
过获得认证证书 CA,保证客户连接的服务器没有被假冒。

开源 2008年第8期 87
企业应用

  关注 Squid 代理服务器日志

  Linux 网络管理员应当尽量记录所有日志,这些日志会记录所有异常访问的线索。网络日志不是用来
应付检查,而且它能够帮助你更好地从事网络管理工作。它记录了系统每天发生的各种各样的事情,包
括哪些用户曾经或 者正在使用系统,可以通过日志来检查错误发生的原因,更重要的是在系统受到黑客
攻击后,日志可以记录下攻击者留下的痕迹,通过查看这些痕迹,系统管理员可以发现黑客攻击的某些
手段以及特点,从而能够进行处理工作,为抵御下一次攻击做好准备。

  1.Squid 日志格式
  squid 拥有完善的日志系统,但是对用户来说,以下的几个日志文件具有重要的意义:
  access.log
  该文件主要包含了客户访问的相关信息,如客户机的 i p 地址,访问的站点,访问的流量大小等等。
一般的 squid 日志分析程序主要是基于该文件的。
  cache.log
  该文件包含着 squid 服务进程的相关信息,如启动的状态,错误信息等等。
  store.log
  该文件包含缓存中存储对象的相关信息,如对象存储的时间,对象的大小,对象超期的时间等等。

  2.分析 access.log 日志文件


  access.log 日志文件的格式说明
  由于 access.log 文件是最重要的一个日志文件,很多 s q u i d 的日志分析程序都是围绕该文件编写
的(如计费,流量分析,热门站点等),所以在这里我们就着重讲述一下该日志文件的格式。access.log
可以有两种基本的格式,一种 native(原始日志文件)日志文件格式,另外一种是 common(普通日志
文件)日志文件格式。common 日志文件格式包含的信息要比 native 日志文件格式来得少,并且 native
日志文件包含着许多管理员感兴趣的信息。默认时,squid 采用 native 日志文件格式。如果要切换到
common 日志文件格式,可以更改 emulate _ httpd _ log 选项为 on。
  native 日志文件格式如下所示:
  time elapsed remotehost code/status bytes method URL rfc931 peerstatus/peerhost type

开源 2008年第8期 88
企业应用

图 10 子段说明
  3. 使用 Linux 命令
  如果我们仅仅需要查看某一个字段,可以用 awk 命令,它把一个记录行分割成多个字段,我们使用
参数传回需要的字段。命令如下:

  # tail -f /var/log/squid/access.log | awk '{print$3 " " $8 " " $7}'

  这里选择的是客户访问时间和用户请求所花费的时间,显示见图 11:

图 11 查看客户访问时间和用户请求所花费的时间

  这种方式的优点是实时性强,显示的是当前正在访问的记录的情况。

  4.使用专业软件分析
  事实上, squid 已经有众多的日志分析软件了,而且大多是免费的,您可以依照自己的喜好来加以
安装与分析你的 squid 代理服务器。

  pwebstatus( http://martin.gleeson.com/pwebstats

开源 2008年第8期 89
企业应用

  webalizer(http://www.mrunix.net/webalizer/
  squid-graph(http://squid-graph.securlogic.com/
  squidsites(http://www.stefanopassiglia.com/downloads.htm
  sarg(http://sarg.sourceforge.net/

  Webalizer 工作方式不同于 Linux 命令,这个软件主要侧重于信息的汇总,如带宽、输入输出量,用


于比较在不同的时间段网络的使用情况。可以从站点
http://www.mrunix.net/webalizer/download.html 下载,当前稳定版本是 2.01-10,提供 RPM 包和
tar 包格式的下载。Webalizer 的配置文件是 webalizer.conf,在/etc/目录下,安装后产生可执行命令
webalizer,当命令执行时,寻找 webalizer.conf 配置文件,产生相应的输出。webalizer.conf 的配置比
较简单,主要是指定 squid 日志文件的目录位置及产生报告的输出目录,主要参数如下:
“LogFile /var/log/squid/access.log”表示 squid 日志文件目录;“LogType squid”表示 Webalizer
报告文件的输出类型;“OutputDir /var/www/html/usage_squid/ ”表示报告文件的输出目录。
  下面建立目录并且复制文件:

  #mkdir /var/www/html/usage_squid/
  #cp msfree.png webalizer.png /var/www/html/usage_squid/

  配置文件修改完毕以后,需要定时 webalizer,每天生成当日的统计分析。以 root 身份运行


crontab -e 进入定时运行任务编辑状态,加入如下任务:

  $ 5 0 * * * /usr/bin/webalizer -f /etc/webalizer.squid.conf

  这样定义在凌晨 00:05 对 squid 的日志进行统计分析。可以使用浏览器查看。方法:http://IP 地址


或者域名/usage_quid 。

基于 djbdns 打造安全的 DNS 应用

余海发

  djbdns 是一个提供域名解析服务(DNS)的软件,工作在 Unix 类的平台下。Unix 下另一个著名的


DNS 软件是 BIND,这是一个被广泛应用的服务,大多数使用 Unix、BSD 或 Linux 的人都学习过 BIND
的配置。djbdns 与 BIND 功能类似,都能够提供基本的域名解析服务。同时,djbdns 在安全和设计实现

开源 2008年第8期 90
企业应用

上又有自己的特点。

  djbdns 是 Qmail 作者 Dan Dernstein 的作品。在 Dan 着手 djbdns 之前,BIND 已经暴露出一些严


重的安全漏洞,这使得 BIND 一度成为黑客攻击的主要目标之一,所以 djbdns 在设计时就充分考虑到安
全问题。和 BIND 相比,djbdns 的最终目的是提供一个更安全、更稳定的 DNS 软件。Dan 在其主页上
声明,将为第一个发现 djbdns 最新版本安全漏洞的人提供 500 美元的奖励(详见
http://cr.yp.to/djbdns/guarantee.html),不过至今还没有人得到这笔奖金。

  抛开这些轶事,从技术角度上看,djbdns 在设计上更符合 Unix 软件开发的哲学,它使用了不同的


程序来分别实现不同功能的 DNS。djbdns 明确区分了 tinydns、 dnscache、 rbldns、 axfrdns、
walldns 等不同类型和用途的 DNS 服务,保证它们各自独立工作,互不影响。实际上,与 BIND 相比,
djbdns 体积更小、性能更稳定,也更安全,所以很多安全专家都建议用 djbdns 来替代 BIND 提供安全
的 DNS 服务。

  djbdns 提供的 DNS 服务

  前面提到 djbdns 能够明确区分不同类型和用途的 DNS 服务,下面就简单介绍这些 DNS 服务的用途


和实现。

  1.tinydns
  tinydns 是专为一个或多个指定域提供可信的域名解析的服务。tinydns 只处理 UDP 格式的请求,
而不能处理 TCP 格式的请求,它也不会为不相关的域做递归的域名解析。tinydns 被明确地设计成一个
专门处理来自其它 DNS 服务器查询请求的服务器,并不支接对客户(比如浏览器)的服务。tinydns 服
务器上/etc/resolv.conf 文件中的 nameserver 应指向 tinydns 服务器的 IP 地址。

  2.dnscache
  dnscache 是 DNS 缓存服务,它负责回答客户(比如浏览器)的 DNS 查询请求。从安全角度考虑,
dnscache 和 tinydns 不能在同一台服务器上,这是为了防范 DNS 缓存中毒攻击(DNS Cache-
poisoning Attacks)。dnscache 可以处理 UDP 和 TCP 的 DNS 查询请求。

  3.rbldns
  rbldns 是一个特殊的服务器,它适用于高效地处理“黑洞列表”,通常是配合邮件系统来使用,比
如 RBL 或 DUL。

  4.axfrdns
  axfrdns 用来实现支持 TCP 请求的功能。通常,只有过长的域名才需要以 TCP 方式做解析,超长的

开源 2008年第8期 91
企业应用

域名在实际中是很罕见的。所以,实际应用中的 axfrdns 服务不多。另外,axfrdns 还负责 Zone 的传输。

  5.walldns
  walldns 可以对 IP 地址请求做出虚假应答,在需要提供 IP 地址请求应答,同时又要隐藏内部网络结
构的场合使用。walldns 在实际应用中也不多见。

  需要注意的是,不要在同一台机器上安装所有这五种类型的服务,这不符合 djbdns 的安全设计思想。


比如,tinydns 就不应该和 dnscache 共存在同一台机器上。

  本文主要讨论基于 dnbdns 建立这几种类型服务的典型应用,在此之前先介绍一下 dnbdns 的基本


安装。
  djbdns 的基本安装
  1.软件下载
  由于 djbdns 是一个纯粹的 DNS 软件,只提供各种 DNS 服务,所以在进程启动和调度等方面需要
ucspi-tcp 和 daemontools 来实现,它和 Qmail 的安装非常类似。安装 djbdns 需要的所有软件都可以
从以下地址下载。
  http://cr.yp.to/djbdns/djbdns-1.05.tar.gz;
  http://cr.yp.to/daemontools/daemontools-0.76.tar.gz ;
  http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz。

  2.安装环境
  djbdns 可以在多数 Unix 类平台上安装,本文以 Linux 为例。

  3.具体安装
  下面具体介绍这三个包的安装方法。
  编译安装 djbdns:
  #wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
  #tar -xzpvf djbdns-1.05.tar.gz
  #cd djbdns-1.05
  #make
  #make setup check

  编译安装 daemontools:
  #wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
  #tar -xzpvf daemontools-0.76.tar.gz

开源 2008年第8期 92
企业应用

  #rm daemontools-0.76.tar.gz
  #cd admin/daemontools-0.76
  #package/install
  #rm -rf /command/*
  #cp command/* /command

  编译安装 ucspi-tcp:
  #wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
  #tar -xzpvf ucspi-tcp-0.88.tar.gz
  #cd ucspi-tcp-0.88
  #make
  #make setup check
  注意,如果 Linux 版本使用的是 glibc-2.3.1 及以上版本的 glibc 库(比如 FC2),在编译过程中会
出现“undefined referencer `errno`”这样的错误信息,可以下载专用的补丁来修正这个错误。
  这里介绍一个更简单的手工解决方法。在这三个软件的源程序目录中都有一个名为“conf-cc”的文
件,这个文件是设置 GCC 编译时的参数选项,只要在该文件中加上参数“-
include=/usr/include/errno.h”就可以顺利完成编译。比如,djbdns 源代码目录中的 conf-cc 文件是:
gcc -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow
-Wcast-qual -Wcast-align -Wwrite-strings

  将其修改为:
  gcc -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -
Wcast-qual -Wcast-align -Wwrite-strings -include=/usr/include/errno.h

  按照此方法修改后就可以顺利完成编译了。对于 daemontools 和 ucspi-tcp 采用类似的方法修改编


译即可。

  djbdns 实现 DNS 应用

  DNS 是 Internet 上最常见、最基础的服务。DNS 服务的任务就是将人们所熟悉的域名转换成 IP 地


址,反过来,也可以查询 IP 地址对应的域名。从用途上来说,DNS 服务器可以分成以下三类:
  ◆ 主 DNS 服务器 用于存放对特定域名解析的详细记录。
  ◆从 DNS 服务器 主 DNS 服务器的备用。从 DNS 服务器上的域名记录信息和主 DNS 服务器保持一
致,当主 DNS 服务器停止工作后,替代主 DNS 服务器提供域名解析服务。
  ◆DNS 缓存服务器 主要用在内网,通过将请求过的域名解析缓存起来,避免客户重复、频繁地访问
主、从 DNS 服务器,从而提高域名解析的速度。

开源 2008年第8期 93
企业应用

  1.djbdns 建立主、从 DNS 服务器


  现在,通过一个配置主、从 DNS 服务器的例子了解 djbdns 实现 DNS 应用的基本方法。假设域名为
myxxx.org,在两台已经安装好 djbdns 的 Linux 服务器上为 myxxx.org 域名提供 DNS 服务。
myxxx.org 的主 DNS 服务器 IP 为 61.xxx.xxx.88,myxxx.org 的从 DNS 服务器 IP 为 61.xxx.xxx.99。
  (1)在两台服务器上分别执行以下命令,建立 gtinydns、gaxfrdns、gdnslog 三个账号:
  #adduser gtinydns
  #adduser gaxfrdns
  #adduser gdnslog

  (2)在主 DNS 服务器上执行以下命令:


  #tinydns-conf gtingdns gdnslog /etc/tinydns 61.xxx.xxx.88
  #tinydns-conf gaxfrdns gdnslog /etc/axfrdns /etc/tinydns 61.xxx.xxx.88

  (3)在从 DNS 服务器上执行以下命令:


  #tinydns-conf gtingdns gdnslog /etc/tinydns 61.xxx.xxx.99
  #tinydns-conf gaxfrdns gdnslog /etc/axfrdns /etc/tinydns 61.xxx.xxx.99

  (4)在主 DNS 服务器上修改/etc/axfrdns/tcp 文件,加入以下内容:


  61.xxx.xxx.99:allow
  :allow,AXFR=""

  保存退出后,执行以下命令:
  #cd /etc/axfrdns
  #make

  (5)在从 DNS 服务器上修改/etc/axfrdns/tcp 文件,加入以下内容:


  61.xxx.xxx.88:allow
  :allow,AXFR=""

  保存退出后,执行以下命令:
  #cd /etc/axfrdns
  #make

  (6)修改主 DNS 服务器上的/etc/tinydns/root/Makefile 文件。原文件内容如下:


  data.cdb: data

开源 2008年第8期 94
企业应用

  /usr/local/bin/tinydns-data

  修改为:
  remote:data.cdb
   scp data.cdb 61.xxx.xxx.99:/etc/tinydns/root/data.cdb.tmp
   ssh 61.xxx.xxx.99 mv /etc/tinydns/root/data.cdb.tmp /etc/tinydns/root/data.cdb
  data.cdb: data
   /usr/local/bin/tinydns-data

  注意,第 2、3、5 行以 Tab 键开头,这是 Makefile 文件的格式要求。修改 Makefile 文件的目的是


采用 SSH 的方式将主 DNS 服务器的记录同步写到从 DNS 服务器上,以保证主、从 DNS 服务器拥有相
同的记录。
  (7)修改主 DNS 服务器上的/etc/tinydns/root/data 文件。在整个 data 文件中只输入一个
“9”,这样可以防止从 DNS 服务器无意中改写 DNS 记录的数据文件。
  (8)在主 DNS 服务器上设定 myxxx.org 的解析记录。
#cd /etc/tinydns/root

  增加 ns 记录:
  #./add-ns myxxx.org 61.xxx.xxx.88
  #./add-ns myxxx.org 61.xxx.xxx.99
  #./add-ns xxx.xxx.61.in-addr.arpa 61.xxx.xxx.88
  #./add-ns xxx.xxx.61.in-addr.arpa 61.xxx.xxx.99

  增加主机记录:
  #./add-host www.myxxx.org 218.xxx.xxx.118
  #./add-host mail.myxxx.org 218.xxx.xxx.119

  增加假名记录:
  #./add-alias ldap.infosec.cn 218.xxx.xxx.118

  增加 MX 记录:
  #./add-mx myxxx.org 218.xxx.xx.119

  djbdns 不像 BIND 那样采用 zone file 文件来保存解析记录,它使用的是 dbm 数据库。设定好解析


记录后,执行以下命令更新数据库:
  #cd /etc/tinydns/root

开源 2008年第8期 95
企业应用

  #make

  由于第 6 步修改了 Makefile 文件,所以在 make 的过程中,主 DNS 服务器会将更新的数据库用 scp


传到从 DNS 服务器上,从而保证主、从服务器的数据一致。由于使用了 scp,在 make 命令时会要求输
入密码。用户可以设置 scp 使用 Key 认证来代替密码认证,这样可以省去输入密码的操作。另外,除了
用 scp 来做同步之外,也可以用 Rsync 或 Mirror 等软件来实现,这里就不多做介绍。

  (9)在主、从 DNS 服务器上分别执行以下命令,启动 DNS 服务:


  #ln -s /etc/tinydns/ /etc/axfrdns /service
  #sleep 5
  #svstat /servcie/tinydns
  #svstat /service/axfrdns
  (10)通过 netstat 命令,可以看到在 53 端口已经运行的 DNS 服务:
  #netstat -an|grep 53
  tcp 0 0 61.xxx.xxx.88:53 0.0.0.0:* LISTEN
  udp 130988 0 61.xxx.xxx.88:53 0.0.0.0:*
  udp 0 0 61.xxx.xxx.88:53 0.0.0.0:*

  至此,两台基于 djbdns 的 DNS 服务器就配置好了。

  2.djbdns 建立 DNS 缓存服务器


  DNS 缓存服务是常见服务,特别是在共享 Internet 连接的局域网中,对应的网关服务器通常都会提
供 DNS 缓存服务。局域网中的用户通过同一网络中的 DNS 缓存服务器能得到非常快速的域名解析速度,
这和代理服务器的原理是一样的。
  对于相同的域名,因为局域网中的某个用户曾经解析过,其解析记录会被保存下来,其它用户解析
同样的域名时可以直接从 DNS 缓存服务器得到应答,而不需要再次向 Internet 上的其它 DNS 服务器发
出请求。所以,在企业局域网中使用 DNS 缓存服务器能带来更快的域名解析速度,还能节省部分带宽。

  下面就介绍如何使用 djbdns 建立 DNS 缓存服务器。假设某公司的局域网是 192.168.2.0/24。


192.168.2.1 是一台 Linux 服务器,负责 ADSL 拨号和共享 Internet。现在,在其上再安装一个 DNS 缓
存服务,为 192.168.2.0/24 网络提供 DNS 解析服务。

  (1)建立 gdnscache、gdnslog 两个账号:


  #adduser gdnscache
  #adduser gdnslog

开源 2008年第8期 96
企业应用

  (2)建立/etc/dnscache 服务目录:
  #dnscache-conf gdnscache gdnslog /etc/dnscache 192.168.2.1

  (3)在/etc/dnscache/root/目录中创建一个名为 192.168.2 的文件:


  #touch /etc/dnscache/root/ip/192.168.2

  这表示允许 192.168.2.*的用户使用该 DNS 服务器。


  (4)修改/etc/resolv.conf,修改后的内容如下:
  nameserver 192.168.2.1

  上面代码表示使用 192.168.2.1 作为 DNS 服务器。


  (5)启动 DNS 缓存服务:
  #ln -s /etc/tinydns/ /etc/dnscache /service
  #sleep 5
  #svstat /servcie/dnscache

  (6)通过 netstat 命令,可以看到 53 端口已经在运行 DNS 服务:


  #netstat -an|grep 53
  tcp 0 0 192.168.2.1:53 0.0.0.0:* LISTEN
  tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
  udp 0 0 192.168.2.1:53 0.0.0.0:*
  udp 0 0 127.0.0.1:53 0.0.0.0:*

  至此,一台基于 djbdns 的 DNS 缓存服务器配置完成。


  以上介绍了两个 djbdns 的典型应用。关于 djbdns 更进一步的信息,可以访问: 
  http://cr.yp.to/djbdns.html 和 http://tinydns.org/。

  djbdns 的扩展应用

  djbdns 代码的简洁也给其它人员的二次开发带来了便利。利用 djbdns 可以提供各种扩展的应用服


务,包括如下几个方面。

  配合 Qmail 在反垃圾邮件中的应用


  djbdns 与 Qmail 的配合理所当然是最完美的,因为它们是由同一作者开发,而且 Dan 开发 djbdns
的原因之一就是为了和 Qmail 更好地配合,解决 BIND 不能与 Qmial 很好配合的问题。

开源 2008年第8期 97
企业应用

  在动态域名解析服务方面的应用
  随着个人宽带用户的大幅增长,许多想在家里建设网站的用户产生了对动态域名解析服务的需求。
现在这些用户可以很容易地实现一套基于 djbdns 的动态域名解析解决方案。网上也已经有一些这样的项
目发布了它们的实现方案。

  在虚拟主机管理系统中的应用
  对 DNS 服务安全方面的高要求使得一些虚拟主机管理系统转向使用基于 djbdns 的解决方案。由于
djbdns 的代码体积小、可读性好、安全性好,虚拟主机管理系统的开发者们很乐意转到 djbdns 上。著
名的虚拟主机管理系统 Cpanel 就采用了 djbdns。
djbdns 还能扩展出更多的应用,但 djbdns 最主要的功能还是 DNS 服务本身。djbdns 在效率和安
全方面的良好表现,使得开源用户在 BIND 之外有了其它的选择。开源软件在相互竞争中彼此促进、提
高,最终的受益者将是广大的开源用户们。

使用 Vtiger CRM 进行客户管理

顾宏军(Linuxpk.com )

  本章介绍 VtigerCRM 首页视图,系统初始化设置,及各种系统设置项。

  VtigerCRM 首页视图

  在安装完成 Vtiger CRM 之后,就可以打开您的浏览器(IE7 或者 Firefox 等),在地址栏输入


http://localhost:8888/vtiger/,登陆系统了;localhost:8888 可替换为您安装 Vtiger CRM 的 IP 地址,
域名和端口。

开源 2008年第8期 98
企业应用

图1

  在安装 Vtiger CRM 过程中设置了俩帐户,一个 admin 用户,一个 standuser 用户,使用 admin 用


户登陆可以进行各种系统设置。下面我们看看 Vtiger CRM 系统的首页视图界面。
  登录 VtigerCRM 系统后,可以看到最新的 Vtiger CRM 系统 5.0.4 中文版标准视图,首页视图界面
的介绍如下图所示:

图2

  从主菜单,我们可以看到 Vtiger 主要功能模块包括:市场营销、销售管理、售后服务,统计分析,


产品管理,系统设置,本文下面主要就是介绍系统设置中的内容。

开源 2008年第8期 99
企业应用

  点击子菜单或主菜单的下拉菜单,可以进入对应模块列表页面,点击新增图标可以新增记录,点击
查找图标,可以查找当前模块记录,点击导入图标,可以导入当前模块的记录,点击导出图标,可以导
出当前模块的记录。

  注意:图标在灰色的情况下是不可以点击的,表示在当前情况下无法使用此功能。

  如何初始化 VtigerCRM 系统。

  新安装的 CRM 系统要正常使用,必须进行些设置,必要的时候还需要根据公司特定业务需要,定制


部分功能项,下面我们主要讲解下 Vtiger CRM 系统管理内的各个项目,以进行 Crm 系统初始化设置的
先后顺序介绍。
  第一步、设置指定公司的详细信息,因为在导出的一些 PDF 文件会用到公司的一些信息,例如公司
名称,地址和 logo 等。
  操作步骤:以管理员的身份登陆 VtigerCRM 系统,点击“系统设定”主菜单,进入系统设定页面,
点击“其它设置”板块的“公司信息”,可以看到默认的公司信息,点击右上角的“编辑”按钮开始指
定公司的详细信息,填写正确的公司信息后,点击右上角的“保存”按钮即可保存填写的公司信息。

图3

  第二步:设置 SMTP 服务器 smtp 服务器主要用来发送 Email,工作流提醒,库存提醒以及其它提醒

开源 2008年第8期 100
企业应用

信息。

图4
 操作步骤:以管理员的身份登陆 VtigerCRM 系统,点击“系统设定”主菜单,进入系统设定页面,点
击“其它设置”板块的“SMTP 服务器设定”,点击右上角的“编辑”按钮配置 SMTP 服务器信息,填
写正确的信息后点击保存按钮,保存过程系统会自动发送一封测试 Email 信息到管理员的 Email 地址,
如果 SMTP 服务器信息和管理员的 Email 正确,管理员将收到一封 Test Email 邮件。

  第三步:设置各个模块所需要的字段 每个公司的业务大都不一样,需要的字段可能也不一样,所以
需要屏蔽一些自己公司不需要的字段和添加一些自己需要但系统没有的字段。

  屏蔽字段:以管理员的身份登陆 VtigerCRM 系统,点击“系统设定”主菜单,进入系统设定页面,


点击“用户和权限管理”板块的“字段权限”,选择一个模块,可以查看所选模块的所有字段,点击右
上角的“编辑”按钮,在需要的字段前面打勾,在不需要的字段前面不打勾,确定后点击“保存”按钮
即可保存所选模块的全局字段信息。

  添加字段:以管理员的身份登陆 VtigerCRM 系统,点击“系统设定”主菜单,进入系统设定页面,


点击“工作台”板块的“自定义字段”,首先选择需要添加新字段的模块,然后点击“新增自定义字段
”按钮,在弹出的小窗口里选择字段类型,然后在右边输入标签(新字段的显示名称)和字段长度,确认后
点击“保存”按钮,即可为所选模块添加新字段,添加的新字段会在所选模块的页面上显示。

开源 2008年第8期 101
企业应用

图5
  第四步:设置各个模块的下拉菜单的选项 每个公司的业务大都不一样,例如销售流程,客户级别等,
所以在 CRM 系统实施时需要修改下拉框的选项。操作步骤:以管理员的身份登陆 VtigerCRM 系统,点
击“系统设定”主菜单,进入系统设定页面,点击“工作台”板块的“选择清单编辑器”,选择一个模
块,可以查看所选模块的所有下拉框选项,点击下拉框选项右上角的“编辑”按钮,进入编辑页面,在
弹出窗口里输入下拉框选项,每行只能输入一个选项,输入完毕后点击保存按钮即可生效,保存后可以
到相应模块查看下拉框选项。

  第五步:设置访问权限组(Profile,对系统的各种权限分组),访问权限组是权限的核心部分,用户权
限均是在访问权限组的基础上确定的。通过访问权限组可以控制对某个模块的权限(新增/编辑,删除、查
看,导入、导出等权限),而且还可以控制对某个模块的字段的读写权限(可见、读、写等权限),通过此
功能即可实现简单的审批功能(下级对某个字段具有只读权限,上级对某个字段具有可写权限)。

开源 2008年第8期 102
企业应用

图6

  操作步骤:以管理员的身份登陆 VtigerCRM 系统,点击“系统设定”主菜单,进入系统设定页面,


点击“用户与权限管理”板块的“访问权限”,点击访问权限名称左边的编辑图标即可编辑所选访问权
限组,点击右上角的“新增访问权限”按钮即可增加用户组。

  编辑某个用户组,进入用户组编辑页面,如果选择全局权 限的查看所有模块和编辑所有模块前面的
选择框,下面的选择框就无须选择,当然如果不选择查看所有模块和编辑所有模块的选择框,就需要一
一选择下面模块列表 中中各个模块的存取权限,在模块的前面打勾表示可以存取所选模块,不打勾表示
表示不能存取该模块,在新增/编辑列的下面打勾表示可以新增和编辑该模块的记录,在查看列的下面打
勾表示可以查看该模块的记录,在删除列的下面打勾表示可以删除该模块的记录。如果没有查看权限,
就没有新增/编辑和删除权限。点击“字段与工具设定”列的展开/收缩图标,可以设定该用户组能存取该
模块的哪些字段(可见某个字段,可写某个字段,只读某个字段等),并且可以设定该访问权限组是否能导
入和导出改模块的记录。依次设定每个模块的权限,确认无误后点击上方或下方的保存按钮即可保存该
访问权限组的权限设置。当然,如果觉得默认权限设置已经能满足自己公司的需求,就不需要编辑用户
组的权限设置。

开源 2008年第8期 103
企业应用

  新增某个访问权限组,点击右上角的“新增访问权限组”按钮,输入用户组名称和描述信息,选择
“基于已存在的访问权限修改 (建议)”,点击下一步,进入用户组的编辑页面,操作方法和编辑某个访
问权限组的方法一样,确认后点击保存按钮即可保存访问权限组。

  第六步:设置职位(Role,对应公司中的岗位设置),职位是和访问权限组关联的,一个职位可以对
应多个访问权限组,一个用户对应一个职位,用户拥有职位,从而拥有访问权限组对应的存取权限(各个
模块和字段的存取权限)。职位是分上下级的,由于用户和职位是关联的,拥有上级职位的用户能看到拥
有下级职位的记录,例如销售经理 A 的角色是"销售经理",销售人员 A、销售人员 B、销售人员 C 的角色
是"销售人员",那么销售经理 A 能看到销售人员 A、销售人员 B 和销售人员 C 所拥有的记录。

  操作步骤:以管理员的身份登陆 VtigerCRM 系统,点击“系统设定”主菜单,进入系统设定页面,


点击“用户管理”板块的“职位”,进入角色的继承关系图,把鼠标放在某个职位上,职位的右边会出
现三个图标,第一个图标(+)是为当前职位创建下级职位,第二个图标是编辑当前职位,第三个图标是移
动当前职位,改变当前角在继承关系图中的位置。如果当前职位的左边有减号的图标,表示可以展开或
收缩当前职位。

  点击某个角色右边的第一个图标(+),进入新增职位的页面,首先输入职位名称,然后选择左边"可用
访问权限组"中的访问权限组,接着中间的点击>>按钮,即可把所选访问权限组选择到"已指定访问权限
组"输入框里,确认后点击保存按钮即可保存该职位。点击某个角色右边的第二个图标,进入编辑角色的
页面,操作方法和新增角色的方法一样。

图7

开源 2008年第8期 104
企业应用

  第七步:设置用户(创建员工可用以登陆 CRM 系统的帐户),用户就是使用 VtigerCRM 系统的公


司员工,只有为公司员工创建帐户并指定职位,公司员工才能开始使用 VtigerCRM 系统。每个模块记录
都有一个负责人,负责人主要是和用户关联的,当负责人指定为某个用户时,表示该用户可以操作这条
记录,根据前面的角色权限定义,该用户的上级也能操作这条记录。

  操作步骤:以管理员的身份登陆 VtigerCRM 系统,点击“系统设定”主菜单,进入系统设定页面,


点击“用户与权限管理”板块的“用户”,进入用户列表页面,点击右上角的“新增用户”按钮可以增
加新用户,点击列表中编辑图标即可编辑当前用户信息,点击列表中的复制图标即可复制当前用户信息,
点击列表中的删除链接即可删除当前用户。

  操作步骤:点击右上角的“新增用户”按钮,进入新增用户页面,输入用户名,密码,Email,姓名
和权限,以及其它联系方式、地址、照片等信息,还可设置该用户是否具有管理权限,另外可以设定新
用户在首页显示的模块最新记录,确认后点击保存按钮即可保存新用户信息。使用新用户的用户名和密
码即可登陆 VtigerCRM 系统。

图8

开源 2008年第8期 105
企业应用

  第八步:设置用户群组(Group,类 似公司中部门的概念),用户群组包含角色、用户、其它用户群
组等,通过用户群组可以定义复杂的权
限机制。每个模块的记录都有一个负责
人,负责人不仅可以指 定为用户,也可
以指定为组织。当负责人指定为某个用
户群组时,表示该用户群组所包含访问
权限组、用户和其它用户群组有权限操
作这条记录。

              图 9
  操作步骤:以管理员的身份登陆 VtigerCRM 系统,点击“系统设定”主菜单,进入系统设定页面,
点击“用户管理”板块的“用户群组”,进入用户群组列表页面,点击右上角的“新增用户群组”按钮
可以增加新用户群组,点击列表中编辑图标即可编辑所选用户群组信息,点击列表中的删除图标即可删
除所选用户群组。

  点击右上角的“新增用户群组”按钮,进入新增组织页面,输入组织名称和描述信息,切换成员类
型,列表里可以显示所选成员类型对应的成员,选择左边的成员,然后点击>>按钮以添加新成员,选择
右边的成员,然后点击<<以删除成员,确认后点击“保存”按钮。新增完毕后,在新增记录时即可指定
负责人为该用户群组。

  点击用户群组列表中的编辑图标,进入编辑用户群组页面,操作方法与新增用户群组的方法一样,
确认后点击“保存”按钮。

  第九步:设置共享规则(高级权限控制, 设置共享权限比较复杂,一般企业采用默认的共享权限即
可),VtigerCRM 系统不仅通过角色的上下级关系来控制权限,而且还通过共享来控制权限。如果全局
共享规则为私有时,职位的上下级权限有效,如果全局共享规则为共享权限(非私有)时, 角色的上下级
权限就无须生效,因为已经全局共享了,公司内部的数据都是共享的,就无须上下级角色来控制权限了。
如果全局共享规则为私有时,公司内部还需要 特别的共享规则时,则可以通过自定义共享规则来实现。
职位、职位和下级职位、用户群组之间可以互相共享只读和读写权限。注意自定义共享规则后,必须点
击右 上角的“更新权限&重新计算”按钮,只有这样共享规则才能生效。

开源 2008年第8期 106
企业应用

图 10
  操作步骤:点击右上角的“修改权限”按钮可以修改全局共享规则,点击下面的“新增权限”按钮
或“点击这里”可以自定义权限规则。

  点击右上角的“修改权限”按钮,进入全局共享规则编辑页面,每个模块的共享规则可以选择私有,
表示只有负责人和负责人的上级能存取负责人所创建的记录,选择“共享:共享只读权限”,表示系统
内的所有用户均能查看该模块的记录,选择”共享:读、新增/编辑权限“,表示系统内的所有用户均能
查看、新增和编辑该模块的记录,选择”共享:读、新增/编辑、删除权限“,表示系统内的所有用户均
能查看、新增和编辑、编辑该模块的记录。确认后点击右上角的“保存”按钮。

  点击下面的“新增权限规则”按钮,弹出新增自定义共享规则窗口,第一步:选择拥有记录的角色
或角色和下级角色或组织,第二步:选择共享对象和共享权限,第三步,选择相关模块的共享权限,确
认后点击下面的“新增规则”按钮。注意:点击上面“更新共享规则”按钮才可启用刚新增的共享规则。
第十步:其它设置项目,通过系统的"其它设置"选项,可以设置系统的通知模版,Email 模版,货币币种,
税额和业务条款,还可以查看用户的登陆历史和操作日志。

  经过以上十个步骤的设置,CRM 系统就可以正常使用,为公司进行客户管理而服务了,后面就需要
对 VtigerCRM 的其他功能模块进行逐一的介绍和讲解了。

开源 2008年第8期 107
嵌入式

嵌入式
MMU 与 Cache

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

  虚拟地址和物理地址的概念
  我们知道,CPU 通过地址来访问内存中的单元。地址有虚拟地址和物理地址之分,如果 CPU 没有
MMU(Memory Management Unit,内存管理单元),或者有 MMU 但没有启用,CPU 核在取指令
或访问内存时发出的地址将直接传到 CPU 芯片的外部地址引脚上,直接被内存芯片(以下称为物理内存,
以便与虚拟内存区分)接收,这称为物理地址(Physical Address,以下简称 PA),见图 1 “物理地址
示意图”。如果 CPU 启用了 MMU,CPU 核发出的地址将被 MMU 截获,这之前的地址称为虚拟地址
(Virtual Address,以下简称 VA),而 MMU 将这个地址翻译成另一个地址发到 CPU 芯片的外部地址
引脚上,也就是将虚拟地址转换成物理地址,见图 2 “虚拟地址示意图”。

图 1. 物理地址示意图

开源 2008年第8期 108
嵌入式

图 2. 虚拟地址示意图

  注意

  对于 32 位的 CPU,从 CPU 核这边看地址线是 32 条(图中只是示意性地画了 4 条地址线),可寻


址空间是 4GB,但是通常嵌入式处理器的 CPU 外部地址引脚不会有这么多条地址线,因为引脚是芯片上
十分有限而宝贵的资源,而且也不太可能用到 4GB 这么大的物理内存。另一方面,在启用 MMU 的情况
下 VA 地址空间和 PA 地址空间是完全独立的,PA 地址空间既可以小于也可以大于 VA 地址空间,有些
32 位的服务器可以配置大于 4GB 的物理内存。

  MMU 将虚拟地址映射到物理地址是以页(Page)为单位的,对于 32 位 CPU 通常一页为 4KB。例


如,虚拟地址 0xb7001000~0xb7001fff 是一个页,可能被 MMU 映射到物理地址 0x2000~0x2fff,物
理内存中的一个物理页面常称为一个页框(Page Frame)。

  思考与练习

  1、以下程序中用到的地址是虚拟地址还是物理地址?

  #define BASEADDR 0x00008000;


  int i;
  unsigned int *p;

开源 2008年第8期 109
嵌入式

  p = (unsigned int *)BASEADDR;


  for(i=0;i<100;i++)
  {
   *(p + i) = i;
  }

2、下图中内存芯片的寻址范围是多少?这个地址范围是指虚拟地址还是物理地址的范
围?

  虚拟内存管理的意义

  现代操作系统充分利用 MMU 提供的 VA 到 PA 的转换机制来做内存管理,以下称为虚拟内存管理


(Virtual Memory Management)。为什么需要虚拟内存管理呢?可以从以下几个方面来理解。

  让每个进程有独立的地址空间是引入虚拟内存管理的最主要目的。所谓独立的地址空间是指,不同
进程中的同一个 VA 被 MMU 转换到不同的 PA,并且在某一个进程中访问任何地址都不可能访问到另外
一个进程的数据,这样使得任何一个进程有非法内存访问都不会意外改写其它进程的数据,不会影响其
它进程的运行,从而保证了整个系统的稳定性。另一方面,每个进程都认为自己独占 4GB 的地址空间,
编写程序会比较方便,不必为每个进程分配一个地址范围,而是每个进程都可以使用一个完整的地址空

开源 2008年第8期 110
嵌入式

间中的任何地址。

  引入 VA 到 PA 的转换也会给分配和释放内存带来方便,物理上不连续的空间变成逻辑上连续的虚拟
地址空间,比如要 malloc 一块很大的内存空间,而物理内存虽然有足够的空闲内存,却没有足够大的连
续空闲内存,这时就可以分配多个不连续的物理页面,而映射到连续的虚拟地址范围。

  一个系统如果同时运行着很多进程,为各进程分配的内存之和可能会大于实际可用的物理内存,虚
拟内存管理使得这种情况下各进程仍然能够正常运行,因为各进程分配的只不过是虚拟内存的页,这个
页的内容可以映射到物理内存的页框,也可以临时保存到磁盘上而不占用物理页面,磁盘上这一部分称
为交换分区(Swap Partition)。当物理内存不够时将物理内存中不常用的页面临时保存到磁盘上,而
当用到这些页面时再从磁盘上加载回内存,这称为换页(Paging)因此,

  系统中可分配的内存总量 = 物理内存的大小 + 交换分区的大小

  地址空间的分类:

    程序空间(RO)

    数据空间(RW)

    寄存器映射空间(No Cache)

    用户空间与系统空间

  地址空间的种类涉及到保护权限和 Cache 的使用策略。

  CP15 协处理器

  CP15 为系统控制协处理器,有以下功能单元

    MMU 内存管理单元

    Cache 缓存控制

    Write Buffer 写缓冲控制

开源 2008年第8期 111
嵌入式

    Fast Context Switch 快速进程切换

  以下是 CP15 协处理器的寄存器

      表 1. CP15 协处理器的寄存器列表

  图 3 “协处理器指令格式”是协处理器的指令格式。opcode1 应该为 0,CRn 是 CP15 寄存器号,


Rd 是 ARM 通用寄存器号,opcode2 和 CRm 起辅助选项作用。

开源 2008年第8期 112
嵌入式

图 3. 协处理器指令格式

图 4. 内存访问步骤

  1、CPU 发出虚拟地址(VA),请求读数据

  2、TLB 接到 VA 后检查 TLB 中是否缓存了该 VA-PA 映射项,如果没有,则到物理内存中查页表,


找到映射项并缓存在 TLB 中,映射项中不仅保存着物理地址,还保存着 C, B 位和权限位

  3、检查 C 位,确定该物理内存页是否允许 Cache

  4、检查权限位确定是否允许读该物理内存页,如果不允许则引发 Abort 异常

  5、如果 C 位无效,则向总线发出 PA 读取数据;

  6、如果 C 位有效,则用 VA 到 Cache 中查找是否缓存了要读取的数据,以 Cache Line(例如 32

开源 2008年第8期 113
嵌入式

字节)为单位,如果 Cache Hit,则直接从 Cache 中读数据,如果 Cache Miss,则向总线发出 PA,读


取数据并缓存到 Cache Line

  MMU
  Alignment Fault (仅数据访问,取指无此限制)
    Word、Half Word 数据访问指令所访问的地址未对齐

  Translation Fault
    Page Descriptor 的[1:0]为 00 (Fault,无效表项)
  Domain Fault
    相应的 Domain 位为 00 (No Access)或 10 (Reserved)

  Permission Fault
    根据 AP 位和 CP15 寄存器 1 的 S,R 位决定访问权限,若 Domain 位为 11 (Manager)则 bypass
这一步检查

  External Abort
    总线异常,例如此物理地址上没有挂 RAM 芯片

  思考与练习
  1、从 VA 到 PA 的映射为什么要采用多级页表的方式?一级页表有什么缺点?

  Cache

  全相联 Cache(Fully Associative Cache)

  直接映射 Cache(Direct Mapped Cache)

  n 路组相联 Cache(n-way Set Associative Cache)

  [7:5]决定属于 8 个组(set, segment)的哪一个组 [31:8] TAG,与 Cache Line 保存在一起。搜索该组


中的 64 个 Cache Line 的 TAG,找到一致的就是 Cache Hit,否则 Cache Miss [4:0] 数据在 Cache Line
内的 offset

  Write Back Cache

开源 2008年第8期 114
嵌入式

  Cache 中的数据发生更改时并不立刻写回 RAM,而是在 Cache Line 中标记 Dirty 位,当该 Cache


Line 要被其它地址的数据 fill 时才 write back 到 RAM
  Cache 和 RAM 的数据有暂时 incoherent 的情况,对于多处理器系统(每个处理器有 local Cache)
是一个需要解决的问题
  Write Through Cache
  每当 Cache 中的数据发生更改就立刻写回 RAM,Cache 只起到加速读取的作用
  Cache 和 RAM 的数据总是 coherent 的

  Clean 操作
  将 Cache 中的数据写回 RAM,清除 Dirty 位
  Invalidate 操作
  声明 Cache 中的数据无效,强制重新从 RAM 读取

  思考与练习
  1、为使系统性能最佳,N-Way Set Associative Cache 的 N 应根据什么确定?应折衷考虑哪些因
素?

  操作 MMU 和 Cache 的内核启动代码


  bootloader 加载 linux 内核到内存并解压之后,linux 内核首先在汇编代码中读取 CPU 的基本信息,
对 CPU 做一些基本设置,创建最简单的临时页表,然后开启 MMU 和 Cache,进入虚拟内存模式(此后
CPU 发出的地址都是虚拟地址),然后跳到 C 代码中完成其它初始化工作,比如创建完整的页表、初始
化各种内核子系统、初始化硬件设备等。本节以 2.4 版 Linux 内核为例,通过实例学习一下如何对 CP15
协处理器的 MMU 和 Cache 编程。

  假设目标板的 RAM 物理地址是从 0x0800 0000 开始的(也就是说,RAM 芯片连接到 CPU 芯片上


从 0x0800 0000 开始的 bank)。经过内核的若干初始化代码之后,某些寄存器的内容如下:

            表 2. 初始寄存器

开源 2008年第8期 115
嵌入式

  接下来的步骤是:

  创建简单的临时内核页表

  配置与 MMU 和 Cache 相关的 CP15 寄存器

  启用 MMU 和 Cache

  临时页表存放在物理内存地址 0x0800 4000 起始的 16KB,完整的页表建立之后临时页表就没有用


了。首先将这 16KB 临时页表清零:

  mov r0, r4
  mov r3, #0
  add r2, r0, #0x4000 @ 16k of page table
  1: str r3, [r0], #4 @ Clear page table
  str r3, [r0], #4
  str r3, [r0], #4
  str r3, [r0], #4
  teq r0, r2
  bne 1b
  
  为什么是 16KB 呢?我们只使用第一级页表(Translation Table),该页表使用地址的[31:20]这 12
个 bit 索引,共有 4K 个表项,每个表项 4 字节,因此是 16KB。下面我们将使用 Section Descriptor 来
填充表项,每个 Section 对应 1MB 地址空间,我们只映射 4MB 的地址空间。思考一下,为什么首先要
把这 16KB 清零,即使没用到的表项也要清零?

  由于 Linux 内核在编译时确定的代码加载地址是 0xc000 8000(虚拟地址),而 bootloader 将内核


代码加载到物理地址 0x0800 8000,我们需要把物理地址从 0x0800 0000 开始的 4MB 映射到虚拟地址
从 0xc000 0000 开始的 4MB。

  但是这里有一个问题,设置好页表之后,最终有一条指令是启用 MMU 的,假设该指令的物理地址


是 0x0800 810c,该指令执行之后,它的地址变成了 0xc000 810c,后续指令应该从 0xc000 810c 后面
取得,然而 PC 寄存器的值没变,事实上后续指令仍然从 0x0800 810c 后面取得,然而此时 0x0800
810c 已经成了非法地址了。

  为了解决这个问题,要求启用 MMU 的那条指令及其附近的指令虚拟地址跟物理地址相同,这样在


启用 MMU 前后,附近指令的地址不会发生变化,从而实现平稳过渡。因此需要将物理地址从 0x0800
0000 开始的 1M 再映射到虚拟地址从 0x0800 0000 开始的 1M,也就是做一个等价映射(identity

开源 2008年第8期 116
嵌入式

map)。现在把临时内核页表的映射情况总结如下:

表 3. 映射关系

  以下代码建立上面所说的等价映射。

  add r3, r8, r5 @ mmuflags + start of RAM


  add r0, r4, r5, lsr #18
  str r3, [r0] @ identity mapping

  先前说过,r8 的值是 MMU Flag,r5 的值是 RAM 物理地址 0x0800 0000,由于要做等价映射,这


里的 r5 同时也是虚拟地址,而 r3=r8+r5=0x0800 0c1e 则是 Section Descriptor,比对一下看看各 bit
的含义:

图 5. 内存访问步骤

  Domain 为 0,AP 位是 0b11,可读可写,C 位和 B 位都是 1,允许在 Cache 中缓存,Cache 是


Write Back 的。

  然后将物理地址 r5 右移 18 位,加到页表起始地址上,也就是该项 Section Descriptor 在页表中的


位置,结果保存在 r0(0x0800 4200)中,最后将 Section Descriptor 的值保存在 r0 地址处就可以了。
为什么是 18 位呢?地址的[31:20]位用作页表索引,因此当地址右移 20 位就成了索引值,但是每个页表
项占 4 个字节,因此又要左移两位才是实际在页表中的相对地址。

  下面映射物理地址从 0x8000 0000 开始的 4MB 到虚拟地址 0xc000 0000,其中 TEXTADDR 是


Linux 内核在编译时确定的代码加载地址 0xc000 8000(虚拟地址),PAGE_OFFSET 定义为 0xc000
0000。读者可根据上面关于等价映射的分析自己阅读以下代码。

  add r0, r4, #(TEXTADDR & 0xfff00000) >> 18 @ start of kernel

开源 2008年第8期 117
嵌入式

   注:r0 = r4+ 0x3000 = 0800 4000 + 3000 = 0800 7000


  str r3, [r0], #4 @ PAGE_OFFSET + 0MB
   注:0800 7000 地址的内容为 0800 0c1e
  add r3, r3, #1 << 20
   注:r3=0810 0c1e
  str r3, [r0], #4 @ PAGE_OFFSET + 1MB
   注:0800 7004 地址的内容为 0810 0c1e
  add r3, r3, #1 << 20
   注:r3=0820 0c1e
  str r3, [r0], #4 @ PAGE_OFFSET + 2MB
   注:0800 7008 地址的内容为 0820 0c1e
  add r3, r3, #1 << 20
   注:r3=0830 0c1e
  str r3, [r0], #4 @ PAGE_OFFSET + 3MB
   注:0800 700c 地址的内容为 0830 0c1e

  设置好了页表,接下来设置与 MMU 和 Cache 相关的 CP15 寄存器:

  mov r0, #0
  mcr p15, 0, r0, c7, c7 @ invalidate I,D caches on v4
  mcr p15, 0, r0, c7, c10, 4@ drain write buffer on v4
  mcr p15, 0, r0, c8, c7 @ invalidate I,D TLBs on v4
  mcr p15, 0, r4, c2, c0 @ load page table pointer
  mov r0, #0x1f @ Domains 0, 1 = client
  mcr p15, 0, r0, c3, c0 @ load domain access register
  mrc p15, 0, r0, c1, c0 @ get control register v4

  /*
  * Clear out 'unwanted' bits (then put them in if we need them)
  */

  @ VI ZFRS BLDP WCAM


  bic r0, r0, #0x0e00
  bic r0, r0, #0x0002
  bic r0, r0, #0x000c
  bic r0, r0, #0x1000 @ ...0 000. .... 000.

开源 2008年第8期 118
嵌入式

  /*
  * Turn on what we want
  */

  orr r0, r0, #0x0031


  orr r0, r0, #0x2100 @ ..1. ...1 ..11 ...1

  #ifdef CONFIG_CPU_ARM920_D_CACHE_ON
  orr r0, r0, #0x0004 @ .... .... .... .1..
  #endif

  #ifdef CONFIG_CPU_ARM920_I_CACHE_ON
  orr r0, r0, #0x1000 @ ...1 .... .... ....
  #endif

  这一段有很多协处理器指令,请读者对照数据手册和代码中的注释查看各指令的含义。

  首先关闭指令和数据 cache,清除 write buffer,然后设置页表基地址(TTB),该值先前保存在 r4


寄存器中,然后设置 domain 的保护,在上节中,注意到 Section Descriptor 的 domain 都是
0,domain 寄存器中的 domain 0 对应的是 0b11,表示访问模式为 manager,不受限制。 接下来读出
控制寄存器(CP15 协处理器的寄存器 1)的值并做修改,准备启用 MMU,根据内核配置决定是否启用
数据和指令 cache,修改之后一并写回控制寄存器,使设置生效:

  mcr p15, 0, r0, c1, c0

 
作者简介:宋劲杉,清华大学自动化系硕士,北京亚嵌教育研究中心(www.akaedu.org)高级讲师,5
年嵌入式系统开发经验,2年嵌入式行业教学经验。参与多个嵌入式系统项目开发工作,精通 Linux内核、
POSIX、TCP/IP、 bootloader编写、文件系统、ARM处理器,擅长ARM平台上Linux系统的移植和应用
开发,熟悉的ARM处理器有:S3C2410、PXA255、PXA270和EP7312等。
个人博客地址:http://djkings.javaeye.com/

开源 2008年第8期 119
开源小知识

开源小知识
为什么开发者需要了解软件的知识产权? 没有登记的软件受著作权法保护吗?

知识产权是法律赋予人们对智力劳动成果所 开发者大多知道软件可以通过申请著作权登
享有的民事权利。知识产权对软件的创造者而言, 记得到保护,实际上,软件从它诞生的那一刻起
可以将知识产权理解为开发者可以在一定期限内 就已经受到版权法的保护。不管一个软件是不是
对软件享有的独占权或专有权和软件开发者依法 申请了著作权登记,软件作品的作者都可以对侵
享有的其它权利。显然,开发者对成果的独占使 犯其著作权的行为采取措施。例如,某公司的软
用权可以带来各种收益,因此软件不仅是程序员 件作品没有进行著作权登记,但是当有人非法复
所创造出来的成果,而且是企业的一笔财富。如 制这个软件时,该公司仍然可以通过法律手段追
何使管理和使用软件的知识产权,实现其价值最 究非法复制者的责任。
大化是开发者和企业都关心的问题。
开发者可以将自己的智力成果进行各种形式 在中国有没有软件专利?
的处理。比如公开软件、出售软件、甚至是将其 商业方法软件专利又是什么?
进行销毁都是开发者的自由。这些自由都是法律
所赋予的,其中知识产权法是非常重要的一部分。 关心软件产业的人们都注意到欧盟在 2005
开发者经常忽视知识产权对自身的价值,多 年没有通过软件专利法案,但美国的做法对国际
半是由于其将法律给予的自由视作与空气、阳光 规则大趋势的影响力也不得不考虑。即便没有专
一样理所当然、天经地义。事实上,不管开发者 门的软件专利立法,软件的专利问题依然存在。
是不是注意到知识产权法的存在,他的智力成果 “凝固”在产品中的软件专利已经为国内很多软
始终处于法律的保护和管制之下。开发者准备对 件企业所认识。
自己或他人的智力成果进行任何处理之前,都应 商业方法软件的专利保护最初也是从美国发
该考虑该行为是不是符合知识产权规则的要求。 起的。商业方法软件专利在美国、欧洲和日本的
申请和授权十分火爆。
软件相关知识产权主要有哪几类? 中国国内的反映比较消极,企业对商业方法
的专利申请尚处在无知状态,专利局的审查指南
最初的知识产权多涵盖的内容比较窄,主要 和政策也没有针对性的反映,专利代理服务机构
包括版权、专利权和商标权。后来出现一些新型 多是在忙着为外国的申请进行代理。目前,中国
的知识产权,如地理标记权、集成电路布图设计 涉及到商业方法的软件专利不多,而国外银行以
权等等。当然与软件和软件产品关系最密切的还 及网络公司在中国申请的有关电子商务方法的专
是版权、专利权和商标权。 利已经覆盖了中国金融业的基础服务。

开源 2008年第8期 120
开源小知识

软件产品为什么需要许可协议? 可证再发布,BSD 协议规定要保留作者的署名


权);甚至发布者可以不选择或使用任何许可证、
我们可以将软件理解为特殊的文字作品,只 放弃任何对软件的任何权利,许可给其它人最大
不过这些文字可以通过一定方法让计算机也可以 的自由。然而,就算是这样,还是应当理解为发
读懂。作者根据著作权法的规定对作品享有一定 布者与其他人达成了一个“该软件可以随意使用
程度的独占权,如果作者愿意让其它人共享自己 ”的协议。
的权利或其它人希望使用这个作品,就必须通过 显然,所有的软件作品都是需要许可的,开
作者对他人进行授权,或者叫做许可。 源软件的发布者对软件如何被使用还有各自的期
软件产品的所有者有对产品的独占权,包括 望和条件,因此发布开源软件必然需要许可证,
使用、收益、署名、修改等等内容。如果用户希 只不过许可的内容可以由发布者自己决定。 
望合法地使用这个产品就必须获得许可。这个许
可可能来自法律的强行规定,例如“合理使用原 使用开源软件需要获得许可吗?
则”,尽管软件的所有者内心可能十分不情愿;
这个许可还可能来自所有者,可能是收费的许可 开源软件虽然公开了源代码,使公众可以非
也可能是免费的许可。 常容易获得软件,与传统软件许可“先获得许可
因此,许可协议也是用户合法使用软件作品 再获得软件” 的模式有所差别。但使用开源软件
的一个凭证。相当于在许可人与被许可人之间签 仍然需要获得许可, 因为开源软件也是软件作品 ,
订一个合同来规定双方当事人的权利和义务。通 对其处理也必须符合著作权法的规定。这就是开
常,这个协议的内容是由许可方拟定的,被许可 源软件世界许可证存在的必要。
方和用户只能选择接受或者不接受,因此是一种 开放源码软件是受到著作权的保护的作品,
格式化的合同。 因此未经权利人许可不能随意使用。因此使用开
源软件就一定要获得许可。如果没有获得许可就
发布开源软件需要许可协议吗? 使用开源软件,就是侵犯了作者的独占权和专有
权。多数人没有注意到许可的存在,是因为许可
开源软件与传统软件都是智力成果,在决定 的成立并不是以传统的签字画押、点击“接受许
以何种方式发布之前,在技术层面是没有任何差 可”等方式进行。
别的。不管是封闭源代码还是开放源代码,都是 开源软件的许可是在运行它或修改它或发布
软件的发布者所使用的许可方式的一个内容或条 它的那一刻就马上生效的。开源软件的许可协议
款。许可证的内容可以差别很大:如传统软件许 是一个开放的,只要有相应的行为就理解为默认
可证只许可用户使用软件但不允许用户再发布软 接受的许可。当然, 接受协议的前提条件还是有
件,同时为许可证的获得设定一些条件(例如收 的,在许可证文本中讲得很清楚,一旦被许可人
取许可费);如开源软件许可同时许可用户可以 没有遵守这些条件,许可可能随时会被终止。许
再发布软件,同时还对再发布的条件进行了一系 可一旦被终止,这时持有开源软件的人就没有权
列限制(例如 GPL 许可协议规定不得使用其它许 利使用它并且需要承担违约的责任。

开源 2008年第8期 121
编读往来

编读往来
Linuxpk.com 8月十大热门帖
Debian 上 PostFix 的配置
http://bbs.linuxpk.com/thread-14495-1-1.html
SecureCrt 监控非法登录脚本
http://bbs.linuxpk.com/thread-33666-1-1.html
对于 Linux 系统的几个常见误解
http://bbs.linuxpk.com/thread-33676-1-1.html
在红旗 Linux6.0SP1 下安装 httpd-2.2.8+php-5.2.5+PostgreSQL-8.3.1+drupal-6.2
http://bbs.linuxpk.com/thread-25230-1-1.html
MySQL 命令
http://bbs.linuxpk.com/thread-25357-1-1.html
Centos 5.2 + HylaFAX + Apache + MySQL + PHP + AvantFAX + HylaFAX-Clinet
http://bbs.linuxpk.com/thread-33649-1-1.html
intel 965+slackware 12+compiz fusion
http://bbs.linuxpk.com/thread-33843-1-1.html
AWK 有关域分隔符的问题
http://bbs.linuxpk.com/thread-33845-1-1.html
linux 内核完全注释
http://bbs.linuxpk.com/thread-33893-1-1.html
经典的杯子测试题
http://bbs.linuxpk.com/thread-33526-1-1.html

开源 2008年第8期 122
编读往来

开源 2008年第8期 123