Escolar Documentos
Profissional Documentos
Cultura Documentos
卷首语
自由是根本 开源是形式
9 月 20 日,软件自由日(Software Freedom Day,简称 SFD)将迎来第五个年头。
软件自由日于 2004 年发起,定于在当年 9 月份的第三个“星期六”举行,由软件自由国际
(SFI,Software Freedom International)非盈利组织的领导,其主席 Pia Waugh 女士是
澳洲 FOSS(自由/开源软件)著名活动家,曾是 Linux Australia 前总裁和副总裁,同时,
她还有个身份就是 Ubuntu 计划发起人之一 Jeff Waugh 的夫人。
举办软件自由日的目的是在于唤醒社会公众对软件自由的良知,提高全社会对自由软件
的认识。庆祝活动不分国界、不分种族,举办庆祝活动不以城市为单位,而是 向 SFI 注册报
告经纬度,最终在庆祝自由软件日活动的 Map 中体现出来。
自由软件日活动在我国的兴起,我认为对于长期困扰人们关于自由软件与开源软件概念
模糊不清的认识将起到很大的促进作用。自由软件运动与开源软件运动是两种不同意识形态
的运动,自由软件运动的目标是使所有软件摆脱知识产权的约束,因为他们认为这些约束会
妨碍技术的进步并且对社区无益。开源运动的目标与自由软件运动基本一样,但采取了一种
更加务实的方式,他们依据经济与技术的价值主张源代码可以自由的获得,而自由软件运动
是由道德与伦理驱使的。
开
oss.linuxpk.com 源 2008 年第 9 期 2
卷首语
由软件应该能让用户以所希望的方式使用软件,能够研究并修改源代码,可以根据你自己的
修改重新分发软件,同时,也保留你发布修改 后软件新版本的自由。
由此可以看出,开放源代码只是自由软件的一种表现形式,或者说是自由软件的一种开
发模式,自由软件和开源软件是两个不同的概念,而“自由”则是软件的根本,这有别于传统
的商业软件。
随着自由软件被更多的人所熟知,所信仰,今年北京 BLUG、北邮等都将举办一些庆祝
活动,而在青岛,在兰州,在西安这样的庆祝活动也将同时展开,随着软件自由 日活动在
我国全面地展开和普及,对于自由软件的概念、精神将为更多的人所熟悉和认知。
开
oss.linuxpk.com 源 2008 年第 9 期 3
主办:Linux 宝库
网址:www.linuxpk.com
官方下载地址:oss.linuxpk.com
主席:陆首群
专家委员会(按姓氏拼音为序)
陈怀临 宫敏 毛德操 倪光南 许洪波 袁萌
顾问委员会(按姓氏拼音为序)
曹冬 陈绪 贾栋 李科研 毛文波
主编:陈杰
副主编:陈伟
排版:邱风 魏鸿易 邹洋
封面设计:张亚运
编辑部:王文龙 赵龙
声明:杂志部分内容来自开源社区及互联网,目的是加强开源文
件交流和开源应用传播,如在版权问题,敬请联系,我们将在第一时
间进行处理。
致谢:本电子杂志由 OpenOffice 制作,并直接导出 PDF 文档,
在此表示感谢
投稿信箱:opensource@linuxpk.com
目录
目录
封面.................................................................................................................................................1
卷首语............................................................................................................................................2
自由是根本 开源是形式...........................................................................................................2
产业聚焦........................................................................................................................................7
LinuxPK 社区与中科院自动化所自由软件协会展开合作.....................................................7
对 Linux 感兴趣的国家排名......................................................................................................7
Linux 系统在服务器市场占 13.4%...........................................................................................7
Ubuntu Linux 用户突破 800 万..................................................................................................8
Firefox 卸载率中国居首............................................................................................................8
六国反对 OOXML 成为国际标准质疑 ISO 公正性................................................................9
微软与 Novell 进一步扩展互操作性合作................................................................................9
Intel OTC 助力 OpenSolaris 电源管理....................................................................................10
主流 Web 浏览器引擎列表......................................................................................................10
红旗 Linux 北上举办辽宁电子政务研讨会............................................................................12
杨叙:英特尔与龙芯是竞合关系...........................................................................................13
开源的成熟及 Intel 的 Moblin 战略........................................................................................14
谷歌浏览器 Chrome 的由来....................................................................................................19
7 大理由剖析 Chrome 优缺点.................................................................................................20
谷歌 Chrome 浏览器开发内幕................................................................................................22
开源通迅......................................................................................................................................28
英特尔北京 Moblin 团队成立.................................................................................................28
红旗藏文 Linux 成功验收 攻克多项技术难题......................................................................28
华硕 Eee Box 集成 Splashtop 即时启动软件..........................................................................28
英特尔收购英国 Opened Hand 公司.......................................................................................29
红帽 Fedora 项目公布新奖学金计划......................................................................................29
DeviceVM 获得价值 1500 万美元的第三轮投资...................................................................29
英特尔高调发布 Moblin 2.0....................................................................................................29
恩信科技开源 ERP V7.10 发布...............................................................................................30
第二届 PHP 全国调查圆满结束..............................................................................................30
蓝迪科技推出基于开源软件的高清机顶盒方案...................................................................30
天石网通网络宝(V2.0)产品通过 CSIP 产品检测.............................................................30
红旗 2000 金友兵入选 2008 年北京市“新世纪百千万人才工程”...................................31
中科龙梦与法国 Dexxon 展开合作........................................................................................31
Novell 增强其 ZENworks 能力................................................................................................31
神州商桥与中小企业协会携手推出“信星计划”...............................................................31
红帽企业 Linux 赢得美国国防部 IPv6 认证..........................................................................32
OASIS SOA-EERP 技术委员会正式成立..............................................................................32
开
oss.linuxpk.com 2008 年第 9 期 5
源
目录
“开源行动日” 技术巡讲全国展开.....................................................................................32
威盛获清华同方定单首批出货预计数十万颗.......................................................................32
百资科技发布 Notebook 网络管理管理工具.........................................................................33
IBM 宣布"Microsoft-Free"客户端计划...................................................................................33
开源社区......................................................................................................................................34
Firefox 3.1 Alpha 2 发布..........................................................................................................34
OpenOffice.org 3.0.0 RC1 发布...............................................................................................34
QQ for Linux 1.0 Preview(106)发布........................................................................................35
Wine 推出 1.1.4 版....................................................................................................................35
2627-rc5 Kernel 发布................................................................................................................35
Ubuntu 9.04(兴奋的野兔)紧锣密鼓筹备................................................................................36
迎接国际软件自由日(SFD 2008)......................................................................................37
20 件 Win 平台不行而 Linux 能搞定的事情..........................................................................38
Larry Wall 和 Perl 语言............................................................................................................41
ObjectWeb 产业链....................................................................................................................45
知识学堂......................................................................................................................................50
Linux 下设备完全驱动(四)................................................................................................50
PC 的足迹(下).....................................................................................................................60
经验技巧......................................................................................................................................67
Linux 一句话精彩问答............................................................................................................67
Squid 做 loadbalance 并支持按源 ip 做会话保持...................................................................72
Ubuntu 英文环境下使用 Fcitx 中文输入法............................................................................73
通过串口管理 Linux 主机........................................................................................................74
实用入侵监测的配置和部署...................................................................................................76
实现基于 LDAP 的用户管理...................................................................................................81
Linux 下防范黑客实用技巧....................................................................................................84
双系统的用户如何卸载 Linux................................................................................................84
把脉 Linux 上 USB 数据流......................................................................................................85
企业应用......................................................................................................................................90
Linux on Power 性能调优........................................................................................................90
基于 Linux 平台的网页内容过滤系统的实现......................................................................100
基于加密容器法保护家庭计算机文件.................................................................................105
嵌入式........................................................................................................................................113
嵌入式开源模式.....................................................................................................................113
嵌入式 Linux 文件系统的构建..............................................................................................115
开源小知识................................................................................................................................122
Linuxpkcom 九月十大热门帖................................................................................................125
开
oss.linuxpk.com 2008 年第 9 期 6
源
产业聚焦
LinuxPK 社区与中科院自动化所
自由软件协会展开合作
月一期的系列讲座,普及自由软件之自由开放思
想、推动自由软件在中国的应用与发展。
系列讲座每月一期,受众群主要包括中科院
京区各研究所、各大高校学生,以及来自开源社
区的爱好者。邀请自由软件领域的企业领袖、开
发者和推广者座谈交流,协助在自由软件使用方
面有困难者解决问题,与开源社区爱好者展开互
动,推动社区发展。第一期讲座将于 9 月 25 日
Richard Stallman 在自动化所演讲情景 在中科院自动化所举行,议题围绕 Vim 的应用展
开。详情参见:
近日,开源社区 LinuxPK 宣布与中科院自动
http://bbs.linuxpk.com/thread-35558
化所自由软件协会展开合作,双方将共同举办每 -1-1.html
对 linux 感兴趣的国家排名
Linux 的搜索量和使用量呈正比,得出对各个
Linux 发行版占有最高的国家排名。结论显示,
Linux 在东方比西方更流行。一个可能的原因是
这些国家收入低,只好用免费 Linux 满足对系统
的需求。对 Linux 最感兴趣的前五个国家是印度、
古巴、俄罗斯、捷克和印尼。Ubuntu 的前五排
名为意大利、古巴、印尼、挪威和捷克。
openSUSE 前五名分别为俄罗斯、捷克、马尔多
瓦、德国和印尼。而 Fedora 的前五名为斯里兰
近日,Pingdom 网站做了一项调查,假设
卡、孟加拉、印度、尼泊尔和津巴布韦。
开
oss.linuxpk.com 2008 年第 9 期 7
源
产业聚焦
市场占有的份额已经达到 13.4%,Unix 则为
7.7%,Windows Server 最为普及为 36.5%。
但据 Canonical 的市场调查数据显示,Ubuntu
Linux 目前已经拥有了 800 万用户。
Firefox 卸载率中国居首
开
oss.linuxpk.com 2008 年第 9 期 8
源
产业聚焦
六国反对 OOXML 成为国际标准
质疑 ISO 公正性
开
oss.linuxpk.com 2008 年第 9 期 9
源
产业聚焦
提供最佳的 Windows-Linux 互操作性解决方案, 并避免知识产权纠纷。”
同时提升他们现有 Windows Server 投资的价值,
主流 Web 浏览器引擎列表
他们凭借什么去和 IE 对抗?答案是各自不同的优秀引擎,引
擎是浏览器的核心,渲染网页的速度,效果都将在引擎的好坏上体现出来,以下向大家介绍目前世界范
开
oss.linuxpk.com 2008 年第 9 期 10
源
产业聚焦
围内主流的浏览器引擎。
Trident
Gecko
Firefox、Camino、Flock、Thunderbird、Seamonkey、Epiphany、NVU、Netsc
流行的应用
ape、K-Meleon
授权 开源
Acid2 兼容性 是
Acid3 兼容性 No
操作系统支持 Windows、Mac OS X、Linux/BSD
主流客户 Mozilla Corporation、Netscape (originally)
市场份额 大约 20%
最早发布时间 1998 年 12 月
WebKit
Safari、Chrome、Adobe AIR、iCab、Epiphany (experimental)、Konqueror
流行的应用
(KHTML)
授权 开源
Acid2 兼容性 是
Acid3 兼容性 是
操作系统支持 Windows、Mac OS X、Linux/BSD
主流客户 WebKit Foundation、Apple、Nokia、Adobe、Google、KDE Team (originally)
开
oss.linuxpk.com 2008 年第 9 期 11
源
产业聚焦
市场份额 大约 7%
最早发布时间 2000 年 10 月
Presto
流行的应用 Opera Desktop/Mobile/Mini、Nintendo DS、Wii Internet
Channel、Macromedia Dreamweaver MX and above、Ado be CS 2 and above
授权 闭源
Acid2 兼容性 是
Acid3 兼容性 是
操作系统支持 Windows、Mac OS X、Linux/BSD
主流客户 Opera Software
市场份额 少于 2%
最早发布时间 2002 年 11 月
红旗 Linux 北上举办
辽宁电子政务研讨会
8 月 22 日(沈阳)消息,由中科红旗主办的辽宁电子政务研讨会在沈阳凯宾斯基饭店召开,研讨会围
开
oss.linuxpk.com 2008 年第 9 期 12
源
产业聚焦
绕“Linux 与您携手共迎挑战,带您进入电子政务的高效未来!”的主题展开,IBM 与首信等合作伙伴,基
于 Linux 解决方案做了精彩演说,得到了现场参会人员的一致好评。
会上,优秀电子政务软件提供商中科红旗介绍了在电子商务方面的优势。红旗联合合作伙伴推出电子
政务基础平台,已成功应用于湖北省荆门市。该电子政务平台采用了红旗 DC 服务器作为 Linux 平台,
成功解决了信息资源共享交换的深化整合问题,被评为信息产业部优秀电子政务示范工程,树立了湖北
省乃至全国的电子政务建设的标杆。
杨叙:英特尔与龙芯是竞合关系
9 月 11 日,英特尔全球副总裁兼大中华区总经理杨叙在深圳大学
参加“英特尔高校行”活动时,接受了媒体的采访。杨叙首次对中国自
主研发的下一代四核及八核龙芯 3 处理器作出回应,称英特尔与龙芯
3 之间既是竞争也是合作关系。同时他也透露,自 8 月 1 日反垄 断法
实施,英特尔未受到任何反垄断诉讼。
就在 8 月底,中科院带着国产龙芯 3 号处理器的架构设计在美国
硅谷进行展览,引发国内外媒体和网民的热烈讨论,焦点集中在龙芯
3 能否与 CPU 巨头英特尔等抗衡。新的龙芯处理器提高了与 X86 架构的兼容性,因此龙芯在一定程度上
成为英特尔的竞争对手。
此外,杨叙语气坚定的表示,英特尔在中国没有受到反垄断诉讼。他同时也强调,英特尔也没有因为
反垄断法而调整自身的产品策略。就在上个月,AMD 上任不久的 CEO 德克·梅尔对中国媒体表示,AMD
暂时没有利用反垄断法起诉英特尔的计划。
开
oss.linuxpk.com 2008 年第 9 期 13
源
产业聚焦
OSCON 2008 记行
陈绪
会议盛况
21 日和 22 日是全天的 tutorial,就是手把手的技术专题授课,每个专题是半天。从 23 到 25 日,
早晨是几个 keynote,接着是丰富的 session,一般每个 session 是 45 分钟,同一时间会有 16 个左右
的 session,也就是说,你得从 16 个以上的 session 中选择一个去参加。会议参加人数是 1000 左右,
会场里面到处都是拎着笔记本赶场的人,从一个 session 到另一个 session。
主题演讲所有人都参加,现场是人头攒动,热闹非凡。十多个主题演讲中,我印象最深的是其中两个:
开
oss.linuxpk.com 2008 年第 9 期 14
源
产业聚焦
开源的成熟
谁也没有想到,从 91 年 Linux 内核横空出世以来,开源和 Linux 从涓涓细流,会成为时代的主旋律,
进而发展为横扫业界的狂飙。不过,这和我做开源这十多年来的感悟是一致的:重在定位,贵在坚持。
● Linux 桌面走向成熟
22 日晚,Mark Shuttleworth 做了一个讲话。现场会议我并没有参加,当时我在外面和开源爱好者
在交流。我是第二天看新闻报道得知的,特别是还看到袁萌的评析文章。
开
oss.linuxpk.com 2008 年第 9 期 15
源
产业聚焦
下一阶段,随着 Linux 下应用程序的进一步丰富,大家会更加为这个平台的魅力所倾倒。
● 开源商业模式的成熟
现场的展台有上百个,都是展示各种开源产品和社区的开源团体和公司。
前一段时间,我在国内写过相关文章,阐述开源的商业模式问题,这次则更加深有体会。
开始的两年里,他采用的模式和目前国内的一些项目差不多,就是从社区拿代码,然后自己用。两年
结束的时候,他发现这个模式行不通了。抛去开源社区有意见不说,自己的维护工作和维护成本实在太
高。接下来他决定强调回馈,结果代码都进了开源社区的代码库,获得了社区的赞许,也展示了自己的
实力,并获得了更多的客户认可。单纯地强调贡献,并没有太多的影响力。只有受到不回馈社区带来的
切肤之痛,才会真正地感受到开源社区的精神。
● 开源成为主流
以前谈到开源,似乎更多的是一些爱好者和发烧友的偏好,以往 OSCON
上也多是一些独行侠似的人物。这次,我看到的是,除了开源爱好者,更多的
是来自商业公司的参与者。Intel 来的同事们就不说了,其实各大 IT 公司均有
众多人员参加,搞得周边的酒店全 部爆满。同时,还有诸多依托开源产品,
蓬勃发展的公司和基金会,都摆开了展台,大方亮相。
长期以来开源所欠缺的产业链,终于完全展开。没有人能忽视开源的影响力:无论你是否喜欢,你的
生活都会面对开源软件。据不完全统计,在全球范围内,部署了开源软件的企业高达 70%以上。
开
oss.linuxpk.com 2008 年第 9 期 16
源
产业聚焦
● Moblin 和 MID
更重要的是,要认识到,Moblin.org 是一个标准的开源社区,承载着 Moblin 的 SDK、技术资料和
源代码等等。而 Mobin 是一个优化的 Linux 操作系统和核心软件栈,适用于“英特尔凌动处理器技术”平
台,也就是大家常说的“ATOM”平台。“英特尔凌动处理器技术”平 台,涵盖 MID、netbook、nettop、
汽车的 IVI(In-Vehicle Infotainment)系统等多个领域。Moblin 的核心特性,在于基于的小型 低功耗
设备,提供丰富的互联网和媒体体验。
● Moblin 2.0
而 moblin2.0 的开发,相对 1.0 而言,会更加关注多个平台,并进一步优化软件栈。这里透露一下,
2.0 的开发过程,中国 OTC 的程序员将会承担更多的工作。另外一个变化是,Moblin2.0 将基于 Fedora
进行,采用 rpm 打包,而原来的 1.0 是基于 Ubuntu/Debian 的 deb 打包。
开
oss.linuxpk.com 2008 年第 9 期 17
源
产业聚焦
● Moblin 的生态系统
这次的展台上,展示了两款 MID 的样机,一款是 Lenovo 的,另一款是 Compal(一家韩国厂商)的。
事实上,Moblin 在全球生态系统中获得了巨大进展和支持。近期有多款 MID 上市,包括爱国者的
P8860 型号,将于在 8 月 8 日香港首发。
6 月下旬,亚洲各国(大陆—北京/上海,台北,印度,越南,韩国,日本等)同时举行的
Moblin 应用开发者大会;
展望
参加了国际的开源盛宴,感受了国际的开源顶尖水平,更加引发了我对国内开源业界的思考。长期以
来,国际的 IT 走势一直对中国有着前瞻性的指导作用。Linux,乃至开源行业,更是如此。不过中国有
自己的特点,用户有自己的需求,我们的很多用户甚至比 国外的用户更加狂热。
一个事物要长久发展,光靠热情是不够的,更需要的是理性的思考和实际的行动。很高兴地看到,国
内的开源业界有了红旗、中标、拓林思等一系列企业。国际上的一些活动,如 OSCamp、Linux User
Group 等也都登陆中国。但是,真正的开源精神来了没有?什 么时候,更多的中国开源企业能够成长起
来,成为软件行业的主力军?让我们拭目以待。
开
oss.linuxpk.com 2008 年第 9 期 18
源
产业聚焦
谷歌浏览器 Chrome 的由来
袁萌
谷歌由互联网搜索起家,经过多年的逐步发展,转向更广泛的网络服务。谷歌很早就明白浏览器性能
的优劣将决定它自己的前途命运。谷歌虽然帮助 Mozilla 的开发火狐,但是,感到还是不能满足自己的需
要。于是,从 2002 年春开始,谷歌就着手准备自己的浏览器开发(技术和人才的储备)。
随着现代计算机硬件性能的迅速提高,比如,多核高频 CPU、大内存和高带宽等,对浏览器提出了更
高的要求,比如,为每个浏览器标签分配一个单独的进程,与操作系统的通信都必须是多线程的,加大
缓存容量,不怕消费更多的带宽资源。由此可见,虽然 IE 8、FireFox 3.1 和苹果的 safari 浏览器都采用
了不少新技术,但是,在某些方面(比如,多进程),谷歌浏览器 Chrome 的优异性能是它们所不能及
的。
谷歌为了自己的需要,多年积累人才和技术,开发了浏览器 Chrome(寓意为铬合金,注意合金两
字),并且开放其全部源代码,欢迎竞争对手自由使用。这是非常难能可贵的,局外人生(谷歌)什么
气呢?
开
oss.linuxpk.com 2008 年第 9 期 19
源
产业聚焦
PCWorld 金童
近日,Google 周二发布了开源浏览器 Chrome。在进行评测后,《PC World》杂志列出了支持和反对
Chrome 的 7 大理由。
支持 Chrome 的 7 大理由
1. 不会崩溃
Chrome 最具吸引力之处在于多进程结构,能够避免恶意网页内容或应用导致整个浏览器崩溃。这
一功能同时将各个网页和应用隔离开,从而提高了安全性。
2. 运行速度确实很快
由于基于多进程结构,某一网站速度较慢并不会影响用户对其他网站的浏览。当某一网页"卡住"时,
用户可以点击其他标签继续浏览,同时等待该网页的打开。此外,网页中某一插件运行缓慢也不会
影响整个网页,因为网页和插件也使用不同进程。
3. 用户几乎感觉不到浏览器的存在
4. 使搜索变得更简单
5. 加强了用户对标签的控制
Chrome 赋予标签浏览新的意义。用户可以拖动一个标签,使其自身创建一个窗口;也可以将标签
拖放至现有窗口中,将标签合并。Chrome 还允许用户在启动时根据预设打开网页,而其他浏览器
通常需要第三方插件才能实现该功能。
6. 创新的主页
开
oss.linuxpk.com 2008 年第 9 期 20
源
产业聚焦
7. Incognito 隐私保护模式
反对 Chrome 的 7 大理由
1. 目前仅仅是 Beta 测试版
2. 无法安装任何插件
3. 没有同步功能
4. 标准带来的劣势
5. 给予网络广告冠冕堂皇的理由
6. 取消了地址栏下拉菜单
7. 丢失上网历史信息
开
oss.linuxpk.com 2008 年第 9 期 21
源
产业聚焦
谷歌 Chrome 浏览器开发内幕
《连线》杂志 杨琳编译
开发浏览器传闻变现实
➢ 开发浏览器传闻变现实
8 月 18 日,谷歌在加州山景城总部 41 号大楼一个小会议室召
➢ 早在 2001 年便有开发打算
开每周一次的经理会,这可能是发布 Chrome 浏览器前的最后一
➢ 开发过程一波三折
次经理会。在会议上,布赖恩·拉考维斯基(Brian Rakowski)走向
➢ 公司高层终开绿灯
白色书写板,用黑色干擦笔在白板上写了 12 个条目。
➢ 速度是最大优势
拉考维斯基今年 20 多岁,身体瘦长,喜爱交友,是一项秘密 ➢ 具有全新功能
计划——Chrome 浏览器开发——的产品经理。据悉,这一计划 ➢ 保密工作非常好
从启动到现在已经有两年多时间了。
在将桌面计算升级到“云计算”过程中,谷歌拥有相当大的优势。Chrome 的出现无疑是向其竞争对手
微软发出的一大挑战。多年前,微软正是凭借 IE 浏览器击溃 Netscape Navigator。随着 Chrome 的登
场,IE 是否会面临和 Netscape Navigator 一样的命运,我们拭目 以待。
实际上,谷歌将推出浏览器的传闻很久以前就已不胫而走。在漫长的等待中,很多人早已闭上讨论之
口。但这一次的经理会势必再次启动讨论之门。按照谷歌的计划,Chrome 在 9 月 2 日正式登场。在公
开测试版之前的最后一个版本,拉考维斯基及其团队只发现 5 个“bug”,而且都已解决。技术负责人之一
的马克·拉尔森(Mark Larson)说:“事情看起来还不错。”
谷歌产品管理副总裁桑达·皮采(Sundar Pichai)问道:“什么东西让你们搞了一个晚上?”参与第一个原
型开发的工程师达林·费希尔(Darin Fisher)说:“当然不是 Chrome。”这句话引来一片笑声,因为每一个
人都知道他家里有一个只有 10 周大的孩子。拉考维斯 基拿出一支红笔在“发布状态”旁边加了一个“X”。
这是一个信号,暗示谷歌 Chrome 浏览器离成为现实只有一步之遥。
早在 2001 年便有开发打算
开
oss.linuxpk.com 2008 年第 9 期 22
源
产业聚焦
谷歌为什么要开发浏览器?这似乎是一个很容易回答的问题。相比之下,人们更为关注的是,谷歌开
发浏览器为什么用了这么长时间。皮采说:“我们要做的是让人们使用一种浏览器访问我们的资源和网络。
”CEO 埃里克·施密特(Eric Schmidt)说:“浏览器是关键所在。”他应该很清楚这一点,因为在上世纪 90 年
代激烈的浏览器大战中,他就竟曾担任过 Sun 的首席技术官(CTO)。毫无疑问,谷歌创始人拉里·佩奇
(Larry Page)和塞吉·布林(Sergey Brin)自然也知道这一点。
在幕后,Chrome 开发仍旧是施密特与谷歌创始人争论的话题。谷歌最后采取了一种折衷办法,组建
一个小组,任务是改进浏览器奇才本·古德杰(Ben Goodger)和费希尔负责开发的开源浏览器 Firefox。
(古德杰和费希尔均效力于 Firefox 拥有者、非盈利性组织 Moz illa)除此之外,谷歌还推出另一个举措,
聘请曾就职于 NeXT 公司的 37 岁的工程师莱纳斯·厄普森(Linus Upson)担任工程研发总监 。费希尔说:
“佩奇和布林的决定是非常明智的,原因再简单不过:如果能做好 Firefox 扩展,他们就有能力开发出一
款优秀的浏览器。”
开发过程一波三折
对现有浏览器进行修补以适应这一想法意味着,必须不断开发相关附加组件,例如工具条、RSS 阅读
器等等。但这种修补可能因为一次彻底升级成为一种徒劳。费希尔说:“作为 Firefox 的开发者,你必须
不断创新,但你又经常担心,一旦推出下一版本,所有扩 展将成为废物。实际上,这种事情已经发生了。
”结论是显而易见的:只有开发自己的软件,谷歌才能将浏览器送入“云计算”时代,并潜在地掀起一股自
微软和 Netscape 拉锯战(市场排名几乎每月变换)之后从未有过的革新浪潮。
谷歌构想的一个关键性革新就是所谓的多处理结构,这一系统能够帮助计算机在软件崩溃时继续运行。
那为什么不将这一系统应用到浏览器身上呢?也就是说,当一个标签页崩溃时,其它标签页仍可以泰然
自若。当然了,为了解决“一个老鼠屎坏了一锅汤”的问题,你也可以采取拖拽现有标签页创建一个新窗口
这种方式。简单地说,就是从头开始,这种方式拥有其它一些优势。在设计上,你可以做到更加简洁并
使其运行速度更快,而更简洁、更快速恰恰是谷歌奉行的两大原则。
开
oss.linuxpk.com 2008 年第 9 期 23
源
产业聚焦
WebKit 已被负责开发谷歌移动操作系统 Android 的研究小组采用,其运行速度是 Gecko 的 3 倍,
自然成为 Chrome 的首选。
公司高层终开绿灯
没有谁能确切地说出公司高层是什么时候给 Chrome 浏览器工程开的绿灯。皮采回忆起一次行政会
议,当时施密特好像不再像以前那样反对。这位 CEO 表示,如果谷歌确实决心上马浏览器工程,研究团
队就必须开发出与 IE 和火狐有着很大不同的东西。另外,谷歌的浏览器速度必须更快,而且必须是开放
源代码。
当然,这些正是研发团队早就想到了的地方。
由于对火狐的依赖,研发团队成员内心的感受可谓五味杂陈,作为开放源代码发展的代表,火狐是对
抗微软统治地位的一道屏障。
让谷歌人感到欣慰的是,他们的浏览器将百分之百地开放源代码:谷歌的创新可能会帮助找到进入
Mozilla 编码库的方法。厄普森说:“我们真心希望火狐和其它开放源代码的浏览器都能够成功。”
开
oss.linuxpk.com 2008 年第 9 期 24
源
产业聚焦
巴克建立了一个小团队,最初在农场工作,之后搬到了当地大学的办公室。他知道他的任务是研发一
款比以往任何一款浏览器更快的引擎。他称自己的团队是“V8”项目的一部分,他说:“我们下定决心,一
定要加快 JavaScript 的运行速度,我们花了 4 个月的时间 去做。”这个丹麦研发小组通常是早上 7、8 点
钟开工,一直编程到晚上 6、7 点钟。唯一的休息时间是午饭,他们会在 5 分钟内狼吞虎 咽地吃完,然
后玩 20 分钟的游戏。巴克说:“我们都很会玩 Wii 网球游戏。”
速度是最大优势
他们还善于编写一个 JavaScript 引擎。巴克在谷歌推出 Chrome 浏览器前几周曾表示:“我们今天只
是在尝试一些基准运行。”实际上,V8 引擎处理 JavaScript 的速度比 Firefox 或 Safari 浏览器快 10 倍。
而在那些相同的基准下,Chrome 与浏览器市场的霸主微软 IE 7 相比又如何?答案是前者运行速度是后
者的 56 倍。巴克说:“我们有点低估了自己的工作能力。”
开
oss.linuxpk.com 2008 年第 9 期 25
源
产业聚焦
程序一样运行。2007 年 5 月,谷歌收购了 GreenBorder Technologies 公司,这是一家软件安全公司,
其技术被用于为 Firefox 或 IE 创建一个封闭、安全的环境,将它们的活动隔离到“虚拟会议”(或沙盒)中,
在这里,恶意软件入侵不会破坏电脑上的其它活动和数据。
这项交易对外公开宣布时,业界就怀疑谷歌可能会涉足反病毒领域。这项收购完成后不久,
GreenBorder 的工程师们即了解到,他们的工作就是为新一代浏览器的标签页构建“沙盒”。卡洛斯·皮萨
诺(Carlos Pizano)说:“我们都糊涂了。他们不会说明用沙盒去 干什么。”
尽管 Chrome 开发团队日益壮大,但开发工作从没有陷入像官僚机构经常遭遇的困顿中。在
Chrome 项目的初期阶段,开发人员还能在谷歌某个咖啡厅一张桌子上共用午餐。不久,即便是最大的
桌子,亦不能满足这个团队的用餐需要了。
每位工程师都怀以“开源”的精神工作,他们可以随便检查任何代码,去调整或改进。拉考维斯基总在
尝试让开发进程保持透明。
具有全新功能
随着产品整体规划逐项落到实处,工程师们开始把工作重点放在用户界面上。一开始,Chrome 开发
团队希望,这款浏览器的视觉效果一定要做到平淡无奇,这样,用户甚至认为他们不是在使用浏览器。
开发人员的口号变成了“内容,而不是 chrome”,鉴于这款浏览器的名称,给人以一种奇怪的感觉。马克·
拉尔森(Mark Larson)说,我们学会了如何在遭人嘲讽下生活。
在决定包括哪些按钮和功能时,开发小组开始玩起一个智力游戏,即消除一切东西,然后再去分析如
何恢复。后面的按钮?没什么用处,删去。前面的按钮?没有什么必要,但它最后幸存下来。如果你是
浏览器状态栏的忠实拥趸,那么你可能对 Chrome 不太习惯 。
保密工作非常好
令人难以置信的是,谷歌浏览器在两年时间里竟然不为外界所知。直到 2007 年年中,即 Chrome 项
目实施约一年的时候,开发小组让未参与该项目的公司职员了解他们的创新工作时,这方面的消息才泄
开
oss.linuxpk.com 2008 年第 9 期 26
源
产业聚焦
露出去。在以当前原型为特征的高科技谈话系列的一开始,员工们反响非常强烈。在各种功能(如将标签
页拖至新窗口)演示过程中,他们不时爆发出发自内心的欢呼声。
随着 Chrome 浏览器推出的时间日益临近,开发小组搬到谷歌公司园区一栋装饰一新的大楼内办公。
在园区内最大的一间会议室内,全体工程师可以在此开会,但也只能站着,坐下的话空间就不够了。公
司还向他们提供牛奶和饼干。在经过初期发展后,拉考维斯基将整层楼交给了手下。他不厌其烦地向大
家解释将 Chrome 打造为开源产品的种种益处。开源产品是指代码对外公开,每个用户可以帮助改善浏
览器的功能。
拉考维斯基说:“我们将可以衡量我们的测试效果。它能使人们从事我们从未想象过的事情,让用户
对我们产生一种信赖,这是别的工作所没有的效应。“
随着会议即将结束,与会人员的情绪也达到顶点,这不仅仅是因为咖啡的作用。毕竟,Chrome 开发
小组即将揭开谷歌冥冥中要去完成的一款新产品的神秘面纱。尽管如此,开发小组当务之急是消除横亘
在他们面前的五个技术难题。
开
oss.linuxpk.com 2008 年第 9 期 27
源
开源通讯
Linux 藏文操作系统作为目前市场上屈指可
英特尔北京 Moblin
数的全藏文系统软件,它的面世意味着藏文信息
团队成立 处理领域达到了较高水平,不再受到语 言文字的
限制,有效填补藏文软件数字鸿沟。
英特尔北京 Moblin 团队 8 月正式成立,隶属
英特尔开放源码技术中心(OTC)。该团队目前的
主要工作是研发针对 netbook 和 nettop 的 M 华硕 Eee Box 集成 Splashtop
oblin 版本,并直接参与 Moblin2.0 的发布。这
也是英特尔公司加大在华开源研发投入的具体举 即时启动软件
措。
OTC 在中国将与 CSIP、中国科学院等机构展开全 Box B202 上,Eee Box 是华硕继 2007 年推出
根据专家组的鉴定,Linux 藏文操作系统实
现了对《信息技术信息交换用藏文编码字符集基
本集》、《信息技术藏文编码字符集扩充集 A》
和《信息技术藏文编码字符集扩充集 B》的支持,
解决了 Linux 系统支持 ISO 10646:2003 标准
中非 BMP 平面藏文字符的问题。
同时,该系统完整覆盖上述三个标准所有字
符的 TrueType 字体,开发了支持上述标准所包
含的所有字符的两种藏文输入法等,攻克了多项
技术难题。
开
oss.linuxpk.com 2008 年第 9 期 28
源
开源通讯
开
oss.linuxpk.com 2008 年第 9 期 29
源
开源通讯
恩信科技开源 蓝迪科技推出基于开源软件的
ERP V7.10 发布 高清机顶盒方案
开
oss.linuxpk.com 2008 年第 9 期 30
源
开源通讯
道商作 为开发欧洲市场的合作伙伴,对龙芯进一
红旗 2000 金友兵入选 2008 年
步壮大阵营与市场影响奠定了坚实的基础。
北京市“新世纪百千万人才工程”
开
oss.linuxpk.com 2008 年第 9 期 31
源
开源通讯
开
oss.linuxpk.com 2008 年第 9 期 32
源
开源通讯
新网络联机装置。
百资科技发布 Notebook
网络管理管理工具
IBM 宣布"Microsoft-Free"
百资科技日前在适用于 Netbook solution 的
Lite 产品上发表了网络管理应用程序新技术,由 客户端计划
于客户反应及市场需求呈现了 3G 联机装置是
Netbook 在市场上成功的关键,因此百资改善了 8 月 5 日,IBM 宣布与 Red Hat、Novell 和
网络管理应用程序即意味使用者无须再单独使用 Ubuntu 等 Linux 发行商合作推出了一
3G、有线网络或无线网络个别 的连网应用程序 种"Microsoft-Free"的个人电脑计划,以此来扩
进行上网。譬如使用 3G USB 上网,Lite 之网络 展公司的 Linux 解决方案。"Microsoft-Free 计
管理应用程序可以自动搜寻到 3G 装置,并且直 划"采用 Red Hat、Novell 和 Ubuntu 等众多流行
接藉由 3G 装置连上网络。在底层它是连接网络 Linux 操作系统,并结合 IBM Lotus Notes 及 L
装置的程须,在上层则是能够分别秀出有线网络 otus Symphony 等开放协作客户端解决方案,
无线网络以及 3G 连网装置的接口系统。由于使 可以作为基于 Windows 和 Office 客户端的替代
用者在不同环 境需要以不同的方式连网,譬如从 选择,以满足用户逐渐增长的对节约成本的需求,
咖啡店移动到公园,需要轻易就能有良好的网络 这项措施将进一步促进 Linux 桌面的快速增长。
联机。因此使用者可藉此支程序轻易的管理及更
开
oss.linuxpk.com 2008 年第 9 期 33
源
开源社区
OpenDocument 文件格式的办公套件。
开
oss.linuxpk.com 2008 年第 9 期 34
源
开源社区
一月以前,腾讯发布了 QQ for Linux 的首个版 ● 单独发布支持龙芯 CPU 的版本;
本,受到了很大的关注。近日,腾讯又推出了 ● 优化对输入法的支持。
Wine 推出 1.1.4 版
2.6.27-rc5 Kernel 发布
改进:
● 更新了 EXT4 和 XFS 文件系统的支持;
● 新的无线网络设备的支持;
● 新的 USB 驱动支持;
近日,最新的 Linux 内核 Linux 2.6.27-rc5
● PowerPC、ARM 和 IA64 构架的更新;
正式发布。这个版本并没有加入多少令人激动的
除此之外,最受关注的应当属新应用的 DRM
新特性,只作了 Bug 修正和少许改进。
补丁,它带来了对新的 AMD 和 Intel 显卡设备的
3D 支持,设备包括了 ATI R500 和 Intel GMA
Linux 2.6.27 是继 Linux 2.6.26 之后全新的
4500,相信拥有该设备的朋友会比较关注这个新
Linux 内核,从 rc1 到 rc5,主要作了以下方面的
rc5,主要作了以下方面的
的 Linux 内核。
开
oss.linuxpk.com 2008 年第 9 期 35
源
开源社区
Ubuntu 9.04(兴奋的野兔)紧锣密鼓筹备
Ubuntu 创始人 Mark Shuttleworth 近日宣布 Ubuntu 9.04 预计将于 2009 年 3 月发布,这个版本
的代号为“活泼的怀俄明野兔—Jaunty Ja ckalope”。Ubuntu 基本上每六个月就会发布一个包含最新版本
的流行开源软件和服务。
开
oss.linuxpk.com 2008 年第 9 期 36
源
开源社区
迎接国际软件自由日(SFD 2008)
袁萌
今年的国际软件自由日(9 月 20 日),还不知道具体怎么搞法。我想,参加的人可能更多一些。在
我看来,番茄花园修改版 XP 的作者洪磊本人,根本算不上是什么编程高手,即便番茄花园没有“东窗事
发”。番茄花园们(不是别人)整天提心吊胆过日子 ,怪可怜的。他们根本不知道自由软件为何物,就是
知道了、听说了,也不屑一顾。人各有自己的活法儿。我根本就不寄希望他们有一天会转向自由软件。
他们的个人品质(极端自私)确实太坏了,根本就不佩涉猎自由软件的开发领域。在我看来,他们这辈
子(在软件开发方面)算完了。
主张软件知识的私有与分享,这是两种不同的思维方式。站在软件私有的立场上看问题,番茄花园们
是罪犯,因为,侵犯他人版权是犯罪;站在软件自由的立场上看问题,番茄花园们是英雄(这话也许说
过了一点),分享他人版权是天理。我们敢搞软 件自由日,他们敢搞软件私有日吗?恐怕有点说不出口。
北京奥运造就了一大批志愿者(Volunteer),这是一件大好事。字面上讲,所谓“志愿者”就是“愿意
帮助他人”的人(群)。没有特定理由,喜欢帮助他人,这可不是一件小事情。我想,这批志愿者一定乐
于接受自由软件(与他人分享软件知识)的哲学 理念。对于中国的现代软件业,我并不悲观。迟早有一
天,人们是会接受自由软件的。我们坚信,保护软件版权与主张软件自由(使用)是根本一致的。只有
商业软件的兴旺发达,才能推进自由软件的健康发展,两者具有共同的敌人(即软件免费、共享)。(
注:自由软件不是免费共享软件,后者本质上属于商业软件范畴,所谓“先尝后付钱” 模式。)
开
oss.linuxpk.com 2008 年第 9 期 37
源
开源社区
今年,在软件自由日那一天,我们想组织一次爬山眺望活动,站在北京森林公园的山顶(上午 9 点正
开始爬山),眺望国家体育馆“鸟巢”,畅想、畅谈我国软件业发展的美好前景。我们欢迎微软朋友参加这
次活动,尽管这不可能发生。我们欢迎各方朋 友的到来。
20 件 Win 平台不行而
Linux 能搞定的事情
1. 合法升级到最新版本却不花一分钱。
2. 同一个硬件平台上最新的操作系统却老的
更快。
3. 如果你不喜欢默认的桌面环境,可以非常
容易的自行安装其他的界面。
4. 一个命令就可以安装二十个程序。
5. 让系统自动为我所安装的软件更新。
7. 可以自由分发该操作系统及其他运行其上的软件而不会违犯法律,政治或伦理道德,因为他本身
就提倡这么做的。
8. 可以裸奔(无杀毒软件,反广告/间谍防护软件),以及可以数月不用重启机器,我甚至一直在
更新着安全补丁。
9. 从来不用磁盘碎片整理。
10.尝试软件,觉得不喜欢,就删掉他,而且知道他不会在什么注册表里留下一些垃圾可能导致把我
的系统搞慢。
11.犯了重大错误而导致全新重装系统,也不过花去了 1 小时不到的时间,因为我把我的数据放在了
独立于操作系统和程序的分区。
开
oss.linuxpk.com 2008 年第 9 期 38
源
开源社区
开源理念—每个人都能成为开发者
13.合法自定义任何我想要的东西,包括我最喜爱的程序。我甚至可以跟踪软件开发者并向他们问问
题,提意见,如果我愿意的话,也可以参与到真正的软件设计和开发进程中去。
14.超过 4 个的文字处理窗口,听音乐,玩超酷的桌面效果,联系一个大型的社区,并同时运行着
firefox,即时通讯以及 email 客户端。
16.同时运行多个桌面,甚至可以让多用户同时登录并使用该机器。
17.无损调整分区大小而不用担心会丢失数据。
18.硬件可以使用超过五年而无须更换,我甚至有一些硬件都超过 10 年的历史了,还依然健在。
开
oss.linuxpk.com 2008 年第 9 期 39
源
开源社区
使用 LiveCD 版,安装图中仍可进行其他操作
19.可以在 OS 安装的同时浏览网页!
20.使用几乎所有的硬件,因为系统已经自带了驱动,而不必再去硬件供应商的主页上去苦苦搜寻。
开
oss.linuxpk.com 2008 年第 9 期 40
源
开源社区
宋威
Perl 是一种开放源代码的、通用的脚本语言。凡是其它编程语言能够使用的地方,都有它的用武之地。
目前,它已经被用于人们能 够想象到的、各种各样任务的处理中,比如,股票市场、产品制造和设计、
客户支持、质量控制、系统编程、工资处理及库存管理 等各个领域,尤其是 Web 应用。
“艺术家”Larry Wall
在开源运动的发展过程中,Larry Wall 扮演了一个重要的角色。
他的同事们尊称他为开源运动的“极为重要的首领和睿智的长者” ,但
是,Wall 的领导风格却是谦卑的。这个显著的个性使得他区别于该
运动的其它领导人物。除此之外,Wall 的与众不同之处还表 现在,
他更喜欢称自己为艺术家(见图所示),更确切地说是文化艺术家。
Wall 认为,自己不仅仅为了编程而编程,而是为了解决 计算机编程
领域的文化问题而编程。
Wall 的与众不同与他的家庭背景和人生经历有着密切的关系。
Wall 出生于美国洛杉矶的一户牧师世家,他的父亲、祖父及好多祖
先都是牧师。这种潜移默化的影响使他从小就对哲学、艺术、语言,
以及宗教有着浓厚的兴趣,并善于思辨。此外,Wall 还认为,19 世
纪的作家 George Macdonald 及他的祖母对他也有着重要的影响,
● “艺术家”Larry Wall
尤其是他的祖母,她曾在自己 77 岁高龄时获得了比较文学的博士 学
● 需要是发明之母
位。
● Perl——后现代的胶水语言
1972 年,Wall 进入了华盛顿的一所高中,在那里他第一次接触
编程,当时他使用的是那所高中刚刚购置的一台可编程的计算器。高中毕业后,Wall 进入了西雅图太平
洋大学。在大学里,他的与众不同和兴趣广泛得到了充分的发挥。他最初学的专业是音乐,随后 转为化
学,接着又改为医学预科。他还在学校的计算机中心工作了 3 年,在那里,Wall 第一次接触到了一台
PDP-11 计算机。最后, 他为自己设计了一个名为“自然语言和人工语言”的专业,并最终获得了学士学位。
从入学到毕业,Wall 在西雅图太平洋大学度过了整整 8 年时光。
开
oss.linuxpk.com 2008 年第 9 期 41
源
开源社区
大学毕业后,怀着对自己设计专业的浓厚兴趣,Wall 和他的妻子先后进入了加州大学伯克利分校和
加州大学洛杉矶分校的研究生院继续深造语言学。那时候,他们最大的理想是翻译圣经。他们曾设想到
那些没有书面语言的、极端落后的地方去传播圣经。但是, 由于健康的原因,Wall 放弃了这个理想。由
于曾在西雅图太平洋大学的计算机中心工作过,所以 Wall 改行从事计算机。
需要是发明之母
Larry Wall 曾先后到了 Unisys 公司(美国大型计算机厂商之一)和 Jet Propulsion 实验室工作。令
人吃惊的是,Wall 这位曾经就读 于加州大学伯克利分校的开源运动的领袖,在伯克利期间却从未参加过
任何 Unix 的最初的开发工作,因此,工作后他基本上是从头 做起的。Wall 从离散事件模拟等经典问题
入手,开始苦练编程基本功。当他觉得自己已经有了一定的水平以后,就开始利用 Usenet 新闻组与世界
各地的程序员讨论各种各样感兴趣的问题,这些讨论使他受益匪浅,水平有了很大的提高。但是 Wall 逐
渐开始发现,当时的新闻阅读器(用于参加 Usenet 讨论的客户端程序)存在着很多问题,使用起来很麻
烦。于是,他决定写一个自己的新闻阅读 器。
经过努力,Wall 的新闻阅读器终于有了结果,他把该程序命名为“Rn”。自认为满意后,Wall 在
Internet 上公布了 Rn 及其源代码。然 后利用 Internet 广泛征求世界各地的编程高手的建议,并进行相
应的修改,接着再开始着手做升级版本。从软件开发的角度来看,这种开发过程可以被认为是开源软件
开发模式的早期原型。
除了这些知名的程序外,Wall 还写过很多的小程序,如
用于写配置脚本的程序 metaconfig 等。在 Wall 加州
Mountai View 镇的家中, 他写的小程序更是随处可见,并
早已融入到他的日常生活中。Wall 喜欢教他的计算机如何
Richard Stallman 与 Larry Wall.jpg
应对房间中所发生的事情,比如,让计算 机根据指令来接
电话,与按门铃的人进行简单的对话,当甩干机结束工作时用一种汽笛声进行提示等,这样,Wall 可以
开
oss.linuxpk.com 2008 年第 9 期 42
源
开源社区
不必走很远 就能了解家里发生的事情。
Perl——后现代的胶水语言
在 Larry Wall 的众多作品中,最为知名的当属 Perl 语言。Perl 的起源可追溯到 1986 年,那时 Wall
是 Burroughs 公司附属公司的一个 系统管理员,负责美国国家安全局(NSA)的一个秘密项目,主要是解
决不同结构计算机之间的信息同步交换的有关问题。但是,NSA 不只希望信息的同步,还希望能生成关
于每次交换的报表,然而 Wall 现有的工具没有一样可以胜任这个任务。
Wall 首先做的是选择一个好的切入点。他不想进行重复劳动,因为其它编程语言也都有各自的优势。
比如,C 语言适于底层操作;C ++则长于复杂工程的管理;而一些 Shell 更适合做一些简单的工作。通
过分析,Wall 发现 C 语言和 Shell 之间有极大的空白区域,无 论 C 还是 Shell 都无法很好地处理这部分
问题。后来,他进一步发现,这样类似的空白区域在计算机科学的其它领域中也大量存在。
Perl 的诞生使 Wall 顺利地完成了 NSA 的项目,但真正使 Perl 深入人心的还是在 Internet 逐渐普及
以后,其中最为著名的要数 David F ilo 和 Jerry Yang 这两个斯坦福大学的本科生创造的 Yahoo。他们
用 Perl 来生成 Web 页面,为执行 Web 数据搜集的机器人编写代码,并且维护 Web 地址的数据库。Filo
认为:“如果没有 Perl,Wall 发明的通用编程语言,Yahoo 是不可能开始的。”
开
oss.linuxpk.com 2008 年第 9 期 43
源
开源社区
Wall 写信,表达他们对 Perl 的喜爱。一位用户在信中写道:“它(P erl)改变了我的生命。我曾经讨厌编程,
现在编程又是一件快乐的事情。”
开
oss.linuxpk.com 2008 年第 9 期 44
源
开源社区
从 ObjectWeb 看开源
许洪波
近年来,开源软件作为软件产业的一支新军,正受到越来越大的关注。可是在我国,大多数人对开源软
件的认识仍主要停留在开源软件是源代码开放,可以免费地使用的软件这个层面上。虽然我国各级政府
也对以 Linux 为代表的开源软件给予了大力的扶持,对于开源软件究竟能给我们什么样的机会,基于开源
软件的盈利模式是什么,以及开源软件的潜在风险是什么等诸多问题,许多人仍缺乏清晰和系统的认识。
ObjectWeb(国际开源中间件联盟,www.objectweb.org,现更名为 OW2)是国际中间件领域最著名的开
源组织之一,获得了法国政府和欧盟的大力支持。法国政府及欧盟已将 ObjectWeb 作为他们在基础软件
领域核心竞争力的重点战略来打造。本文的作者许洪波教授是 ObjectWeb 的理事,与 ObjectWeb 相关的
决策人员有着密切的合作和交往。本文旨在通过介绍、分析 ObjectWeb 的发展和运作,为我国政府相关
决策机构发展开源软件提供参考意见,并通过开源软件,对如何发展适合我国国情的基础软件产业提出
建议。
认识 ObjectWeb
ObjectWeb 是由布尔公司(Bull)、法国电信(France Telecom)、法国国家计算机与自动化科学
院(INRIA)于 2002 年共同创建的 非盈利组织,其目的是为了促进新一代开源中间件的研发和推广。迄
今为止,国际开源中间件联盟拥有来自三大洲,超过 60 家的企业和学术界成员,以及来自 80 多个国家
的三千余名个人成员。国际开源中间件联盟的目标是提供高质量、稳定可靠、具有最佳性价比的独立解
决方案与软件。
开
oss.linuxpk.com 2008 年第 9 期 45
源
开源社区
的强大研发队伍,拥有超过 100 个大型技术项目,包括 StarCCM, StarWebServices, Xservice suite,
OncePI, Istx, JOnAS, Jonas/PKUAS, prototype ,Lomboz, Sy nc4j, eXo Platorm, Xwiki 和 SpagoBI
等项目。其中一些合作项目已经进入市场运作,促进了系统集成商、设备制造商及终端用户行业解决方
案的执行。
法国如何发展基础软件产业
首先,很重要的一点,既然法国政府对 ObjectWeb 相关的中间件研发进行了大量的投入,为什么不
希望通过产业化的模式获得市场效益,而将其免费地向全世界公布出来了?带着这个疑问,笔者作为
ObjectWeb 的特邀嘉宾,在参加 ObjectWeb05 年会时询问了法国工业部信息与软件产业负责人
Emmanuel Neuville 先生。Neuville 先生谈到:第一,中间件是现代网络应用和分布式系统的核心技术,
对应用信息系统的重要性,如同空气和水一样。假如我们赖以生存的空气和水被一个国家甚至一个公司
垄断的话,那实在是太危险了,我们没有选择,必须开发自己的核心技术,所以法国和欧盟投入了巨大
的力量来支持中间件技术和 ObjectWeb 的发展。
第二,当前,世界上几乎所有的著名软件公司和技术都来自美国,这对法国和欧洲的产业是相当不
利的。由于美国的公司在软件市场上占据了垄断地位,我们无法在产品的层面和美国的公司竞争。开源
是我们采取的一种手段,使得我们的核心技术被广大的市场 所接受的同时成熟起来,并成为国际标准。
我们将它开源,让全世界都可以因此受益。
第三,我们不仅要看直接的经济效益,也要关注非直接经济效益。通过开源的模式有助于核心技术
的创新,大大降低了法国和欧洲广大中小企业的技术使用门槛,并且使得法国和欧洲的系统集成商和软
件服务商掌握了核心技术,对提高他们的核心竞争力有很大的帮助。更重要的是,它使得法国在基础软
件领域和未来标准的制定中掌握先机,使得企业和政府都获得了巨大的收益。
ObjectWeb 产业链
ObjectWeb 构成的产业链由下图所示,产业链的核心组成部分包括政府、研究机构、最终用户、教
育机构、系统集成与解决方案提供商五大环节。
ObjectWeb 产业链图示
开
oss.linuxpk.com 2008 年第 9 期 46
源
开源社区
法国政府在支持 ObjectWeb 的发展,打造 ObjectWeb 产业链的过程中,非常注意结合中短期的市
场需求、长线的科研创新,关键客户 的验证,系统集成商的支持和建立可持续发展的社区这几个关键部
分。以 ObjectWeb 的旗舰产品 JonAS 为例:JonAS 的开发和推广的 关键部分包括 INRIA,BULL,法国
电信,Thales 等服务解决方案提供商和 ObjectWeb 开源社区。在产业链的构造过程中,他们让 BULL 公
司专注于 JonAS 中、短期的产品开发,确保 JonAS 具有商业软件所具有的质量和稳定的发展策略;让法
国电信这样的大型国有公司作为 JonAS 的战略用户(法国电信有一条规定:只要能用 JonAS 的地方,就
不能用其他的中间件),确保 JonAS 能满足苛刻的商业需求;让国有的研究机构 INRIA 专注于长线的科
技研发,确保 JonAS 在技术上的持续创新和领先性。最后通过 ObjectWeb 以开源的方式进行普及,以图
获得最大的市场份额和客户群体。法国政府希望通过这样的努力将他们的技术变成国际标准,打破超级
大国在核心技术上的垄断,并大大降低法国与欧洲在使用基础技术上的门槛,从而达到提升法国在基础
软件领域的国际地位和核心竞争力的目的。
我们的机会与挑战
随着中法友好合作进程,ObjectWeb 也在积极寻求和我国的广泛合作。ObjectWeb 和华南理工大学
在中间件等开源软件领域已经开展了一系列紧密的,富有建设性的合作,共同开发和建设中欧基础中间
件平台。我们应该把握这个契机,有效地借鉴法国政府在利用开源发展本国基础软件核心技术上的成功
模式,通过开源的方式和两国的共同合作,摸索出一条适合我国国情的开发基础软件核心技术的发展模
式。本文针对我们应该怎样通过开源的模式来支持我国在基础软件,尤其是中间件领域的发展提出一些
看法和建议。
中间件是现代化信息应用系统的基础,尤其是互联网应用的关键共性技术。发展中间件对我国的国民
经济意义重大,它可以帮助提升我国软件产业核心竞争力、有效维护国家信息安全、并推动相关产业信
息化进程。从另外一方面来说,中间件属于新兴的信息软件技术,中间件是三大基础软件中最有可能取
得突破的,为我国在基础软件领域赶上世界先进水平提供了一个千载难逢的机会。我们总结以往的工作
经验,借鉴 ObjectWeb 的成功运作经验,提出以“国际合作、长短结合、用户驱动、开源普及、共赢生
态” 为核 心的中间件基础软件平台建设思路。
• 国际合作
打造我国在基础软件领域的核心竞争力,使得我国可以在软件领域和世界领先水平抗争是一个很艰巨
的任务。正如 Emmanuel Neuvi lle 先生在和笔者谈到的一样:法国在这个领域进行了长期艰苦的努力,
可是并不很成功。假如我们各自为战,我们在国际舞台上仍然会是二等公民。可是假如我们有效地整合
我国和法国、欧洲在基础软件领域的资源,我们就有可能在中间件领域和其他的领域形成全球的主要力
量,成为驱动国际相关标准发展的生力军。开源给了我们一个机会,使得我们不仅可以共同分享源代码,
并且可以通过双方的交流和合作,掌握基础软件设计的核心机制和理念,这对我国在基础软件领域赶超
世界先进水平提供了良好的机会。
我们有人或许会有这样的疑问:既然是开源的,我们拿来用不就好了吗?为什么需要我们共同参与开
发呢?中间件是非常复杂庞大的系统。我们不可能通过阅读源代码的方式去掌控系统的核心机制和设计
思想,并驱动其未来的发展。决定系统软件的优劣的关键因素在于系统底层关键机制的设计,系统的架
开
开
oss.linuxpk.com 源 2008 年第 9 期 47
源
开源社区
构和工程经验,这一切都不可能从使用第三方的软件,甚至包括源代码中获得。获得知识的唯一途径是
参与,而通过开源和建立一个中欧广泛合作的平台会大大缩短我们掌握关键技术的进程。
• 长短结合
长短结合意味着我们必须通过在产业链各方的清晰分工,有效地平衡中短期的市场需求、经济利益和
长期的基础领域研究和创新需求。长期以来,我国在软件领域重视产业化的指标而忽视基础领域的研发
和创新,这样的结果是我们的软件和产品通常只是跟随者 ,我们在国际标准组织也鲜有发言权。我们可
以考虑参照 JonAS 的做法,将产品开发和基础软件的研究进行清晰的分工和资源整合,既保证我们的产
品可以满足当前市场和客户的需求,又加强在基础领域的研究,以图我们在世界未来的软件产业竞争中
有一席之地。
用户驱动:任何技术和产品的成熟都必须经过市场的检验。法国政府敢于将法国最大的企业的核心系
统用来检验其开源中间件产品 JonAS,足见其战略胆识。他们的逻辑是:假如 JonAS 可以满足法国电信
的业务要求,它就几乎可以满足任何其他系统的要求。可是 ,法国电信是如何看待这件事情的呢?在我
和法国电信 IT 部门负责人的交流过程中,他们给了我支持 JonAS 三个主要理由:第一,我们是国企,当
然要支持政府的战略和决定,其次,电信的竞争是服务的竞争,而软件是服务的基础,通过对中间件核
心机制的掌 控可以加强我们的核心竞争力,尤其是加强我们推出新一代电信服务的能力。第三,使用
JonAS 大大降低了我们的技术使用门槛和费用,对提高我们的盈利水平有很大的帮助。由此可见:关键
用户的支持不仅是促使自主知识产权软件产品成熟的重要因素,同时,它也可以有效地加强关键用户的
核心竞争力,所以这是一个双赢的局面。
• 开源普及
Linux、FireFox、Apache、Eclipse,ObjectWeb 等著名开源软件的成功表明:开源是将基础软件
以廉价,快速的方式让广大的市场接受的有效途径,开源为基础软件研究成果产业化提供了一个有效的
途径,使得广大的用户收益。同时,市场用户的广泛使用也会帮助我们在技术上的进一步成熟和创新。
更重要的是,开源为我们提供了一个机会,使得我们的技术和产品为国际社会所认识,并有机会成为国
际和工业标准,这对我们国家在信息软件领域的核心竞争力具有重要意义。
• 共赢生态
开源的目的在于通过开源这一途径来打造一个健康的,可持续发展的生态环境。在我国,许多人对开
源抱有怀疑的态度:开源是免 费的,我们靠什么盈利?我们为什么要将我们的核心技术给我们的竞争对
手使用?我们可以从以下几个方面看待上述问题: 首先 ,开源是一种后发制人的有效竞争手段。通过开
源我们可以在基础软件等核心技术领域打破国外厂商在高端软件领域的市场垄断,从而降低我国的政府
和企业使用核心技术的门槛;其次,通过对核心技术的普及和推广可以改变我国广大的系统集成商和软
件厂商 缺乏核心技术,竞争层面低的局面,增强他们的核心竞争力和盈利水平;第三,通过开源这一方
式可以将我们的核心技术最大限度普及到市场,有助于建立起围绕核心技术的可持续发展的生态圈,这
对加强我国的核心技术的成熟,以及进一步的创新与发展有很大的帮助。
开
oss.linuxpk.com 2008 年第 9 期 48
源
开源社区
公司在决定新的战略时选择了 Java 中间件,他们相信 Java 中间件作为新兴的技术,会给 BULL 带来未来
的核心技术。BULL 公司用了两年的时间,在 1999 年公布了 JonAS 1.0。之后,JonAS 作为 ObjectWeb
的 核心组件,在 BULL、法国电信和 INRIA 的支持下获得了长足的发展。BULL 公司将其 Java 中间件以开
源的形式贡献出来,不仅向世界证明了 BULL 在核心技术上的领先性,使得 BULL 在服务器市场上可以和
IBM 这样的巨型公司进行竞争,同时使 BULL 公司进入了高端的 服务领域,到今天,服务已经成为了
BULL 公司的核心业务,成为最为盈利的部门之一。更为有趣的是,BULL 公司虽然和欧洲另一家巨型公
司 Thales 虽然是竞争对手,他们却共同合作开发 JonAS,通过合作的方式分享在中间件基础软件上的研
发费用。通过以上例子我们可以看到,通过开源我们可以建立一个健康,可持续发展的产业链,使得产
业链上的各方都获得相应的价值。
需要解决的问题
那么,是不是所有软件都适合开源呢?答案是否定的。我们认为,具有以下的特征的项目开源才能具
有显著效果:
● 技术相对成熟;
● 市场适用面广;
● 相关技术和产品在当前市场竞争中处于弱势;
● 大规模推广后有机会在相关产业和国际标准中扮演重要角色。
对开源项目的建设我们需要关注和解决以下的问题:组织模式,知识产权,版权与专利,法律风险,
运作机制,产业链的建设等。
开
oss.linuxpk.com 2008 年第 9 期 49
源
知识学堂
Linux 下设备完全驱动(四)
郄晓烨
尽管各种数码设备越来越多,但是 Linux 在对它们的配置上还没有做到像 Windows 一样方便,很多人正
是因为心爱的数码相机无法在 Linux 下使用,而不得不保留一个 Windows 系统。所以,掌握如优盘、移
动硬盘、数码相机等设备在 Linux 下的驱动方法,对于熟练使用 Linux 而言是必备的技能。
USB 设备驱动概述
USB 是通用串行总线(Universal Serial Bus),是在 1994 年由 Intel、NEC、微软和 IBM 等公司共
同提出的。USB 的目的在于将众多的接口(串口、并口、PS2 口等),改为通用的标准。它仅仅使用一
个 4 针插头作为标准插头,并通过这个标准接头连接各种外设,如鼠标、键盘、游戏手柄、打印机、数
码相机等。USB 接口的特点是支持热插拔,支持单接口上接多个设备等。
在该目录下还有一些具体设备的驱动程序,分别驱动不同设备:
# ls -p /lib/modules/2.4.21-4.EL/kernel/drivers/usb/
acm.o CDCEther.o hpusbscsi.o microtek.o rtl8150.o usbcore.o wacom.o
audio.o dabusb.o kaweth.o pegasus.o scanner.o usb-midi.o
开
oss.linuxpk.com
源 2008 年第 9 期 50
知识学堂
brlvger.o hid.o kbtab.o powermate.o serial/ usbnet.o
catc.o host/ mdc800.o printer.o storage/ uss720.o
# lsmod
Module Size Used by Not tainted
... ...
hid 22212 0 (unused)
input 5888 0 [keybdev mousedev hid]
ehci-hcd 20104 0 (unused)
usb-uhci 26412 0 (unused)
usbcore 79392 1 [hid ehci-hcd usb-uhci]
... ...
# modprobe usbcore
# modprobe ehci-hcd
# modprobe usb-uhci
# modprobe hid //如果是 USB 鼠标或键盘
USB 存储设备的驱动
USB 存储设备使用的非常广泛,例如优盘、移动硬盘、读卡器、数码相机等,它们都是在加载了 USB
的通用驱动后,再使用/lib/mod ules/2.XXX/kernel/drivers/usb/storage/usb-storage.o 作为存储
的驱动模块,该驱动会将存储设备模拟成 SCSI 设备。
下面先来看一下这类存储设备还需要哪些配套驱动模块。这些模块分散
在/lib/modules/2.XXX/kernel/drivers 目录中:
开
oss.linuxpk.com 2008 年第 9 期 51
源
知识学堂
通过查看/lib/modules/2.XXX/modules.dep 文件,可以查看上述这些模块是否存在。一般情况下
这些模块已经被编译,否则需要重新编译内核模块。
在正确地装载了驱动以后,可以通过访问/dev/sd?设备来访问优盘或移动硬盘。通常情况下,通过
访问 sda1 来访问移动硬盘或优盘的第一个分区。在 USB 基本驱动存在的情况下插入优盘,就可以看到
如下信息:
usb.c: USB device 7 (vend/prod 0xea0/0x6803) is not claimed by any active driver
Starting timer : 0 0
# fdisk -l /dev/sda
Disk /dev/sda: 16 MB,16515072 bytes
2 heads, 32 sectors/track, 504 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 503 16080 1 FAT12
# mkdir /mnt/usb
# mount -t msdos /dev/sda1 /mnt/usb 该优盘得类型为 FAT12
之后就可以通过访问/mnt/usb 来访问优盘了。注意,如果要拔掉优盘或移动存储设备,请先
umount 然后再拔出,这样可以保证数据全部被写入,否则系统会出错,数据可能不完整。
# umount /mnt/usb
USB 数码相机的驱动
数码相机类型繁多,但是在 Linux 下使用数码相机有比较简便的方法。我们知道 USB 接口是数码相
机的主要接口,在 Linux 中访问数 码相机,通常可以通过下面两种方法。
1. 使用专门软件
# ls gtkam*
gtkam-XXXX.i386.rpm gtkam-gimp-XXXX.i386.rpm
# rpm -ivh --aid gtkam*
开
oss.linuxpk.com
源 2008 年第 9 期 52
知识学堂
# rpm -ivh --aid --force gphoto2-XXXX.i386.rpm
# gtkam
我们也可以从 http://sourceforge.net/project/showfiles.php?
group_id=8874&release_id=209817 获得 gtkam 的最新版本及源代 码,下载后可以使用其中
的 install.sh 来进行安装。
对这种问题的解决办法不只是可以驱动不支持的数码相机,像不支持的存储设备也都可以使用,比
如优盘、读卡器等。
开
oss.linuxpk.com
源 2008 年第 9 期 53
知识学堂
S: Product=KODAK EasyShare DX6340 Zoom Digital Camera
S: SerialNumber=KCKCJ33400274
USB 设备识别信息中重要的部分如下:
Flags).
usb-storage.o 就是根据这个列表来识别各种设备。这样,可以将刚
才/proc/bus/usb/devices 文件中得出的信息添加在上面,重新编译模块,让 usb-
storage 驱动去认识和发现它。
注意,添加以上几句代码的位置一定要正确。经过比较发现,usb-storage 驱动对所有注册
都是按 idVendor、 idProduct 数值从小到大排列的,因此添加代码也要放在相应位置。
开
oss.linuxpk.com
源 2008 年第 9 期 54
知识学堂
# make dep
# make modules
# make modules_install
USB 摄像头的驱动
在内核源文件中,自带了一部分摄像头的驱动,目前大量的杂牌摄像头都可以使用 OV511 的驱动模
块。如果 USB 摄像头无法使用,则 可以试试重新编译模块。下面就以一个没有驱动程序的摄像头为例,
尝试使用 OV511 驱动模块驱动。
1. 获取内核源码
或者
2. 运行
到源码目录中运行:
# make menuconfig
或者
3. 选择 USB 的模块
4. 保存、编译和安装
# make dep
# make modules
# make modules_install
5. 加载驱动
# modprobe ehci-hcd
# modprobe usb-uhci
# modprobe ov511
# cat /proc/devices
开
oss.linuxpk.com
源 2008 年第 9 期 55
知识学堂
外置 USB 光驱及刻录机的驱动
USB 光驱与其它的 USB 存储设备使用类似,只不过 USB 光驱会被识别为 SCSI 光驱,如/dev/sr0 或/
dev/scd0 等设备,它需要 sr_mod.o( SCSI CD-ROM 设备)驱动模块。
关于外置刻录机驱动详见本刊第七期“Linux 完全驱动(二)”:
# mkdir /mnt/iso
# mount -t iso9660 -o loop example.iso /mnt/iso
在调整完/mnt/iso 文件的内容后使用下面命令:
# umount /mnt/iso
# cdrecord -scanbu s
查看 SCSI 总线中刻录机的配置信息:
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
开
oss.linuxpk.com
源 2008 年第 9 期 56
知识学堂
# cdrecord -v -eject speed=24 dev=0,0,0 example.iso
USB 鼠标和键盘的驱动
1. 鼠标的驱动
# mouseconfig
如果使用手动的方式来配置,可以人工加入以下模块:
# modprobe hid
# modprobe input
# modprobe usbmouse
# modprobe mousedev
2. USB 键盘的驱动
# modprobe hid
# modprobe input
# modprobe usbkbd
# modprobe keybdev
3. IEEE1394 设备的驱动
# ls /lib/modules/2.XXX/kernel/drivers/ieee1394
amdtp.o dv1394.o ieee1394.o raw1394.o video1394.o
cmp.o eth1394.o ohci1394.o sbp2.o
开
oss.linuxpk.com
源 2008 年第 9 期 57
知识学堂
如果没有某种设备的驱动,则可以重新编译内核模块,选择以下模块:
# cd /usr/src/linux-2.XXX
# make xconfig
# make dep
# make modules
# make modules_install
# modprobe ohci1394
# mkdir /mnt/1394
# mount -t vfat /dev/sda1 /mnt/1394
IEEE1394 光驱应该使用设备为/dev/scd0,如果在插入设备时没有自动加载,则可以试着手动加
载 sbp2 模块及 SCSI 模块:
开
oss.linuxpk.com
源 2008 年第 9 期 58
知识学堂
3. 优盘插入后没有反应,访问/dev/sd 设备也没有反应
这时可以查看相关模块是否已经加载,如果没有加载可以手动加载,然后重新插入该设备,看看是
否有反应:
4. 设备驱动已经加载,如何知道访问哪个设备文件
对比加载驱动前和加载驱动后的/proc/devices 文件,多出的那一行就是这种驱动程序注册的主设
备号。例如,对比 OV511 加载前后/proc/devices 文件的变化,就会发现多出如下一行:
# cat /proc/devices
Character devices:
...
81 video_capture
...
81 char video4linux
0 = /dev/video0 Video capture/overlay device
开
oss.linuxpk.com
源 2008 年第 9 期 59
知识学堂
PC 的足迹(下)
Intel 开源软件技术中心
王齐
真假双核
2003 年 9 月 23 日,AMD 在美国的旧金山发布研发代号为 Hammer 的 K8
处理器,Athlon 64。K8 处理器几乎倾注了 AMD 全部的心血,这个处理器
核心从 1998 年开始设计,加入了对 64 位的支持,引入 HyperTransport
总线负责处理器与 Chipset 之间的通信,与 K7 处理器相比,K8 处理器极大
降低了功耗。
开
oss.linuxpk.com
源 2008 年第 9 期 60
知识学堂
要骂人须要挑比你大一点的人物,比你漂亮一点的或者比你坏得万倍而比你得势的人物总之,你要骂
人,那人无论在好的一方面或坏的一方面都要能胜过你,你才不吃亏的。你骂大人物,就怕他不理你,
他一回骂,你就算骂着了。在坏的一方面胜过你的,你骂他就如教训一般,他既便回骂,一般人仍不会
理会他的。假如你骂一个无关痛养的人,你越骂他他越得意,时常可以把一个无名小 卒骂出名了,你看
冤与不冤?
酝酿的反击
2003 年 3 月 12 日是一个很特别的日子,在这一天 Intel 和
AMD 同时发布了针对笔记本的产品 Athlon XP-M 和 Intel 的迅
AMD 发布针对笔记本
驰平台。迅驰平台一经推出立刻得到认可,第一代迅驰平台由
的 Athlon XP-M 处理
Intel 推出迅驰平台
器
Pentium M 处理器、基于 Intel 855 的 Mobile Chipset 和基于
Intel PRO/Wireless 2X00 的无线网卡芯片共同组成,缺一不可。
开
oss.linuxpk.com 2008 年第 9 期 61
源
知识学堂
“飞机终将被击落,战舰最终也会被击沉。一场真正残酷的战争,到最后,任何高精尖的武器都会耗
尽,战争的根本,还是人和人的对抗,人和人的战争”。Intel 的十万之众,携“放眼世界任何一个半导体
厂商都不曾拥有”的财富所等待的不过是 AMD 的加入,结 果是无需预料的。
一场战争中,强者总是希望战必胜之战,总是希望与对手打一场必胜的决战,弱者的参与或者被捕捉,
开
oss.linuxpk.com
源 2008 年第 9 期 62
知识学堂
一般意味着战争的结束。资治通鉴中列举了许多以弱胜强的故事,弱者大多采取了一个普遍的方法,“及
时的示弱,适当的逞强”迷惑对手,避免和对手发生任 何决战,用最大的努力使对手陷入持久战的泥潭,
在漫长的岁月中寻觅战机,积小胜而为大胜,等待战争天平的倾斜。《贞观长歌 》中虚构的范兴留给李
世民平胡十策,前九道都是个忍字,应该时刻活在每个想战胜强者的弱者心中。
开
oss.linuxpk.com
源 2008 年第 9 期 63
知识学堂
许多基于 Core 2 构架的处理器,如 Allendale、Wolfdale、Kentsfield(Intel 第一个 4 核处理器),
Yorkfield,Conroe XE,Kentsfield XE,Yorkfield XE 和 Merom XE。
多核时代
Intel 的下一代新内核 Nehalem 即将问世,AMD 代号为“上海”的新一代处理器也发布在即。再此之前
Kentsfield、Yorkfield 和 Phenom 处理器均实现了多核,多核时代已经来临。
在计算机科学领域中,多核不是一个新的概念。远在 PC 还没有问世之前,多处理器系统就已出现,
MPP(Massively parallel processing)系统已经集成了成千上万个处理器,这些处理器受限当时的工
艺,无法像如今的 CMP 将多个处理器集成到一个封装中,但是从数学的角度上看,这两者等效,只是
MPP 集成的处理器间的通信延时大于 CMP 系统中处理器间的通信延时。而 MPP 系统需要解决的问题与
如今基于 CMP 的多核不同,MPP 系统所要解决的是一些特定问题,如医药模拟、地质勘探、天气预报、
核能开发及密码破译等金字塔尖的顶级问题。MPP 处理器的用户是这个星球上顶级的科研人员,而 CMP
系统所面对的是芸芸众生。不同的用户群决定了两者在使用上的区别,CMP 的多核使用不能照搬 MPP 处
理器的使用经验。而即便是 MPP 处理器也没有解决好如何使用的问题,可编程性至今还是 MPP 处理器需
要亟待解决的核心问题。
开
oss.linuxpk.com
源 2008 年第 9 期 64
知识学堂
和 Sony、Toshiba 联合推出的 Cell 处理器,Cell 中包含一个
PowerPC 内核和 8 个 SPU(Synergystic Processing Unit)
Sun Microsystems 8 核的 UltraSPARC T1 和 T2
Opteron 4 核处理器
AMD
Phenom 3 核、4 核处理器
Raza
Microelectronic 8 核的 XLR732
Cavium Networks 16 核的 CN5860
Tilera 64 核的 TILE64
多核处理器降临并不以人们的意志转移,突然间满城尽是多核。连最保守的科学家也不得不承认目前
需要解决的多核问题,不是讨论多核目前适不适用已有的软件平台,而是多核时代已经来临,如何调整
软件平台使之适用。摩尔定律的不断成功,面对的挑战除了工艺的继续提高,还面对了来自另外一个定
律 Amdahl’s law 的挑战。
Tp Tp
f '( N ) = − 2
+ Tis = 0 ⇔ N =
N Tis
开
oss.linuxpk.com
源 2008 年第 9 期 65
知识学堂
题执行的效率。
摆在多核处理器面前的除了处理器的延时与带宽外,还有一个大的难题就是并行程序的可编程性。并
行程序的编写、调试与维护的难度远大于串行程序。熟练掌握并行编程模型并不是一件简单的事情。
对于一些银行,网站等服务性部门,他们的程序的并发性非常好。业务的无关性使得处理器间的通信
与延时几乎可以忽略不计。这种程序的天然并发性使得多核处理器在 CMP 没有出现之前就得到了充分的
应用。
多核面对的最大挑战来自 PC 领域的用户,这些用户良莠不齐,各种不利于程序并行化的现象都会出
现在这些用户使用的机器中。而这些用户却是使用 CMP 人数最多的群体,这些用户正在使用的程序绝大
多数都没有经过并行化处理,而这些程序的数目过于庞大,基本不可能做到将其一一优化。这些用户所
执行的程序连多核处理所需要的最基本的负载均衡这个特性也很难满足。目前这些客户使用的操作系统
也不能有效帮助这些客户完成这些工作。既然如此,4 核、8 核或者更多的内核对于他们并没有意义。
多核处理器如果不能真正解决这些人群所面临的挑战,CMP 又将被重新回到高端计算的领域,而这
个高端领域所蕴含的能量不足以支撑整个多核产业链的继续发展。这也可能是制约多核技术继续向前发
展的决定力量。
多核处理器崭露头角的背后蕴藏着太多的危机,而这个危机的解决需要牵扯到计算机科学的所有领域,
并行算法、编译器、运行时库、操作系统、处理器及制作工艺。如何提高多核处理器的可编程性高悬在
每一个计算机科学研究人员心里。而这个问题,即便在超级计算机中也没有解决。发明一个聪明的编译
器将串行程序直接翻译成并行程序,是一个很容易想到的方法,但是这种方法目前还很难推广到 PC 领域。
目前已有的几个并行语言,如 UPC(Unified Parallel C)、CAF(Co-Array Fortune)并不足以推广到
PC 用户。而 IBM 的 X10、Sun 的 Fortness 和 Cray 的 Chapel 还在开发阶段。并行处理需要的函数库急
需完善。
而目前在多核领域,唯一令人欣慰的是处理器及制作工艺的提高使得在一个封装中可以集成更多的处
理器,这也正是令人担忧的。在多核领域跑得过快的硬件迟早会被几乎停滞不前的软件拖住后腿。也许
在不远的将来,Life will find a way。
开
oss.linuxpk.com
源 2008 年第 9 期 66
经验技巧
Linux 一句话精彩问答
系统配置篇(7)
陈绪
《Linux 一句话精彩问答》是 Linux 初学者很好的入门文档,想必很多朋友当时都是边看该文档,边敲打
键盘,玩着 Linux 过来的。
该文档由本刊顾问陈绪主编,迄今已经收录近千个精彩问答。从本期开始将在桌面应用栏目进行连载,
希望能帮助到更多刚接触到 Linux 的朋友们。
cd /var/.Trash-root
rm -rf *
开
oss.linuxpk.com
源 2008 年第 9 期 67
经验技巧
1142 在 Red Hat 上加 Simsun.ttc 字体
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-ascii-0
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-iso10646-1
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-15
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0simsun.ttf
-misc-SimSun-medium-r-normal--0-0-0-0 -p-0-gb2312.1980-0
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-m-0-gb2312.1980-0
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gbk-0
FontPath “/usr/X11R6/lib/X11/fonts/TrueType”
1146 在 vi 中搜索了一个单词,该单词以高亮显示,看起来很不舒服,怎么能将它去掉
开
oss.linuxpk.com
源 2008 年第 9 期 68
经验技巧
显示:set hlsearch
1147 如何找出系统中所有的*.cpp
如何找出系统中所有的*.cpp、
、*.h 文件
用 find 命令就可以了。不过如果从根目录查找消耗资源较高,使用下面的命令就可以:
如果经常有网络环境的话,下载第一张就可以了。要是没有网络环境的话不推荐使用 Debian,因为
Debian 主要依赖网络来更新软件。实在要安装的话,要下载全部 7 张盘,否则可能会出现需要的软件包
找不到的问题。
因为含有“non-US”(不属美国)的软件不能合法地存放在架设于美国境内的服务器中。以前,其原
因通常是因为软件含有严密的密码编码,而今天,则是因为程序使用了美国专利保护的演算法。每个人
应该取用“non-US”来供私人用途所用;而没有这个标识的 is o 则只对架设在美国的镜像及供应商才有用
处。其它二进制的光盘则不会含有任何“US-sensitive”(与美国相关的)软件,它们和 其它种 binary-1
光盘一样运作得很好。因此,个人使用还是下载 debian-30r1-i386-binary-1_NONUS.iso 版本
1151 我使用的是笔记本电脑,怎么才能在控制台下显示现在还剩多少电量呢
# cp /etc/sysconfig/i18n $HOME/.i18n
1153 编译内核的时候出错,提示“Too
编译内核的时候出错,提示“Too many open files”,请问怎么处理
files”,请问怎么处理
开
oss.linuxpk.com
源 2008 年第 9 期 69
经验技巧
这是因为 file-max 默认值(8096)太小。要解决这个问题,可以 root 身份执行下列命令(或将它
们加入/etc/rcS.d/*下的 init 脚本):
最后进入解压后的目录,运行安装命令。
# cd vmware-linux-tools
# ./install.pl
1156 如何设置用户登录后的欢迎信息
这行代码说明安装失败是因为你的系统上没有安装合适的钥匙来校验签名。要使该软件包通过校验,
可以通过导入 Red Hat 的公匙来解决,具体的方式是在 Shell 下运行如下命令:
开
oss.linuxpk.com
源 2008 年第 9 期 70
经验技巧
#rpm -import /usr/share/rhn/RPM-GPG-KEY (注意大小写)
1159 如何防止某个关键文件被修改
# chattr +i /etc/fstab
如果需要修改文件则采用下面的命令:
# chattr -i /etc/fstab
1160 怎样限制一个用户可以启动的进程数
先确定一下/etc/pam.d/login 文件中下面一行的存在:
然后编辑/etc/security/limits.conf,在里面可以设置限制用户的进程数、CPU 占用率和内存使用率
等,如 hard nproc 20 就是指限制 20 个进程,具体可以看 man。
开
oss.linuxpk.com 2008 年第 9 期 71
源
经验技巧
刘晗昭
今天有时间研究 squid 的负载均衡,目前已经有了一定的进展,下面就把我的心得总结出来和大家分
享一下。
我的目标:
2.做到会话保持
到此,负载均衡的配置就完成了,接下来修改/etc/hosts 文件添加另外一个域名
192.168.213.133 b.c.d
开
oss.linuxpk.com
源 2008 年第 9 期 72
经验技巧
为了防止 squid 机器上 dns 对域名解析的干扰,我去掉了 squid 上的 dns,启动 squid 使用-ND 参
数,启动 RS1 的 nginx,启动 RS2 的 apach e,修改我自己 windows 的 hosts 文件,内容如下:
Ubuntu 英文环境下使用
Fcitx 中文输入法
张召伟
很多朋友有在英文界面的环境下使用中文输入法的需求,但默认的系统没有提供这个功能,所以需要
生动对系统进行小小设置,来完成英文环境下的中文输入。
输入下面的命安装:
开
oss.linuxpk.com
源 2008 年第 9 期 73
经验技巧
# sudo apt-get install im-switch fcitx
输入您的密码后执行软件的安装。
修改系统配置文件,使在英文环境下也能调出中文输入法,调出输入法相关的配置文件
是/usr/lib/gtk-2.0/2.10.0/immodule-fil es.d/libgtk2.0-0.immodules
修改 libgtk2.0-0.immodules 文件:
找到行:
将其改为:
注销当前用户,退出系统,然后从登录管理器重新登录进入系统,即可使用 Fcitx,如果没有出来按
Ctrl + Spaces 将其调出。
通过串口管理 Linux 主机
刘颖
在某些情况下,需要同时对两台或多台 Linux 主机进行管理和操作。如果手头缺少足够多的键盘和显
示器,那么通过一台机器的串 口对其余主机进行控制不失为一种快捷、有效的方法。下面就以两台主机
为例,简单介绍一下配置方法。假设这两台主机分别为 A 和 B,它们都运行 Red Hat Linux。
A 主机配置
以 root 身份登录,运行如下命令:
# minicom -s
开
oss.linuxpk.com
源 2008 年第 9 期 74
经验技巧
B - Lockfile Location : /var/lock
C - Callin Program :
D - Callout Program :
E - Bps/Par/Bits : 9600 8N1
F - Hardware Flow Control : No
G - Software Flow Control : No
Change which setting?
按照需要配置如下参数:
◆ 串口设备 /dev/ttyS0;
◆ 波特率 9600;
◆ 软、硬件流控 No。
# minicom
B 主机配置
B 主机需要修改以下几个文件。
1. 修改/etc/inittab 文件
开
oss.linuxpk.com
源 2008 年第 9 期 75
经验技巧
过/sbin/agetty 程序打开串口/dev/ttyS0(COM1),波特率设置为 9600bps ,终端模式为
vt100。
2. 修改/etc/securetty 文件
3. 修改/etc/lilo.conf 文件
实用入侵监测的配置和部署
邵海杨
处于公网上的服务器一般都会被安置在防火墙的 DMZ(Demilitarized Zone)区,受到防火墙的保
护。这在一定程度可以防止具有 已知非法特征的危险连接和恶意攻击,但是却防止不了合法用户的非法
访问。
什么时候会出现合法用户的非法访问呢?举例说明,比如,合法用户的机器被他人控制,成为了黑客
的攻击跳板,或者是合法用户想做一些别有用心的探测等。
除此之外,有些攻击者还会用端口扫描程序扫描服务器的所有端口,以收集有用的信息(比如,哪些
端口是打开的?哪些是关闭的?)。服务器端口被扫描往往是入侵的前奏。防火墙的脚本大都是基于规
则的静态表示,对于网络上动态的探测就显得有点束手无策。因此,现在正在形成一个新的安全学科领
域,称为“入侵检测”。
开
oss.linuxpk.com
源 2008 年第 9 期 76
经验技巧
入侵检测工具简介
入侵检测工具主要是用来检测已经发生的和正在进行的攻击,有些工具甚至可以和防火墙实现“联动”,
采取一定的措施来阻止这些 攻击。
目前入侵检测技术采取的措施主要分为主动和被动两种。主动方式会通过网络监测器监听网络通信,
一旦察觉到可疑的活动(比如 特定数据包的流入),就会采取相应的措施。当网络上有瞬间的攻击及大
流量非法数据发生时,主动方式允许系统在攻击者发动攻 击的第一时间内做出反应,把攻击者狙击在外。
被动方式是通过事后分析日志记录,当注意到有可疑活动时,系统才会采取相应的 措施。
◆ 给出虚假的路由信息,把所有的信息流都重定向到一个不存在的主机;
◆ 通过 syslog()函数给出一个日志消息,甚至可以返回给扫描者一段警告信息。
PortSentry 的安装配置
下面详细介绍 PortSentry 工具的安装和配置方法。
1.安装
2.修改配置文件 portsentry.conf
通过 PortSentry 进行入侵检测,首先需要为它定制一份需要监视的端口清单,以及相应的阻止对策。
然后启动后台进程对这些端口 进行检测,一旦发现有人扫描这些端口,就启动相应的对策进行阻拦。
(1)设置端口清单
开
oss.linuxpk.com
源 2008 年第 9 期 77
经验技巧
#TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,
139,143,512,513,514,515,540,635,1080,1524,2000,2001,[..]
#UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,
517,518,635,640,641,666,700,2049,31335,27444,34555,[..]
# Use these if you just want to be aware:
TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,
2000,5742,6667,12345,12346,20034,27665,31337,32771,32772,[..]
UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,
34555,31335,32770,32771,32772,32773,32774,31337,54321"
# Use these for just bare-bones
#TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,
2000,12345,12346,20034,32771,32772,32773,32774,49724,54320"
#UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,
32771,32772,32773,32774,31337,54321"
可以有选择地去掉前面的注释来启用默认配置,也可以根据自己的实际情况定制一份新的清单,格式
和原来的一样即可。端口列表要根据具体情况而定,假如服务器为 Web 服务器,那么 Web 端口就不需要
监视;反之,如果是 FTP 服务器,那么监视 Web 端口也是有必要的。
(2)给定相关文件
在 portsentry.conf 中还要添加如下代码,用以指定相关文件的位置:
# 此文件记录允许合法扫描服务器的主机地址
IGNORE_FILE="/usr/local/psionic/portsentry/portsentry.ignore"
# 此文件中保留了以往所有入侵主机的 IP 历史记录
HISTORY_FILE="/usr/local/psionic/portsentry/portsentry.history"
# 此文件中是已经被阻止连接的主机 IP 记录
BLOCKED_FILE="/usr/local/psionic/portsentry/portsentry.blocked"
(3)设置路由重定向
# Generic
#KILL_ROUTE="/sbin/route add $TARGET$ 333.444.555.666"
# Generic Linux
KILL_ROUTE="/sbin/route add -host $TARGET$ gw 333.444.555.666"
开
oss.linuxpk.com
源 2008 年第 9 期 78
经验技巧
针对不同的平台有不同的路由命令,在配置文件中选择适合自己平台的命令即可。
(4)利用其它工具
(5)定制警告信息
可以定制一条警告信息,嘲笑一下攻击者。不过,手册上建议不要使用该选项,因为这样做可能会暴
露主机的 IDS 系统。
修改完毕后,改变文件的权限,以保证其安全性:
3.配置 portsentry.ignore 文件
# Put hosts in here you never want blocked. This includes the IP addresses
# of all local interfaces on the protected host (i.e virtual host, mult-home)
# Keep 127.0.0.1 and 0.0.0.0 to keep people from playing games.
127.0.0.1/32
0.0.0.0
修改完成后同样需要改变文件默认的权限:
开
oss.linuxpk.com
源 2008 年第 9 期 79
经验技巧
# chmod 600 /usr/local/psionic/portsentry/portsentry.ignore
启动检测模式
一般情况下,建议使用秘密扫描检测模式或高级秘密扫描检测模式。
启动 PortSentry 的命令如下:
# /usr/psionic/portsentry/portsentry -atcp
# /usr/psionic/portsentry/portsentry -sudp
可以把启动命令加到“/etc/rc.d/rc.local”脚本文件中,这样当重新启动计算机的时候 PortSentry 就
会自动运行。如果想让它和其它后台进程一样可以随时启动、停止并查看进程状态,可以去
http://linux.cudeso.be/linuxdoc/portsentry.php 下载一个后台 管理脚本,把该脚本放
在/etc/rc.d/下对应的运行级别目录中即可。
测试
开
oss.linuxpk.com
源 2008 年第 9 期 80
经验技巧
马路遥
管理多台 Linux 服务器时,如果每台服务器都有自己独立的用户名和密码,那么记忆和维护这些信息
就非常具有挑战性。笔者从事 L inux 的培训工作,经常遇到这样的问题:每次学生上机的座位可能都不
同,用户名和密码等相关的信息经常被修改。如果互相配合 不好,就很容易造成有些人无法登录,并且
学生的文件资料也难以保存。于是,笔者通过将老师使用的电脑配置成为 LDAP 和 NFS 服 务器,为所有
的学生提供密码验证服务来解决这个问题。
配置 OpenLDAP 服务器
首先,为每个学生指定组、用户名和密码,分别写入/etc 下的 group、passwd 和 shadow 文件。然
后修改配置文件 /etc/sldap.co nf 为如下内容:
#载入模版
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
allow bind_v2
pidfile /var/run/slapd.pid
#配置访问控制列表,使得用户可以修改自己的密码及查询其它资料
access to attr=userPassword
开
oss.linuxpk.com 2008 年第 9 期 81
源
经验技巧
by self write
by anonymous auth
access to dn="dc=tiantian.com"
by self write
by * read
database ldb
suffix "dc=tiantian.com"
rootdn "cn=Manager,dc=tiantian.com"
$DEFAULT_MAIL_DOMAIN = "tiantian.com";
$DEFAULT_BASE = "dc=tiantian.com";
注意,所赋的值要和/etc/sldap.conf 中的设置相对应(dc=tiantian.com)。
随后执行如下命令:
配置 LDAP 客户端
开
oss.linuxpk.com
源 2008 年第 9 期 82
经验技巧
在客户端执行 authconfig 或 authconfig-gtk 命令,进入认证配置界面,选中图 1 所示的三个选项
后单击“Next”,进入图 2 所示的界面 中配置 LDAP 服务器的信息。
图1 图2
配置 NFS 服务器
配置 NFS 服务器很简单,只需要在/etc/exports 文件中写入如下一行即可:
/home (rw)
配置 NFS 客户端
在每台机器的/etc/fstab 文件中增加如下一行:
开
oss.linuxpk.com
源 2008 年第 9 期 83
经验技巧
如果 NetFS 服务没有自动打开,客户机就无法在启动时成功挂载 NFS 卷。
小结
配置完成后,不论用户在哪台机器上登录,都会去服务器验证密码,并且,服务器本身也可以使用
OpenLDAP 服务器来进行用户验证。
用户登录后,所在的初始位置表面上是客户机的/home/<username>目录,实际是服务器上
的/home/<username>目录。这样,用户的 文档资料就都会存储在服务器中,不论用户在何处登录,
文档资料总是位于同样的位置。全部用户的密码资料也都存储在 OpenLDAP Server 中,既可以由 LDAP
管理员统一维护,也可以由用户使用 passwd 命令来修改。只不过,改变的不是客户机的/etc/shadow
文件和/etc/passwd 文件,而是 OpenLDAP Server 中的资料。
Linux 下防范黑客实用技巧
双系统的用户如何卸载 Linux
开
oss.linuxpk.com
源 2008 年第 9 期 84
经验技巧
● 重新启动,改动 bios 启动顺序,把从磁盘启动给禁用,一定要禁用。
刘子洋
笔者曾得到一个类似于加密“狗”的 USB 设备,要使之在 Linux 下正常工作。然而,通过一个名为
USBView 的小程序判断,Linux 内核无 法驱动这个 USB 设备,并且在“Linux USB Working Devices”的
列表中也没有找到该设备,这意味着只有很少的人在使用这种类型的 USB 设备。
解决方案
可以从最新的 2.6 版本的内核入手,解决此问题。2.6 版本的内核可以通过很多种渠道得到,这里不
做详述。
开
oss.linuxpk.com
源 2008 年第 9 期 85
经验技巧
这三个文件共同实现了 usbfs 文件系统。也就是说,Linux 是通过这三个文件访问 USB 设备的。实现文
件系统的主要工作由 inode.c 完成,它提供多种 VFS 代码,用 这些代码可以创建虚拟文件系统或虚拟文
件。devices.c 文件用于创建和读取/proc/bus/usb/devices 下表示 USB 设备状态信息的文 件。
devio.c 文件用于控制通过 usbfs 文件系统对 USB 设备的访问。要想使 Linux 能够访问 USB 设备,需要
对 devices.c 和 devio.c 做些修改。
具体实现
1.记录访问信息
探索 USB 数据流从记录所有的 USB 设备访问信息开始。在用户程序中,通过 usbfs 访问 USB 设备需
要在相应的设备文件上调用 ioctl()
…
case USBDEVFS_CLAIMINTERFACE:
printk("CLAIMINTERFACE");
ret = proc_claiminterface(ps, (void __user *)arg);
break;
case USBDEVFS_RELEASEINTERFACE:
printk("RELEASEINTERFACE");
ret = proc_releaseinterface(ps, (void __user *)arg);
break;
2.记录控制信息
通过分析/proc/bus/usb/devices 文件中对 USB 设备的描述,可以得知要最终解决问题必须关心这
些访问的控制终点(Control Endp oint)。devio.c 文件中的 proc_control()函数是用来处理控制消息
的。该函数通过如下语句区分请求访问的类型是读控制消息, 还是写控制消息:
bRequestType 是一个二进制变量,其最高位决定请求的类型。
开
oss.linuxpk.com
源 2008 年第 9 期 86
经验技巧
在处理读消息的代码段中加入如下代码,用以记录控制请求的信息:
然后,再加入如下代码,用来记录从设备中读出的实际数据:
同样,可以在处理写消息的代码段中加入类似的代码。这样以来,生成并重新装载新的 usbcore 模
块后,就可以记录对设备的所有 双向控制消息了。这些消息可能会返回如下信息:
CONTROL
control read: bRequest=06 bRrequestType=80 wValue=0300 wIndex=0000
control read: data 00 00 61 63
3.优化
接下来要对修改代码做些优化,以使内核源代码很好地接受这些修改。首先,应该修正在 printk()调
用中的一些不正确的地方。其次,所有的 printk()调用都应该有一个相应的日志级别(Logging
Level),这些日志级别可以通过预处理的方式生成。将 include /linux/kernel.h 文件修改如下:
开
开
oss.linuxpk.com
源 2008 年第 9 期 87
源
经验技巧
dev_info(&dev->dev, "CLAIMINTERFACE");
然后将确定读、写消息请求的 printk()调用修改如下:
经过上述修改,得到如下返回信息:
上述过程会产生一个易用性上的问题,即消息记录信息并不是在用户请求时刻产生的,这样会导致用
户的消息记录过于庞大。在 de vio.c 文件中加入下面的代码行可以解决这一问题:
$ modinfo usbcore
license: GPL
parm: blinkenlights:true to cycle leds on hubs
parm: usbfs_snoop:true to log all usbfs traffic
正常的模块装载命令如下:
#modprobe usbcore
修改后,可以通过下面的命令装载模块:
开
oss.linuxpk.com
源 2008 年第 9 期 88
经验技巧
$ ls -l /sys/module/usbcore/
-r--r--r-- 1 root root 4096 May 13 15:33 blinkenlights
-r--r--r-- 1 root root 4096 May 13 15:33 refcnt
-rw-r--r-- 1 root root 4096 May 13 15:33 usbfs_snoop
如果想打开消息记录功能,可以进行如下操作:
如果要确定用户是否想打开消息记录功能,还需对 dev_info()进行更深一步修改,创建下述宏:
if (usbfs_snoop) {
dev_info(&dev->dev, "control read: data ");
for (j = 0; j < ctrl.wLength; ++j)
printk("%02x ", ctrl.data[j]);
printk("");
}
开
oss.linuxpk.com
源 2008 年第 9 期 89
企业应用
陈杰
2004 年,IBM 高调推出了 OpenPower 服务器产品系列,进一步完善了自己的 Linux 产品线,旨在
让开放源码的 Linux 操作系统能够更加可靠高效的进行在 Power 平台上。本文将从 Linux 系统的特性和
Power 架构自身的优势谈起,概略性的讲解如何在 Power 上更好的使用 Linux 系统,如何优化 Linux
on Power,以求带给我们的客户更大的使用价值。
开
oss.linuxpk.com
源 2008 年第 9 期 90
企业应用
高性能计算和高商业负载运行而设计的。在 IBM 与 RedHat、Novell SUSE、RedFlag、Turbo 等 Linux
厂商合作研发之后,Linux on Power 平台更趋完善可用,性能也更趋优越,下面我们就主要来探讨
Linux on Power 上的性能调试技术。
一、性能调优的层次
对于一个应用系统来说,可以进行性能调整的层次很多。
开
oss.linuxpk.com 2008 年第 9 期 91
源
企业应用
发错误,在应用层优化是最能够提高性能的一个办法。
最后有可能需要对硬件构架进行调整,以适应整个应用系统的性能要求。
下面根据我们的经验,简要列出一些应用系统在出现性能问题时的组件。
从应用开发的角度来划分性能问题的解决的途径,那么第一应该是系统设计阶段就重视性能问题,
开
oss.linuxpk.com
源 2008 年第 9 期 92
企业应用
仔细斟酌客户对性能的要求,选择合适的应用系统构架以应对性能问题。
在应用程序开发阶段,严密监控开发流程,使用优秀的算法和工具,避免未来的性能损失。
尽可能早的进入到性能测试阶段,找到问题关键,合力解决问题。
● CPU 性能分析工具:
vmstat
ps
sar
time
strace
pstree
top
● Memory 性能分析工具:
vmstat
strace
top
ipcs
ipcrm
cat /proc/meminfo
cat /proc/slabinfo
cat /proc/<pid #>/maps
● I/O 性能分析工具:
vmstat
ipstat
repquota
quotacheck
Network 性能分析工具:
ifconfig
ethereal
开
oss.linuxpk.com
源 2008 年第 9 期 93
企业应用
tethereal
iptraf
iwconfig
nfsstat
mrtg
ntop
netstat
cat /proc/sys/net
● CPU 性能调优工具:
nice / renic
sysctl
● Memory 性能调优工具:
swapon
ulimit
sysctl
● I/O 性能调优工具:
edquota
quoton
sysctl
boot line:
elevator= <ioscheduler>
● Network 性能调优工具:
ifconfig
iwconfig
sysctl
四、CPU 性能调整
当一个系统的 CPU 空闲时间或者等待时间小于 5%时,我们就可以认为系统的 CPU 资源耗尽,我
们应该对 CPU 进行性能调整。
开
oss.linuxpk.com
源 2008 年第 9 期 94
企业应用
CPU 性能调整方法:
● 减少工作负载,选择合适的运行级。
# vi /etc/inittab
…
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have
networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
…
● 关闭非核心的服务进程。
使用如下命令关闭非核心的服务守护进程。
#vi /etc/yaboot.conf
…
image=/vmlinuz-2.6.9-11.EL
label=linux
read-only
initrd=/initrd-2.6.9-11.EL.img
root=/dev/VolGroup00/LogVol00
append="selinux=0 rhgb quiet"
…
● 编辑/proc/sys/kernel/中的文件,修改内核参数。
#cd /proc/sys/kernel/
# ls /proc/sys/kernel/
acct hotplug panic real-root-dev
开
oss.linuxpk.com
源 2008 年第 9 期 95
企业应用
cad_pid modprobe panic_on_oops sem
cap-bound msgmax pid_max shmall
core_pattern msgmnb powersave-nap shmmax
core_uses_pid msgmni print-fatal-signals shmmni
ctrl-alt-del ngroups_max printk suid_dumpable
domainname osrelease printk_ratelimit sysrq
exec-shield ostype printk_ratelimit_burst tainted
exec-shield-randomize overflowgid pty threads-max
hostname overflowuid random version
# sysctl kernel.threads-max
kernel.threads-max = 8192
# sysctl kernel.threads-max=10000
kernel.threads-max = 10000
● 关闭 SMT 功能。
● 绑定 IRQ 到某一个进程。
● 应用级调优简述。
调优工具有 oprofile/gprof;
FDPR-Pro 后连接优化等。
五、Memory 性能调整
当一个应用系统的内存资源出现下面的情况时,我们认为需要进行 Memory 性能调整:
○ 页面频繁换进换出;
○ 缺少非活动页。
开
oss.linuxpk.com
源 2008 年第 9 期 96
企业应用
例如在使用 vmstat 命令时发现,memory 的 cache 使用率非常低,而 swap 的 si 或者 so 则有比
较高的数据值时,应该警惕内存的性能问题。
Memory 性能调整方法:
● 关闭非核心的服务进程。
● 修改/proc/sys/vm/下的系统参数。
# ls /proc/sys/vm/
block_dump laptop_mode nr_pdflush_threads
dirty_background_ratio legacy_va_layout overcommit_memory
dirty_expire_centisecs lower_zone_protection overcommit_ratio
dirty_ratio max_map_count page-cluster
dirty_writeback_centisecs min_free_kbytes swappiness
hugetlb_shm_group nr_hugepages vfs_cache_pressure
# sysctl vm.min_free_kbytes
vm.min_free_kbytes = 1024
# sysctl -w vm.min_free_kbytes=2508
vm.min_free_kbytes = 2508
# cat /etc/sysctl.conf
…
vm.min_free_kbytes=2058
…
# free
total used free shared buffers cached
Mem: 987656 970240 17416 0 63324 742400
-/+ buffers/cache: 164516 823140
Swap: 1998840 150272 1848568
六、I/O 性能调整
系统出现以下情况时,我们认为该系统存在 I/O 性能问题:
○ 一个设备的平均队列长度大于 5。
I/O 性能调整方法:
1. 修改 I/O 调度算法。
开
oss.linuxpk.com
源 2008 年第 9 期 97
企业应用
as - Anticipatory I/O scheduler
cfq - Complete Fair Queuing scheduler
noop - Noop I/O scheduler
# vi /etc/yaboot.conf
image=/vmlinuz-2.6.9-11.EL
label=linux
read-only
initrd=/initrd-2.6.9-11.EL.img
root=/dev/VolGroup00/LogVol00
append="elevator=cfq rhgb quiet"
2. 文件系统调整。
对于文件系统的调整,有几个公认的准则:
将 I/O 负载相对平均的分配到所有可用的磁盘上;
文件系统即使在建立后,本身也可以通过命令调优;
tune2fs (ext2/ext3)
reiserfstune (reiserfs)
jfs_tune (jfs)
# vi /etc/fstab
…
/dev/sdb1 /backup reiserfs acl, user_xattr, noatime, nodiratime
1 1
4. 调整块设备的 READAHEAD,调大 RA 值。
开
oss.linuxpk.com
源 2008 年第 9 期 98
企业应用
七、Network 性能调整
一个应用系统出现如下情况时,我们认为该系统存在网络性能问题:
○ 网络接口的吞吐量小于期望值;
○ 出现大量的丢包现象;
○ 出现大量的冲突现象
Network 性能调整方法:
1. 调整网卡的参数。
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Half
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
Link detected: yes
#ethtool -s eth0 duplex full
#ifconfig eth0 mtu 9000 up
2. 增加网络缓冲区和包的队列。
# cat /proc/sys/net/ipv4/tcp_mem
196608 262144 393216
# cat /proc/sys/net/core/rmem_default
135168
# cat /proc/sys/net/core/rmem_max
131071
# cat /proc/sys/net/core/wmem_default
135168
# cat /proc/sys/net/core/wmem_max
131071
# cat /proc/sys/net/core/optmem_max
20480
开
oss.linuxpk.com
源 2008 年第 9 期 99
企业应用
# cat /proc/sys/net/core/netdev_max_backlog
300
# sysctl net.core.rmem_max
net.core.rmem_max = 131071
# sysctl -w net.core.rmem_max=135168
net.core.rmem_max = 135168
3. 调整 Webserving。
# sysctl net.ipv4.tcp_tw_reuse
net.ipv4.tcp_tw_reuse = 0
# sysctl -w net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_reuse = 1
# sysctl net.ipv4.tcp_tw_recycle
net.ipv4.tcp_tw_recycle = 0
# sysctl -w net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_tw_recycle = 1
基于 Linux 平台的网页内容过滤系统的实现
蒋年华
引言
互联网是现代信息通信技术发展的产物,是 20 世纪人类社会最伟大的发明之一。我国发展互联网的历史
至今将近 10 年,发展速度非迅速。目前,我国互联网上网用户已经达到了八千万,居世界第二位,其中
宽带接入用户达到一千六百万,联网计算机为三千四百四十万,各类网站五十九万个。
在全球互联网快速发展的同时,境内外不法分子也利用互联网站、电子邮件、病毒传播、黑客攻击等手
段散布暴力、色情、非法宗教、赌博、政治等各种不良信息,网络犯罪活动的现象也日渐增多。这不仅
危害网络与信息安全、扰乱社会秩序、破坏社会风气,对青少年的健康成长产生不良影响,而且对国家
安全、社会稳定、人类文明的进步都构成了严重的威胁。这些问题已经引起党中央、国务院的高度重视,
及时采取了各种措施和应对防范措施。目前,与我国互联网发展状况相适应的一整套法律法规、管理机
制等正在逐步建立,以自我管理、自我规范、互相监督、共同发展为核心的行业自律机制逐步形成,并
在净化网络环境方面发挥了重要的作用。
从整体来看,我国互联网发展的主流是好的,存在的问题主要是对互联网的管理和规范,仍许存在许多
不到位的地方,尤其是网上不良信息的大量涌入,腐蚀未成年人的心灵,严重影响青少年的健康成长,
已引起社会各方面的广泛关注和强烈不满。特别是 2004 年 7 月 16 日,公安部等部门开展打击淫秽色情
网站专项行动以来,违法和不良信息举报中心网站更是家喻户晓,打击非法网站、抓获犯罪分子成果显
著。在这场声势浩大的打击淫秽色情网站专项行动中,我国的大学校园各级领导和网络管理人员为净化
网络空间,阻断和铲除网上“黄毒”不知疲倦地工作着。
校园网对信息内容过滤的要求
对我们大学校园内的局域网网络而言,接入互联网的好处不言自明,但互联网也是一柄双刃剑,一方
面老师同学们从网上能及时了解、掌握最新资讯,进行网络教学;同时,作为校园网的网络管理部门,
开
oss.linuxpk.com
源 2008 年第 9 期 100
企业应用
如果对此管理不当,同学们上网时间无节制上网浏览,学习时间上网聊天、游戏、看电影、BT 下载、浏
览色情网站甚至浏览反动、邪教网站等,这些都给我们的学校应用互联网高效工作、学习的预期打上了
较大的折扣,甚至会导致学生们走上违法犯罪的道路。
如何利用现有的网络条件,在最节省资金和资源的情况下,构建一套高效安全的网页内容过滤系统对
校园网网站浏览情况进行监控,通过阻止在对不适当的网址的访问来提高学习工作效率,成为目前大学
校园网网络管理员需要解决的技术难题。
DansGuardian 网页内容过滤技术原理
网络内容过滤技术是将用户请求的 IP 或 URL 与不良信息库或列表进行比对,阻断数据库中存在的不
良站点。目前所知的最大的数据库拥有超过两亿个 URL,这些 URL 由专门的机构(公司、团体等)对互
联网站点进行内容健康性检查、分类并长期维护。在我们构造的这套基于 Linux 的网页内容过滤系统中,
正是需要使用这些机构提供的 URL 数据库作为非法网站和 IP 地址的列表。这样就具有一定的权威性和通
用性。
开
oss.linuxpk.com
源 2008 年第 9 期 101
企业应用
图一
图二
图三
图四
DansGuardian 网页内容过滤的优势及安装
选择 DansGuardian 作为校园网的网页内容过滤系统主要在于 DansGuardian 存在许多优点,非常
适合大学校园利用现在的网络设备构建低成本的网页内容过滤系统。
1. 相对于商业网页内容过滤系统而言,在开发源码环境下开发的 DansGuardian 无
疑是低成本的选择。无需增添任何硬件设备,直接在 Linux 平台下编译安装设置即可。
2. DansGuardian 可以阻止商业广告网站,过滤烦人的商业广告内容。
开
oss.linuxpk.com
源 2008 年第 9 期 102
企业应用
3. DansGuardian 可以过滤涉及含有色情、暴力、种族歧视、非法宗教、暴力、欺
诈信息等内容的 HTML 请求。
4. DansGuardian 对服务器硬件要求较低,资源占用小,执行速度很快,隐蔽运行。
DansGuardian 的警告页面提示详细,支持多国语言,包括简体中文。
6. 可以指定那一些文件不可以下载,例如:电影格式文件、mp3、vb、BT 种子等。
这点对提高网络带宽资源利用率,防治病毒从互联网对我内网的传播起到很大作用。
9. DansGuardian 提供了灵活的内容管理策略制定,各种配置文件,黑白名单,管
理策略具有良好的编辑能力。
DansGuardian 在全球的大学里得到越来越多的使用,具有良好的通用性,不同大学之间的技术力量
甚至可以联合起来,共享或者共同构建统一的非法网站列表,避免各自为战的编辑非法网站列表,节省
资源,提高整体作战能力。据悉,DansGuardian 近期也被权威媒体评为最佳的开放源码下的网页内容
过滤软件。
首先,下载软件:http://dansguardian.org/downloads/2/Stable/
安装的过程很简单。
安装的档案如下:
设定各种过滤、管理文档:
/etc/dansguardian/
bannedextensionlist
bannediplist
开
oss.linuxpk.com
源 2008 年第 9 期 103
企业应用
bannedmimetypelist
bannedphraselist
bannedregexpurllist
bannedsitelist
bannedurllist
banneduserlist
contentregexplist
exceptioniplist
exceptionphraselist
exceptionsitelist
exceptionurllist
exceptionuserlist
greysitelist
greyurllist
filtergroupslist
phraselists/*
pics
weightedphraselist
cgi 档案:
/var/www/cgi-bin/dansguardian.pl
执行档:
/usr/sbin/dansguardian
开机自动执行档:
/etc/rc.d/init.d/dansguardian
现在 DansGuardian 已经安装了。要启动:
手动启动 DansGuardian:
service dansguardian start
DansGuardian 管理
在具体使用中,我们对 DansGuardian 采取了分级管理的模式。由校园里的高级系统管理安装设置
好 DansGuardian,对于 DansGuardian 运行参数配置和配置文件不允许其他人员修改。而对于控制
DansGuardian 的非法网站列表,黑白名单等则由 1 个或者多个普通管理员负责承担。在日常网络维护
中,普通管理员可定时访问国内外官方或民间提供的非法网站列表,不断添加到服务器 DansGuardian
的列表中去,不断充实 DansGuardian 的过滤能力。同时 DansGuardian 记录下来的经常访问非法网站
的用户进行警告,提醒他们不要尝试访问不适合的网站,对于屡教不改的用户,将通过 Linux 平台上的
开
oss.linuxpk.com
源 2008 年第 9 期 104
企业应用
防火墙或其他手段禁止其上网。
结束语
国际互联网自诞生起,便充彻各种繁杂信息。良莠不齐的内容与互联网长期共存是不争的事实,也是互联网的“
开放性”所决定了的特点。我们应当充分认识打击非法网站,净化网络环境这项工作的长期性、艰巨性、复杂性,
认真研究、准确把握互联网的客观规律,不断改进我们对网络管理的技术水平,加强教育、管理,发展、完善内
容过滤技术,全社会共同努力,加强和改进未成年人思想道德建设工作不断推向深入,不断取得新的成效,促进
我国互联网事业全面、协调、可持续发展。
基于加密容器法保护家庭计算机文件
朱先忠
许多人采用加密分区或驱动器的方式来确保数据的安全性,但是如果你正在寻找一种更为简单但仍安
全的方式的话,我建议你使用容器加密方法。
在多数情况下,把你的信息存放在自家机器中更为安全些。然而,如果某人有一天突然闯入你家并偷
走你的计算机,那么你可能因由此丢失的东西,如医疗信息、银行帐户、税记录等,而面临以后数年的
胆战心惊。
针对此情形,我决定开发一种方式来保护家庭中的关键信息。但在开始前,我必须为之确定几个目标:
● 必须尽可能简单易用。
● 不能出现数据损失。
● 即使一台计算机物理上被盗,数据仍受到保护。
第一个目标是绝对必要的。我不可能是使用该系统的唯一人,因此必须针对非技术人员开发该系统。
另一方面,避免数据损失也是一个非常重要的目标。如果在硬盘驱动器失败的情况下你无法取回数据,
那么对数据进行保护又有何意义呢?最后一个目标是创建这个工程的主要目的之所在:如果真正出现家
中计算机被偷,需要花多长时间才能搞清楚贼人存取所有必需的信息来窃取我的家庭成员之一的身份呢?
一旦定下目标,我马上看手分析我的选择并加以评估。最终,我决定使用一种加密“容器”机制—它在
功能上就象任何其它存储设备,但只有在需要时才展示其保护功能。为了防止数据损失,它应该能够被
备份到我的家庭服务器上。在家庭服务器上,同样的技术被使用来保护我的备份,而在其上我还能刻录
CD 或 DVD 以实现离线存储。
为了实现数据保护,首先要搞清楚如何创建一个加密容器。最终,我发现了两种实现方法:一种是使
开
oss.linuxpk.com
源 2008 年第 9 期 105
企业应用
用 cryptoloop;一种是使用 cryptoloop 的后继者—dm_crypt。对于使用 cryptoloop,有很多的参考
信息,但是我很快发现它已经过时了,所以我决定采用更安全的 dm_crypt 内核模块。
前提
为了编译在本文中所描述的加密容器配置,必须满足下面条件:
● 必须安装内核版本 2.6.4-rc2 或更高版本。
● 必须安装 KDE 版本 3.3 或更高版本。
● 你必须具有根权限来实现初始设置。
配置系统
为了使用 dm-crypt,必须把相关模块编译或构建到内核中。首先,你必须启动设备映射器模块—它
允许你在现有设备部分上创建新的逻辑块设备。然后,该逻辑块设备被“映射”到被当作正常驱动分区使用
的设备。一旦启动了设备映射器,随后你就可以启动 dm-crypt;这对应于内核配置菜单中的“Crypt
Target Support”选项。dm-crypt 是一个内核模块,你正是用它来处理加密/解密的。
为了把一个加密容器应用到你的文件而不是整个驱动器或分区上,还需要在内核中启动 loopback 设
备支持。该 loopback 设备内核模块允许你使用普通文件,好象它们是真实的块设备。最后,你必须把想
使用的加密类型编译到内核中或设置为一个模块。在本文示例中,我使用了 AES 加密算法,但也可以选
用其它算法。
一旦启动所需的内核模块,应该编译该内核并安装它。因为我没有直接把这些模块构建到内核中去,
所以我把必需的模块 dm-mod,dm-crypt 和 aes-i586 添加到我的 Gentoo OS
的/etc/modules.autoload/kernel-2.6 下,这样它们可以在启动时自动加载。下面是你需要在内核中
启动的一个内核模块列表:
Device Drivers -> Multi-Device Support (RAID and LVM) -> Device Mapper Support
Device Drivers -> Multi-Device Support (RAID and LVM) -> Crypt Target Support
Device Drivers -> Block Devices -> Loopback Device Support
Cryptographic Options -> <encryption type>
对于其它可能没有中心位置来帮助在启动时自动装载内核模块的系统,你可以把适当的 modprobe
命令添加到一个启动脚本中。对于基于 Debian 的系统,例如 Ubuntu,使用的脚本
是/etc/init.d/bootmisc.sh。对于其它分发包,你可以使用/etc/init.d/rc.local。下面是对于非
Gentoo 分发包推荐的添加到启动脚本中的命令:
$ modprobe dm-mod
$ modprobe dm-crypt
开
oss.linuxpk.com
源 2008 年第 9 期 106
企业应用
$ modprobe aes
现在,你已经配置好内核,接下来必须安装两个包—它们将有助于创建该加密容器并作为一个设备来
使用。需要安装的第一个包是设备映射工具。在 Gentoo 上,简单地执行 emerge device-mapper 将自
动地下载、编译并安装该包。其实,它有可能已经安装在其它的 Linux 分发包中。一种容易的确定是否
你已经安装了该设备映射器包的方法是看一下是否/dev/mapper 和/dev/mapper/control 已经存在。
如果它们存在,那么该设备映射器已经安装。否则,对于基于 Debian 的系统,例如 Ubuntu,你可以执
行 apt-get 来安装 libdevmapper。如果你使用一不同的分发包,那么请检查你的包管理系统来查看它
是否容易安装。如果不容易安装,请到“参考资料“部分找一个你能直接下载它的链接。
创建加密容器
在重启动你的内核之后,你就可以为自己的文件创建容器并登录它。选择一个具有足够空间的分区来
创建该容器并使该容器留下足够的空间来存储所有你想要放在其中的文件。记住,在我写本文之时,一
旦你创建了容器,就无法增加这个容器的大小。代之的是,你必须创建一个新的更大的驱动器容器,把
旧容器中的一切复制到新容器中去,然后删除旧的容器。
为了创建该容器文件,可以使用 dd 命令;典型地,它被用于复制驱动器分区。在下面的实例中,我
指定了每块的大小为 1MB 并且该容器的大小应该是 2,048 块(该容器的大小为 2GB—1MB×2,048
块)。
注意,我使用了一个特殊设备(当被读时它只输出零)作为该 dd 命令的一个源。有人建议使
用/dev/random 可能更好一些;但是,这样以来,不好确定该容器实际使用的空间大小。我也使用了一
个分区(/encrypted),这是我特地为存储容器而保留下来的。
开
oss.linuxpk.com
源 2008 年第 9 期 107
企业应用
stop it!)
$ cat /home/pritchey/foo | cut -b 0-31 > /home/pritchey/crypto.key
$ rm /home/pritchey/foo
$ cryptsetup -c aes -d /home/pritchey/crypto.key create data.crypt /dev/loop0
现在,你已经拥有一个行为上类似于正常的驱动器分区的东西。为了登录并使用它,你必须在其上创
建一个文件系统。我选择使用 ext2 文件系统,但是你也可以使用其它文件系统。一旦创建该文件系统,
它就可以象一个常规的驱动器分区一样地被登录。
$ mke2fs -j /dev/mapper/data.crypt
$ mkdir /mnt/encrypted
$ mount /dev/mapper/data.crypt /mnt/encrypted
一旦登录,你的加密的设备就象一个正常的驱动器分区一样—你可以在其上实现复制文件,删除文件,
编辑文件,等等。唯一的差别是,你必须记住,当你使用完后,要正确地卸载该设备并删除 loopback 安
装:
$umount /mnt/encrypted
$ cryptsetup remove data.crypt
$ losetup -d /dev/loop0
现在,要在以后存取你的文件只需要三个步骤:
这就解决了保护你的数据的问题。但是,对于非技术用户来说,这些命令很难记住且看上去也别扭—
更不用提它们需要根存取权限了。下一步是以一种既易于操作又对于想查找这些内容的人来说并不那么
明显的方法自动化登录/卸载该加密容器。
自动创建(Ⅰ)
为了自动登录/卸载加密容器,我求助于搜索引擎和我的一位同事。当我想为上面的命令创建一个脚
本时所遇到的问题是,要求有根存取权限来建立一切。我想实现家庭中的其他人也能够使用该加密容器,
但是他们还没有足够的经验来使用根级存取权限。我费了很大劲才从网上找到一个很小的用 C 语言编写
的程序,可以用它来担当一个需要根权限的脚本的包装器(见“参考资料”)。所有要做的是,更改该程序
假定要运行的命令,编译该程序并把它通过粘位(sticky bit)复制到指定位置。
#include <stdio.h>
#include <unistd.h>
开
oss.linuxpk.com
源 2008 年第 9 期 108
企业应用
const char myprog[] = "/bin/encrypt_mount_gen";
main(){
putenv("PATH=/bin:/usr/bin");
putenv("IFS= \t\n");
setgid(getegid());
setuid(geteuid());
perror("exec");
exit(1);
正确修改后,编译该程序,把它复制到位并且确保设置了正确的权限。我选择仅对于能够登录到加密
容器(名为 crypto)的用户在/etc/group 下创建一个特定的组。加密设备能够登录的目录的许可权和所
有权(在上一步中作为/mnt/encrypted 创建)也是用这种方式设置的。这可以阻止另外的在该计算机
上具有帐户的用户来登录或存取加密的设备。
为了保护登录的加密数据:
为了卸载该加密容器,你需要再次使用这个包装器程序—在本示例脚本中称作 encryptoff。但是,
这一次,它调用一个脚本(包含正确的用于卸载该加密容器的命令)。下面的示例脚本是用于卸载一个
登录的加密容器:
#!/bin/bash
/bin/umount /mnt/encrypted
/sbin/losetup -d /dev/loop0
#对于每个加密容器重复上面三个命令....
开
oss.linuxpk.com
源 2008 年第 9 期 109
企业应用
自动创建(Ⅱ)
首先,编写从上面的包装器中调用的脚本,这样以来当用两个参数调用它时,它就能够登录到任何加
密的容器中。用这种方式,我可以拥有多个包装器—它们对于每个特定的加密容器是唯一的,但是只有
一个脚本实际执行登录和卸载。该脚本假定,加密容器以.crypt 扩展名结束,而密钥文件以.key 扩展名
结束,但是它们都有相同的开始名—这被作为第二个参数传递。
为了进一步增强安全性,我还决定对一个 U 盘上的加密设备存储密钥(口令字)。把口令存储在一个
文件内永远不会是个好主意,但是在这种情况中口令字是不可能记住的。只要该 U 盘与它所属的计算机
相脱离—例如,被锁在一个安全的地方,那么这就是一个足够的方案了。如果该计算机被偷,窃贼带走
USB 密钥和计算机并知道如何来操作的可能性很小。而且,由于使用了一种 256 位(32 个字符)的密钥,
系统会很难用暴力方式来破解。
#!/bin/bash
/bin/mount /mnt/usb_stick
/bin/umount /mnt/usb_stick
这种设计部分地解决了易用性的问题,但是它仍然需要某人记住一个命令—为了把它隐藏起来我可以
给它任何命名。我有一个想法,并且搜索了一下网络,发现 KDE 有两个特殊目录—它们能够包含用户第
一次登录或登出后要运行的脚本或包含到可执行文件的链接。每个用户的 home 目录下都包含一个隐藏
的目录.kde。这正是此两个目录用于登录/登出的位置。用于登录的目录称作 Autostart,第一个字母大
写。只需把一个脚本放在此,由它负责执行你需要的包装器的数目。下面是我放
在/home/pritchey/.kde/Autostart 目录下的示例脚本:
#!/bin/bash
/bin/mysecretcommand
/bin/mysecretcommand2
...
同样,你可以在另一个脚本中使用目录.kde/shutdown 来卸载并自动清除任何加密容器。这是解决
使用问题的最后一步。为了使用该系统,你仅需要打开计算机,然后用加密容器的密钥插入 U 盘并且登
开
oss.linuxpk.com
源 2008 年第 9 期 110
企业应用
录到 KDE。一旦登录,拔下该 U 盘并且立即把它返回到它的隐藏点。如果你在插入 U 盘之前登录,那么
你或者可以登出然后通过插入该 U 盘来再次登录,或者从一个外壳提示符下执行该包装器命令。
备份工作
最后要强调的是:应该尽最大努力来保护你自己免受数据损失。我已在前面解决了这个问题,所以至
此仅剩下一个简单的把加密容器集成到我的备份系统的问题。当其他使用者退出 KDE 时,我的所有系统
被设置为备份用户的 home 目录—这是通过在.kde/shutdown 中的一个脚本激活的。所有我需做的是,
当用户登录时修改该脚本来处理加密容器。这个脚本执行 rsync 并且把任何已改变的文件保存到一个服
务器上。于是,我修改该备份脚本,以便使用参数来指定要被同步的目录。缺省情况是,用服务器上的
备份位置同步用户的 home 目录。然后,在用户的 shutdown 目录下的脚本被修改来探测是否加密容器
已经被登录;而如果已经登录,则在卸载前 rsync 它。同步登录的数据要比同步大的容器文件本身快得
多,即使在一个安静的家庭网络上。下面是我放在/home/pritchey/.kde/shutdown 中的脚本:
#!/bin/bash
#检查是否你的加密容器已经登录;如此已经登录,
#那么在卸载它们之前,对其进行备份
/home/pritchey/scripts/backup_rsync.sh /mnt/encrypted_projects
fi
/home/pritchey/scripts/backup_rsync.sh /mnt/encrypted
fi
#现在,既然它们已经被正确备份,卸载加密分区。
#调用包装器—它调用该脚本(其中包含卸载已登录的容器的命令)
/bin/encryptoff
# 现在,备份非加密的数据,这样就可以拥有一个脱机备份。
/home/pritchey/scripts/backup_rsync.sh
#!/bin/bash -x
#缺省地(如果没有参数传递),这个脚本执行一个很简单的用户家庭目录的备份。
开
oss.linuxpk.com
源 2008 年第 9 期 111
企业应用
#这个脚本可备在用户的~/.kde/shutdown 目录中参考之用
# 如果传递参数,那么它们的用法如下:
# 参数 1:用作被同步的基目录
# 参数 2:用作目录/文件的'忽略'列表
echo "------------" >> /tmp/rsync.log
echo "starting" `/bin/date` >> /tmp/rsync.log
#确保你在线并能够存取你的备份服务器...
if [ `ping -c 1 192.168.1.50 | grep '64 bytes from' | wc -l` -eq 1 ]
then
BACKUP_DIR="/home/$USER"
EXCLUDE_DIR="/home/$USER/OpenOffice*"
else
BACKUP_DIR="$1"
EXCLUDE_DIR="$2"
fi
"$BACKUP_DIR" rsync://192.168.1.50/intrepid-linux
else
fi
总结
我读过许多有关加密完整的分区和驱动器的文章,但是我选择了使用加密容器作为代替。通过使用容器,我可以
实现灵活地移动数据,把它们备份到 CD 或 DVD 上,而且当我不需要它们时则不必登录它们。如果是其它情形,
我可以选择使用加密分区或驱动器的方式。在最开始,我也非常关心使用一种加密系统对性能所造成的影响。但
是,经过一年的试用,我还没有发现任何性能方面的问题。
显然,可以进一步增强我所用的备份脚本。对于我个人的家庭使用来说,这已被证明足够了。另外,本文提供的
脚本中没有涉及其它安全检查问题;我也没有详及有关 rsync 的使用问题。为了实现保护我的系统,我还在系统
关闭脚本中包含了用于卸载该加密容器的命令。这样,如果一个系统被远程关闭或 UPS 软件关闭了系统,那么加
密容器也将被正确而干净地卸载。
开
oss.linuxpk.com
源 2008 年第 9 期 112
嵌入式
嵌入式开源模式
顾宏军
开源对于有效组织群体智慧,降低开发成本和快速建立用户群等方面,都具有独特的优势。开源是一
种高效,节约的高生产力模式 ,开放源代码可以增加项目的透明度,降低开发风险,协同合作的机制使
众多自愿者们在项目的发展过程中与项目本身建立起感情 ,形成一个社区,同时这些项目参与者也将为
市场推广带来良好口碑,成为潜在的用户或者合作伙伴。
传统的开源模式
开源软件已从“玩家”手中走向产业化,开源技术也趋于成熟,并发展了若干种成功的商业模式,如
RedHat 的订阅模式、MySQL 的双 授权模式、SugerCRM 的租赁模式等。据 IDC 预测,全球 Linux 市场
每年以 25%的速度增长,到 2008 年将达到 350 亿美元(其中桌面 Lin ux 将达到 10 亿美元,占
3%)。国内很多公司也看到了开源的巨大商业价值,当这些在国外成功应用的商业模式,在国内却显有
成 功案例。我们需要探索有中国特色的开源商业模式。
国内的 Linux 企业现在基本都是模仿 Red Hat 和 Suse 模式,做 Linux 发行版,如红旗 Linux、中标
软件等。但据中国软件行业协会调查显示,国内有相当数量的计算机用户在购买预装了 Linux 的计算机
后,将 Linux 舍弃不用,私自安装了盗版的 Windows。用户将 Linux 舍弃不用,这类 Linux 厂商又何谈
向用户收服务费呢?它们只能是靠政府的扶持资金艰难度日了。严重的盗版问题、对知识产权的 不认同
注定了目前这种服务模式目前在中国难以推广。
嵌入式模式最富潜力
在中国市场,嵌入式模式也许是最富潜力的模式,也是最适合中国国情的开源模式。嵌入式系统是以
应用为中心,以计算机技术为 基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、
功耗有严格要求的专用计算机系统。PDA、机顶盒、游 戏机、交换机、路由器、数控设备或仪表、汽车
电子、家电控制系统、医疗仪器、航天航空设备等都是典型的嵌入式系统。
嵌入式软件就是为嵌入式系统设计的软件,同样由程序及其文档组成,可细分成系统软件、支撑软件、
应用软件三类,是嵌入式系 统的重要组成部分。嵌入式模式实质就是充分发挥开源软件的优势,实现软
开
oss.linuxpk.com
源 2008 年第 9 期 113
嵌入式
件和硬件一体化,做一个整体销售,也就是销售设备化 了的软件。
从国家战略目标与产业发展来看,嵌入式软件是实现传统制造业转型与提升的关键技术,它对整体提
升我国制造业的竞争能力意义重大。正如信息产业部娄勤俭副部长在天津软件出口基地讲话中指出的:“
大力发展嵌入式软件,不仅可以提高整机和设备的附加 值,而且有利于扩大软件出口。是我国软件产业
跨越式发展的一条好路子!”
中国是个制造业大国,具有雄厚的制造业基础,传统制造业正面临升级换代,增加产品附加值的压力。
嵌入式开源软件正好给了中国制造企业一个发展的良好机会:采用开源软件,使开源软件成为他们硬件
产品的基础软件,从而大大增加产品的附加值。制造业 企业自身开发和维护软件的成本很高,而采用开
源软件恰恰降低了其软件成本,缩短产品上市时间。嵌入式模式已经为很多国际公 司广泛采纳。
对硬件制造商而言,随着竞争的普及,市场压力迫使硬件公司开发并维护软件,实现硬件的增值;但
是自己软件本身的开发维护成本很高,采用第三方软件时授权费又特高,这时他们就可采用开源软件,
或对开源软件进行二次开发以节约成本。这种模式为大型 公司广泛采纳,比如 IBM 、HP 等服务器供应
商巨头,通过捆绑免费的 Linux 操作系统销售硬件服务器。
对电子设备公司而言,采用开源的 Linux,可以通过开发和重复使用模块代码,可以大大缩短电子设
备公司新产品进入市场的周期,与此同时,由于开放性,Linux 也吸引了大量的软件天才加入到了
Linux 社区,极大地丰富了 Linux 产品,增强了市场影响力 。Linksys 的一位工程副总裁表示,在开发
社区,Linux 成了通用语言。该公司在多种网络产品中采用了 Linux 操作系统。
很多电子设备在使用时需要优化性能或增加新功能,在这方面,开放源码的系统有突出优势。以加州
公司 Cyclades 为例,它开发的硬件系统可以让数据中心远程开关服务器,其客户包括 Yahoo!、Google
和 NASA。
开
oss.linuxpk.com
源 2008 年第 9 期 114
嵌入式
在移动智能终端领域,于 Symbian、WinCE 相比,嵌入式 Linux 操作系统由于代码开放和强大的网
络功能,越来越受到手机厂商青睐 。MOTOROLA 的智能手机采用 Linux 操作系统。其 E680 是成为中
国市场上为数不多的几款可以与 S60 机型抗衡的智能手机,而 E680 在中 国的畅销也直接印证了 Linux
的受认可程度。开源软件所带来的无须授权费、灵活性和针对性方面的优势,使得 Linux 替代 Symbian
、WinCE,成为新兴的智能手机厂商作为了自己产品的操作系统首选。海尔推出的 N60 智能手机即是采
用 Linux,而同样采用 Linux 智能手机还有被列入 863 计划的中兴 e3。
对新兴创业公司而言,利用开源软件可以有效降低创业的初期成本。在传统科技公司中,一个产品从
立项,组织团队,招聘人员,到调拨资金,市场分析,整个过程耗费巨大的人力物力。而采用开源软件
后,公司需要做的,设计针对应用的硬件,对现有开源软 件进行二次开发,针对特定应用场合进行修改,
然后对软件进行固化。初期成本可以降低很多,这样整个嵌入式产品成本会降低。
目前中国的电子制造业规模已经名列世界第二,但是大多数企业是做简单加工、装配,工业附加值和
利润都很低,即使是‘电子百强’,利润率也只有 3%左右,这与外国高技术企业的高利润形成很大的反差。
究其原因,是因为我国企业缺乏核心技术。要改变这种被动局面,一个重要的举措就是发展嵌入式软件,
使原来生产的低附加值的设备变成智能化的高附加值的设备。而 Linux 给中国 的开发商提供了巨大的机
会,现在是中国的 Linux 技术人员发挥创造力的时候了。
嵌入式领域非常广泛,能够容纳大量不同的公司和产品,为各种创业公司提供了广阔的舞台。由于嵌
入式系统的软件和硬件结合的特点,使得公司销售的产品和单纯的软件相比,很难被别人模仿,盗版和
模仿难度很大。因此嵌入式系统模式可能是开源商业模式里最适合中国国情的,为中国制造业提供了一
条低成本的产业升级之路。
开
oss.linuxpk.com
源 2008 年第 9 期 115
嵌入式
赵晖
嵌入式产品已经渗透到人们生活的方方面面,特别是在数字信息技术和网络技术高速发展的今天,手
持信息产品正拓展着一片越来越大的市场,PDA、手机、掌上电脑、信息家电等各式手持产品已拥有了
庞大的用户群。手持信息产品所运用的最关键的核心技术就是嵌入式操作系统。人们对嵌入式产品的需
求也不再仅仅是功能单一的电子词典类产品,嵌入式操作系统逐步成为嵌入式产品的核心。而其中,
Linux 以其开源的内核和免费的应用程序、能够自由地移植和开发的优势,更迎合嵌入式市场。
在 Linux 中,文件系统的结构是基于树状的,根在顶部,各个目录和文件从树根向下分支。目录树的
最顶端被称为根目录(/)。在后面介绍的所构造文件系统结构图(图 1)即显示了树状的文件系统。Linux 操
作系统由一些目录和许多文件组成,例如,图中的/bi n 目录包含二进制文件的可执行程序,/sbin 目录
用于存储管理系统的二进制文件,/etc 目录包含绝大部分的 Linux 系统配置文件 ,/lib 目录存储程序运
行时使用的共享库,/dev 目录包含称为设备文件的特殊文件,/proc 目录实际上是一个虚拟文件系统,/
tmp 目录用于存储程序运行时生成的临时文件,/home 目录是用户起始目录的基础目录,/var 目录保存
要随时改变大小的文件,/usr 目录及其子目录对 Linux 系统的操作非常重要,它保存着系统上的一些最
重要的程序以及包含你安装的大型软件包。
由于 Linux 是一个多任务、多用户的操作系统,因此它里面的文件还都被赋予了一定的权限,权限决
定谁能读、写或执行一个文件,以及这个文件的类型和如何执行。例如下面的文件列表:
开
oss.linuxpk.com
源 2008 年第 9 期 116
嵌入式
由于嵌入式设备的一些特殊性,使得嵌入式文件系统除了满足一般文件系统的基本要求外,还有一些
自身的特性:(1)文件系统面对的存储介质特殊;(2)文件系统有快速恢复的特殊要求;(3)物理文件
系统的多样性和动态可装配性;(4)需要文件系统具有跨操 作平台的安全性;(5)文件系统要能满
足整个系统的实时性要求。
嵌入式文件系统有安全性和均衡负载这样的要求,而日志型文件系统可以很好地解决安全性的问题。
经过几年来的发展。日志型的嵌入式文件系统已成为嵌入式文件系统的主流。1999 年。Axis
Communications AB 发布了 JFFS(JournalingFlash File System)的 第一个版本。这是一个专门为嵌入
式系统的 Flash 设备而设计的文件系统,同时它也是一个日志型的文件系统。JFFS2 是 JFFS 的第二 个版
本,于 2001 年发布,并得到了 Red Hat 的支持,成为 Red Hat 嵌入式操作系统 eCos 的文件系统。
Flash 存储容量的有限性决定了 J FFS 是一个小尺寸的文件系统。因而在文件系统的内部设计上采用了许
多简化处 理。同时,它们结合了 Flash 设备的读写特性和嵌入式文件系统的防断电特性,使得 JFFS 成为
适合于嵌入式系统上针对 Flash 设备的文件系统的理想选择。
● 实验主机和目标平台的连接
实验主机和目标平台的连接有两种方法。一种是以太网连接,这种连接方式可以进行内核文件、根文
件系统映像文件的下载。另一 种是串口连接,这样的连接方式可以供调试之用。对于以太网连接,作者
使用一根普通网线,将实验主机和目标平台都连接在 Hub 上。这样做既简单,也不妨碍实验主机与外部
网络的通讯。对于串口连接,用一根串口线连接目标平台的 Ful Function UART(FFUA RT)串口和实验主
机的串口。主要是在调试阶段使用这种连接方式,在目标平台的标准输入还未被驱动的情况下。用实验
主机的标准输入控制目标平台,向目标平台发控制命令。
● 构建文件系统
首先建立一个文件系统的工作空间。创建目录/
bome/work,我们所构造的文件系统就在 work 这
个目录中。建立基本目录,如:
bin,dev,etc,lib,mnt,proc,sbin,tmp,u
sr,vat,tools 具体结构图见图 1(图中所显示的文
件都是目录文件)。其中,tools 是便于开发而创建
的目录。因为整个系统要求尽量小,所以应只包含
一些必须的二进制程序。而开发过程中需要用到的
命令就放在 tools 中,将 PATH 包含 tools 即可。/
etc 目录下只包含了一些启动过程的配置文件,/lib
目录下的 modules 于目录包含了可动态加载到核心
开
oss.linuxpk.com
源 2008 年第 9 期 117
插图 1: 构建文件系统的树状结构
嵌入式
的各种模块。另外,目录 var 下还应创建两个子目录 log 和 run,负责记录系统的日志和运行状态。整个
文件系统中除了 tmp 和 var 目录放在 SDRAM 内以外,其他所有目录都放在 Flash 中,因为 trap 和 var
中的内容需要经常写入,所以放在可读写的 RAM 里。
根据上面的叙述,可给出整个文件系统的体系结构图,
见图 2 所示。
构建文件系统最基本的要求就是系统能够在此基础上
启动运行起来,所以,/sbin 下的 init 程序必不可少。
init 程序是引导过程完 成后内核运行的第一个程序,它
能启动全部其他程序。只要 init 完成运行全部必要的程序,
系统就开始建立并开始运行。当程序开 始启动时,init
读取一个配置文件 inittab,这个文件位于/etc 下,它确
定了 init 在启动和关机时的工作特性。在我们开发的这个
嵌入式系统中,所有的文件内容只需保留与开发要求有
关的必须部分。
这个系统运行单用户模式启动:启动后立即运行
rc.sysinit 脚本,进行系统初始化动作。rc.sysinit 脚本
也进行了精简,只保留了以读写的方式重新加载(mount)
插图 2: 文件系统体系结构
根文件系统的操作(内核启动时只以只读的方式加载了根
文件系统),具体 rc.sysinit 脚本中的内容 如下:
为了开发过程用户与系统能进行交互,启动了/bin/bash 这个命令解释器。用户在键盘上输入某些命
令,bash 将读取输入加以解 析然后执行该程序。/tools 中的 telnetd 和/sbin 中的 pppd 分别是远程
登陆和串口通讯的后台程序,加入它们也是为了方便开发。
另外,为了尽量精简内核,程序都以动态链接库文件的方式编译,即当程序运行到所需库文件时才动
态加载。所以保证库文件的完整性就显得相当重要。为确保运行各种程序都能在/lib 目录中找到合适的
库文件,就干脆对/lib 中的库文件不作任何删减,而完 整的/lib 目录(含子目录及全部库文件)也不过
2MB 大小。
● 配置文件系统用户
这一步骤的实现,体现了该嵌入式操作系统的一大特色---安全性。为了防止系统中的文件被误改或
开
oss.linuxpk.com
源 2008 年第 9 期 118
嵌入式
被恶意破坏,我们设置组和用 户,让只有隶属于特定组的特定用户才能对特定的程序进行合法操作。
/etc 目录中没有列入管理组的 group 文件和管理用户的 pass wd 文件,所以在设置文件或目录的所有权
时,全部用 id 号来代替组名和用户名。用 chown 命令来改变文件的所有权,如 chown 0.0 i nittab(前
一个“0”代表属组,后一个“0”代表用户),修改后的 inittab 文件的详细信息为:-rw-r-r-- 1 0 0 237
Jul 26 l0:30 inittab
将系统中所有的文件和目录按照其具体类型和要求,为其设定特定的组和用户对它的所有权。例如,/
etc 中的 module.conf 配置文件的所有权是 module 组和 module 用户。那么只有组和用户同为
module 的程序(比如/lib/modules/中的程序)才有权查看 module.c onf 文件,其他非 root 用户的程序
都打不开这个文件。这样,除了 root 用户,其他不具有操作权限的用户就不可能对那些特殊文件, 如有
关网络、安全等重要信息进行执行和修改。而拥有 root 用户权限的文件只有 init 和 bash 两个。init 用于
完成系统的初始化过程,并不涉及对其他文件和程序的操作;bash 是开发过程中用户与系统交互的需要,
便于对文件系统进行修改,开发完成后的实际系 统并不需要 bash,可删除。这样,各个文件和程序均在
自己所属的组和用户中运行,不会互相干扰。使得整个系统有条不紊,不会 发生程序越权误操作的现象。
保证了操作系统本身的安全性,也让试图窃取或破坏数据的攻击者无机可乘。
根据需要,在基本文件系统上添加应用程序基本文件系统完成后,再根据开发的实际要求,在上面再
构筑一些应用和服务。例如,对于所需求的网络功能,我们在/bin 中加 入 netstat、ping,在/sbin 中
加入 ifconfig、route、xinetd 等网络程序:为了将一些服务以模块的方式加载,以缓解内核的负担 ,
我们在/sbin 中加入了 insmod、lsmod、modprobe、depmod、rmmod 等有关操作模块的命令。还
有,为了搭建开发过程的交叉编译的环境,需要用到串口通讯,所以在/sbin 中加入 pppd 的命令,在/
etc 中加入 PPP 目录及其配置文件等等。
支持 MTD 设备
对 MTD 设备的支持要经过配置内核、编写设备驱动程序和建立 MTD 设备这几个步骤。
开
oss.linuxpk.com
源 2008 年第 9 期 119
嵌入式
第二步,编写针对目标平台 Flash 设备的 MTD 驱动程序,主要实现创建 MTD 分区和删除 MTD
分区的函数。创建分区的流程见图 3 所示。删除分区的函数比较简单,如果存在 MTD 分区,就调用
del_mtd_partitions(struct mtd info*)删除分区,并且删除为 MTD 设备创建的映射表。
插图 3: 创建 MTD 分区
JFFS2 映象文件的生成
开
oss.linuxpk.com
源 2008 年第 9 期 120
嵌入式
第一步,在开发主机上将这个 Ramdisk 以 loop 的方式挂接到某个临时目录下。在这个目录下就出现
了一些文件系统的基本文件和信息,可以做增删以达到定制的目的。第二步,修改/etc/rc.d/rc.sysinit
文件,使得文件系统在 remount 时不会出现只读的情况。具体修改如下:
Mount -n -o remount.rw//加入这一行
Mkfs.jffs2 -d<文件系统所在目录>-o<映像文件名>
结语
开
oss.linuxpk.com
源 2008 年第 9 期 121
开源小知识
开源小知识
开 发者是否可以自己
创造一个许可证?
开 源软件许可证带来
的纠纷可能有哪些?
当然可以。如果某个人或者组织开发了一种 ● 发布软件时未表明版权信息以及必要的修改信息;
新的程序,这个程序又没有受控于任何已有的许 ● 发布软件时没有附上相应许可证;
可证,这个开发者就可以选择已有的许可协议或 ● 源代码提供不符合许可证的要求;
许可协议模板进行修改发布自己的软件。当然, ● 违反许可证的规定将软件代码与其他代码混合;
如果开发者认为现有的许可证都是不理想,他就 ● 发布软件时违反许可证的规定收取不适当的费用;
可以自己编写新的许可证 ,他可以将自己价值取 ● 违反许可证的规定以开放源码软件申请专利。
向体现在对许可人和被许可人的权利和义务的不
同规定中。也可以将许可证提交 OSI 进行认证, 开源软件许可证有什么共同特点?
获得目前比 较通用的证明,从而表示出遵循这个
许可证的共同点一般都是规定了发布义务
新的许可证的软件是开放源代码软件。
(将获得的源代码再发布)、对发布源代码的要
求(须保证源代码的完整和可以被获得)、允许
一个软件是否可以适用多个许可? 修改的权利(可以根据获得的源代码产生演绎作
可以,只要这些许可证之间不发生实质性的 品)。一般开源软件许可证都不定补担保条款和
冲突。以前开发人员必须考虑的只是软件的依赖 责任免除条款。
性和不兼容性,现在他们还得考虑开源软件项目 ● 开放源码软件许可证都会规定在被许可人接受本
之间许可证的冲突。如:Mozilla 包含四个不同 许可证或的源代码之后,有将源代码再发布的义
的许可证。参与该项目的开发需要注意许可证间 务,以促进开源码运动。
开源软件许可证之间的差异主要体现在:
● 是否允许可以同其他非开放源码软件代码混合;
开
oss.linuxpk.com
源 2008 年第 9 期 122
开源小知识
● 是否可以将对源代码的修改不公开; 品,则要求连接各部分都受该开源许可证限制,
● 是否明确了专利许可授权; 也就是必须成为指定的开源软件,是容易产生问
● 是否明确了专利侵权诉讼导致许可协议中止; 题的地方。对于冲突的问题,现在我们能做的就
● 是否明确禁止与函数库连接; 是尽量避免。
● 是否只能按本许可证发布源代码;
● 是否要求对于获得的源代码可能存在的知识产权 OSI 与开源许可证是什么关系?
进行以“LEGAL”为抬头的提示。
OSI 组织也即“开放源代码首创行动组织”
许
从而可以实现是否是开源软件的判断。
可证之间的规定
开放源代码组织是通过开源软件许可证这种
存在冲突怎么办? 合同形式来明确规定源代码使用者的义务,使开
国际上较为严格的许可证主要是 GPL 许可证、 放源代码的思想得以传播,同时巧妙地保有了其
QNCL 许可证和 Ricoh 许可证三种,其他的均被 Open Source Initiative 、OSI 等一系列商标的
认识是比较宽松的开放源码软件许可证。来自于 所有权。虽然,对这些证明商标没有使用费的要
不同许可证的程序源代码想要结合起来就会产生 求,但是使用这些商标还 是必须遵守 OSI 的规则。
许可证之间规定的冲突问题。实际上,主流的开
源软件,尤其是开源平 台 LAMP(Linux, 许可证经 OSI 认证有何益处?
Apache, MySQL, PHP/Perl/Python),都是依
OSI 组织从软件的许可证上着手,将证明商标
照 GPL 发布的。而 GPL 又是一个要求严格的许
许可给那些经其审核认定为开源软件的软件提供
可证,所以冲突主要是不同许可证与 GPL 许可证
者。这样,凡被认定为开源软件许可证的,都可
之间的冲突。一些开源许可证要求当出现程序之
以标注 OS、OSI 等商标标识。因此,许可证经过
间的连接、或者程序修改时,如果出现了组合作
OSI 认证可以在一定程度上保证遵循它的软件获
开
oss.linuxpk.com
源 2008 年第 9 期 123
开源小知识
得开源软件界的认可。 将自己定位为一个行业自律协会性质,并且巧妙
的应用了商标战略。将 Open Source Initiative
但 OSI 终究是个非官方组织,OSI 组织要想在
、OSI 申请了证明商标,称为“OSICertified”标志,
开源软件领域实现“统一标准”的目的几乎没有什
自己作为证明商标的管理者,为开源软件业的发
么成功的希望。但是该组织的定位和战略很好,
展做出了重大的贡献。
开
oss.linuxpk.com
源 2008 年第 9 期 124
编读往来
Linuxpk.com 九月十大热门帖
Fedora 9 中文输入法问题分享一下
http://bbs.linuxpk.com/thread-35487-1-1.html
小型的图书管理:struts+spring
http://bbs.linuxpk.com/thread-35450-1-1.html
深度解析开源软件与赢利模式
http://bbs.linuxpk.com/thread-35393-1-1.html
投票:关于《开源》杂志的排版,单栏还是双栏?
http://bbs.linuxpk.com/thread-35401-1-1.html
硅谷禁书
http://bbs.linuxpk.com/thread-35483-1-1.html
使用 VIM 编辑 C 程序
http://bbs.linuxpk.com/thread-35487-1-1.html
开
oss.linuxpk.com 源 2008 年第 9 期 125
封底