Professional Documents
Culture Documents
卷首语
谁是敌人? 微软选择开源软件
互联网上流传着这么一段话:“微软说要做操作系统,苹果倒下了;微软说要
做互联网,网景倒下了;微软说要做开发工具,Borland 倒下了;微软说要垄断
IT,微软倒下了。”
从这么一段话中,我们不难看出,曾经,苹果、网景、Borland 都是微软不同
时期不同业务层面的敌人,但是命运都是一样:被微软战胜或者征服了。
今 年 五 月 , 微 软 公 司 首 席 软 件 设 计 师 雷 · 奥 兹 在 纽 约 举 行 的 Sanford C.
Bernstein 战略决策会议上发表演讲时表示,尽管谷歌公司是其特别强大的竞争对
手,但开放源代码对微软公司的商业模式却更具有潜在的杀伤力。
微软的重视来自于开源软件的发展。 10 月中旬,万众期待的开源办公套件
OpenOffice.org 3.0.0 版本正式发布,在发布当日,由于下载量过大,导致服
务器当机。10 月下旬,备受欢迎的 Linux 桌面发行版 Ubuntu 8.10 如期发布,在
兼容性、易用性上取得显著提高。而最近炒得沸沸扬扬的番茄花园事件、微软“黑屏
开
oss.linuxpk.com 源 2008 年第 11 期 2
卷首语
”事件,国内舆论普遍进行了关注,并且权威媒体 CCTV 首次两度将视角瞄准了开源
软件。
这是一股势头,既包括了公众的选择,也涵盖了自身的超越,来自开源世界的
这些变化不得不让微软开始操心起来。据一业内人士透露,微软的 Office 业务在微
软的总收入中占据了 1/3 的显要位置,从中我们就不难理解鲍尔默为什么会有如此
的言论。OpenOffice 经过数年的发展,在兼容性和稳定性上取得了长足进步,尤
其最近两年,关于文档格式的问题也得到了各界的广泛关注。各大标准组织、
Office 厂商(包括微软)都在积极的为文档格式的标准、互操作的兼容性进行着各
种尝试和努力,OpenOffice 得到更大范围的普及、更多人群的应用是顺理成章的
事情。
但 OpenOffice 的发展已经让微软达到寝食难安的程度了吗?需要将其重要性
凌驾于 Google、甚至其他开源项目之上了吗?我觉得我们有必要回顾一下历史:
1999 年,Sun 收购了一家德国公司 StarDivision,这是一家研发了办公套件
StarOffice 的公司, 2000 年 7 月, StarOffice 办公套件通过两种授权协议
(LGP 与 Sun Industry Standards Source License, SISSL)公开释放,
目的是通过提供低价、优质、开源的特性,打破 Microsoft Office 的市场垄断。
随后不久,Sun 开始在美国司法部和欧盟分别状告 Microsoft Office 垄断与
Java 虚拟化不兼容(OpenOffice 是基于 Java 套件),当时的微软官司缠身,为
了对付这些接二连三的诉讼,微软决定与 Sun 达成和解,时任 Sun CEO 的 Scott
Mcnealy 与 Bill Gates 举行了一次私人会谈(也可能是吃了次饭),会面后微软
决定一次性给 Sun 16 亿美金,具体条件当时并未公布,但是再此之后,Sun 停止了
对微软的诉讼。
开
oss.linuxpk.com 源 2008 年第 11 期 3
卷首语
都还远远不能让微软头疼,即使放在开源领域,OpenOffice 的使用者绝对远低于
Firefox 和 Apache,前者微软有 IE,后者微软同样有 IIS。那微软为什么还如此
惧 怕 OpenOffice 呢 , 我 认 为 还 是 怕 有 人 拿 着 OpenOffice“ 说 事 ” , 说
Microsoft Office 不开放,不开源,甚至垄断,这才是微软真正怕的东西。
无论如何,开源软件给了用户更多的一个选择,并且开源软件经过自身的发展 ,
应用上已经开始大范围的普及,并且开源软件的开发模式有别于传统的商业软件公司,
其开发人员不依赖于任何一个股东,并且积聚了更多人的智慧与力量,微软将开源软
件作为头号敌人是有理论依据的。同时,开放源代码也促使了微软对其产品进行修改,
提高与开源软件的互操作性,这一方面使得微软更加强大,另一方面也加大了开源软
件的普及应用,至少到那时,将没人拿微软垄断“说事”了。
开
oss.linuxpk.com 源 2008 年第 11 期 4
主办:Linux 宝库
网址:www.linuxpk.com
官方下载地址:oss.linuxpk.com
主席:陆首群
专家委员会(按姓氏拼音为序)
陈怀临 宫敏 毛德操 倪光南 许洪波 袁萌
顾问委员会(按姓氏拼音为序)
白剑波 曹冬 陈绪 贾栋 李科研 毛文波
主编:陈杰
副主编:陈伟
排版:邹洋
封面设计:张亚运
编辑部:高延斌 姚欣宇 顾宏军
校对:戴彬 沈佩琪 王文龙 李彦荣 赵龙
声 明 :杂志部分内容来自开源社区及互联网,目的是加强开源文
化交流和开源应用传播,如存在版权问题,敬请联系,我们将在第一
时间进行处理。
致谢:本电子杂志由 OpenOffice 制作,并直接导出 PDF
文档,在此表示感谢 。
投稿信箱:opensource@linuxpk.com
目录
内容目录
卷首语
谁是敌人? 微软选择开源软件...............................................................................................2
产业聚集
“PHP 语言——Web 2.0 开发的利器”讲座成功举办...........................................................8
英特尔内核团队获中日韩论坛“特殊贡献"大奖...................................................................9
Linuxpk.com 开通开源 SNS 社区..............................................................................................9
Facebook 应对外界指责 公开软件源代码............................................................................10
红帽 CEO:经济危机加速开源发展.........................................................................................10
第三届 Linux 内核开发者大会在京召开................................................................................11
凝聚全球力量 绽放开源梦想.................................................................................................12
“开源技术在中国”沙龙成功举办.......................................................................................13
金融危机 开源软件行业迎来春天.......................................................................................14
Gnome 峰会第一次到中国......................................................................................................14
Linux 基金会:Linux 核心价值 14 亿美元...............................................................................15
Intel:Linux 将统治 Netbook 和 MID 市场............................................................................16
“屏”黑了 我们还能选择 Linux——《东方时空》直击微软“黑屏”计划..................17
专家谈“微软黑屏”事件:国人被微软“劫持”...............................................................27
Sun 开源和微软开源的不同 ..................................................................................................28
开源通讯
红旗 2000 中标 2008 年度电子信息产业发展基金................................................................29
中标软件二次进藏 .................................................................................................................29
2008 云计算、可信计算 国际研讨会在三峡顺利召开 ......................................................29
汕头大学 Linux 之夜 红旗 Linux 抢眼亮相 ........................................................................30
2008 网络文化节成功举办 ....................................................................................................30
Novell 宣布广泛支持 VMware Ready 虚拟应用 .................................................................30
红旗软件援非培训在贵州落下帷幕 .....................................................................................30
Intel 携 Moblin 理念北交大授课 ...........................................................................................31
神舟软件为航空信息化安全建设保驾护航 .........................................................................31
Wyse 和 Novell 联合发布首个企业级 Linux 瘦客户端 .......................................................31
恩信加盟合作伙伴认证查询系统开通 .................................................................................32
开源社区
Ubuntu 8.10 (Intrepid Ibex) 正式版发布.................................................................................33
OpenOffice.org 3.0.0 中文正式版发布....................................................................................34
openSUSE 11.1 Beta 3 发布 ...................................................................................................35
Linux 终于迎来了“同等”的 Flash 播放器..........................................................................36
Apache HTTP Server 2.2.10 发布............................................................................................36
开
oss.linuxpk.com 2008 年第 11 期 6
源
目录
Magic Linux 2.1 RC3 发布.......................................................................................................37
Mandriva Linux 2009 正式版发布...........................................................................................38
系统比拼 Linux 系统究竟比 Vista 好在哪里.........................................................................39
Intel 开源技术中心:1,2,3,4,5,6,Go!....................................................................41
Vista 与 Ubuntu 8.10 的基准测试比较....................................................................................42
Mandriva 2009,我看到希望和勇气......................................................................................44
“我们一直在为内核贡献代码!” .....................................................................................46
知识学堂
Linux 内核中 Kprobes 调试技术的实现.................................................................................50
Slackware Linux 与创始人 Patrick Volkerding........................................................................64
经验技巧
Linux 一句话精彩问答 ..........................................................................................................70
虚拟机应用入门——初识 VirtualBox....................................................................................75
rhythmbox——享受听觉盛宴.................................................................................................87
mysqldump 的几个主要选项探究...........................................................................................91
浅谈 Linux 操作系统的安全设置............................................................................................95
Debian 镜像巧实现..................................................................................................................98
SSH2 让登陆更安全.................................................................................................................99
给 Linux 系统带上 Windows 面纱.........................................................................................102
穿过 MSProxy 上网也不难....................................................................................................105
企业应用
dbcached──分布式 key-value 数据库内存缓存系统...........................................................108
Linux 内核性能评测...............................................................................................................112
Wine Server 在兼容内核的应用............................................................................................119
嵌入式
Linux 武装新型滑翔机..........................................................................................................126
ARM 系统启动代码的——分析和开发...............................................................................130
布道开源
开源"圣经":大教堂和市集....................................................................................................138
编读往来
Linuxpk.com 十月十大热门帖 ............................................................................................155
开
oss.linuxpk.com 2008 年第 11 期 7
源
产业聚焦
PHP 语言做为当今互联网最流行的开发语言,
被全世界超过 2000 万的网站使用着, PHP 语言
作 为 成 熟 的 开 源 体 系 — — LAMP ( Linux 、
Apache 、 MySQL 、 PHP )的重要一员,以其
简单性、开放性、低成本、安全性和适用性等特
点,正受到越来越多的 Web 程序员的青睐。本期 讲座主要内容包括:
讲师陈龙是康盛创想(北京)科技有限公司
● PHP 语言的特点及应用领域
PHPChina 事业部技术经理,通过本次的讲座,
使大家对 PHP 语言有一个基本的了解并可以自己 ● PHP 基本语法简介
动手编写简单的小程序。 ● PHP 语言应用实例:文件管理系统
来自 PHPChina 的李明也在此次讲座中对 ● PHP 语言学习资源
大家的择业、就业等问题进行了指导。最后,由
下期讲座将在 11 月下旬举行,具体情况将
Intel 开源经理和本杂志顾问陈绪博士抽出了
在 bbs.linuxpk.com 进行通知,希望大家密切
本次讲座的幸运观众,获得了由机械工业出版社
关注并踊跃参与。
提供的《零基础学 PHP》和最新的《代码之美》。
附 : 本 期 讲 座 资 料 下 载 地 址 :
http://bbs.linuxpk.com/thread-
35867-1-1.html
开
oss.linuxpk.com 2008 年第 11 期 8
源
产业聚焦
英特尔内核团队获中日韩
论坛“特殊贡献"大奖
核团队的"Linux 内核 2.6.27 项目"拔得头筹。
2008 年 10 月 31 日,该项目荣获第七届东北亚
开源软件(OSS)推进论坛的"特殊贡献奖(技术
类)",而备受开源业内人士尊重的中国开源软
件推荐联盟主席陆首群教授获得"特殊贡献奖
(战略类)"。作为中方 4 个"开源贡献奖"的杰
出代表,内核团队经理傅文庆 (右起第二位) 先
生在无锡第七届东北亚开源软件(OSS)推进论坛
中国开源软件竞赛活动暨开源软件创新与企业应 内核中做出的巨大贡献,获得中日韩三国官员和
用大赛”决赛中,"英特尔开源技术中心"中国内 代表的一致认可。
新 推 出 的 SNS 社 区 采 用 全 新 的 子 域 名 :
http://sns.linuxpk.com,除了传统的 SNS
近 日 , Linuxpk.com 推 出 了 自 己 的 开 源 社区功能外,增加了许多好玩的小游戏,反恐精
SNS 社区,为广大的开源爱好者提供了一个全新 英、疯狂出租车这些可玩性很强的小游戏不仅放
的 SNS 娱 乐 交 友 社 区 。 SNS 全 称 Social 松了心情,也在娱乐的同时结交到志同道合的朋
Networking Services,即社会性网络服务, 友,而中国开源校园联盟更为广大的在校大学生
专指旨在帮助人们建立社会性网络的互联网应用 们提供了一个校园交友平台。注册方式:
http://bbs.linuxpk.com/register.php
开
oss.linuxpk.com 2008 年第 11 期 9
源
产业聚焦
,注册后用户名与密码即可在 linuxpk.com 中 一站通用!
换句话说,Scribe 本身是一款服务器软件,
红帽 CEO:经济危机加速开源发展
一个非常好的机遇,开源软件可能因此得到长足
发展,Red Hat 首席执行官 Jim Whitehurst
在访问澳大利亚时发表了上述言论。
Whitehurst 表示:“坏消息是手头紧时,
人们对未来的投资会缩减。预料新软件的支出可
能放缓。”不过,他认为,基于节约开支的考虑,
Red Hat 首席执行官 Jim Whitehurst
更多企业会开始考虑选择开源软件。
持续不断的全球经济危机将给开源软件提供
开
oss.linuxpk.com
源 2008 年第 11 期 10
产业聚焦
Whitehurst 认为:“金融危机过后,相对 ”同时他指出,这是因为开源软件提供一种更好
于专属软件而言,开源软件的情况会比以前更好 的软件制作模式。
本次大会得到了英特尔开源技术中心的大力 的渴望。
开
oss.linuxpk.com
源 2008 年第 11 期 11
产业聚焦
凝聚全球力量 绽放开源梦想
本次发布会中,北京软件与信息服务业促进
中心主任兼长风开放标准平台软件联盟理事长胡
青华、OpenOffice.org 国际社区代表 Peter
Junge、中国数码集团副总经理张安然、红旗
2000 总经理胡才勇、北京大学软件与微电子学
院院长陈钟等政府领导、行业协会负责人、第 6
届 OOo 世界开源大会承办方负责人等将作为嘉宾
出席并致辞,向世界开源界展现我国政府对开源
的支持力度,展现我国的开源事业发展风貌。
通 过 本 次 新 闻 发 布 会 , 作 为
OpenOffice.org 世界开源大会承办方,红旗
2000 总 经 理 胡 才 勇 将 为 媒 体 介 绍 本 届
OpenOffice.org 世界开源大会的筹备工作和第
6 届 OpenOffice.org 世界开源大会的主要看
点,以及大会召开的成果预期等。参会嘉宾也将
就 OpenOffice.org 世界开源大会背景及在世
界 和 中 国 开 源 界 的 深 远 影 响 , 2008 年 第 6 届
OpenOffice.org 国际社区代表 Peter Junge
OpenOffice.org 世界开源大会首次选定在中
10 月 28 日,红旗中文贰仟软件技术有限公
国北京举办,对于中国开源产业将带来的影响等
司(简称:红旗 2000)将在北京新世纪日航饭
议题在新闻发布会的发言中通过媒体逐一对外介
店二层江苏厅举行隆重的新闻发布会,届时,将
绍。
通 过 媒 体 对 外 宣 布 2008 年 第 6 届
OpenOffice.org 世界开源大会将于 11 月 5 日 透过新闻发布会,红旗 2000 总经理胡才勇
盛装开幕。 表 示 将 通 过 2008 年 第 6 届 OpenOffice.org
世界开源大会的召开,以及开源技术对我国 IT
OpenOffice.org 世界开源大会自 2003 年
产业将产生的深远影响,表达红旗 2000 公司为
创办以来,经过五年的发展,已成为开源领域影
中国的软件事业,为全球的绿色 IT 付出更多努
响最大的国际盛会之一。秉承“自由 参与 奉献
开
oss.linuxpk.com
源 2008 年第 11 期 12
产业聚焦
力的必胜决心。 进行了提问,peter 表示可能由于时间的问题,
两个版本发布时间较短,Ubuntu 8.10 不能对
同时,《开源》杂志记者受邀参加了此次发
布会,并对最新的 Ubuntu 8.10 发布为何没使 OpenOffice 3.0 进行更多的稳定性测试导致
“开源技术在中国”沙龙成功举办
Sun 开源推广中心主任白剑波受邀担任《开源》杂志顾问
子学院、北京红旗中文贰仟软件技术有限公司共
同举办的主题为“奉献·创新·超越——开源技术
在中国”沙龙于 10 月 28 日北京新世纪日航饭店
二层四川厅举行。
本次沙龙邀请到北大软件与微电子学院副院
长吴中海、信息产业部软件与集成电路促进中心
(CSIP)主任助理刘龙庚,中企开源信息技术有
限公司总经理张斌、红旗 2000 总经理胡才勇、
Sun 公司大中华区开源推广中心主任白剑波、
Sun 公司中国区标准事务经理丁蔚、IBM 中国公
司 Linux 合作项目高级工程师田勇、《开源》杂
志主编陈杰等国际国内开源业界人士,以及北京
大学、北京交通大学常宏达共 10 位知名专家学
者及师生代表出席本次活动并参与讨论。
本次沙龙上,与会嘉宾就开源技术在中国的
推广、开源技术在高校的普及进行了深入探讨。
来自高校的教师为大家详细描述了中国高校开源
教师代表团访问美国期间的具体情况,并着重指
出参观访问 Sun、Intel、IBM 期间,了解到他
Sun 公司大中华区开源推广中心主任白剑波
们对开源领域的巨大贡献。
由 OpenOffice.org、北京大学软件与微电
开
oss.linuxpk.com
源 2008 年第 11 期 13
产业聚焦
会后,陈杰主编向来自 Sun 和 IBM 的朋友详 广中心主任白剑波担任《开源》杂志顾问,白剑
细介绍了 Linuxpk.com 开源社区和《开源》杂 波主任在了解情况后欣然接受了邀请,并对杂志
志的具体情况,并邀请 Sun 公司大中华区开源推 提出了一些建议和美好的祝愿 。
金融危机 开源软件行业迎来春天
了生机。财经网站创纪录的浏览量、产品热销的
保险箱制造和经营商、受热捧的“省钱学习班”
乃至忙碌的心理诊所等,都在“享受”着因金融
危机而带来的益处。
席卷全球的金融危机也波及到了 IT 行业,但
业内人士却认为,可供免费使用的开源操作系统
及开源软件将迎来春天。
经济景气时期,各大公司不吝惜花费重金购
买昂贵的操作系统和软件,但经过金融危机的洗
礼后,使用物美价廉的开源软件的企业用户无疑
会增多,因为这意味着节省一大笔开支。全球最
大的开源组织 Linux 基金会主席 Jim Zemlin
就对开源产品的前景非常乐观,并称将把握住金
融危机所带来的机遇开拓市场,“Linux 基金会
将在华尔街召开一个会议,相信会非常成功。那
些金融公司的老板会意识到,通过使用免费或低
Jim Zemlin 与本刊主编陈杰 06 年初的一张合影
价的开源产品,他们能把节省下来的钱用到刀刃
银行倒闭、股市下跌、楼市低迷……金融危机
上。”Jim Zemlin 说。事实证明在以往的经济
让众多行业陷入危机时,却也给另一些行业带来
衰退之后,IT 业总是最快复苏的行业之一。
Gnome 峰会第一次到中国
在 Gnome 2.24 发布后一个月,Gnome 峰会 社区首位受聘的全职员工,Stormy Peters 在
首次登陆亚洲,并选择在中国举办。作为 Gnome 10 月 18 日开幕的 Gnome.Asia 峰会上演讲的主
开
oss.linuxpk.com
源 2008 年第 11 期 14
产业聚焦
题是“社区建立的软件如何改变世界”。在接受 峰会首次在亚洲举行,而举办地选择在中国北京
《 开 源 》 杂 志 特 约 记 者 李 虹 专 访 时 , Stormy 航 空 航 天 大 学 。 正 如 Stormy Peters 所 言 ,
Peters 表示,开源软件在中国有很大用户群, Gnome 本 次 峰 会 的 目 标 便 是 在 亚 洲 建 立 一 个
但社区群还比较少。 Gnome 的社区,这也代表着 Gnome 正式宣布在
亚洲区发展社区。除了 Gnome 委员会本身,北京
目前,Gnome 是流行的桌面环境之一,它的
Linux 用 户 群 、 北 航 及 北 邮 学 生 、
背后有非常活跃的社区和基金会在支持,而
Gnome 基金会的资金来源包括 Sun、Redhat、 OpenSolaris 用户组都参与了这次峰会的筹办。
开
oss.linuxpk.com
源 2008 年第 11 期 15
产业聚焦
估算软件的价值的工具。这个工具的估算方式, 已经提升到 108 亿美元。此外他们还公布了一些
是通过代码行数,开发员的平均薪水,和其他方 统计资料,要重写 Fedora 中包含的 2.04 亿行
面的花费等方面来进行分析的。 代码,需要同时使用 6 万人花一年来开发。
Intel 正在寻找微软之外的软件合作伙伴,
计划在 Netbook 和 MID 设备上使用 Linux 操作
系统,因为这将比使用 Windows Vista 便宜的
多,而且节省了很多其他资源。Otellini 说:
“Vista 占用了太大的内存,而且对显卡要求很
高,价格也很昂贵。我们看好 Linux,相信它能
对 Netbook 和 MID 产生命性的影响,就像它对
手机市场的影响一样。”
与此同时,Intel 还投入了大量资金在美国
intel CEO Paul Otellinii 和日本建设 WiMax 网络,Otellini 说:“我们
最近一些时日,Netbook 和 MID(移动互联 不会变身成为网络运营商,那不在我们的能力范
网设备)日渐风靡,Intel 也很看好这一市场, 围,但是作为一种帮助数以万计的高端移动设备
不仅拥有自己的基于 Atom 处理器的生产线,而 接入互联网的方法,我们认为这种投资是值得的。
且还购买了无线网络,不过 Intel 并没有止步于
开
oss.linuxpk.com
源 2008 年第 11 期 16
产业聚焦
一、体验黑屏
记者:现在是 2008 年 10 月 20 日午夜 23 点 30 分,距微软公司对盗版使用软件的用户进行身份验
证和黑屏显示的时间还有半个小时。我们现在走进这个网吧,看看半个小时之后这里的电脑将发生什么
情况?
开
oss.linuxpk.com
源 2008 年第 11 期 17
产业聚焦
在 10 月 21 号的 0 点,网吧中的电脑并没有发现如微软所说的正版验证提示和黑屏显示。这里的网
管不愿意接受我们的采访,但还是给我们解释了这种情况出现的原因。他说,微软的验证是分批次,第
一个星期只有 5%的用户得到验证。这位网管还说,即使他所在地区的电脑是第一批被验证的,他相信自
己的电脑也不会出现黑屏,因为两年前在使用微软软件的时候,他们已经将自动更新选项选为关闭,这
样,微软用于验证和黑屏显示等的软件包就不可能进入自己的电脑,当然也就不会产生影响了。当天晚
上记者还走访了位于北京市不同地方的网吧,他们的电脑也都没有受到任何影响。
网友自制黑屏界面
今天零点左右,有人在论坛中写道“还有 2 分钟,速度,看看黑屏是什么,”“什么都没有啊”“
怎么没黑呢?我是用的盗版啊”“睡觉了。不陪微软玩了!”从今天 0 点左右网友的反应来看,大部分
网友似乎没有收到想象中的黑屏的侵扰。
微软的黑屏计划于今日凌晨实施。那么,微软的验证计划对于一些品牌机的销售有影响吗?随即记
者走访了联想、惠普、戴尔和华硕等几家品牌电脑专卖店。销售人员普遍反映,由于他们销售的电脑安
装的是正版软件,不会受太大的影响。不过,根据他们介绍,15 号微软的验证计划公布之后,有很多旧
客户都把笔记本带过来让我们重新安装系统,他们之前因为个人需要,改装了 xp 的盗版系统,同时,最
近买电脑的人都有咨询黑屏这样的问题,在他们的解释之下,一些人选择购买正版软件。显然,对于使
用正版软件的品牌机经销商来说,微软针对反盗版的验证计划并没有对他们造成影响。
二、黑屏计划会不会对电脑运行产生影响?
开
oss.linuxpk.com
源 2008 年第 11 期 18
产业聚焦
从目前的结果来看,微软的黑屏计划给电脑用户带来的影响,并没有人们原来想象的那样严重。不
过,网上关于“黑屏”二字的传播却轰轰烈烈。那么网友所说的黑屏计划到底是什么计划?会不会对我
们的电脑运行产生影响?我们的记者来到了微软公司。
林聪悟:我必须澄清,其实黑屏是网络上流传的一些字眼,准确的做法应该是桌面背景变成黑色,
原先桌面上的这些程序、文档,跟所有的东西都还是在的,也不影响所有的程序的使用,包括您使用的
这些应用程序,包括聊天的程序,游戏的程序等等,都可以正常地运作,这是没有问题的,所以造成目
前大家的一些恐慌可能是有所误解了,其实就是一个黑色背景,而且用户可以再把它改回去。
微软中国有限公司的客户端产品商业市场总监林聪悟先生,向记者演示了这个计划实施在电脑上会
显示的效果:
记者:最关键的是我在做事的时候会不会受到影响?
那么,微软方面为什么在这个时候突然向中国用户实施这样的计划呢?
有人说,微软此举并不是明智的,因为这样的做法直接得罪了最广大的微软客户。昨天,北京的一
位律师还向公安部发出举报信,指控微软“未经计算机用户同意和司法裁判就私自侵入计算机用户电脑
系统并干扰破坏的行为,是无视用户物权和法律尊严的行为,微软的行为已经成为中国最大的"黑客攻
击"行为”。他建议司法机关立即展开侦查,追究微软公司“黑屏”计划的刑事责任,并叫停“黑屏”计
划。
开
oss.linuxpk.com
源 2008 年第 11 期 19
产业聚焦
记者:对现在媒体的反映,包括有些专家,网上有一些质疑的声音,所谓的舆论压力是您想像当中
的吗?您做好了面对这些压力心理准备吗?
林聪悟:作为推出这样一个计划的步骤,我们当然会跟各个方面进行说明和沟通,我们过去也做了
很多,包括通过我们业务单位的代表,面向不同的客户,来进行说明,跟合作伙伴进行说明,让大家了
解到这次 WGA、OGA 微软增值计划的内容,目前听到的计划还是正面的,我们会持续做相关的沟通工作,
让那些不理解的人能够理解,这是什么样一个活动。
三、众说纷纭“黑屏计划”
微软方面强调,黑屏计划不会影响用户正常使用电脑,用户电脑中的资料更不会丢失。这样做的用
意仅仅是给用户一个善意的提醒,让某些在不知情状态下买了盗版软件的用户,能够通过这一方式验证
自己的软件是否为盗版。如果使用的是盗版软件,就会出现一个提示的对话框。但并不会影响电脑中其
他程序的运行。但是,对这样的说法,还是不能获得某些业内人士的认同。
方兴东,长期从事互联网的研究、分析和评论,也是第一个把博客引入中国的人,被誉为“中国信
息产业最具影响力的独立评论家”。他对微软的这个做法有什么评价呢?
方兴东:我觉得可能一个最本质的问题,微软是不是操作了用户的电脑,是不是侵犯了电脑的使用
权,我们做一个简单的比喻,家里面可能我们未经授权使用了一个物品,然后这个主人是不是就有权利
开
oss.linuxpk.com
源 2008 年第 11 期 20
产业聚焦
直接未经你的许可直接到你们家里来,我觉得这个性质是非常严重的。我们一台电脑里面有几百种,几
千种软件,每个厂商都用这种措施,那么我们觉得整个互联网和电脑都不是我们的了,你说每个软件都
有提醒功能,我们每天处理提醒就忙不过来了,所以我觉得这个先例是不应该这么做的,我觉得整个软
件业的规则就开始改变了。
然而,另外一位业内人士,却表达了不同的看法。我们在中国开源软件联盟秘书长袁萌教授的博客
上,我们的确看到一篇题为“微软中国”蒙冤记的文章。原来,袁萌教授专门在 10 月 17 日去了一趟微
软了解情况:
袁萌:我早晨很早就去了微软,然后一个产品经理上来我就问,黑屏是怎么回事,他给我解释了,
我说不行,你拿一个笔记本演示给我看,他就请了一个女士演示给我看,很耐心地一条一条地给我演示,
我才明白了,微软采取这个行动,并不是说对我们国家所有的个人的 XP 用户都有直接的控制能力,因为
我不同意,你怎么也进不来,因此就不能说微软对我们国家那些装了盗版软件的电脑有一种控制能力,,
我觉得这个理解是不对的,也就是说,我们让微软受了点委屈,冤枉了它。
不过,对于使用黑色桌面背景,袁萌认为微软的做法还是欠考虑的:
袁萌:黑字中文里面是不好听的,你搞个黄屏,搞个蓝屏也行,他非要搞个黑屏,黑屏在国外的文
化背景也不知道跟中文是不是一样。
记者:所以就他们处理的意识上面还是缺乏一些。
袁萌:各个地区民族文化的背景不同,可以用不同的办法,比如亚洲地区和美洲地区不一样,中国
人的文化里,鬼都是晚上出来,到了外国去,中午 12 点妖怪才出来,他跟中国的文化背景是不一样的。
袁萌教授说,他之所以支持微软打击盗版的行动,是因为这样的行动能够提高人们的知识产权保护
意识,促进人们更多选择正版软件,从而对整个软件行业的盗版现象得到遏制微软方面称,这也正是他
们开展此项行动的最终目的。今年 8 月,我国国家版权局和公安部、信息产业部联合展开打击网络盗版
侵权专项行动,在这场行动中,盗版微软操作系统的番茄花园站长洪磊被拘。这些行动表明,对待盗版
问题,无论是我国政府还是微软,都采取了明确而坚决的态度。在这样的环境下,对于我们普通消费者
来说,选择正版软件,已经是大势所趋。
在某家电子城,软件销售商告诉我们:微软为了配合本次打击盗版的计划,在软件的价格上似乎进
行了调整:微软本次特意推出了 199 元的学生版 Office 软件。同时,价格在 1000 元以下的版本也都
有,包括 699 元的学生版彩色包 Office 软件。330 元 windowsxp 系统家庭版和 815 元的专业版,而
价格在 3680 元的相对较高的 xp 专业版,主要是提供给企业和公司。不过尽管价格虽然有所回落,但是
相对于盗版来说,这个价位还是让不少的消费者望而却步,大多数的消费者只限于了解情况,对于是否
会买正版软件,还是持观望态度。
开
oss.linuxpk.com
源 2008 年第 11 期 21
产业聚焦
四、黑屏计划:其它操作系统的机会?
微软产品的价格一直以来为很多人所诟病,因为采取全球统一价策略,微软正版产品的价格让部分
人群认为不能接受。有人说了,我也想用正版软件,可我还是接受不了微软正版软件的价格,怎么办呢?
还有更好的解决办法吗?
小新:它这个界面是非常人性化的,这是办公的程序,这是上网的程序。。。。
小新:我觉得不是说免费的就叫自由软件。自由软件是一种自由的态度,就是我完全可以定制它,
我想要什么东西,我让它实现什么,它就给我实现什么,我通过自己的设置,我自己的操作,让它变成
一个完全属于我个人的操作系统。就像在家里装修一样,家里是一个小的环境,我想把家里弄得符合我
的个性,我在里边住得舒服,我上网是个虚拟的空间,这个是个小家,我把它做成一个类似家的感觉,
开
oss.linuxpk.com
源 2008 年第 11 期 22
产业聚焦
我也会觉得很舒服,这样生活的乐趣就会更多一些。
Linux 是开放了源代码的软件,开放源代码之后,软件就没有了版权的概念,属于全人类共享的软
件,任何人可以根据自己的爱好去改动这个软件,使之更符合自己的使用要求。当然,这需要一定的计
算机知识,因此,目前使用 Linux 的人群大多集中在计算机爱好者和大学生群体。
记者:我已经习惯了用 Windows,那我现在要转而去使用英文了,这个转变会不会很难?
小新:就好像是我习惯了左手拿勺,我现在要是右手拿勺,可能刚开始不太习惯,但是我适应了一
阵就习惯了,它的功能跟我左手拿勺没什么区别,这是一样的。
开
oss.linuxpk.com
源 2008 年第 11 期 23
产业聚焦
这是另外一个版本的 Linux 操作系统,中科红旗版。2000 年,我国中科院与信息产业部联合成立
中科红旗公司,研发 Linux 操作系统。目前,中科红旗 Linux 操作系统是占有我国市场份额最高的国产
操作系统,也是最有能力与微软操作系统进行抗衡的国产操作系统软件。
贾栋接受东方时空采访
记者:您刚看到微软“黑屏计划”新闻的时候,您当时是怎么想的?
中科红旗公司总裁贾栋:很多人问我,你是不是感觉到这是一个机会?我觉得这确实是一个机会,
但是作为一个厂家,我们只有做好我们的事情,引导消费者去体验一下,因为本身是开源的,我也希望
用户能够借这个机会,体验一下开源文化能给他带来今后工作上的方便,我只能是给盗版用户这么一个
建议,因为我也不想说要抓着机会跟人家微软竞争,一切都取决于用户怎么想,怎么做,个人用户要量
入为出,考虑自己的经济情况才能做这些事情。我们不能逼着消费者让你必须买我的,这个是不现实。
贾栋:因为我们做操作市场是提供平台的,平台提供商尽量提供一个完善的平台,把我们自己的市
场占有率增加,只有市场率增加的情况下,才会吸引那些应用软件开发商,也就是说有一些游戏软件会
好一点,像 QQ 这些,很多网友用的这些应用软件,这些开发商他会投入一部分力量来做(英文)版本的迁
移,这样的话,只有我们的平台做大,而且应用开发商看到了这个平台今后的市场,他会投入一部分,
开
oss.linuxpk.com
源 2008 年第 11 期 24
产业聚焦
这是双向的。
微软黑屏事件被媒体报道后,有人在网上评论说,微软黑屏事件,用户慌了,金山笑了。作为微软
Office 办公软件的老对手,金山公司的副总裁葛柯表示,微软黑屏事件,对于金山公司的 wps 来说,
是一个重要的发展契机。
葛柯:客观上来讲是一个机会,其实无疑提醒老百姓去购买正版软件,这个时候发现买国外产品,
依然还会有一个免费的正版的 WPS 在备份,会增加老百姓对 WPS 的认识,或者对 WPS 的使用,我想在市
场上会提高。我想这样一个契机,未来依然还会有。
葛柯:我们做了二十年,不管从技术积累、用户习惯还是技术先进性非常非常接近国外同行业的软
件产品,而且我们从 2005 年坚定不移地承诺对个人用户,就是非商业使用用户,我们是免费的。那么这
样一个选择,其实对老百姓来讲,其实是一个更容易接受的一个正版解决方案,我觉得未尝不去尝试一
下呢,与其用盗版软件有这么多的风险,倒不如用 WPS Office。
葛柯说,现在的软件业销售模式越来越倾向于先使用,然后再根据需要选择性付费的模式,而微软
目前的销售模式还停留在原来的先付费后使用的模式,这也是造成微软产品盗版盛行的一个原因。葛柯
说,如何避免盗版,金山也曾研究过很多种方法,但与微软的做法不同。
葛柯:金山本身,并不倾向于采取一些特别过激的方法,或者让用户产生困扰的方法去解决盗版问
题,我们更倾向于采取鼓励用户使用正版,通过各式各样的优惠政策,各式各样的营销方式也好,鼓励
用户使用正版。
业内人士方兴东也认为,免费其实已经是互联网的趋势,必须创新开拓出新的利润增长模式:在中
国用户电脑里面 78%的软件是共享软件,就是不需要我们花钱,也不需要我们授权的,真正像微软这样
的软件,需要厂商授权你才能使用的软件,目前只占 22%,跟几年前相比,这个数字已经大幅度提高了,
软件已经不再像微软一样去买他,
消费产品跟服务收费这个模式在发生快速的变化,而且这种变化可能就是三五年就会出现一个重大
开
oss.linuxpk.com
源 2008 年第 11 期 25
产业聚焦
转机,那个时候可能微软就会被这个趋势抛在一边了。
记者:其实它已经完全不符合我们现在比较主流的互联网的行为模式了,是不是?
方兴东:对,互联网时代的免费模式就是免费使用,然后通过服务建立商业模式,因为我们知道,
比如 IBM,SAP 等大部分软件公司已经不像微软这样了,微软已经变成互联网时代的一个恐龙。
虽然网络业内人士对微软的产品价格,销售模式有争议,网友们也对微软的反盗版措施有不满,但
是,一个不可动摇的前提是,微软是自己产品的版权所有者,他有权在法律范围内,采用各种手段维护
自己的合法权益。而这件事,也确实敲醒了很多知识产权保护意识淡薄的用户,一些此前使用盗版软件
的用户已经开始转向使用正版软件。这样的结果,无论对微软,还是国内软件厂商来说,都是一个可喜
的现象。但是在反盗版过程中,如何采取一个恰到好处,更符合实情的沟通方式,还是值得商榷的。
开
oss.linuxpk.com
源 2008 年第 11 期 26
产业聚焦
专家谈“微软黑屏”事件:国人被微软“劫持”
中国工程院院士 倪光南
2008 年 10 月 17 日 , 南 京 , “ Windows XP” 标 记 和 “ 小 心 黑 屏 ” 的 警 示 。 继 上 月 打 击 盗 版
Windows XP 后,微软又针对盗版发出“最后通牒”。据微软中国公司消息, 10 月 20 日起,该公司将
每隔 1 个小时对未通过正版验证的 Windows XP 被黑屏一次的手段,让正在使用 XP 的用户“知道自己
使用的是不是正版”。微软公司强调,此举“与市场份额目标无关”。市场普遍认为,这是微软维护其
正版操作系统利益的又一举措。
“中国人一定会永远告别‘黑屏’”,就“微软黑屏”事件,著名计算机专家、中国工程院院士倪
光南今天在接受采访时这样表示。
“劫持”,倪院士在谈到微软此次行为时,用了这样一个词,“微软说,我一小时只让你‘黑屏’
一次,而且只黑背景,不影响使用,这么一来,大家倒是应该感谢微软对我们手下留情、网开一面了!
但人们不禁要想,假如不是一小时而是一秒钟,不是黑了背景而是黑了使用屏幕,那这个电脑还能用吗?
假如干脆被停了机又怎么办呢?……可悲的是,一切只能听由微软摆布,用户已经掌握不了自己电脑的命
运了。”“有人会说,向微软买正版就行了,可是,只要你是用微软的软件,它总有操控你电脑的能力,
总要经常检测你电脑的信息,总要经常检验你软件的版本。”
“没有自主可控的软件,要保障信息安全只是空话。”倪院士有些激动地对记者说,多年以来反复
强调,像操作系统、Office 这样的基础软件,必须用自主可控的国产软件或开源软件,有人还不以为然。
开
oss.linuxpk.com
源 2008 年第 11 期 27
产业聚焦
这次被“黑屏”了,才意识到自主软件的重要性。
现为中科院计算所研究员、曾任联想集团首任总工程师的倪院士建议,根据大量用户经验,从盗版
切换到国产 Office,大多数用户都能成功。现在一天中下载免费国产 Office 的数量最高已达百万份。
Linux 的下载量也在增加。如果只上网和做文字、邮件、多媒体处理等工作,也能满足需求。使用软件
数量多的用户可以考虑作个过渡,先在电脑中装双系统——兼装 Linux 和 Windows,随着使用的过程,
逐步从 Windows 切换到 Linux。
Sun 开源和微软开源的不同
白剑波
有人问我 Sun 开源和微软开源的不同,下面是我的简单回复:
Sun 公司是个为客户提供系统的公司,这个系统的概念包括了服务器,存贮产品,基础软件产品和
服务。
Sun 公司把几乎所有软件开源以后,开发人员可以很容易地得到源代码,可以很容易地下载软件的
免费版本(社区版),这会方便他们的开发过程和部署过程,同时也促进了 Sun 的技术的更广泛的使用。
Sun 希望通过这样的方式来扩大市场占有份额,然后通过销售更多的系统来获得更多的收入。
这和微软的开源在本质上是不同的,微软抛向开源的橄榄枝,是为了增强互操作性,更好地销售其
软件产品。微软一直承认,开放源代码对微软公司的商业模式最具有杀伤力。但是开源也将是促使微软
提高其软件的互操作性和产品质量的强大动力,这也会促进微软继续前进。
开
oss.linuxpk.com
源 2008 年第 11 期 28
开源通讯
Intel 公 司 首 席 安 全 架 构 师 David
Grawrock 博士《多核对 TXT 技术的影响》
中标软件二次进藏
微软大中华区首席信息安全顾问江明灶博士
继西藏自治区拉萨市、那曲地区前四期中标 《从可信计算到端到端信任,一次工业界的对话
普华藏文办公系统培训班的成功举办、培训 大纲》
1000 多名西藏政府工作人员和教育工作者之后,
HP 公 司 系 统 安 全 实 验 室 经 理 Richard
2008 年 9 月 19 日-25 日,上海中标软件有限公
Brown《安全虚拟化》
司(简称中标软件)又相继在西藏日喀则、山南
地区开展了第五至第八期培训班,本次培训是中 EMC 公司 Burt Kaliski 博士《面向多用户
标软件继 2008 年 1 月,上海市副市长杨雄代表 租赁的云计算存储的需求与实现》
上海市政府向西藏自治区赠送了 3.2 万套、价值 得克萨斯大学徐寿怀博士《如何管理安全框
1500 万元我国自主研发的首款藏文办公软件后, 架和服务的可信赖性》
中标软件第二次大规模的进藏培训活动,接下来
复旦大学软件学院院长臧斌宇教授《硬件虚
中标软件还将在阿里、昌都等地区进行中标普华
拟化技术在可信云计算中的作用》
藏文办公软件的培训和推广活动。
开
oss.linuxpk.com
源 2008 年第 11 期 29
开源通讯
武汉大学计算机学院张焕国教授《中国可信 2008 网络文化节成功举办
计算研究状况及展望》
10 月 21 日,在北京信息科技大学的“2008
瑞达公司董事长刘毅博士《瑞达可信计算机
网络文化节”的开幕式中,“英特尔开源技术中
的研究与发展》
心”北京研发总监杨继国博士以“英特尔移动
来自美国的 Intel 首席安全架构师 David Linux Moblin 社区”为题做了精彩主题演讲,
Grawrock 博士做了精彩演讲并出席了小组讨论 并为与会学生抽取奖品,获得阵阵掌声。10 月
(panel discussion)。“英特尔开源技术 29 日,在“网络文化节”的系列讲座中,“英特
中心”上海虚拟化团队的资深工程师王庆先生在 尔开源技术中心”中国 Linux 和开源战略经理陈
虚拟化展台上展示了 TXT 和 TBOOT 技术,引起 绪博士做了“Moblin 移动 Linux 开源社区及其
与会专家的高度兴趣。 UI 框架 clutter”的讲座,为在校学生普及和宣
传 Linux 开源技术社区。
汕头大学 Linux 之夜
红旗 Linux 抢眼亮相 Novell 宣布广泛支持 VMware
开
oss.linuxpk.com
源 2008 年第 11 期 30
开源通讯
软件技术有限公司(简称红旗软件)教育学院高 神舟软件为航空信息化
级讲师淮晋阳老师抵达贵州,对非洲国家的 35
安全建设保驾护航
名官员和技术人员进行了为期两天的红旗 Linux
培训。他们分别来自埃及、阿尔及利亚、埃塞俄 近日,由航空 621 所发起,神舟软件承办的
比亚、津巴布韦、马达加斯加、纳米比亚、南非 “航空信息化建设研讨会”在北京香青园商务会
等 21 个国家。学习 Linux,引进 Linux 文化和 馆召开。与会嘉宾包括来自航空 303 所、航空
技术,提高本国的信息安全,摆脱本国软件被垄 304 所、航空 232 厂、航空 625 所、航空 628
断的局面,是各个国家的代表此次抵达中国的目 所、航空 503 厂、中航技、航空规划设计院、航
的。 空 634 所等多家厂所的信息化主管领导,对于此
次会议的召开与会代表表达了高度认可与赞同。
据悉,此次培训由贵州省对外科技交流中心
会上,代表们介绍了各自单位的信息化建设现状,
承办。中科红旗作为国产操作的代表,成立于
并重点讨论了在加速信息化建设的同时,如何全
2000 年 6 月 , 一 直 致 力 于 为 用 户 开 发 和 推 广
面做好信息安全保密工作。
Linux 的操作系统及多平台应用软件,并日益壮
大,拥有了立体的销售渠道和遍布全国的服务网 会议中,率先通过分级保护测评并得到测评
络,以及教育培训体系。此次培训更是配合国家 单位高度认可的航空 304 所,重点介绍了其在信
政策,承担着国产操作系统走出国门,支援非洲 息系统安全保密方面的经验。航空 304 所应用的
信息化的重任。 神舟 OA 办公自动化系统该系统完全基于国产神舟
OSCAR 数据库,做到了自底向上都采用拥有涉密
资质的国产软件系统,保证了其信息系统从采购、
Intel 携 Moblin 理念 建设到后期维护、服务都不会存在安全隐患,在
系统方面彻底杜绝了泄密问题;基于安全数据库
北交大授课
的 OA 系统在分级保护测评中得到高度认可与好
10 月 22 日,受北京交通大学软件学院吴玥 评,提高了测评综合分数。
老师之约,同时作为研究生的课外教育课程,“
英特尔开源技术中心”中国 Linux 和开源战略经
理 陈 绪 博 士 应 邀 在 思 源 楼 109 报 告 厅 , 做 了
Wyse 和 Novell 联合发布首个
“Moblin 移动 Linux 开源社区”的讲座,为研
一的学生普及 Linux 和开源技术,讲述开源历史,
企业级 Linux 瘦客户端
引起了讲师和学生的普遍兴趣。 近日,Wyse Technology 公司和 Novell
宣 布 联 合 推 出 Wyse Enhanced SUSE Linux
Enterprise,这是为精简型计算环境而设计的,
只在 Wyse 桌面和移动瘦客户端设备上运行的下
一代 Linux 操作系统。 Wyse Enhanced SUSE
Linux Enterprise 是 Wyse 在精 简计 算方 面
开
oss.linuxpk.com
源 2008 年第 11 期 31
开源通讯
的 广 泛 经 验 与 易 于 使 用 、 灵 活 且 安 全 的 SUSE
Linux Enterprise 的 强 力 结 合 。 Wyse 恩信加盟合作伙伴认证查询系统开通
Enhanced SUSE Linux Enterprise 将 于
恩信科技开源 ERP 商务模式推广一年多以来,
2008 年第四季度预装在 Wyse 瘦客户端设备上上
得到了广大合作伙伴的响应和客户的热情支持,
市。
但是市场上也出现了极不和谐的声音,某些未经
根据 2008 IDC 报告,Linux 瘦客户端市场 恩信科技授权,也未参加恩信科技任何培训的公
将从 2008 年的近百万个单元增加到 2011 年的 司为了牟取利益盗用恩信科技合作伙伴的名义向
180 万 个 单 元 。 2011 年 在 瘦 客 户 端 设 备 市 场 客户销售或变相销售恩信科技开源 ERP 软件,并
Linux 将占所有操作系统出货量的 30.5%。基于 且也没有任何能力为客户提供实施、培训、二次
Linux 的瘦客户端的市场渗透率不断提高是由于 开发等服务工作,在市场上造成恶劣影响。因此
其具有降低拥有总成本的能力,同时能帮助企业 恩信科技推出了加盟合作伙伴认证查询服务,任
获得更加安全和灵活的计算环境。 何客户有权要求服务商出示恩信科技的相关认证
文件,同时可以根据认证文件的编号在本系统中
进行查询,系统会帮助客户识别服务商的真实身
份。
开
oss.linuxpk.com
源 2008 年第 11 期 32
开源社区
● 能够对私人目录进行加密处理,使个人
的数据更加安全。
历 经 半 年 的 开 发 , Ubuntu 8.10── 代 号
“Intrepid Ibex”(无畏的北部高地山羊)─ ● 客户会话支持。
─终于在今天正式发布了。与往次发布一样,本 ● Network Manager 0.7,含 3G 支持
次发布也包括桌面版本和服务器版本,分别面向
● "Last successful boot" 恢 复 菜
桌面终端用户和服务器终端用户。同时,包括
单。
Kubuntu 、 Xubuntu 、 Edubuntu 、
UbuntuStudio 在内的衍生版也一同发布了。 ● DKMS 允许你自动重新编译内核驱动。
● Samba 3.2。
二、如何升级
作为现有的 Ubuntu 用户,可以不用下载新的 8.10 ISO 映像而直接升级到新版本。具体步骤是:
点击“System/Administration/Software Sources”菜单;
开
oss.linuxpk.com 2008 年第 11 期 33
源
开源社区
releases”;
启动“System/Administration/Update Manager ”;
点击“Check”按钮要选择新的更新;
如果有更新需要安装,则使用“Install Updates”按钮来安装;完成后,再次点击“Check”。
开
oss.linuxpk.com 2008 年第 11 期 34
源
开源社区
● Writer 支持同时显示多个页面 ● 新的启动中心
KDE 版 本 下 载 地 址 : http://download.opensuse.org/distribution/11.1-
Beta3/iso/openSUSE-11.1-Beta3-KDE4-LiveCD-i386.iso
开
oss.linuxpk.com 2008 年第 11 期 35
源
开源社区
Linux 终于迎来了“同等”的
Flash 播放器
在过去 Linux 在这个领域只能算是二流的 Flash 可以在移动设备上和桌面市场一样被广泛
成 员 , 得 不 到 Flash 播 放 器 的 青 睐 , 2007 年 使用。
Linux 用户就是在其他主流平台使用 Flash 9
在 Microsoft Silverlight 发 布 不 久 ,
长达 6 个月之后,才迎来 Linux 版本。
mono 小组就开始了 linux 下的 Silverlight
如 今 , 当 微 软 决 定 将 Linux 平 台 实现,名称叫 Moonlight,代码 olive,也就
Silverlight 技 术 推 迟 发 布 之 后 , Adobe 给 是在短短的一个月左右的时间,Moonlight 已
Linux 平 台 带 来 了 “ 平 等 ” 的 播 放 器 , 并 称 经可以运行。
“Flash 播放器已经占据了互联网桌面市场 98% GNOME 的 创 始 人 Miguel de Icaza 称 ,
的 份 额 ” 。 同 时 , “ 80% 的 在 线 视 频 均 采 用 Flash 还不能在免费和开源软件社区大出风头,
Adobe 的 Flash 技 术” ,而 且在 9 个 月之 后, 作为一个非盈利的组织,肯定担心 Abobe 在多媒
Flash9 将占据互联网桌面市场 90%的份额。 体获得太多的控制权。他们已经开发了 Flash 的
Flash Player10 是 配 合 Adobe 替代品 Gnash,只使用免费授权的软件和编解码
Creative Suite(CS)4 发布的客户端软件, 器。
提供了对 Photoshop 和 Illustrator 创建矢 Flash 10 已 经 发 布 了 支 持 Linux,
量 绘 图 的 支 持 , 并 支 持 2D 和 3D 多 种 特 效 。 Windows, 和 Macintosh 平 台 的 版 本 , 支 持
Adobe 反 复 强 调 他 的 “ Open Screen Solaris 的版本将在年底发布。同时 Flash10
Project”,在今年 5 月份他就提出这个计划, 还支持 Adobe AIR。
称 他 们 将 免 费 开 放 的 文 件 格 式 和 API , 使 得
开
oss.linuxpk.com 2008 年第 11 期 36
源
开源社区
● 更新 magiconf,添加 mccModules
● 更新 kdeutils,移除无用 patch.
● 更新 wine 到 1.1.4,输入中文问题仍
然存在。
● 更 新 xorg-x11-driver , 配 合
xorg-x11-server 的更新(注意,仅在
开
oss.linuxpk.com 2008 年第 11 期 37
源
开源社区
本次发布提供 DVD 和 CD 版本,另包括使用兼容内核、使用 glibc 2.7、及 使用 Xfce 4 等三
个衍生版本。详细说明及已知 bug 和问题,请见 Magic Linux 2.1 RC3 发布公告。
DVD:http://apt.magiclinux.org/iso/MagicLinux-2.1.rc3.dvd-1.iso
CD:http://apt.magiclinux.org/iso/MagicLinux-2.1.rc3.cd-1.iso
● 改进的控制中心
● 重新设计的安装器
Mandriva Linux ( 原 先 的
Mandrakelinux)创建于 1998 年,其宗旨是让 ● 更快的启动速度
Linux 对 所 有 人 都 更 易 于 使 用 。 Mandriva ● 支持更多的网络摄像头
Linux 是 一 个 使 用 RPM(Red Hat Package
● 增 强 的 DKMS(Dynamic Kernel
Manager)软件包的管理器系统。在经过两个 RC
Module Support)管理器
版之后,今天 Mandriva Linux 2009 正式版
发布了,该版本包含了三个桌面:GNOME 2.24 ● Live Upgrade(像 Ubuntu 的更新工
、KDE 4.1.2 和 lXDE。在这个版本中,还是有 具一样)
不少变化的,首先,以前长期存在的 kernel- ● 还有在美工方面的改进
下载:
ftp://ftp.u-
strasbg.fr/pub/linux/distributions/Mandriva/official/iso/2009.0/
开
oss.linuxpk.com 2008 年第 11 期 38
源
开源社区
一、硬件要求
Linux 并不需要太多的存储空间和强劲的硬件内核,Vista 却要求很高:需要“现代”处理器(最
不济也要奔腾 4)和 512M 的 RAM(这里指内存),甚至推荐 1G 的 RAM。安装 Vista 机子怎么也得有 60G
的硬盘和 64M 的显卡。
开
oss.linuxpk.com 2008 年第 11 期 39
源
开源社区
相比较而言,一些版本的 Linux 甚至可以运行在 64M 内存和 486 处理器的机子上,而且这样的
Linux 也有图形用户界面。通常的 Linux 版本也只占 1.5G 的系统盘。
二、安全性
Linux 机几乎不需要防病毒软件或应用,Vista 却必不可少。通常来说,之所以 Linux 更安全是因
为大多数病毒制造者将攻击对象定位为 Windows。
三、没有限制
Linux 没有严格规定系统内的内容如何使用,而 Vista 约束很多。
五、越来越多的 Linux 应用
Linux 应用的增加已经使我们可以远离 Windows 这个繁冗的操作系统。
开
oss.linuxpk.com 2008 年第 11 期 40
源
开源社区
Intel 开源技术中心:1,2,3,4,5,6,Go!
袁萌
10 月 27 日下午,在友人联络安排下,我去 Intel 开源技术
中心(北京分部)拜访陈绪博士(策略总监),有感。
大家知道,现今 PC 时代的光辉已经黯淡了。“上网本”
(”Netbook”),就像一颗明星,闪烁在夜空,尤其是基于
Ubuntu 的各类上网本。上网本体积不大不小,非常轻巧,而且便
于携带。近期,HP、Dell 和 Lenovo 等 PC 巨头在上网本方面都
会有自己的(大)动作。微软必须面对这一挑战,因为,Vista
体积太大,装不进去,而且启动速度太慢,让人受不了。
上网本有一个新特点,快速启动(”Instant-On”模式),
加电之后,几秒钟就可启动完毕(出现图形界面)。Linux 快速
启动技术是两位 Intel 程序大师的最新杰作。这种技术,非常神
奇,令人神往。据说,微软 Windows 7 的启动速度就比 Vista
快多了(不是快一点儿)。
开
oss.linuxpk.com 2008 年第 11 期 41
源
开源社区
京。Intel 的这个 OTC,专门从事开源技术的基础研究和应用开发,比如:Linux 内核、各类硬件驱动
(程序)、虚拟化技术、嵌入式 Linux,等等。这个 OTC 吃定了 Intel,本身没有盈利指标。我感到很
奇怪,这个 Intel 的 OTC 在我们国内所发挥的作用,比如:凝聚开源力量,培养开源人才,(实实在在
地)推广开源技术,本来应该是我们自己来做的,为什么由 Intel 来做,而且做得很好,很到位?
这使我想起一件事情。2003 年上半年,国家(信产部)决定通过招标方式组建一个面向全国的“开
源中心”,当时,我作为扬帆开源股份公司的董事长,组织人力,用 OpenOffice.org 1.2 版本做了
126 页的标书(排版很困难),参与投标(未中)。结果呢?就是现在的 CSIP(国家软件和集成电路中
心)!CSIP 究竟做了什么工作,大家心里面都明白。于是,我在想,今后我国的 Linux 开源事务交给
Intel 办岂不更好?Linux 靠 Intel,Windows 靠微软,两只领头羊,不是很好吗?微软和 Intel 的
中国总部,我都去过,里面并不可怕(没有阴谋)。我很怀疑,所谓的“国产基础软件”是在忽悠谁?连
个通用的编译器都没有,谈何“自主软件”?软件开发依靠忽悠是不行的。把国家的钱(科研经费)当
成“盈利收入”,是可忍,孰不可忍?每说到这里,我的气就不打一处来。
开
oss.linuxpk.com 2008 年第 11 期 42
源
开源社区
Is The Real Deal(by Edward F. Moltzen,ChannelWeb 记者)一文。)
开
oss.linuxpk.com 2008 年第 11 期 43
源
开源社区
Mandriva 2009,我看到希望和勇气
热闹的大街,忙碌的人群,去了又回,我存在如无物。往事前生,浮于眼前,挥之不去,我存在如
蝶梦。真不明白,我到底是怎么的就站到了这个地方?
一切拥有过的都要打上“曾经”的烙印,得到的必将失去。生命的热情不可逆转的从身体的散发开
去,漾在无尽的虚空,荡不起半点浪花。哭的、笑的、恨的、爱的,我怎么就听不到半点的回音?
我不能回头,转身的刹那,一切拥有过的又要被打上“陌生”的烙印。孤单的影子伴随,我行走在无尽
的虚空里。恐惧在心头悄悄滋生,我已经背负太多,抛掉吧。
我必须义无反顾的向前走去,希望的星光摇曳不定,微茫中现出未知的美丽,我还不想放弃。走向
哪里?没有路,没有灯,我只能用生命的热情去点亮湿冷的火把,见证我的希望又一次的破灭,就这样
苦苦支撑。
人已老去,心开始犹豫,我还是在寻找,就这样漫无目的,就这样惶恐不已。时间带走一切,我颓
然倒地,我哭了,忧郁得像个孩子!
终 于 还 是 下 了 mandriva-linux-one-2009-KDE4- jp-zh-cdrom-i586.iso , 还 是 在
virtualbox 中体验了 Mandriva 2009,我也深深明白许多 mandriva 爱好者的失望。可是我还是要
向 Mandriva 2009 表示我最大的敬意,不为别的,就为它百折不饶的毅力,就为它改变自我的勇气!
开
oss.linuxpk.com 2008 年第 11 期 44
源
开源社区
Mandriva 活的不易,蹒跚起步,中遭大难,一度领先,继而落寞。在中国, Mandriva 再多些落
寞又有什么关系呢。何必那么高,“高处不胜寒”!Linux 不也如此吗?有人捧诸高天,有人摔之地底,
而 Linux 还是 Linux,慢慢成长。
我们现在能做的就是等待再等待。
开
oss.linuxpk.com 2008 年第 11 期 45
源
开源社区
“我们一直在为内核贡献代码!”
《开源》:首先介绍一下你们内核团队的历史,目前都有哪些成员?如何分工,分别侧重哪些方向?
开
oss.linuxpk.com 2008 年第 11 期 46
源
开源社区
傅文庆:OTC 的 Linux 内核开发团队最初成立于 2003 年,目前有 15 个工程师,工作在以下领域:
● Intel 显卡驱动程序。
● Intel 无限网卡驱动。在开发对无线网络支持的同时,我们开发的无线网络(WIFI)协议栈也被
Linux 接受成为 Linux 内核中的标准的 WIFI 协议栈。
傅文庆:我们在内核平台配置和电源管理(ACPI),内核性能优化,无线网络协议栈及驱动, PCI
子系统功能实现,Kexec/KDump,SystemTap 方面都有贡献。譬如,我们显著改善了内核休眠和唤醒
的用户体验,致力于追踪内核性能损失并及时更正,贡献了第一个开源的无线协议栈等。在开源社区方
面,我们多次代表从中国来的开发人员在国际知名内核开发会议上发表论文讲座。积极参加国内开源社
区,特别是内核开发社区,为推动社区发展贡献自己的一份力量,比如我们积极参加北京内核开发研讨
会,阿卡内核开发者大会并贡献讲座,我们的成员积极国内内核开发者聚集较多的 linuxforum,zh-
kernel 等论坛或邮件列表,积极参与讨论,为初学者解惑答疑。
开
oss.linuxpk.com 2008 年第 11 期 47
源
开源社区
现了你们的价值,也可以看做是中国开源界对您们的一种肯定,对于获奖,您们都有一些什么想法?
傅文庆:确实,OTC 的工作模式就是典型的开源软件开发的模式,虽然我们也会做些内部的开发计
划和进度的跟踪,但是我们的工程师都是以符和开源软件的开发模式进行工作的。工程师们开发的代码
都是按补丁的形式,由他们以个人的名义提交到相应的开源软件的邮件列表,通过在邮件列表上的讨论
(甚至争论),取得项目维护者(Maintainer)的赞同,并经过代码的审查(Review),修正,最终
被并入相应的代码树中。在公司内部,他们是 Intel 的员工,在开源软件的项目的开发中,他们就是一
个开发的个体,为开源社区作出他们的贡献。
《开源》:你们对于中国的开源爱好者,社区的参与者都有哪些方面的建议?
傅文庆:下面是一些我们团队对有志于内核开发者的开源爱好者的建议和心得。
邹南海:我觉得主要是要多看代码。看书要看讲操作系统原理性的书,如果是纯粹讲代码的书,还
不如直接看代码。
李少华:如果是想做内核开发者,需要扎实的基础知识,比如 C 语言,计算机体系结构等。如果觉
得这些方面的知识都很吃力,建议尽量不要过早的去看内核。要循序渐进,先熟悉掌握这些方面的知识
刚开始做 Linux 内核开发的话,kernel janitor 是个不错的开始。
赵亚奎:我来说一个我的个人体验,选定内核的一个方面的主题,多去看它的代码,去理解它怎么
工作的,同时参与社区的讨论。
黄瀛:做开源软件开发,可以从用开源软件开始。遇到问题或者不满意的部分,去看他的代码,不
开
oss.linuxpk.com 2008 年第 11 期 48
源
开源社区
要只是作为普通用户去抱怨。然后去社区反应问题,参与讨论。要虚心听取别人意见,俗话说,有人骂
比没人理要好。参与社区讨论,关键是心态要好,开始的时候,不要太在意是否会被接受。
王 振宇 :做 开源 软件 的开 发, 个人 体验 是, 开始 的时 候, 不要 定太 大的 目标 ,要 去开 发什 么
feature 啦,要去做什么大项目啦。从审阅(review)别人的工作开始,不是简单的读代码。看看是
否能看的懂,是否能提出改进意见。如果和读代码结合,会更有效率。
马凌:我这里提一点学习内核的心得。可以从点到面。比如说我在做图形方面的工作。入手的时候 ,
就从直接看到的 i915 DRM 驱动看,又看到调用到的 AGPGART 驱动上的东西。然后又看到 PCI 总线驱
动相关的东西。因为这些只是和图形驱动相关,所以看到一定深度就不看了。比如对 sysfs 方面的调用,
我只要假定这个函数调用能工作就行了。对初学者来说,深度优先的看法是比较危险的。容易陷入到死
胡同,又没有高手指点迷津。对于自己暂时不感兴趣的东西,可以大概知道是什么意思就好了。
傅文庆:关于中国的初学者比较“怕”的和开源社区共同方面,我们的心得是,对初学者确实是会
有些语言方面的障碍,譬如有时候有很多话想说,可到时候又写不出很好的句子表达,就偷懒只写两句
拉到了。有些时候邮件列表上的一些表述,对我们没有英文背景的开发者来说,也搞不清楚他们的态度
到底是怎么样的。我们的建议是:
- 对邮件列表上表述不清楚的,直接回复问对方是什么意思。不要回避。
- 还有一点很关键,做开源开发,不要本着做产品的态度去做。很多做产品的项目一直想着利用开
源,把东西做完就好了。但如果要做开源的开发者,就必须有着开放的态度。
开
oss.linuxpk.com 2008 年第 11 期 49
源
知识学堂
一、Kprobes 调试技术
Kprobes 调试技术概述
一直以来,内核开发者一直在试图寻找一种快捷高效的内核调试手段,用于内核开发之中。从 2.6
版本的 Linux 开始,一种新的内核调试技术出现了,这就是 Kprobes 技术。
利用 Kprobes 技术可以在运行的内核中动态的插入探测点,当内核运行到该探测点后可以执行用户
预定义的回调函数。当执行完用户函数后又会回到正常的内核执行流程,开始新一轮的调试工作。
开
oss.linuxpk.com 源 2008 年第 11 期 50
知识学堂
kprobe 调试方式实现的。Kprobes 还支持三种回调函数类型:第一种叫做 pre_handler,该回调函
数用于在执行被探测指令前执行。第二种叫 post_handler,该回调函数用于在执行完被探测指令后执
行。第三种叫 fault_handler,此函数用于在出现内存访问错误时进行处理。
目前 Kprobes 内核调试技术已经被很多内核开发者所采用,并使用在内核开发过程的各个阶段。
Kprobes 的开发还在不断的进行之中,目前的 SystemTap 社区负责对该调试技术的维护以及新功能的
开发,主要由 IBM,Intel,Redhat 等公司维护。
Kprobes 配置说明
使用 Kprobes 进行内核调试前,先要对被调试内核进行相关配置。以 Linux 2.6.20.3 版本
Linux 内核为例:
Kprobes 中的关键技术
Kprobes 不只是纯软件的实现方案,该技术与具体硬件紧密相连,用到了一些硬件的特性。因此
Kprobes 的实现框架分为两个部分实现:第一部分是 Kprobes 的管理,这部分是与体系结构无关的代
码。第二部分是与具体 CPU 体系结构相关的实现代码,比如准备单步执行环境等。这些代码与具体 CPU
体系结构紧密相连,因此在不同 CPU 上各有不同的实现方式。本文以下所有的讨论都是基于 Intel
IA32 CPU 架构,2.6.20.3 内核。下文讨论用于支持 Kprobes 实现的四种关键技术。
硬件异常也称为硬件中断,一般是有外围硬件设备发出中断信号引起。当外围设备发出一个中断信
号,该信号被发往中断处理器仲裁,比较有名的是 8259 中断处理芯片,目前 Intel 的 CPU 一般采用
开
oss.linuxpk.com 源 2008 年第 11 期 51
知识学堂
APIC(Advanced Programmable Interrupt Controllers)来实现。中断处理器仲裁后发往 CPU
的中断引脚,这时 CPU 会开始一次中断处理流程。
开
oss.linuxpk.com 源 2008 年第 11 期 52
知识学堂
权交回 Kprobes 控制流程。当 Kprobes 完成 pre_handler()处理后,就会利用 single-step 技术
执行被调试指令。此时,Kprobes 会利用 debug 异常,执行 post_handler()。这是 single-step
技术在 Kprobes 的主要应用。
在 LKM 技术出现以前,添加内核代码只能通过修改内核源码,然后重新编译内核再重启后才能生效 。
当 LKM 技术出现后,内核编程变的简单许多,内核开发者只需要把代码写成内核模块形式,再插入内核
就可以作为内核的一部分运行。确切来讲,LKM 技术为内核开发者提供了在内核运行过程中动态插入和
卸载内核模块的功能。LKM 技术在不用重新编译内核的情况下,可以扩展内核的功能。目前,大量的设
备驱动程序利用 LKM 技术实现。驱动开发者把驱动程序写成模块的形式,并在内核启动时自动加载入内
核,当然这也可以通过手动加载方式实现。
在 Kprobes 对探测点数据结构的操作中也是大量存在读操作而只有很少部分写操作。为了提高效率 ,
开
oss.linuxpk.com 源 2008 年第 11 期 53
知识学堂
Kprobes 的实现中也引入了 RCU 机制。当发生探测点注册或是注销时,或是在执行探测点的回调函数时,
探测点数据结构 struct kprobe 就会被 RCU 机制保护起来。根据 RCU 的原理,写者的操作是被延迟的,
而如果读者发生了阻塞,那写者的操作直到读者被唤醒后才进行,这会大大降低 RCU 的效率。因此在执
行 Kprobes 回调函数时内核的抢占以及 CPU 中断都被禁用了。对于 Kprobes 来说,用 RCU 机制实现回
调函数访问也极大的提高了 SMP 系统上多探测点探测的效率,因为可以并行的执行回调函数。但在这样
的机制下,回调函数必须被设计成可重入的函数。
Kprobes 调试技术体系结构分析
根据 Kprobes 的源码实现,从逻辑上基本可以把 Kprobes 分为 3 个部分:第一部分是注册探测点
部分,第二部分是调试处理部分,第三部分是注销探测点部分。第一部分主要功能是进行一些安全性检
查,并根据要求安装探测点等工作。第二部分是 Kprobes 实现的关键,该部分根据探测类型执行预定的
操作。这里的探测类型主要有三种:kprobe,jprobe 和 kretprobe。这部分还会完成被探测指令单
步执行等操作。第三部分是当调试者撤销探测要求时,对探测点的注销操作,主要是恢复被探测指令等
工作。
图 1: Kprobes 执行逻辑图
3.1.1 相关数据结构与函数分析
开
oss.linuxpk.com 源 2008 年第 11 期 54
知识学堂
1) struct kprobe 结构
2) struct notifier_block 结构
该 结 构 用 于 注 册 异 常 发 生 时 调 用 的 回 调 函 数 。 int (*notifier_call)(struct
notifier_block *, unsigned long, void *)成员是回调函数指针,int priority 成员用于
设置调用优先级。Kprobes 中定义的优先级为最高优先级,确保注册的回调函数被首先调用到。
3) register_kprobe()函数
4) kprobe_handler()函数
5) post_kprobe_handler ()函数
kprobe 处理流程分析
kprobe 是 Kprobes 实现体系中最底层也是最基本的一种探测方式,jprobe 和 kretprobe 探测
方式都是通过 kprobe 来实现的。kprobe 的主要处理流程如下图所示:
开
oss.linuxpk.com 源 2008 年第 11 期 55
知识学堂
图 2: Kprobe 处理流程图
1)kprobe 的注册过程
当 调 试 者 向 内 核 插 入 一 个 kprobe 模 块 时 , 首 先 会 执 行 注 册 探 测 点 操 作 。 该 操 作 主 要 由
register_kprobe()函数完成,在下文中都称该函数为注册器。注册器的参数中包含一个 struct
kprobe 结构,该结构由调试者在调试模块中创建。
开
oss.linuxpk.com 源 2008 年第 11 期 56
知识学堂
插入哈希表中。最后,注册器把被探测的指令的第一个字节替换成 int3 指令。到这里,kprobe 的注册
工作就完成了。
接 着, 开始 检查 此次 int3 异 常是 否是 由前 一次 Kprobes 处 理流 程引 发的 ,如 果是 由前 一次
Kprobes 处理流程引发,则有两种可能性。第一是该次 Kprobes 处理由于前一次回调函数执行了被探
测代码造成的,第二种可能性是由于 jprobe 造成的,这部分将在 jprobe 的实现一节中详细讨论。如
果 int3 异常不是由前一次 Kprobes 处理流程引发的,根据先前记录下来的探测点地址到哈希表中找到
已注册的 struct kprobe 结构。如果该结构中包含了 pre_handler 函数指针,则执行该预定的函数。
程序 1 prepare_singlestep()函数部分代码
01 regs->eflags |= TF_MASK;
02 regs->eflags &= ~IF_MASK;
03 regs->eip = (unsigned long)p->ainsn.insn;
开
oss.linuxpk.com 源 2008 年第 11 期 57
知识学堂
起来的原探测指令处,当异常返回时这些设置就会生效。single-step 技术已经在上文中讨论过,这里
不再赘述。执行完被探测的指令后,由于 CPU 的标志寄存器被置位,此时又会引发一次 CPU 异常,该异
常在 Linux 内核中被称为 DEBUG 异常。
最 终 , notify_die() 函 数 会 调 用 Kprobes 初 始 化 时 注 册 的 回 调 函 数
kprobe_exceptions_notify() 。 此 时 , 控 制 权 又 一 次 交 回 Kprobes 。
kprobe_exceptions_notify() 判 断 传 入 的 类 型 为 DIE_DEBUG , 这 时 会 去 调 用
post_kprobe_handler ()函数。post_kprobe_handler ()首先判断用户定义的 post_handler
回调函数是否存在,如果存在则执行之。
jprobe 的实现
相关数据结构与函数分析
1) struct jprobe 结构
kprobe_opcode_t *entry;//这是被探测函数的代理函数。
2) setjmp_pre_handler()函数
开
oss.linuxpk.com 源 2008 年第 11 期 58
知识学堂
3) longjmp_break_handler()函数
jprobe 处理流程分析
jprobe 的基本原理是利用了一个探测代理函数来接收传入参数,做相应处理后再把控制权交回被调
试函数。下图为 jprobe 的执行流程图:
图 3: jprobe 执行流程图
1)jprobe 的注册过程
开
oss.linuxpk.com 源 2008 年第 11 期 59
知识学堂
由于 jprobe 用于调试传入参数情况,用户在编写 jprobe 探测模块时与编写 kprobe 模块有所不
同。jprobe 结构定义时只要给 entry 成员赋值成调试代理函数,该函数的参数类型必须与被探测函数
完 全 相 同 。 当 一 个 jprobe 探 测 模 块 插 入 内 核 后 , jprobe 的 注 册 过 程 会 被 启 动 。 首 先 , jp-
>kp.pre_handler 会 被 设 置 成 setjmp_pre_handler , jp->kp.break_handler 被 设 置 成
longjmp_break_handler,这两个函数会在以后讨论。之后会调用 kprobe 的注册函数进行探测点的
插入。在之前的章节中已经详细分析了 kprobe 的注册过程,这里不再重复。
2)jprobe 探测点触发过程
经过以上处理,int3 中断返回时就会去执行调试代理函数而不是被探测的函数。代理函数执行完用
户定义操作后必须调用 jprobe_return()函数,目的是为了确保执行流程能回到被探测的函数中。
jprobe_return()函数利用内嵌汇编再次执行 int3 指令,此时又会发生一次 int3 CPU 异常处理。
当异常处理执行到 kprobe_handler()函数进行判断是否有 kprobe 正在运行时,发现目前有 kprobe
正 在 运 行 , 而 此 时 产 生 异 常 的 地 址 并 没 有 被 注 册 过 。 这 种 情 况 下 , struct kprobe 结 构 中 的
break_handler 函数会被调用,也就是在 jprobe 注册阶段注册的 longjmp_break_handler()函
数开始执行。该函数主要作用是把在 setjmp_pre_handler 函数中保存起来的堆栈内容以及寄存器进
行恢复,当异常返回时其环境与 jprobe 探测点异常发生时完全相同。
接着 kprobe_handler()又会准备好单步执行的环境,并单步执行被探测指令,同时产生 Debug
异常。在 kprobe 实现一节已经详细分析了 Debug 异常处理过程。当 Debug 异常返回时也就回到了
jprobe 探测指令的下一条指令的位置继续执行。
kretprobe 的实现
相关数据结构与函数分析
1) struct kretprobe 结构
开
oss.linuxpk.com 源 2008 年第 11 期 60
知识学堂
kretprobe_handler_t handler;//该成员是调试者定义的回调函数。
int maxactive;//该成员是最多支持的返回地址实例数。
int nmissed;//该成员记录有多少次该函数返回没有被回调函数处理。
struct hlist_head free_instances;
用于链接未使用的返回地址实例,在注册时初始化。
2) struct kretprobe_instance 结构
该结构表示一个返回地址实例。因为函数每次被调用的地方不同,这造成了返回地址不同,因此需
要为每一次发生的调用记录在这样一个结构里面。以下是该结构的成员:
struct hlist_node uflist;
kprobe_opcode_t *ret_addr;//该成员用于记录被探测函数正真的返回地址。
3) pre_handler_kretprobe()函数
4) trampoline_handler()函数
该函数用于执行调试者定义的回调函数以及把被探测函数的返回地址修改回原来的返回地址。
kretprobe 处理流程分析
开
oss.linuxpk.com 源 2008 年第 11 期 61
知识学堂
图 4: kretprobe 执行流程图
1) kretprobe 的注册过程
调 试 者 要 进 行 kretprobe 调 试 首 先 要 注 册 处 理 , 这 需 要 在 调 试 模 块 中 调 用
register_kretprobe() , 下 文 中 称 该 函 数 为 kretprobe 注 册 器 。 kretprobe 注 册 器 对 传 入 的
kretprobe 结构的中 kprobe.pre_handler 赋值为 pre_handler_kretprobe()函数,用于在探测
点被触发时被调用。接着,kretprobe 注册器还会初始化 kretprobe 的一些成员,比如分配返回地址
实例的空间等操作。最后,kretprobe 注册器会利用 kretprobe 内嵌的 struct kprobe 结构进行
kropbe 的注册。自此,kretprobe 注册过程就完成了。
2) kretprobe 探测点的触发过程
开
oss.linuxpk.com 源 2008 年第 11 期 62
知识学堂
kretprobe 实现的关键。当被探测函数返回时,返回到&kretprobe_trampoline 地址处开始运行。
接着,在一些保护现场的处理后,又去调用 trampoline_handler()函数。该函数的主要有两个
作用,一是根据当前的实例去运行用户定义的调试函数,也就是 kretprobe 结构中的 handler 所指向
的函数,二是把返回值设成被探测函数正真的返回地址。最后,在进行一些堆栈的处理后,被探测函数
又返回到了正常执行流程中去。
结束语
开
oss.linuxpk.com 源 2008 年第 11 期 63
知识学堂
一、计算机情结
开
oss.linuxpk.com 源 2008 年第 11 期 64
知识学堂
Patrick Volkerding 初次接触计算机是在 1973 年。当时他还是个小孩子,有次与同学一起参观
North Dakota 州立大学的计算机系。来到机房,那里存放的机器令他震惊了—许多闪着指示灯快速运
转着的“大家伙”塞满了整间屋子,并存放着成排的大型磁盘驱动器。管理员还向他们展示了如何操作
一台带有打字机的终端。这些使他一下就迷上了计算机。
但是在那时,Volkerding 没有任何途径能获得一台家用计算机,甚至都不敢想象会有这种事情。
因此,他开始对电子学产生了兴趣,因为它显得更实际。过了几年,第一批个人计算机开始陆续出现,
如 TRS-80、苹果Ⅱ和 Atari 400/800 等。Volkerding 就跑到出售这些计算机的商店里打工,但是
他仍旧买不起计算机。幸运的是,有位商店的老板允许他使用他们的机器。从此, Volkerding 开始自
学 BASIC,并时不时地为商店编写一些小演示程序,以期能够继续留在那里。
二、接触 Linux
1992 年末,Volkerding 从一位朋友那里听说了 Linux,但当时并没有立即下载试用。直到有一
天,学校的一个项目需要一个 LISP 解释器,他才突然记起有人曾提过的 Linux 上面有类似的东西。因
此,他下载了一个 SLS Linux(最早的商业 Linux 发行版之一)。
开
oss.linuxpk.com 源 2008 年第 11 期 65
知识学堂
三、项目悄然诞生
在接触了 SLS Linux 几周以后,Volkerding 发现安装后的这个操作系统有很多地方需要修改,
多到不得不列上一个长单子来进行记录。Volkerding 自己动手基本修改了单子上所列的问题,并为其
编写了一些基本的软件。他的教授询问道:“有没有办法把它原先安装盘上的程序修改一下?这样每次
安装新机器的时候就不必那么费事了。”这一语惊醒梦中人,也促成了 Slackware 项目的开始。
Volkerding 开始修改部分 SLS 的原始安装脚本及一些漏洞,并增添了新的功能,使得系统可以自动安
装共享库和内核映像等软件包。此外,他还编辑了一些描述文件,使得介绍安装的内容更加详实。更重
要的一点是,Volkerding 深入到那些软件包中,把能够找到的问题都修改了一遍。大部分软件包都能
够良好运行,但仍旧有一些需要改动。在邮件、网络和 UUCP 等应用程序中有大量不正确的文件许可现象,
使这些软件无法正常发挥应有的功能。还有一些程序可能会引起内核阻塞,但系统却没做任何说明。对
于这些,Volkerding 都到网上重新查找并整理了源代码。
四、获得认可
1993 年 5 月,Volkerding 把 4.4.1 C 语言库和 Linux 0.99pl11A 内核同 Slackware 整合起
来,使网络功能和系统稳定性方面得到了显著的改善。 Volkerding 的几个密西根州立大学(MSU)的
朋友认为它很棒,强烈要求把它放到 FTP 上。但是,当时 Volkerding 认为 SLS 很快就会推出新的版本,
说不定也会做类似的改善工作,因此迟疑了几个星期。在这期间,他不断地看到许多人在网上询问什么
时候会有一个功能较完善的 Linux 新版本推出。因此,他在网上发出了一个帖子,标题是“有人需要类
似 SLS 的 0.99pl11A 内核的操作系统吗”。不久便得到了无数个回复的帖子。
因此,在征得了密西根州立大学系统管理员的同意后,Volkerding 在大学一台十分老旧的计算机
上搭建了一个可匿名登录的 FTP 服务,并为此做了一份声明。此后,该 FTP 不断获得很多人提供的新镜
像点,还有许多使用过 Slackware 1.0 的用户在网上为它做积极的宣传。很快,FTP 存储空间的问题
也得到了解决—有人联系了 Walnut Creek CDROM 公司,为其提供了存储空间。
开
oss.linuxpk.com 源 2008 年第 11 期 66
知识学堂
Slackware 不断改进。所有这些更加激励了 Volkerding 继续做好 Slackware 项目的决心。
五、重要的贡献者
对于 Slackware Linux,除了 Patrick Volkerding 外,还有几位重要的开发人员,见图 2。
六、挑战与机遇并存
10 年的时间或许并不长。但是相对于计算机及 Linux 短暂的历史,10 年的时间可以改变很多事情。
鼎盛与辉煌是那样令人陶醉,但挫折始终是不可避免的。幸运的是,机遇总会与挑战并存。
七、版本回顾
老牌 Linux 用户都记得从前的 Slackware 1.0 是放在 24 张软盘上的,其中 13 张是精髓部分,其
余 11 张包含了 XFree86 和图形应用程序。当时使用的 Linux 内核是 0.99pl11 alpha。一切显得那
么简陋(与现在相比),但是却足以给当时的 Linux 用户带来惊喜。Slackware 1.0 的推出获得了认
可。很快,那一年的 5 个月中又有 6 个新的 Slackware 版本推出。正式的 Slackware Linux 2.0 是
1994 年 7 月面世的。用户可在稳定 Linux 内核 1.0.9 和开发内核 1.1.18 之间进行选择。它还包含了
XFree86 2.1.1。这时,Patrick Volkerding 把 Slackware 发行版带到一个商业层面,与 Morse
电信公司合作,策划将产品刻录在可启动光盘上,并随之发行印刷版文档说明书。这一年, V
开
oss.linuxpk.com 源 2008 年第 11 期 67
知识学堂
olekerding 刚满 27 岁。
八、挫折
网络泡沫的破灭影响了整个 IT 业,Slackware 的运作形式也受到了冲击。Slackware 原来的主要
发行商 Walnut Creek 公司与 BSDi 合并,之后又被 WindRiver 公司购并。2001 年,该公司称将不再
给予 Slackware 开发进行支持。
受到这个事件的影响,Volekerding 开始着手建立一个公司,以便自己处理发行工作。但是不幸的
是,受当时大环境的影响,Patrick Volkerding 面临破产,虽然可以依靠将现有产品出售给捐赠者
过活,但他还是一度出现没钱支付给合作伙伴的窘境。
九、转机
开
oss.linuxpk.com 源 2008 年第 11 期 68
知识学堂
幸运的是,事情出现了转机。Patrick Volkerding 与前 Walnut Creek 公司的创始人之一 Bob
Bruce 再度合作,成立了一个公司进行产品的销售。Slackware 通过改变商业模式获得了一笔可观的收
入。
开
oss.linuxpk.com 源 2008 年第 11 期 69
经验技巧
Linux 一句话精彩问答
——网络相关篇(1)
陈绪
《Linux 一句话精彩问答》是 Linux 初学者很好的入门文档,想必很多朋友当时都是边看该文档,边敲打
键盘,玩着 Linux 过来的。
该文档由本刊顾问陈绪主编,迄今已经收录近千个精彩问答。从本期开始将在桌面应用栏目进行连载,
希望能帮助到更多刚接触到 Linux 的朋友们。
十一、2002 永久更改 ip
编 辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文 件 , 修 改 ip , 然 后 执 行 ifdown
eth0; ifup eth0
十三、2004 手动添加默认网关
以 root 用户,执行: route add default gw 网关的 IP
想更改网关
1 vi /etc/sysconfig/network-scripts/ifcfg-eth0
开
oss.linuxpk.com 2008 年第 11 期 70
源
经验技巧
更改 GATEWAY
2 /etc/init.d/network restart
下载 QQ 插件 for gcc2.9 版:
libqq-0.0.3-ft-0.58-gcc296.so.gz
开始安装
继续安装 QQ 插件,即键入命令:
软件设置
十五、2006 查出 22 端口现在运行什么程序
开
oss.linuxpk.com 2008 年第 11 期 71
源
经验技巧
lsof -i :22
也可以查看/etc/sysconfig/network 文件,里面有指定的地址
DNS:more /etc/resolv.conf,内容指定如下:
nameserver 202.96.69.38
nameserver 202.96.64.38
#sysctl -w net.ipv4.ip_default_ttl=N
方法 2(重启后无效):
十八、2009 开启 LINUX 的 IP 转发
编辑/etc/sysctl.conf, 例如,将
net.ipv4.ip_forward = 0
变为
net.ipv4.ip_forward = 1
开
oss.linuxpk.com 2008 年第 11 期 72
源
经验技巧
二十、2011 允许|禁止 root 通过 SSH 登陆
修改 sshd_configermitRootLogin no|yes
编辑/etc/pam.d/login,去掉
方法 2:
vi /etc/securetty
添加
pts/0
pts/1
...
1.第一种需要进行拨号:
开
oss.linuxpk.com 2008 年第 11 期 73
源
经验技巧
配置完成后,以 root 用户执行 adsl-start,这样将进行 adsl 的拨号工作,正常就会一下上线,
如有什么具体问题,去看一下日志(/var/log/messages)里面告诉你什么了。
2.另外两种比较容易对付:
全 向 猫 : 只 要 将 你 的 网 卡 的 IP 设 置 成 一 个 10 网 段 的 IP , 然 后 网 关 指 到 全 向 猫 的 IP , 上
(10.0.0.2),基本上不有太大的问题
加上一句:
00 0 1 * * root rdate -s time.nist.gov
http://lwn.net/
http://www.tldp.org/
http://www.linuxquestions.org/
http://www-106.ibm.com/developerworks/linux/
国内
http://www.linuxpk.com/
http://www.fanqiang.com/
http://www.linuxsir.org/
http://www.chinaunix.net/
http://www.linuxfans.org/(deadcat)
http://www.linuxeden.com/
http://www.linuxforum.net/
http://freesoft.online.sh.cn/
http://www-900.ibm.com/developerWorks/cn/linux/index.shtml
开
oss.linuxpk.com 2008 年第 11 期 74
源
经验技巧
二十五、2016 改变 sshd 的端口
在/etc/ssh/sshd_config 中加入一行:Port 2222,/etc/init.d/sshd restart 重启守
护进程
二十七、2018 终端模式有问题
export TERM=vt100
虚拟机应用入门——初识 VirtualBox
ghosTM55
在我们学习 Linux 的过程中,如果需要对一个发行版本进行安装实验并进行使用体验,或者是工作
离不开 Windows,想在使用 Linux 的同时使用 Windows,这时该怎么办呢?使用虚拟机就成了最好的选
择。新手可以用虚拟机来一探究竟,资深用户则可以用它来进行各种带有危险性的实验。
究竟什么是虚拟机呢?虚拟技术(Virtualization)是目前最热门的技术之一,通过虚拟机软件,
开
oss.linuxpk.com 2008 年第 11 期 75
源
经验技巧
用户能够在当前操作系统下创建一台“新”的计算机,这台计算机就称为虚拟机(Virtual Machine)
。用户可以在虚拟机上对硬盘进行分区、格式化操作,然后安装使用一个或多个操作系统。虚拟机拥有
自己的硬件信息,硬盘空间,内存空间以及一切真实电脑拥有的参数。
虚拟机就好比一台新的计算机,它主要是各种危险实验的试验场所。同时虚拟机也可以让用户熟悉
尚未接触但有兴趣尝试的操作系统。在学习 Linux 的一开始,如果担心安装过程会造成硬盘重要数据的
丢失,那么利用虚拟机先进行安装以及使用体验是非常好的一个方法。
图 1:
开
oss.linuxpk.com 2008 年第 11 期 76
源
经验技巧
从图 1 中可以看到 VirtualBox 程序的主界面,左边的列表所列出的是当前用户所设置完成的虚拟
机并显示其运行状态,点选指定的虚拟机会在右边给出该虚拟机的详细设置参数。
现在开始创建我们的第一个虚拟机,大多数虚拟机的创建都会有以下四个要素,它们分别是:内存
的分配,虚拟硬盘的大小,光驱的设置以及网络的设置。
按“New”创建一个新的虚拟机:
图2
这里是欢迎信息,按“Next”进入下一步:
开
oss.linuxpk.com 2008 年第 11 期 77
源
经验技巧
图3
这里需要输入你的虚拟机名以及你的操作系统类型,根据自己的需要输入选择完成后进入下一步:
图4
接着,我们需要为新建立的虚拟机分配内存,注意,为虚拟机分配的内存最好不要超过实际内存的
3/4 大小。
开
oss.linuxpk.com 2008 年第 11 期 78
源
经验技巧
图5
在完成了虚拟机的内存设置后,就需要为虚拟机创建虚拟硬盘文件了,用户可以选择使用已创建了
的硬盘文件,这里我们选择“New...”来创建新的硬盘文件:
图6
硬盘文件主要有动态可扩展镜像文件与固态镜像文件两种,前者可以根据用户的使用情况自动扩展
硬盘文件的大小直至上限,目前较为常用。选择适合自己的硬盘文件类型后,进入下一步:
开
oss.linuxpk.com 2008 年第 11 期 79
源
经验技巧
图7
在这一步中,输入虚拟硬盘文件的文件名,并且设置其大小,然后就能完成虚拟硬盘的设置了。一
路“Next”至“Finnish”,便能完成虚拟机的创建了:
开
oss.linuxpk.com 2008 年第 11 期 80
源
经验技巧
图8
可以看到,刚刚创建的虚拟机已经出现在了虚拟机列表中,在启动新的虚拟机之前,还要对其进行
“Settings”,设置一些参数:
开
oss.linuxpk.com 2008 年第 11 期 81
源
经验技巧
图9
进入虚拟机的设置界面后,我们发现,在创建虚拟机时设置的绝大多数参数都能进行重新调整。在
这里,我们主要对 CD/DVD ROM 与 Network 选项进行设置:
开
oss.linuxpk.com 2008 年第 11 期 82
源
经验技巧
图 10
首先进行的是虚拟机的光驱设置,用户可以选择两种方式来挂载光盘,一种是直接让虚拟机读取光
驱,另一种则是挂载光盘镜像文件,在这里,笔者选择的是直接挂载从网上下载的 iso 镜像文件。
开
oss.linuxpk.com 2008 年第 11 期 83
源
经验技巧
图 11
好了,至此,虚拟机的设置已经基本完成了,赶快“Start”,让虚拟机开机,看看效果吧:
开
oss.linuxpk.com 2008 年第 11 期 84
源
经验技巧
图 12
开机后,一切就可以像在使用真实的一台计算机一样,进行各种操作。
超真实的虚拟体验之无缝连接模式!
开
oss.linuxpk.com 2008 年第 11 期 85
源
经验技巧
图 13
图 14
开
oss.linuxpk.com 2008 年第 11 期 86
源
经验技巧
之后 VirtualBox 会自动下载一个安装文件并开始在 Windows 中执行安装程序,安装完成后重启,
就能使用 Host+L 快捷键来切换无缝连接模式了,将窗口“拖出来”用。
rhythmbox——享受听觉盛宴
ghosTM55
当人们讨论到 Linux 下的音乐播放器时,绝大多数朋友会首先想到 amarok,的确,amarok 是
Linux 操作系统下最强大的播放器之一,但它是基于 QT 库的。在 GNOME 这样基于 gtk 库的桌面环境下,
也有着非常优秀的播放器,就是笔者今天要介绍的 rhythmbox。
图1
开
oss.linuxpk.com 2008 年第 11 期 87
源
经验技巧
rhythmbox 来欣赏自己所喜爱的音乐了。从左边的边栏总可以看到 rhythmbox 下的音乐库、在线商店、
网络广播、用户建立的播放列表等。
rhythmbox 界面上边栏就是常用的音乐播放控制按钮,这些都非常好理解,与普通的播放器并无多
大差异。在本文中笔者所主要展示的是如何在 rhythmbox 下导入音乐库、修改曲目信息以及 CD 曲目抓
轨。是的,很简单,现在开始。
一、导入音乐库:
图2
在 rhythmbox 中,用户可以方便地通过快捷键“Ctrl+N”来创建自己的播放列表,然后在音乐库
中选中指定任意多个想要添加至播放列表的曲目,右键单击,选择“Add to playlist ...”即可。
开
oss.linuxpk.com 2008 年第 11 期 88
源
经验技巧
二、修改曲目信息:
有时,我们从互联网上下载下来的 MP3 歌曲的曲目信息不正确或者是乱码,这个时候就需要用户自
己去修改曲目信息。右键单击任意一首曲目,选择“Properties”可以变更其曲目信息:
图3
从图 3 中可以看到,用户可以针对一首曲目的曲名、艺人、专辑、发布年份等进行任意的调整。如
果我们需要批量对多个曲目进行某一个信息进行集体调整,则可以多选指定的曲目(使用 Ctrl 或 Shift
快捷键配合),然后调整其信息。
三、CD 曲目抓轨与烧录:
当用户将一张 CD 专辑插入光驱后,rhythmbox 会自动从网络上搜索到专辑的信息(当然,如果是乱
码或者是不正确的信息,就需要用户自己去搜索专辑信息并进行修改了),提供给用户将 CD 抓轨成 MP3
格式保存在本地:
开
oss.linuxpk.com 2008 年第 11 期 89
源
经验技巧
图4
从图 4 中可以看到,状态栏会显示当前抓轨的进度,抓轨完成后,就可以在用户的音乐库文件夹中
找到对应的音乐文件了:
图5
开
oss.linuxpk.com 2008 年第 11 期 90
源
经验技巧
至此,rhythmbox 几个基础的使用特性已经介绍完成,与虚拟机的应用入门一文一样的是,笔者仍
然保留了许多该软件的功能没有介绍,期待着读者们自己去挖掘探索,Have Fun!!!
mysqldump 的几个主要选项探究
MySQL 中文网
叶金荣
本文主要探讨 mysqldump 的几种主要工作方式,并且比较一下和 mk-parralel-dump 的一些差
异,为备份方式的选择提供更多的帮助。
1、mysqldump
mysqldump 几个主要选项
1). -q
开
oss.linuxpk.com 2008 年第 11 期 91
源
经验技巧
5 Query SHOW TABLES LIKE 'yejr'
5 Query LOCK TABLES `yejr` READ /*!32311 LOCAL */
5 Query SET OPTION SQL_QUOTE_SHOW_CREATE=1
5 Query show create table `yejr`
5 Query show fields from `yejr`
5 Query show table status like 'yejr'
5 Query SELECT /*!40001 SQL_NO_CACHE */ * FROM `yejr`
5 Query UNLOCK TABLES
5 Quit
3). --lock-all-tables
这个就有点不太一样了,它请求发起一个全局的读锁,会阻止对所有表的写入操作,以此来确保数
据的一致性。备份完成后,该会话断开,会自动解锁。
081022 17:36:55 6 Connect root@localhost on
6 Query /*!40100 SET @@SQL_MODE='' */
6 Query FLUSH TABLES
6 Query FLUSH TABLES WITH READ LOCK
6 Init DB yejr
6 Query SHOW TABLES LIKE 'yejr'
6 Query SET OPTION SQL_QUOTE_SHOW_CREATE=1
6 Query show create table `yejr`
6 Query show fields from `yejr`
6 Query show table status like 'yejr'
6 Query SELECT /*!40001 SQL_NO_CACHE */ * FROM `yejr`
6 Quit
4). --master-data
开
oss.linuxpk.com 2008 年第 11 期 92
源
经验技巧
1 Query show create table `yejr`
1 Query show fields from `yejr`
1 Query show table status like 'yejr'
1 Query SELECT /*!40001 SQL_NO_CACHE */ * FROM `yejr`
1 Quit
5). --single-transaction
本例中,由于增加了选项 --master-data,因此还需要提交一个快速的全局读锁。在这里,可以
看到和上面的不同之处在于少了发起 BEGIN 来显式声明事务的开始。这里采用 START TRANSACTION
WITH CONSISTENT SNAPSHOT 来代替 BEGIN 的做法的缘故不是太了解,可以看看源代码来分析下。
开
oss.linuxpk.com 2008 年第 11 期 93
源
经验技巧
2 Query UNLOCK TABLES
2 Init DB yejr
2 Query SHOW TABLES LIKE 'yejr'
2 Query SET OPTION SQL_QUOTE_SHOW_CREATE=1
2 Query show create table `yejr`
2 Query show fields from `yejr`
2 Query show table status like 'yejr'
2 Query SELECT /*!40001 SQL_NO_CACHE */ * FROM `yejr`
2 Quit
1) mysqldump 常规使用
#导出耗时
time mysqldump -f --single-transaction -B yejr --tables yejr | gzip >
/home/databak/yejr.sql.gz
real 10m15.319s
user 6m47.946s
sys 0m38.496s
#文件大小
608M /home/databak/yejr.sql.gz
#导出期间系统负载
05:00:01 PM all 0.71 0.00 0.61 7.33 91.36
05:10:02 PM all 13.93 0.00 2.21 4.64 79.22
2) mysqldump + gzip --fast
#导出耗时
time mysqldump -f --single-transaction -B yejr --tables yejr | gzip
--fast > /home/databak/yejr_fast.sql.gz
real 9m6.248s
user 4m21.467s
sys 0m37.604s
#文件大小
开
oss.linuxpk.com 2008 年第 11 期 94
源
经验技巧
815M Oct 21 17:33 /home/databak/yejr_fast.sql.gz
#导出期间系统负载
05:20:01 PM all 11.94 0.00 2.43 5.69 79.94
05:30:01 PM all 6.46 0.00 1.57 3.95 88.02
3) mk-parallel-dump 常规使用
time ./mk-parallel-dump --database yejr --tables yejr --basedir
/home/databak/
default: 25 tables, 25 chunks, 25 successes, 0
failures, 404.93 wall-clock time, 613.25 dump time
real 6m48.763s
user 4m20.724s
sys 0m38.125s
#文件大小
819M /home/databak/default/yejr/
#导出期间系统负载
05:10:02 PM all 13.93 0.00 2.21 4.64 79.22
05:20:01 PM all 11.94 0.00 2.43 5.69 79.94
可以看到,mk-parallel-dump 尽快确实实现了并发导出,速度相对快多了,却有个致命伤:那
就是它不支持 InnoDB 的一致性备份,目前已经有人提交相关代码了,不过还没实现,期待中。
浅谈 Linux 操作系统的安全设置
如今系统安全变的越来越重要了,这里我想把我平时比较常使用的一些 linux 下的基本的安全措施
写出来和大家探讨一下,让我们的 Linux 系统变得可靠。
一、BIOS 的安全设置
这是最基本的了,也是最简单的了。一定要给你的 BIOS 设置密码,以防止通过在 BIOS 中改变启动
顺序,而可以从软盘启动。这样可以阻止别有用心的试图用特殊的启动盘启动你的系统,还可以阻止别
人进入 BIOS 改动其中的设置,使机器的硬件设置不能被别人随意改动。
二、LILO 的安全设置
开
oss.linuxpk.com 2008 年第 11 期 95
源
经验技巧
LILO 是 LInux LOader 的缩写,它是 LINUX 的启动模块。可以通过修改“/etc/lilo.conf”文
件中的内容来进行配置。在/etc/lilo.conf 文件中加如下面两个参数:restricted,password。
这三个参数可以使你的系统在启动 lilo 时就要求密码验证。
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
restricted #加入这行
password= #加入这行并设置自己的密码
image=/boot/vmlinuz-2.4.2-2
label=linux
root=/dev/hda6
read-only
第三步:更新系统,以便对“/etc/lilo.conf”文件做的修改起作用。
# /sbin/lilo -v
第四步:使用“chattr”命令使"/etc/lilo.conf"文件变为不可改变。
# chattr +i /etc/lilo.conf
这样可以在一定程度上防止对“/etc/lilo.conf”任何改变(意外或其他原因)
三、让口令更加安全
口令可以说是系统的第一道防线,目前网上的大部分对系统的攻击都是从截获口令或者猜测口令开
始的,所以我们应该选择更加安全的口令。
首先要杜绝不设口令的帐号存在。这可以通过查看/etc/passwd 文件发现。例如,存在的用户名为
test 的帐号,没有设置口令,则在/etc/passwd 文件中就有如下一行:
开
oss.linuxpk.com 2008 年第 11 期 96
源
经验技巧
test::100:9::/home/test:/bin/bash
改为
PASS_MIN_LEN 8
四、自动注销帐号的登录
在 unix 系统中 root 账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销 root 账户,
那将会带来很大的安全隐患,应该让系统会自动注销。通过修改账户中“TMOUT”参数,可以实现此功能。
TMOUT 按秒计算。编辑你的 profile 文件(vi/etc/profile),在"HISTFILESIZE="后面加入下
面这行:
TMOUT=300
改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。
开
oss.linuxpk.com 2008 年第 11 期 97
源
经验技巧
五、取消普通用户的控制台访问权限
你应该取消普通用户的控制台访问权限,比如 shutdown、reboot、halt 等命令。
# rm -f /etc/security/console.apps/
是你要注销的程序名。
六、取消并反安装所有不用的服务
取消并反安装所有不用的服务,这样你的担心就会少很多。察看“/etc/inetd.conf”文件,通过
注 释 取 消 所 有 你 不 需 要 的 服 务 ( 在 该 服 务 项 目 之 前 加 一 个 “ #” ) 。 然 后 用 “ sighup” 命 令 升 级
“inetd.conf”文件。
Debian 镜像巧实现
顾宏军
Debian 是一套完全由开源社区维护的 Linux 发行版。它可以使用 APT 方式通过网络在线安装软件,
这就需要可靠、快速的网络连接。但是,在一个局域网内,大家都分别到外部站点在线安装会浪费大量
的网络带宽,而且效率也不高。这时可考虑建立一个本地镜像,供内部人员使用。
1.安装 debmirror
在用作镜像服务器的计算机上,使用如下命令进行安装:
2.启动镜像服务器
开
oss.linuxpk.com 2008 年第 11 期 98
源
经验技巧
“-h”参数用来指定远程下载站点,本例中使用的 mirrore.geekbone.org 是国内一个主要的
Debian 镜像下载站点。
“-e”参数用来指定与远程服务器的连接方式,比如,FTP、HFTP 和 HTTP 等。
“-nosource”参数表示不需要下载软件包的源代码。
“-p”参数用于显示下载进度。
debmirror 还有很多其它参数,详细情况可查看它的手册页。
3.客户端设置
执行如下命令就可以使用镜像服务器做升级安装了:
#apt-get updates
SSH2 让登陆更安全
李汉强
许多远程登录程序,比如,telnet、rsh、rlogin 和 rexec 等都使用明文的方式来传送密码和信
息。任何连接到网上的电脑都可以通过软件监听这些程序和服务器之间的通信,轻易地获取密码和重要
信息。因此,给系统带来不少安全危机。
然而,远程登录对于网管日常的管理工作是必不可少的,SSH2 可以让登录更安全。
一、telnet 的替代方案
开
oss.linuxpk.com 2008 年第 11 期 99
源
经验技巧
SSH(Secure Shell)会在连接过程中采用主机支持的加密认证方式,使登录过程的保密性大大
提高。即使黑客中途拦截到数据包,所得到的信息也仅是一堆乱码而已。因此,使用 SSH 做远程登录,
减少了黑客入侵的可能性。建议尽量用这种方式来远程管理主机,同时,把 telnet 的端口关掉。
二、安装 SSH2
用下列命令将 SSH2 软件包解压缩,并编译、安装:
将“/usr/local/sbin”和“/usr/local/bin”加入.bash_profile 文件的路径中,这样安装
时就会把程序放在这两个目录下。
三、启动 SSH 服务
1.使用 inetd
然后用以下命令重新启动 inetd:
#/etc/rc.d/init.d/inet restart
2.使用 xinetd
service ssh
{
开
oss.linuxpk.com
源 2008 年第 11 期 100
经验技巧
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/sbin/sshd2
server_args = -i
disable = no
}
同样也需要重新启动 xinetd:
#/etc/rc.d/init.d/xinetd restart
3.inetdconvert 程序
四、使用方法
1.设定权限
编辑/etc/hosts.deny 文件,加入如下内容:
sshd2 : All : deny
2.用命令行登录
一种登录命令的格式如下:
开
oss.linuxpk.com
源 2008 年第 11 期 101
经验技巧
在通过系统的密码验证后,即可登录主机,其操作方式和 telnet 很相似。
还可以用如下命令进行登录:
sftp 账号@主机或 IP
sftp root@192.168.1.1
下载链接分别为
http://www.chiark.greenend. org.uk/~sgtatham/putty.html
http://hp.vector.co.jp/authors/VA002416/teraterm.html
http://www.zip.com.au/~roca/download.html
一、针对 HTTP 服务
通过分析 Web 服务器的类型,大致可以推测出操作系统的类型,比如, Windows 使用 IIS 来提供
HTTP 服务,而 Linux 中最常见的是 Apache。
开
oss.linuxpk.com
源 2008 年第 11 期 102
经验技巧
Hat Linux 运行的 Apache 是编译好的程序,提示信息被编译在程序里,要隐藏这些信息需要修改
Apache 的源代码,然后,重新编译安装程序,以实现替换里面的提示内容。
二、针对 FTP 服务
通过 FTP 服务,也可以推测操作系统的类型,比如, Windows 下的 FTP 服务多是 Serv-U,而
Linux 下常用 vsftpd、proftpd 和 pureftpd 等软件。
C:\\>ftp 192.168.0.1
Connected to 192.168.0.1.
220 Serv-U FTP Server v5.0 for WinSock ready...
User (192.168.0.1:(none)):
331 Password required for (none).
Password:
530 Login incorrect.
Login failed.
ftp > quit
221 Goodbye.
开
oss.linuxpk.com
源 2008 年第 11 期 103
经验技巧
显示如下:
若想使设置永久生效,可以修改/etc/sysctl.conf 配置文件,添加如下一行:
net.ipv4.ip_default_ttl = 128
开
oss.linuxpk.com
源 2008 年第 11 期 104
经验技巧
#iptables -t nat -I POSTROUTING -p tcp --dport 3389 -j MASQUERADE
五、针对 netcraft
netcraft 是一个很厉害的扫描引擎,它通过简单的 TCP 80,就可以知道所测服务器的操作系统、
Web 服务程序和服务器开机时间(Uptime)等信息。
由于通过抓包发现,netcraft 的服务器不止一台,所以需要对它所在网段进行转发欺骗处理。
六、小结
以上方法只能从某种角度上防止和阻挠黑客对系统漏洞的分析,在一定程度上可减少计算机被攻击
的可能性,但仍然是“防君子,不防小人”,仅是给大家提供一个活学活用的新思路。
穿过 MSProxy 上网也不难
苑庆国
在局域网中,MSProxy 是一种被广泛使用的代理服务器。它和客户端浏览器之间采用微软开发的
NTLM 认证方式进行通信。这导致 MSProxy 只支持与 IE 浏览器进行认证通信,其它浏览器因通信格式不
匹配而无法通过它上网。解决此问题有两种方法。一种是修改服务器端的认证方式为明文认证,但这种
方式降低了网络的安全性,而且大多数用户无权对服务器端进行修改。另一种方法是给客户端安装
NTLMAPS,这种方法简单易行,并且支持多种浏览器。下面就介绍一下在 Linux 下使用 NTLMAPS 的方
法。
开
oss.linuxpk.com
源 2008 年第 11 期 105
经验技巧
一、NTLMAPS 的原理
NTLMAPS(NTLM Authorization Proxy Server)是一种类代理服务器软件。它通过在浏览器
请求数据包的头部分增加 NTLM 认证字符串,将非 IE 浏览器伪装成 IE 浏览器,从而使得其它浏览器能
够通过 MSProxy 上网。
二、配置上网
NTLMAPS 是免费软件,目前的稳定版本为 0.98。该项目主页为 http://ntlmaps.source-
forge.net/,可以直接到 http://sourceforge.net/project/showfiles.php?
group_id=69259 下载 0.98 版的软件包。
1.安装 NTLMAPS
#gzip -d aps098.tar.gz
#tar -xvf aps098.tar
2.配置 NTLMAPS
修改配置文件 server.cfg,具体如下:
[GENERAL]
LISTEN_PORT:5865
PARENT_PROXY:Your MSProxy IP
PARENT_PROXY_PORT:8080
[NTLM_AUTH]
USER: UserName
PASSWORD: Password
开
oss.linuxpk.com
源 2008 年第 11 期 106
经验技巧
3.启动 NTLMAPS
完成上面的安装和配置后,用以下命令启动 NTLMAPS:
#./main.py &
4.修改浏览器配置
启 动 浏 览 器 , 单 击 选 单 “ 编 辑 ( Edit ) → 属 性 ( Preferences ) ” , 然 后 单 击 “ 高 级
(Advanced)”按钮,选择“代理(Proxies)”,在“HTTP:”的框中分别键入“127.0.0.1”和
“5865”(NTLMAPS 的监听端口),单击“确定(OK)”按钮后退出。
三、小结
由于 NTLMAPS 要对每一个请求数据包都进行处理,同时,还要保持服务器与客户端的稳定连接,因
此,当 NTLMAPS 同时收到针对同一个线程的多个请求包时,这些请求包必须进行排队。如果前面的请求
包出现错误,则后面的请求包不得不等待,直到错误请求因超时被关闭为止。为避免这种情况,建议用
户关闭浏览器的 HTTP 1.1 功能。
开
oss.linuxpk.com
源 2008 年第 11 期 107
企业应用
dbcached 是什么?
开
oss.linuxpk.com
源 2008 年第 11 期 108
企业应用
过“NMDB 客户端接口”保存到 QDBM 或 Berkeley DB 数据库中。
开
oss.linuxpk.com
源 2008 年第 11 期 109
企业应用
● 变更:使用 dbcached,即使因为故障转移,添加、减少 Memcached 服务器节点而破坏了
“key 信息”与对应“Memcached 服务器”的映射关系也不怕。
1)Installation (安装)
wget http://www.monkey.org/~provos/libevent-1.3e.tar.gz
tar zxvf libevent-1.3e.tar.gz
cd libevent-1.3e/
./configure --prefix=/usr
make && make install
cd ../
wget http://dbcached.googlecode.com/files/dbcached-1.0.beta2.tar.gz
tar zxvf dbcached-1.0.beta2.tar.gz
cd dbcached-1.0.beta2/
./configure --prefix=/usr/local/dbcached --with-libevent=/usr
make && make install
cd ../
● -z <端口号> nmdb 服务器的 UDP 端口号 (默认: 26010) 只支持 get 等都命令, 当使用
-z 参数时,将使用 UDP 协议代替 TCP 协议执行 set 操作,执行 get 操作时仍然使用 TCP 协议。
强烈推荐加上 -z 参数。
开
oss.linuxpk.com
源 2008 年第 11 期 110
企业应用
QDBM 和 NMDB 均为原版,可以从它们的官方网站下载最新版本。
wget http://qdbm.sourceforge.net/qdbm-1.8.77.tar.gz
tar zxvf qdbm-1.8.77.tar.gz
cd qdbm-1.8.77/
./configure --prefix=/usr
make
make install
cd ../
wget http://www.monkey.org/~provos/libevent-1.3e.tar.gz
tar zxvf libevent-1.3e.tar.gz
cd libevent-1.3e/
./configure --prefix=/usr
make && make install
cd ../
wget http://auriga.wearlab.de/~alb/nmdb/files/0.21/nmdb-0.21.tar.gz
tar zxvf nmdb-0.21.tar.gz
cd nmdb-0.21/
make BACKEND=qdbm ENABLE_TIPC=0 ENABLE_SCTP=0 install
cd ../
开
oss.linuxpk.com
源 2008 年第 11 期 111
企业应用
Linux 内核性能评测
朱兴雄
Linux 以其开放和自由的特性,日益受到人们的关注,并被广泛应用于科学计算、电子商务、并行
运算、辅助教学、大型服务器、嵌入式应用和桌面办公等不同的领域,为我国软件产业的发展带来了契
机。研究 Linux 内核的评测方法、评价工具和评测标准,颇具意义和实用价值,有助于 Linux 国产化发
展,同时也是国家电子基金项目的重要组成部分。
Linux 内核测试法
1.Linux 测试项目(LTP)
2.可扩展性测试平台(STP)
3.代码覆盖分析
代码覆盖分析在一个给定的测试运行时,分析出内核中哪些代码行被执行,提示内核的哪些部分还
没有被测试到,并指出需要再编写哪些新测试来测试内核的相应部分,以使可以得到更完备的测试。
4.内核回归测试
Linux 内核架构
开
oss.linuxpk.com
源 2008 年第 11 期 112
企业应用
(Memory Manager) 、 虚 拟 文 件 子 系 统 (Virtual File System) 、 进 程 通 信 子 系 统 (Inter-
Process Communication)和网络子系统(Network Interface),其中进程调度子系统是 Linux
操作系统的核心。这五大子系统彼此紧密协作,共同对用户程序提供服务,其系统架构如下图所示。
图 1. Linux 内核结构
核心的子系统是进程调度子系统,所有子系统依赖它来挂起/唤醒进程。当进程被唤醒后,进程调度
子系统依靠内存管理子系统来对进程的内存映射(页表)进行调整;进程间通讯子系统依靠内存管理子系
统来实现共享内存通信机制,允许多个进程共享物理内存;虚拟文件子系统依靠网络接口子系统来实现
网络文件系统(NFS),并且依靠内存管理子系统来实现 Ramdisk 设备;内存管理子系统依靠虚拟文件
子系统来实现对换。
性能评测方法学
一个性能评测实际解决方案应该包括以下三个方面:
1).被评测系统处于压力负荷下;
开
oss.linuxpk.com
源 2008 年第 11 期 113
企业应用
3).基于性价比因素考虑进行改进。
性能测试领域的自顶向下方法(Top-Down Approach),是一种把性能测试从系统角度分层次考虑
的 方 法 。 从 上 到 下 分 成 系 统 层 (System Level) 、 应 用 层 (Application Level) 、 微 结 构 层
(Micro-Architecture)三层,如图所示。
图 2. 自顶向下性能测试法
1).系统层(System Level):包括处理器、内存、硬盘和网络等;
自顶向下方法是从系统硬件层(处理器、内存、硬盘、网络等)、应用层(锁、线程、堆、API)和微
结构层来考虑性能测试标准。系统层关注的是系统硬件设备资源和外围设备;应用层关注的是操作系统
和应用程序资源;微结构层关注的是 CPU 资源、逻辑单元和内存访问等细节。
内核性能评价的主要标准和参数
1.Linux 内核性能评价的主要标准
从系统性能评价方法学的角度来考虑,Linux 内核性能评价应该遵循以下标准。
1).正确性
运行的正确性是首要的,运行结果出错的程序是没有应用价值的。
开
oss.linuxpk.com
源 2008 年第 11 期 114
企业应用
2).可靠性
Linux 内核直接控制和管理计算机系统硬件和软件资源,以方便用户充分而有效地利用计算机资源
的程序集合,如果自身都运行不可靠,稳定性差,将直接导致硬件工作不正常和软件应用的不稳定。
3).工作性能
(1) 处理能力,单位时间内能处理的信息量(吞吐率);
(2) 响应能力,包括响应时间、周转时间和排队时间等;
正确性是测试的前提,可靠性和工作性能可以通过设计相应负载对内核进行压力测试。
2.Linux 内核性能评价的参数
1).响应速度
内核完成某一任务(程序)所花费的时间,如磁盘访问、存储器访问和输入/输出等待。
2).CPU 时间
3).CPU 利用率
因此只有充分利用 CPU,才能最大程度的提高系统的效率。
Linux 内核压力测试
Linux 内核压力测试使用如下图示过程。
开
oss.linuxpk.com
源 2008 年第 11 期 115
企业应用
图 3. Linux 内核压力测试过程
Linux 内核压力测试组合了不同方面的多个测试,包括内存和网络传输负载生成器。在执行之前,
测试会根据系统中存在多少物理和虚拟内存来调整其总的内存使用情况。评价系统资源利用率所选择的
测试组合必须给系统的资源带来足够的压力,可以从 LTP 测试套件中获得测试脚本 ltpstress.sh。
测试应该充分地覆盖内核代码,以帮助支持生成的稳定性声明。可使用下面两个开放源代码 Linux
资源监控工具来评价资源利用率水平:Top 与 sar,包含于大部分 Linux 发行版本中,可用于当前的
2.4 和 2.6 内核(目前内核为 2.6.18)。
内核代码覆盖率分析
开
oss.linuxpk.com
源 2008 年第 11 期 116
企业应用
获得足够的内核覆盖率是系统压力测试的另一个职责。尽管所选的测试组合充分地利用了四种主要
资源,它也有可能只是执行了内核的一小部分,因而应该对覆盖率进行分析以确保组合可以成为一个系
统压力测试。
Linux 内核可靠性评测
系统的稳定性和可靠性通常以连续运转时间和系统的可靠运行时间来度量。
有两个特别的阶段:一个是“初始测试”阶段,另一个是“压力可靠性运转”阶段或“压力测试”
阶段。初始测试执行:
文件系统压力测试。
硬盘 I/O 测试。
内存管理压力测试。
IPC 压力测试。
调试器测试。
命令功能的验证测试。
系统调用功能的验证测试。
压力测试在使用网络与内存管理的同时,并行地运行大范围的内核组件,并在测试系统上生成高压
力负荷,压力测试执行:
NFS 压力测试。
内存管理压力测试。
文件系统压力测试。
数学 (浮点) 测试。
多线程压力测试。
硬盘 I/O 测试。
IPC 测试。
开
oss.linuxpk.com
源 2008 年第 11 期 117
企业应用
系统调用功能的验证测试。
网络压力测试。
评估
可靠性(reliability)是产品在规定的条件下和规定的时间内完成规定功能的能力,它的概率度量
称为可靠度,是评估的依据。软件可靠性(software reliability)是软件系统的固有特性之一,它
表明了一个软件系统按照用户的要求和设计的目标,执行其功能的正确程度。可靠的软件系统应该是正
确、完整、一致和健壮的。
全文总结
本文在充分分析、总结国内外有关软硬件性能评测相关理论和研究成果的基础上,结合 Linux 内核
自身的特点,针对 Linux 五大子系统,研究评测内核的方法、工具和标准,以达到评测 Linux 内核性能
的目的。
开
oss.linuxpk.com
源 2008 年第 11 期 118
企业应用
开
oss.linuxpk.com
源 2008 年第 11 期 119
企业应用
运行 Wine Server
具 体 而 言 , 这 是 在 对 应 的 Wine 进 程 初 始 化 过 程 中 , 且 在 各 相 关 DLL 连 接 之 前 ( 即 调 用
LdrInitializeThunk 函数之前)。文件 dll/ntdll/loader.c 中的函数 thread_init 代码中有如下调用:
server_init_process();
开
oss.linuxpk.com
源 2008 年第 11 期 120
企业应用
{
……
sock_init();
open_master_socket();
init_signals();
init_directories();
init_registry();
main_loop();
return 0;
}
客户端请求
NTSTATUS ret;
SERVER_START_REQ( close_handle )
req->handle = Handle;
开
oss.linuxpk.com
源 2008 年第 11 期 121
企业应用
SERVER_END_REQ;
return ret;
}
#define SERVER_START_REQ(type) \
do { \
__req.u.req.request_header.req = REQ_##type; \
__req.data_count = 0; \
(void)reply; \
do
#define SERVER_END_REQ \
while(0); \
} while(0)
这里 Wine 定义了一套“规范”的请求/回复结构,在预处理时,相应的请求/回复的数据结构就会进
行替换。在 NtClose 中,设置好了请求结构 req 后,就将其作为参数由 wine_server_call 发送给 Wine
Server,并等待 Wine Server 的回复。这些过程一般都是在 ntdll.dll.so 中相应的系统调用函数中进行的,
属于客户端的请求,而这类请求就是以下面这种格式为框架的,对于不同的请求,其相应的数据结构也
不尽相同。
SERVER_START_REQ(处理函数名)
{
...
wine_server_call(req)
...
}
SERVER_END_REQ
开
oss.linuxpk.com
源 2008 年第 11 期 122
企业应用
Wine Server 接收到请求,经过处理后, NtClose 再关闭回复 reply 中的 fd。这就模拟了一次
Windows 的系统调用过程。
Wineserver 的响应
……
while (active_users)
……
if (ret > 0)
if (pollfd[i].revents)
if (!--ret) break;
…………
开
oss.linuxpk.com
源 2008 年第 11 期 123
企业应用
……
……
};
在源代码中定义的处理函数实际上是 DECL_HANDLER(),这是一个宏:
#define DECL_HANDLER(name) \
预处理后,DECL_HANDLER()就变成上面函数指针数组中具体的一项,负责处理请求,这也就是
Wine Server 的处理过程。以 req_为前缀的处理函数在 0.9.11 版本中共有 212 个,其中很多对应于
Windows 的系统调用。而如果有必要,这些处理函数还将经过 Linux 的系统调用进行更加深入的处理。
与 Linux 兼容内核的关系
开
oss.linuxpk.com
源 2008 年第 11 期 124
企业应用
系统调用。
此外,对进程的管理(Linux 兼容内核第三部分代码将实现这部分内容)和注册表的使用还需要
Wine Server 进行处理,因此 Wine Server 还将在 Linux 兼容内核项目开发过程中的一段时期内扮演重
要的角色。而随着兼容内核项目对 Windows 系统调用地逐步完善,Wine Server 在系统调用处理方面的
工作也将逐渐减少。
开
oss.linuxpk.com
源 2008 年第 11 期 125
嵌入式
Linux 武装新型滑翔机
丁大勇
开放级高性能滑翔机
开
oss.linuxpk.com
源 2008 年第 11 期 126
嵌入式
图 1 “生存空间”驾驶员座舱
Antares 滑翔机的设计符合最新的空气动力学和飞行动力学,是当今性能最优的滑翔机之一。电池
的动力足够将 Antares 滑翔机推动到 3000 米的高空,其上升速度最快可达每秒 4 米。负责滑翔机
Linux 系统研发的航天技术专家 Ola Rr Thorsen 称,Antares 滑翔机的性能足以与燃料引擎滑翔机
相媲美,甚至更优。
此外,Antares 滑翔机还配有一个基于微控制器的模块网络,该网络可以严密监控系统的电量等级 。
网络中的众多模块与一个 Linux 中央控制系统相连,中央控制系统配备了一组 CAN(控制器区域网络)
总线。Thorsen 称,所有的模块都由一个中心计算机控制,这台计算机使用的正是 PC/104 Linux 操
作系统。
开
oss.linuxpk.com
源 2008 年第 11 期 127
嵌入式
电池电源、微控制器模块和 Linux 中央计算机还可对螺旋桨和着陆齿轮进行控制,同时还管理着
Antares 滑翔机的其他功能。驾驶员座舱中配备了一个全彩色 LCD 显示屏和一组用来输出音频信息的扬
声器。整个驾驶员座舱中包含有多项专利技术,飞行员可以轻松地对飞机进行控制。
Thorsen 称,控制 Antares 滑翔机的 Linux 系统需要的 RAM 不超过 32MB,再加上 Lippert
SBC 需要的 RAM,系统需要的总 RAM 将少于 64MB。此系统可由一个不定容量的 CF 卡启动。
开
oss.linuxpk.com
源 2008 年第 11 期 128
嵌入式
Antares 滑翔机的 Linux 环境是基于 Linux 2.4 内核的 PC/104 Linux 操作系统。GSM/GPRS
通信系统中还使用了 Mgetty 开源软件包。不仅如此,Lange Flugzeugbau 公司还专门为 CAN 总线编
写了自己的 Linux 驱动程序。
选择 Linux 的原因
开
oss.linuxpk.com
源 2008 年第 11 期 129
嵌入式
ARM 系统启动代码的——分析和开发
李浩 翟高寿 彭斌
嵌入式系统被定义为以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、
可靠性、成本、体积和功耗等严格要求的专用计算机系统。其核心部件是嵌入式处理器。随着嵌入式系
统不断深入到生活中的各个领域,嵌入式处理器得到前所未有的飞速发展。
与启动相关的硬件信息
1.ARM 处理器模式和相应的异常处理
在启动程序中需要设置各个处理器模式下的堆栈(至于什么原因后面会提到)。为了在不同的模式
开
oss.linuxpk.com
源 2008 年第 11 期 130
嵌入式
设置这些堆栈,需要用指令直接修改 CPSR 程序状态寄存器(所有模式共享一个 CPSR),切换到相应的
模式下,然后把 SP 寄存器指向相应的堆栈地址即可。在异常模式下,另外一个程序状态寄存器 GPSR 也
可以被访问,在进入异常时 GPSR 中会保存进入异常之前的 CPSR,在异常退出时,它可以用来恢复进入
异常之前的 CPSR。
2.嵌入式开发板的时钟问题
3.地址映射问题
与启动程序相关的软件知识
1.ADS1.2 中的编译器特性
开
oss.linuxpk.com
源 2008 年第 11 期 131
嵌入式
系统启动时,使用 C 语言编译出来的代码,是无法放到处理器的存储器中由 CPU 直接运行的。这是
因为使用高级语言生成的可执行镜像文件(Image File),还需要使用汇编语言编写的初始化代码才
能够运行。下面就通过例子介绍一下隐藏在 C 语言函数背后的内容。
void foo(int a)
{
int b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,w,x,y,z;
b=5;
a=b;
b=6;
c=1;
d=1;
e=1;
f=1;
g=1;
h=1;
i=1;
j=1;
k=1;
l=1;
m=1;
n=1;
o=1;
p=1;
q=1;
w=1;
x=1;
y=1;
z=1;
}
使用下面的指令将其编译成汇编语言文件:
CODE32
开
oss.linuxpk.com
源 2008 年第 11 期 132
嵌入式
AREA ||.text||, CODE, READONLY
||foo|| PROC
STMFD sp!,{r4-r11,lr}
SUB sp,sp,#0x20
MOV r1,#5
MOV r0,r1
MOV r1,#6
MOV r2,#1
STR r2,[sp,#0x1c]
MOV r2,#1
STR r2,[sp,#0x18]
MOV r2,#1
STR r2,[sp,#0x14]
MOV r2,#1
STR r2,[sp,#0x10]
MOV r2,#1
STR r2,[sp,#0xc]
MOV r2,#1
STR r2,[sp,#8]
MOV r2,#1
STR r2,[sp,#4]
MOV r2,#1
STR r2,[sp,#0]
MOV r3,#1
MOV r12,#1
MOV lr,#1
MOV r4,#1
MOV r5,#1
MOV r6,#1
开
oss.linuxpk.com
源 2008 年第 11 期 133
嵌入式
MOV r7,#1
MOV r8,#1
MOV r9,#1
MOV r10,#1
MOV r11,#1
ADD sp,sp,#0x20
LDMFD sp!,{r4-r11,pc}
ENDP
EXPORT ||foo||
KEEP
END
仅仅准备好堆和栈是不够的,还必须准备好全局数据的初始化空间,即 RW 段和 ZI 段,用以存放 C
语言中拥有初始化值的全局(或静态)变量,以及没有指定初始值的全局值。下面的例子说明了初始化
的过程。
将以下代码保存为 test2.c:
int b=5;
void foo(int a)
{
a=b;
b=6;
}
用下面的指令将其编译成汇编语言文件:
开
oss.linuxpk.com
源 2008 年第 11 期 134
嵌入式
CODE32
LDR r1,|L1.24|
LDR r0,[r1,#0] ; b
MOV r1,#6
LDR r2,|L1.24|
STR r1,[r2,#0] ; b
MOV pc,lr
|L1.24|
DCD b
ENDP
DCD 0x00000005
EXPORT ||foo||
EXPORT b
END
2.ADS1.2 中链接脚本文件的使用
大部分嵌入式系统的物理内存都是在地址空间中分散分布的,并且不同的段对所在的内存有特殊要
求,比如 RW 段要求存放在可读、写的内存中。因此,需要通过链接脚本文件 Scatter,将代码和数据
开
oss.linuxpk.com
源 2008 年第 11 期 135
嵌入式
存放到合适的物理内存中。
LOAD_ROM 0X00000000
{
EXEC_ROM 0X00000000
{
*(+RO)
}
RAM 0X20000000
{
*(+RW,+ZI)
}
}
然后,使用如下命令调用 scatter.scf,去布局执行时的内存分布:
armlink basicboot.o -scatter scatter.scf -o basicboot.axf
图1
依照 Scatter 的布局在存储设备中放置各个段,所形成的内存布局图称为运行视图;在运行之前装
开
oss.linuxpk.com
源 2008 年第 11 期 136
嵌入式
载到内存时各个段的布局称为装载视图。本例的运行视图(图 1 左边)和装载视图(图 1 右边)如图 1
所示。
启动代码包含的步骤
(1) 异常向量和处理程序的定义;
(2) 使能主振荡器;
(3) 初始化堆栈;
(4) 检查并配置相应的时钟信号;
(6) 打开串口并输出提示信息;
(7) 按照链接脚本文件布置的运行视图搬移 RW 和 ZI 段;
小结
笔者提供了一个简单可行的嵌入式启动代码的设计方案,在它的基础上可以进行一般的应用程序开
发,从而为以后嵌入式操作系统的移植做准备。但这个启动程序的设计是一个最基本的系统,具体的应
用,比如支持下载文件的命令等,还需要进一步改进和完善。
开
oss.linuxpk.com
源 2008 年第 11 期 137
布道开源
开源"圣经":大教堂和市集
Eric Raymond
HansB 翻译
一、大教堂和市集
Linux 的影响是非常巨大的。甚至在5年以前,有谁能够想象一个世界级的操作系统能够仅仅用细
细的 Internet 连接起来的散布在全球的几千个开发人员有以业余时间来创造呢?
开
oss.linuxpk.com
源 2008 年第 11 期 138
布道开源
放)令人惊奇的降临了。这里没有安静的、虔诚的大教堂的建造工作——相反, Linux 团体看起来像一
个巨大的有各种不同议程和方法的乱哄哄的集市(Linux 归档站点接受任何人的建议和作品,并聪明的
加以管理),一个一致而稳定的系统就象奇迹一般从这个集市中产生了。
这种设计风格确实能工作,并且工作得很好,这个事实确实是一个冲击。在我的研究过程中,我不
仅在单个工程中努力工作,而且试图理解为什么 Linux 世界不仅没有在一片混乱中分崩离析,反而以大
教堂建造者们不可想象的速度变得越来越强大。
到了1996年中,我想我开始理解了。我有一个极好的测试我的理论的机会,以一个自由软件计
划的形式,我有意识的是用了市集风格。我这样做了,并取得了很大的成功。
在本文的余下部分,我将讲述这个计划的故事,我用它来明确一些自由软件高效开发的格言。并不
是所有这些都是从 Linux 世界中学到的,但我们将看到 Linux 世界给予了它们一个什么样的位置。如
果我是正确的,它们将使你理解是什么使 Linux 团体成为好软件的源泉,帮助你变得更加高效。
二、邮件必须得通过
1993年以前我在一个小的免费访问的名为 Chester County InterLink 的 ISP 的做技术工
作,它位于 Pennsylvania 的 West Chester。(我协助建立了 CCIL,并写了我们独特的多用户 BBS
系统——你可以 telnet 到 locke.ccil.org 来检测一下。今天它在十九条线上支持三千的用户)。
这个工作使我可以一天二十四小时通过 CCIL 的 56K 专线连在网上,实际上,它要求我怎么做!
所 以 , 我 对 Internet email 很 熟 悉 。 因 为 复 杂 的 原 因 , 很 难 在 我 家 里 的 机 器
( snark.thyrsus.com ) 和 CCIL 之 间 用 SLIP 工 作 。 最 后 我 终 于 成 功 了 , 但 我 发 现 不 得 不 时 常
telnet 到 locke 来 检 查 我 的 邮 件 , 这 真 是 太 烦 了 。 我 所 需 要 的 是 我 的 邮 件 发 送 到 snark, 这 样
biff(1)会在它到达时通知我。
开
oss.linuxpk.com
源 2008 年第 11 期 139
布道开源
事)。但是没有一个现存的 POP 客户知道怎样做!于是这就给我们上了第一课:
1. 每个好的软件工作都开始于搔到了开发者本人的痒处。
也许这应该是显而易见的(“需要是发明之母”长久以来就被证明是正确的),但是软件开发人员
常常把他们的精力放在它们既不需要也不喜欢的程序,但在 Linux 世界中却不是这样——这解释了为什
么从 Linux 团体中产生的软件质量都如此之高。
2. 好程序员知道该写什么,伟大的程序员知道该重写(和重用)什么。
我并没有声称自己是一个伟大的程序员,可是我试着效仿他们。伟大程序员的一个重要特点是建设
性的懒惰。他们知道你是因为成绩而不是努力得到奖赏,而且从一个好的实际的解决方案开始总是要比
从头干起容易。
这也适合我。加上我先前发现的,第二次寻找找到了 9 个候选者——fetchPOP,PopTart,get-
mail,gwpop,pimp,pop-perl,popc,popmail 和 upop)。我首先选定的是“fetchpop”。
我加入了头标重写功能,并且做了一些被作者加入他的 1.9 版中的改进。
继续呢还是换一个? 如果换一个的话,作为得到一个更好开发基础的代价,我就要扔掉我已经有的
那些代码。
换 一 个 的 一 个 实 际 的 动 机 是 支 持 多 协 议 , pop3 是 用 的 最 广 的 邮 局 协 议 , 但 并 非 唯 一 一 个 ,
开
oss.linuxpk.com
源 2008 年第 11 期 140
布道开源
Fetchpop 和 其 余 几 个 没 有 实 现 POP2.RPOP , 或 者 APOP , 而 且 我 还 有 一 个 为 了 兴 趣 加 入
IMAP(Internet Message Access Protocol,最近设计的最强大的邮局协议)的模糊想法。
3. “计划好抛弃,无论如何,你会的”(Fred Brooks,《神秘的人月》第
11 章)
或者换句话说,你常常在第一次实现一个解决方案之后才能理解问题所在,第二次你也许才足够清
楚怎样做好它,因此如果你想做好,准备好推翻重来至少一次。
在一个鼓励代码共享的软件文化里,这是一个工程进化的自然道路,我要指出:
5. 当你对一个程序失去兴趣时,你最后的责任就是把它传给一个能干的后
继者。
甚至没有商量,Carl 和我知道我们有一个共同目标就是找到最好的解决方案,对我们来说唯一的问
题是我能否证明我有一双坚强的手,他优雅而快速的写出了程序,我希望轮到我时我也能做到。
三、拥有用户的重要性
于是我继承了 popclient,同样重要的是,我继承了 popclient 的用户基础,用户是你所拥有的
极好的东西,不仅仅是因为他们显示了你正在满足需要,你做了正确的事情,如果加以适当的培养,他
们可以成为合作开发者。
Unix 传统另一有力之处是许多用户都是黑客,因为源优码是公开的,他们可以成为高效的黑客,这
开
oss.linuxpk.com
源 2008 年第 11 期 141
布道开源
一点在 Linux 世界中也被推向了令人高兴的极致,这对缩短调试时间是极端重要的,在一点鼓励之下,
你的用户会诊断问题,提出修订建议,帮你以远比你期望快得多的速度的改进代码。
6. 把用户当做协作开发者是快速改进代码和高效调试的无可争辩的方式。
这种效果的力量很容易被低估,实际上,几乎所有我们自由软件世界中的人都强烈低估了用户可以
多么有效地对付系统复杂性,直到 Linus 让我们看到了这一点。
四、早发布、常发布
尽量早尽量频繁的发布是 Linux 开发模式的一个重要部分,多数开发人员(包括我)过去都相信这对
大型工程来说是个不好的策略,因为早期版本都是些充满错误的版本,而你不想耗光用户的耐心。
这种信仰强化了建造大教堂开发方式的必要性,如果目标是让用户尽可能少的见到错误,那你怎能
不会仅仅每六个月发布一次(或更不经常),而且在发布之间象一只狗一样辛勤“捉虫”呢? Emacs C 内
核就是以这种方式开发的,Lisp 库,实际上却相反,因为有一些有 FSF 控制之外的 Lisp 库,在那里你
可以独立于 Emacs 发布周期地找寻新的和开发代码版本。
开
oss.linuxpk.com
源 2008 年第 11 期 142
布道开源
们很少真正仔细考虑我们在做什么,或者这个库的存在指出了 FSF 建造教堂式开发模式的什么问题,
1992 年我曾经做了一次严肃的尝试,想把 Ohio 的大量代码正式合并到 Emacs 的官方 Lisp 库中,结果
我陷入了政治斗争中,彻底失败了。
Linus 以所有实际可能的方式把它的用户作为协作开发人员。
7. 早发布、常发布、听取客户的建议
Linus 的创新并不是这个(这在 Unix 世界中是一个长期传统),而是把它扩展到和他所开发的东西
的复杂程度相匹配的地步,在早期一天一次发布对他来说都不是罕见的!而且因为他培育了他的协作开发
者基础,比其他任何人更努力地充分利用了 Internet 进行合作,所以这确实能行。
问题回答了它自己,Linus 保持他的黑客用户经常受到激励和奖赏:被行动的自我满足的希望所激
励,而奖赏则是经常(甚至每天)都看到工作在进步。
Linus 直接瞄准了争取最多的投入调试和开发的人时,甚至冒代码不稳定和一旦有非常棘手的错误
而失去用户基础的险,Linus 似乎相信下面这个:
开
oss.linuxpk.com
源 2008 年第 11 期 143
布道开源
非是甚至往往不是首先发现它的人,“某个人发现了问题”,他说,“另一个理解它,我认为发现它是
个更大的挑战”,但是要点是所有事都趋向于迅速发生。
我认为这是建造教堂和集市模式的核心区别,在建造教堂模式的编程模式看来,错误和编程问题是
狡猾的、阴险的、隐藏很深的现象,花费几个月的仔细检查,也不能给你多大确保把它们都挑出来的信
心,因此很长的发布周期,和在长期等待之后并没有得到完美的版本发布所引起的失望都是不可避免的。
以市集模式观点来看,在另一方面,我们认为错误是浅显的现象,或者至少当暴露给上千个热切的
协作开发人员,让他们来对每个新发布进行测试的时候,它们很快变得浅显了,所以我们经常发布来获
得更多的更正,作为一个有益的副作用,如果你偶尔做了一个笨拙的修改,也不会损失太多。也许我们
本不应该这样的惊奇,社会学家在几年前已经发现一群相同专业的(或相同无知的)观察者的平均观点比
在其中随机挑选一个来得更加可靠,他们称此为“Delhpi 效应 ”,Linus 所显示的证明在调试一个操
作系统时它也适用——Delphi 效应甚至可以战胜操作系统内核一级的复杂度。
更多的用户发现更多的错误是因为更多的用户提供了更多测试程序的方法,当用户是协作开发人员
时这个效果被放大了,每个找寻错误的人都有自己稍微不同的感觉和分析工具,从不同角度来看待问题。
“Delphi 效应”似乎因为这个变体工作变得更加精确,在调试的情况下,这个变体同时减小了重复劳动。
五、什么时候玫瑰不是玫瑰?
开
oss.linuxpk.com
源 2008 年第 11 期 144
布道开源
在研究了 Linus 的行为和形成了为什么它成功的理论之后,我决定在我的工程(显然没有那么复杂
和雄心勃勃)里有意识的测试这个理论。
9. 聪明的数据结构和笨拙的代码要比相反的搭配工作的更好
Fred Brooks 也在他第 11 章中讲道:“让我看你的[代码],把你的[数据结构]隐藏起来,我还
是会迷惑;让我看看你的[数据结构],那我就不需要你的[代码]了,它是显而易见的”。
实际上,他说的是“流程图”和“表”,但是在三十年的术语/文化演进之后,事情还是一样的。
此时(1996 年 9 月初,在从零开始六个月后),我开始想接下来修改名字——毕竟,它已不仅仅是
一个 POP 客户,但我犹豫了,因为还没有什么新的漂亮设计呢,我的 popclient 版本需要有自己的特
色。
1. 我尽早尽量频繁的发布(几乎从未少于每十天发布一次;在密集开发的时候是每天一
次)。
这些简单的手段立即收到的回报,在工程的开始,我收到了一些错误报告,其质量足以使开发者因
此被杀掉,而且经常还附有补丁、我得到了理智的批评,有趣的邮件,和聪明的特征建议,这导致了:
开
oss.linuxpk.com
源 2008 年第 11 期 145
布道开源
10. 如果你象对待最宝贵的资源一样对待你的 beta 测试员,他们就会成为你
最宝贵的资源。
几个星期以来我一直在修改而不是改进 fetchmail,因为我觉得界面设计虽然有用但是太笨拙琐碎
了,到处充满了太多的粗陋的细小选项。
11. 想出好主意是好事,从你的用户那里发现好主意也是好事,有时候后者
更好。
很有趣的是,你很快将发现,如果你完全承认你从其他人那里得到多少教益的话,整个世界将会认
为所有的发明都是你做出的,而你会对你的天才变得谦虚。我们可以看到这在 Linus 身上体现得多明显!
(当我在 1997 年 8 月的 Perl 会议上发表这个论文时,Larry Wall 坐在前排,当我讲到上面的观点时,
他激动的叫了出来:“对了!说对了!哥们!”所有的听众都哄堂大笑起来,因为他们知道同样的事情也发
生在 Perl 的发明者身上)。
于是在同样精神指导下工程进行了几个星期,我开始不光从我的用户那儿也从听说我的系统的人那
儿得到类似的赞扬,我把一些这种邮件收藏起来,我将在我开始怀疑自己的生命是否有价值时重新读读
这些信。:)
但是有两个更基本的,非政治性的对所有设计都有普遍意义的教益。
开
oss.linuxpk.com
源 2008 年第 11 期 146
布道开源
12. 最重要和最有创新的解决方案常常来自于你认识到你对问题的概念是错
误的。
一个衡量 fetchmail 成功的有趣方式是工程的 beta 测试人员表(fegtchmail 的朋友们)的长度,
在创立它的时候已经有 249 个成员了,而且每个星期增加两到三个。
当你在开发中碰了壁时(当你发现自己很难想通下一步时),那通常不是要问自己是否找到正确答案,
而是要问是否问了正确问题,也许需要重新构造问题。
但是当我这么做之后,证明好处是巨大的,驱动程序代码的冗余的部分消失了,配置完全变得简单
了——不用屈从于系统 MDA 和用户的邮箱,也不用为下层 OS 是否支持文件锁定而担心了。
而且,丢失邮件的唯一漏洞也被堵死了,如果你选择了递送到一个文件而磁盘已满,你的邮件就会
丢失,这在 SMTP 转发中不会发生,因为 SMTP 侦听器不会返回 OK 的,除非邮件可以递送成功或至少被
缓冲留待以后递送。
还有,性能也改善了(虽然在单次执行中你不会注意到),这个修改的另一个不可忽视的好处是手册
变得大大简单了。
所有这些给了我们什么启发呢?如果可以不损失效率,就要毫不犹豫抛弃陈旧的特性,Antonine
de Saint-Exupery(在他成为经典儿童书籍作家之前是一个飞行员和飞机设计师)曾说过:
开
oss.linuxpk.com
源 2008 年第 11 期 147
布道开源
13. “最好的设计不是再也没有什么东西可以添加了,而是再也没有什么东
西可以去掉。”
当你的代码变得更好和更简单时,这就是你知道它是正确的时候了,而且在这个过程中 ,
fetehmail 的设计具有了自己的特点,而区别于其前身 popclient。
七、Fetchmail 成长起来
现在我有了一个简洁和富有创意的设计,工作得很好的代码,因为我每天都用它,和一直在增长的
beta 表,它让我渐渐明白我已经不是在从事只能对少数其他人有用的工作中,我写了一个所有有一个
Unix 邮箱和 SLIP/PPP 邮件连接的人都真正需要的程序。
通过 SMTP 转发功能,它成为一个潜在的“目录杀手”,远远领先于它的竞争者,这个程序如此能干
以至于其他的程序不但被放弃简直被忘记了。
我知道你不可以真得瞄准或计划出这样的结果,你只能努力去设计这些强大的思想,以后这些结果
就好象是不可避免的、自然的、注定了的,得到这种思想的唯一办法是获取许多思想,或者用工程化的
思考其他人的好主意而超过原来想到它的人的设想。
结果总是执着的原因——实际上,它是每个黑客为之生存的成功 !而且它们意味着我必须把自己的标
准定高一点,为了把 fetchmail 变得和我所能设想的那样好,我必须不仅为我自己的需要写代码,而且
也要包括对在我生活围主页外的人们的需求的支持,而且同时也要保证程序的简单和健壮。
在实现它之后我首先写的最重要的特征是支持多投——从集中一组用户的邮件的邮箱中取出邮件,
然后把它路由到每个人手中。
我之所以加上多投功能部分是因为有些用户一直在闹着要它,更是因为我想它可以从单投的代码中
揭露出错误来,让我完全一般地处理寻址,而且这被证明了。正确解释 RFC822 花了我相当长的时间,
不仅因为它的每个单独部分都很难,而且因为它有一大堆相互依赖的苛刻的细节。
开
oss.linuxpk.com
源 2008 年第 11 期 148
布道开源
但是多投寻址也成为一个极好的设计决策,由此我知道:
14. 任何工具都应该能以预想的方式使用,但是一个伟大的工具提供你没料
到的功能。
Fetchmant 多投功能的一个没有料到的用途是在 SLIP/PPP 的客户端提供邮件列表、别名扩展。
这意味着一个使用个人机器的人不必持续访问 ISP 的别名文件就能通过一个 ISP 帐户管理一个邮件列表。
我的 beta 测试员提出的另一个重要的改变是支持 8 位 MIME 操作,这很容易做,因为我已经仔细的保证
了 8 位代码的清晰,不仅因为我预见到了这个特性的需求,而且因为我忠实于另一准则:
15. 当写任何种类的网关型程序时,多费点力,尽量少干扰数据流,永远不
要抛弃信息,除非接收方强迫这么作!
如果我不遵从这个准则,那么 8 位 MIME 支持将会变得困难和笨拙,现在我所需要做的,是只读一下
RFC 1652,在产生信头的逻辑加上一点而已。
一些欧洲用户要求我加上一个选项来限制每次会话取得消息数(这样他们就可以从昂贵的电话网中控
制花费了),我很长一段时间拒绝这样做,而且我仍然对它不很高兴,但是如果你是为了世界而写代码,
你必须听取顾客的意见——这并不随他们不付给你钱而改变。
rc 文件语法包括可选的“noise”关键字,它被扫描器完全忽略了,当你把它们全抽取出的时候,
关键字/值对更具可读性。
对我来说似乎把这个微型命令语言变得更象英语可能会使它更容易使用。现在,虽然我对经过
Emacs 和 HTML 及许多数据库引擎所证实的“把它做成一个语言”的设计方式确信不疑,但是我并不是
一个通常的“类英语”语法的狂热拥护者。
传统程序员容易控制语法使它尽量精确和紧凑,完全没有冗余,这是计算机资源还很昂贵时遗留下
的一种文化传统,所以扫描策略需要尽可能的廉价和简单,而具有 50%冗余度的英语,看来好象是一个
非常不合适的模型。
开
oss.linuxpk.com
源 2008 年第 11 期 149
布道开源
这并不是我不用类英语语法的原因,我提到这一点是为了推翻它,在更廉价的时钟周期与核心的时
代,简洁并没有走到尽头,今天对一个语言来说,对人更方便比对机器更廉价来的更加重要。
然而,有几个原因提醒我们小心一点,一个是扫描策略的复杂度开销——你并不想把它变成一个巨
大的错误来源和让用户困惑,另一个是试图使语言表面上的类似可以和传统语言一样令人困惑(你可以在
许多 4GL 和商业数据库查询语言上看到这一点)。
Fetchmail 的控制语法避免了这些问题,因为语言的领域是极其有限的。它一点也不象一个一般性
的语言,它很简单地描述的东西并不复杂,所以很少可能在英语的一个小子集与实际的控制语言之间发
生混淆,我想这有一个更广泛的教益:
16. 如果你的语言一点也不象是图灵完备的,严格的语法会有好处。
另一个教益是关于安全的,一些 fetchmail 用户要求我修改软件把口令加密存贮在 rc 文件里,这
样觑探者就不能看到它们了。
我没有这样做,因为这实际上起不到任何保护作用,任何有权读取你的 rc 文件的人都可以以你的名
义运行 fetchmail——如果他们要破你的口令,它们可以从 fetchmail 的代码中找到制作解码器的方法。
所以 fetchmail 口令的加密都会给那些不慎重思考的人一种安全的错觉,这里一般性的准则是:
17. 一个安全系统只能和它的秘密一样安全,当心伪安全。
九、集市风格的必要的先决条件
本文的早期评审人员和测试人员坚持提出成功的市集模式开发的先决条件,包括工程领导人的资格
问题和在把项目公开和开始建造一个协作开发人员的社团的时候代码的状态。
相当清楚,不能以一个市集模式从头开发一个软件,我们可以以市集模式、测试、调试和改进,但
是以市集模式从头开始一个项目将是非常困难的,Linus 没有这样做,我也没有,初期的开发人员的社
团应该有一此可以运行和测试的东西来玩。
当你开始创建社团时,你需要演示的是一个诺言,你的程序不需要工作的很好,它可以很粗糙、很
笨拙、不完整和缺少文档、它不能忽略的东西是要吸引哪些人卷入一个整洁的项目。
开
oss.linuxpk.com
源 2008 年第 11 期 150
布道开源
但是 Linus 是从 Unix 得到他的设计的,我最初是从先前的 popmail 得到启发的(虽然相对 Linux
而言,它最后改变巨大),所以市集风格的领导人/协调人需要有出众的设计才能,或者他可以利用别人
的设计才能?
我认为能够提出卓越的原始设计思想对协调人来说不是最关键的,但是对他/她来说绝对关键的是
要能把从他人那里得到的好的设计重新组织起来。
本文的早期读者称赞我,说因为我做了许多关于原始设计的事,所以倾向于低估原始设计在市集项
目中的价值,也许有些是对的吧,但是设计(而不是编码或调试)本来就是我最强的能力。
变得聪明和软件设计的原始创作的问题是它会变成一个习惯,当需要保持事物健壮和简洁的时候,
你却开始把事情变得漂亮但却复杂。我曾经犯过错误,使得一些项目因我而崩溃了,但我努力不让它发
生在 fetchmail 身上。
当然基本的设计和编码技巧还是必需的,但我希望每个严肃考虑发起一个市集计划的人都已至少具
备这些能力,自由软件社团的内部市场对人们有某些微妙的压力,让他们不要发起自由不能搞定的开发,
目前为止,这工作得仍然相当好。
对市集项目来说,我认为还有另一种通常与软件开发无关的技能和设计能力同样重要——或者更加
重要,市集项目的协调人或领导人必须有良好的人际和交流能力。
这是很显然的,为了建造一个开发社团,你需要吸引人,你所做的东西要让他们感到有趣,而且要
保持他们对他们正在做的工作感到有趣,而且要保持他们对他们正在做的工作感到高兴,技术方面对达
成这些目标有一定帮助,但这远远不是全部,你的个人素质也有关系。
十、自由软件的社会学语境
下述如实:最好的开发是从作者解决每天工作中的个人问题开始的,因为它对一大类用户来说是一
开
oss.linuxpk.com
源 2008 年第 11 期 151
布道开源
个典型问题,所以它就推广开来了,这把我们带回到准则 1,也许是用一个更有用的方式来描述:
18. 要解决一个有趣的问题,请从发现让你感兴趣的问题开始。
这是 Carl Harris 和原先的 popclient 的情形,也是我和 fetchmail 的情形,但这已在很长一
段时间被大家知晓了,Linux 和 fetchmail 的历史要求我们注意的有趣之处是下一个阶段——软件在
一个庞大的活跃的用户和协作开发人员的社团中的进化。
开
oss.linuxpk.com
源 2008 年第 11 期 152
布道开源
Unix 的历史已经为我们准备好了我们正在从 Linux 学到的(和我在更小规模上模仿 Linus 的方法
所验证的)东西,这就是,虽然编码仍是一个人干的活,真正伟大的工作来自于利用整个社团的注意和脑
力,在一个封闭的项目中只利用他自己的脑力的人会落在知道怎样创建一个开放的、进化的,成百上千
的人在其中查找错误和进行修改的环境的开发人员之后。
但是 Unix 的传统中有几个因素阻止把这种方法推到极致。一个是各种授权的法律约束、商业机密和
商业利益,另一个(事后来看)是 Internet 还不够好。
但是这种领导风格与氛围到底是什么呢?它不能建立在权力关系之上——甚至如果它们可以,高压的
领导权力不能产生我们所看到的结果,Weinberg 引用了 19 世纪俄国的无政府主义者 Kropotkin 的
“Memoris of a Revolutionist”来证明这个观点:
“我从小生活在一个农奴主的家庭中,我有一个活跃的生活,象我们时代的所有年轻人一样,我深
信命令、强制、责骂、惩罚等等的必要性。但是当我(在早期)必须管理一个企业,和(自由)人打交道时,
当每一个错误都会产生严重后果时,我开始接受以命令和纪律为准则来行动和以普通理解为准则来行动
的区别。前者在军事阅兵中工作的很好,但是它在现实生活中一文不值,目标达成只是靠许多愿望的聚
合的简单后果。”“许多聚合在一起的愿望的直接后果”精确地指出了象 Linux 的项目所需要的东西。
“命令的准则”在 Internet 这种无政府主义的天堂中一群自愿者之中是没有市场的,为了更有效的操
作和竞争,想领导协作项目的黑客们必须学会怎样以 Kropotkins 含糊指出的“理解的准则”模式来恢
复和激活社团的力量,他们必须学会使用 Linus 定律。
Linux 黑客取得的最大化的“实际利益”不是经典的经济利益,而是无形的他们的自我满足和在其
他黑客中的声望,(有人会说他们的动机是“利他的”,但这忽略了这样的事实:利他主义本身是利他主
开
oss.linuxpk.com
源 2008 年第 11 期 153
布道开源
义者的一种自我满足的形式),自愿的文化以这种方式工作的实际上并非不寻常,我已参与一个科幻迷团
体很长时间了,它不象黑客团体一样,显式地识别出“egoboo”(一个人在其他爱好者之中的声望的增长)
作为自愿者活动背后的基础驱动力)。
Linus 成功地把自己置于项目的守门人的位置,在项目中开发大部分是别人做的,他只是在项目中
培养兴趣直到它可以自己发展下去,这为我们展示了对 Kropokin 的“共同理解原则”的敏锐把握,对
Linux 这种类似经济学的观点让我们看到这种理解是怎样应用的。
许多人(尤其是哪些由于政治原因不信任自由市场的人)会盼望自我导向的自我主义者的文化破碎、
报废、秘密和敌对,但这种盼望很明显地被 Linux 的文档的多样性、质量和深度打破了,程序员讨厌写
文档似乎已是圣训,但 Linux 的黑客们怎么产生了这么多?显然 Linux 的 egoboo 自由市场比有大量资
金的商业软件产品的文档部在产生有品德的、他人导向的行为方面工作的更好。
也许最终自由软件文化将胜利,不是因为协作在道德上是正确的或软件“囤积居奇”在道德上是错
的(假设你相信后者,Linus 和我都不),而仅仅是因为商业世界在进化的军备竞赛中不能战胜自由软件
社团,因为后者可以把更大更好的开发资源放在解决问题上。
开
oss.linuxpk.com
源 2008 年第 11 期 154
编读往来
Linuxpk.com 十月十大热门帖
大型网站架构演变
http://bbs.linuxpk.com/thread-36093-1-1.html
应对微软黑屏的解决方案
http://bbs.linuxpk.com/thread-35922-1-1.html
haproxy 部署介绍
http://bbs.linuxpk.com/thread-35812-1-1.html
Linux 性能监测工具
http://bbs.linuxpk.com/thread-35899-1-1.html
(原创)ORACLE 的聚合函数怎么了?
http://bbs.linuxpk.com/thread-36081-1-1.html
PHP 负载均衡指南
http://bbs.linuxpk.com/thread-35984-1-1.html
一份关于软件集成测试的考题(一)
http://bbs.linuxpk.com/thread-35998-1-1.html
本站 sns 开通“中国开源校园”
http://bbs.linuxpk.com/thread-35740-1-1.html
开
oss.linuxpk.com 源 2008 年第 11 期 155
封底