《码农增刊Linus与Linux》Epub-Pdf-Mobi-Txt-Azw3 下载在线阅读

 《码农增刊Linus与Linux》Epub-Pdf-Mobi-Txt-Azw3 下载在线阅读

 

作者:池建强

 

内容简介:

 

一生只为寻找欢笑,这个极客很有种,Git为何不用C++开发,Linux发展编年史,一个人加上一百万人的智慧,分布式开发样板,你可能不知道的Shell。

 

每个人桌面上一台电脑,这曾经是无数计算机先驱的梦想,这个梦想很早就实现了,在 1997 年,乔老师和比老师就说过: “比尔,我们共同控制了 100% 的桌面系统市场。”当然乔老师没说的是,比老师控制了97%,乔老师还不到3%。时至今日,乔老师走了,比老师颓了,移动终端把传统的PC市场冲击得七零八落。普通用户都知道了Windows、Android、OS X 、iOS、BlackBerry等,但是,他们依然不了解的是另一款在计算机发展史上起到了革命性作用的操作系统:Linux!

 

当大家使用 Google 搜索时,使用 Kindle 阅读时,使用淘宝购物时,使用 QQ 聊天时,很多人并不知道,支撑这些软件和服务的,是后台成千上万台 Linux 服务器,它们时时刻刻都在进行着忙碌的运算和数据处理,确保数据信息在人、软件和硬件之间安全地流淌。可以这么说,世界上大部分软件和服务都运行在 Linux 操作系统之上,什么云计算、大数据、移动互联网,说起来风起云涌,其实没有 Linux 全得趴窝(微软除外) 。

 

但是,Linux 和它的缔造者林纳斯·托瓦兹一样低调,这么牛逼的一个物件,居然只有程序员知道它的传奇,这不科学!所以我准备在这个系列中写写林纳斯:他是 Linux 和 Git 的缔造者,他是一个传统的黑客,与沃兹一样,少年成名,崇尚自由,一生只为寻找欢笑,他,是一名真正的程序员。

 

无论是 Linux 还是 Git,得一即可得天下,结果这哥们以一己之力发起了俩项目,而且都是主力开发人员。最终的结果是,成全了程序员,陶冶了用户,造福了一方百姓。正如林纳斯自己所言: “My name is Linus, and I am your God.”

epubooks.top站是一个下载优质电子书的网站,书籍种类非常多,每个类目下的书籍资源都非常丰富,支持kindle、epub、mobi、azw3、pdf格式下载。以及在线阅读-epub,kindle,mobi,azw3,pdf格式! 一個下載優質電子書的網站,書籍種類非常多,每個類目下的書籍資源都非常豐富,支持kindle、epub、mobi、azw3、pdf格式下載。以及在線閱讀-epub,kindle,mobi,azw3,pdf格式! ======================================================= 记得收藏本站哟!每天都会更新 资源收集不易,还请帮忙点一点,是我的动力谢谢!!!!!!!!!! 如果有什么书本站没有,你也可以在评论处留言。我会第一时间去的! 收藏本站每日更新更多书籍! 资源地址: Epub版-----网盘密码1122 MOBI版-----网盘密码1122 PDF版------网盘密码1122 TxT版------网盘密码1122 azw3版------网盘密码1122 ======================================================= 部分简介:
林纳斯:电脑游戏,战争游戏,CNN电视台,都是。这么说吧,引起战争的原因常常很有娱乐性,人们也常用娱乐的眼光看待战争。像刚才说的,性行为很多时候也是为了娱乐。当然了,延续生命的那部分动机还是在的,尤其当你是天主教徒的时候,对吧?但即使你是天主教徒,有时候想到性,也会包含娱乐性的需要吧。所以这不一定只是纯粹的娱乐。对所有的事物来说,一部分动机可能是生存,一部分可能是社会秩序,剩下的可能是娱乐。你看,技术就是这样。技术发明最初也是为了生存,后来就不仅仅是为了生存下来,而是为了更好地生存。人们为了从井里打水,才发明了风车…… 大卫:取火也是。 林纳斯:对,技术在这些层面依旧是为了生存,还没有达到社会秩序和娱乐阶段。 大卫:那技术是怎么进入到社会秩序阶段的呢? 林纳斯:这么说吧,实际上大部分工业化都是生存需要,或者说是为了生存得更好。就说生产汽车吧,这就意味着要生产更快更好看的汽车。但后来就到了社会秩序的阶段。随后我们就有了电话,到了某种程度,还有了电视。早期的许多电视节目主要是为了给观众洗脑,电台也一样。正是为了社会秩序,很多国家才会从投资电台入手。 大卫:就是为了建立和维护社会秩序…… 林纳斯:没错,然后它就超越了社会秩序的阶段。现如今啊,电视节目主要是为了娱乐。而且你瞧瞧现在这些移动电话,虽然大体还处在社会秩序阶段,但它也正朝着娱乐阶段走呢。 大卫:那么技术的未来会是什么样的呢?我们早已超越了生存阶段,现在处于社会阶段,对吗? 林纳斯:对。以前所有技术都是为了使生活更便捷,比如说为了能更快地到达目的地,为了能买到更便宜的东西,为了能住上更好的房子等。那么今天的信息技术又有什么不同呢?人与人之间都建立了联系又会怎么样,还有什么能做的呢?当然了,人与人之间的联系可以更加紧密,但这本质上和以前没有什么不一样。那么,信息技术究竟会把我们引向哪儿呢?我觉得吧,接下来就得踏入娱乐阶段了。 大卫:也就是说,所有的事物最终都会演变成娱乐…… 林纳斯:这多少也解释了Linux系统成功的原因。想想这三个动机,第一是生存,有电脑的人当然没有生存问题。坦白说,如果你拥有一台电脑,那你肯定不必为食物之类的生计发愁了。第二是社会秩序,Linux系统可以说是对建立社会秩序起了积极作用的,尤其是对那些成天缩在他们自己小隔间的极客们来说。 大卫:你在Comdex博览会上说的那一番话很巧妙,当时你说Linux系统的开发是一个全球性的团队运动。所以,基本上是你让社会秩序阶段成为可能了,老兄。 林纳斯:Linux项目确实是个好例子。这说明了人们热爱团队运动,尤其是热爱作为团队一员参与到其中去。 大卫:是啊,每天待在电脑前,你应该很希望不是自己一个人在瞎忙活,而是作为大团队的一份子,什么团队都行。 林纳斯:这就组成了社会秩序,就像其他的团队运动一样。想象一支足球队里的队员,尤其是高中足球队。Linux的社会层面真的是非常非常重要,但Linux系统也有娱乐的层面,而这种娱乐可能有钱也买不到。在生存阶段,钱通常是非常强烈的动机,因为用钱来换取生存是非常容易的,钱能够轻易地换到生存所需。但当你到了娱乐的阶段,金钱就…… 大卫:金钱就没有用处了? 林纳斯:不,不是没用,显然你可以花钱去看电影、买车和度假。你能花钱买很多东西来改善生活。 朵芙:林纳斯,我们得给丹妮拉换尿片了,帕特丽夏也得上厕所了。我还想要杯卡布奇诺。你说这儿能找到星巴克吗?我们到哪儿了? 大卫(抬头):从空中的气味推断,我想我们应该快到金城了。 林纳斯:我们现在说的范围有些太广了,我们说的不仅仅是人,连生活都包括在内了。跟熵定律差不离吧,根据“生活的熵定律”,虽然所有事都会从生存阶段最终进入娱乐阶段,倒也不是说不可能会在哪个环节出现倒退,很多时候倒退是很常见的。有时候这个过程甚至会直接崩溃。 大卫:但是作为一个体系,应该是一直朝着一个方向走吧…… 林纳斯:是朝着一个方向走,但不是所有事物都是同步的嘛。因此基本上来说,性爱已经成为娱乐了,战争还在朝着娱乐的方向走,而技术已经很有娱乐的味道了。新事物最初的动机都是为了生存。比如说太空旅行,是吧?它可能开始只是为了生存,后来就开始为社会秩序服务,接着就成了一种娱乐。我们可以把文明看作是一种膜拜形式。是这样的,它们的诞生模式是一模一样的。文明的诞生最开始是为了生存,后来人们为了更好地生存而聚居在一起,这就建立了社会结构,最终文明就成了一种纯粹的娱乐。好吧,也不能说是纯娱乐,可成为娱乐也没有什么不好啊。古希腊人最出名的就是有严谨的社会秩序,但他们也有不少娱乐活动。谁都知道那个时候他们有全世界最伟大的哲学家。 大卫:好吧,那么这些和生活的意义有什么联系呢? 林纳斯:其实没有什么联系,这些只是说……好吧,这倒是个问题。 大卫:这点小小的联系,就是你接下来要好好想的。 帕特丽夏:妈妈快看,外面有奶牛。 林纳斯:所以说,你要是搞清楚了生活的走向,那么很显然,你的生活目标就是要促进生活朝这个方向走。而且这走向还不是单一的一个走向,你做的任何事都是这些走向中的一部分。你也可以这样问自己:“我能做些什么为这个社会添砖加瓦呢?”你知道自己是这个社会的一员,知道社会是在朝着那个方向走,那么你就能推着它往前走。 朵芙(捏鼻子):这儿怎么那么臭啊! 林纳斯:归根结底,咱们就是为了好玩。那咱们不妨坐着好好放松放松,享受我们的旅途吧。 大卫:就是为了好玩(Just for fun)? 2001年Linus与人合著了他的自传《只是为了好玩》,也是唯一一本关于他的传记。这部自传风趣幽默,充满极客风格,向读者展示了林纳斯如何用自己精彩的编程人生和对自由软件的热爱演绎现代社会中一个书呆子的胜利。13年后我们重新翻译出版这位最有影响力发明家一的传奇经历,期待与更多人一起探寻如何以“一切为了好玩”的态度对待技术、软件和人生…… 本文节选自《只是为了好玩》。 Linux发展编年史 1991 9月17日:21 岁的芬兰学生林纳斯·托瓦兹在网上发布开源操作系统 Linux 0.01。 1992 1月5日:Linux 0.12 版本随同采用 GPL 许可证的版权声明发布,使得开源的 Linux 商用成为可能。林纳斯在后来的一次访谈中称:“让 Linux 遵守GPL 绝对是我干过的最正确的事。” 1993 6月17日:Slackware Linux 由帕特里克·沃尔克丁发布。Slackware 被认为是第一个取得广泛成功的Linux 发行版,它现在还在使用。 8月16日:伊恩·默多克发布了第一个 Debian Linux 的发行版。Debian是最有影响力的 Linux 发行版之一,是 Ubuntu 等众多发行版的鼻祖。 8月19日:马特·韦尔什写的 Linux Installation and Getting Started 第1版出版,这是第一本关于Linux的书籍。 1994 3月14日:Linux 1.0 发布,代码量达 17 万余行,Linux 用户超过 10 万。 11月3日 : Red Hat Linux套件出售。此后 Red Hat 一路发展成为全球最重要的Linux和开源技术提供商,在纳斯达克上市,银行现金高达29亿美元,成为开源商业模式典范。 1996 5月9日:林纳斯在网上征集企鹅图案作为 Linux 品牌标识,平面设计师拉里·尤因创造的黄背黄脚蹼的名为 Tux 的小企鹅入选。企鹅是林纳斯最喜欢的小动物。 6月9日:Linux 2.0 版发布。这是第一个在单系统中支持多处理器的稳定内核版本,也支持更多的处理器类型。Linux 进入实用阶段,全球有约 350 万人使用。 1997 1月9日: 第一个“Linux 病毒”Bliss被发现。Bliss 不危害系统安全,它依赖于人们用特权干蠢事来感染系统,然后提醒用户只安装从可靠站点下载的可以验证数字签名的软件,并且安装之前一定要先验证签名。 6月:大片《泰坦尼克号》使用 Linux 操作系统制作特效。 1998 5月1日:基于 Linux的 Google 搜索引擎面世。 10月:微软在法国发布了反 Linux 公开信。这表明微软公司开始将 Linux视作对手来对待。 12月4日:一份来自 IDC 的报告称 1998 年 Linux 的出货量至少上升了200%,市场占有率上升至少 150%。Linux 的市场占有率为 17%,并且以其他任何操作系统无法企及的速度增长着。 1999 3月:第一届 LinuxWorld 大会召开,象征Linux 时代到来。 7月:Intel 公司启动对 Linux 的支持服务。这可以视作 Linux 真正成为服务器操作系统一员的重要里程碑。 2000 1月: Sun公司在Linux 压力下宣布 Solaris 8 降低售价。 3月11日:摩托罗拉公司宣布发行 HA Linux。这个发行版专注于通信应用领域,对系统不关机连续运行时间要求非常高。它还包括了热交换能力和支持 i386和 PowerPC 架构。 3月23日:爱立信发布基于 Linux 的触屏手机 Screen Phone HS210。 2001 1月3日:美国国家安全局以 GPL 许可证发布了 SELinux。SELinux 提供了标准Unix 权限管理系统以外的另一层安全检查。 2004 10月20日:Ubuntu 以一个不同寻常的版本号 4.10 和怪异的版本代号Warty Warthog(长满疙瘩的非洲疣猪)问世。用这个版本号是因为发布日期是 2004 年 10 月。Ubuntu 的开发由 Cannonical 公司主导,它虽然不是内核的主要贡献者,然而对于Linux的台式机和笔记本电脑的普及起到了重要作用。 2007 8月8日:Linux 基金会成立,目的是赞助 Linux 创始人 Linus 的工作。基金会得到了包括 IBM、Oracle 等公司以及来自世界各地的开发者的支持。 11月5日:Google 公司发布 Android 移动平台。 2009 1月29日:纽约时报称“现在预计有超过1000万人在运行Ubuntu系统” 。 2011 5月11日:Google 发布基于 Linux 内核的云操作系统 Chrome OS。 6月21日:Linus Torvalds 发布 Linux 3.0 版本。 2013 12月13日: Valve 公司发布基于 Linux 的视频游戏控制台操作系统 SteamOS。 第三个系统Linux:一个人加上一百万人的智慧 作者 /Mike Gancarz Mike Gancarz 是美国佐治亚州亚特兰大市的一名应用开发顾问。他的团队使用 Linux、Unix 和 Java 工具,为金融服务行业开发出多个获奖的成像解决方案。作为 Unix 应用程序设计专家,他不遗余力地推广 Unix 已达二十多年。作为开发出 X Window System 的团队成员,Mike Gancarz 还始创了一些至今仍应用在 Linux 上的最新窗口管理器中的可用性观念。Mike 曾经在 DEC 公司位于新罕布什尔州纳舒厄城的 Unix 工程开发项目组工作,主持了将 Unix 命令和程序移植到 64 位 Alpha 处理器的工作。他的首部著作 The Unix Philosophy(Digital Press, 1995)令数以万计的技术人员受益,他也是《Linux/Unix 设计思想》的作者。 人类只具备创建三个系统的能力。不管如何努力,无论为之奋斗的时间有多久,人类最终都会意识到想要打破这个规律只是徒劳。人类根本无法建立第四个系统。只有自欺欺人的家伙才不相信这个铁律。 为什么只有三个?这是个难以回答的问题。人们或许能从科学、哲学和宗教的观点出发,得到一些猜测性的理论。每个理论都会对这种情况给出一个貌似合理的解释。但是,最简单的解释可能就是,人类的系统设计过程就像人类自身一样,都必须要经历三个生命阶段:未成年、成年和老年。 在未成年阶段,人们普遍充满活力。他们就像是街区里新来的孩子:浑身活力四射,渴望受到关注,而且显示出无穷潜力。在一个人从未成年阶段发展到成熟阶段的同时,他会成长为对这个世界更加有用的人。他们的职业生涯逐渐成形,与他人的长期合作关系得到发展,在世俗事务中的影响力越来越大。这个人开始给人留下深刻印象——好的坏的或是其他。待到年老的时候,这个人会丧失掉年少时的许多机理能力。而且,随着体格机能的逐渐衰退,其对世俗的影响也会消退,职业生涯都将成为往昔记忆。人们开始抗拒这种改变。然后,沉淀下来的就是那些基于人生经历的宝贵智慧。 人类设计的系统也经历着同样的发展阶段。每个系统都具备与人类生命发展阶段所对应的那些特性。所有的系统都遵循着这条发展路径:从未成年开始,过渡到成熟阶段,直到以老年作为终结。 正如一些人无法活到天年一样,总有一些系统到达不了成熟期。通常,这是由外部环境所决定的。开发计划也许会改变;项目经费可能会被撤销;潜在客户或改变主意,决定购买别家供应商的产品。任何这些因素都有可能导致系统中途夭折。然而,在正常情况下,人们还是可以引领这些系统经历所有的三个发展阶段。为了阐明这个道理,我们将这些阶段称为人类的三个系统。 在背水一战的情况下,人类创建了“第一个系统” 通常情况下开发人员担负着巨大压力,他们必须要赶在截止日期前交付项目,或是满足其他一些时间紧迫的需求。种种压力会激发出他内心灵感创意的火花。最终,在他深思熟虑良久,并在脑海中反复琢磨他的构想之后,这一点火花变成了一小团火焰。工作仍在继续。他的创意本能开始占据上风。灵感的火焰变得越发明亮。 某一刻,他会意识到一部分构想并不只局限在“达成目标”这一范围内。他感觉自己好像在反复思量一些更重要的事物。此时,如果他认为这些构想可以提供更合理的解决方案,那么他就会逐渐淡忘最早制定的目标。 “专家”使用“第一个系统”验证过的想法来创建“第二个系统” “第一个系统”早期的成功深深地吸引了一些人,他们积极参与进来并希望将自己的名字与这个系统紧密相连,从而获得这样那样的回报。每个人都想和成功产品搭上关系。 这个自封的“专家”群体通常包括许多对“第一个系统”颇有微词的批评家。这些人为自己没能参与“第一个系统”的设计工作而深感懊丧,他们发泄着对“第一个系统”创始人的不满,并声称自己完全可以做得更好。有时候他们是对的。他们确实可能在系统设计某些特定方面做得更好。在重新设计“第一个系统”中几个基本算法的时候,他们的专业知识派上了用场。但请记住:“第一个系统”的设计者(们)并没有足够时间去把事情做好,而这些专家中的许多人一来知道什么是正确的做法,二来也有充足时间和资源来做好它。 “第三个系统”由那些为“第二个系统”所累的人们创建 经年累月之后,有些人开始发现,这“第二个系统”并不像它吹嘘的那样神乎其神。他们意识到它会吞噬系统的资源,运行起来也非常缓慢。它的确是由专家设计的,只不过其中一些人是自封的“砖家”。虽然“第二个系统”努力去满足每个人的需要,可实质上它并达不到任何人的要求。 不久,“第二个系统”便使许多人精疲力尽。他们认识到所谓的“令你别无他求的系统”只不过是众多系统的一个。它催生了太多的用户组,连处于技术领域外围的人士都开始讲授研讨会。这些人并不像早期激发这股热潮的人们那么才华横溢,因此教学质量一路下滑。夸夸其谈充斥着这些用户会议,外围人士看到之前的专家早已声名鹊起,所以才希望能效仿这些人的派头。只是,他们来得太晚了。 人们都在窃窃私语地交换意见,也许这“第二个系统”并非那么完美,最后,这些小声的传言变成了广大用户发出的集体呐喊。每个人开始怀疑是否会有一个更好的解决办法。直到此时,全世界都做好了迎接“第三个系统”的准备。在与“第二个系统”的对抗中,“第三个系统”诞生了。 另一方面,他们这些“吃不到葡萄”的专家会对别人来之不易的成就大倒酸水。这里面大有一些NIH的意味,也就是曾经流行的“非我发明”综合征。虽然其中许多人其实也有能力去建立“第一个系统”,他们只是没能抢得先机而已。他们参与“第二个系统”的开发工作不是为了找乐子,而是希望借此机会用自己的设计机制来取代“第一个系统”的机制,从而“改善原有设计师明显的业余尝试”,为自己获得专业口碑。 这种态度往往会引起“第一个系统”设计者的愤怒。偶尔,他们也会奋力反击。流行X Window Sytem系统的先驱Bob Scheifler就曾不客气地回应过认为他的早期设计风格过于随意的批评:“如果不喜欢,你完全可以随意编写你自认为具备行业标准的窗口系统。” Linux既是“第三个系统”,又是“第二个系统” Linux的出现正逢20世纪80年代末的动荡期,当时Unix处于嘈杂喧嚣的“第二个系统”阶段。“第二个系统综合征”的迹象比比皆是,而Unix社区里,AT&T和伯克利这些主要派别正为哪一方实施的系统可以主宰Unix世界而争论不休。此外,人们还成立了诸如开放软件基金会(Open Software Foundation)的一些委员会,他们试图说服用户真正重要的是“开放接口”,而不是操作系统的哲学。这两种主流Unix社区推出的实施版本大多成了超级臃肿和缓慢的系统。 作为Unix哲学的下一个重要实现,而且是在一个几乎没有什么系统实施该哲学理念的领域,Linux展现出了许多“第三个系统”的特点。有些人厌倦了Unix世界中的自鸣得意和争吵不休,他们在Linux上面找到了很多乐趣。Unix中最好的原创概念在Linux下得以继续发展。许多Linux开发人员都抽出时间,帮助这个系统实现恰当的内核结构、接口和图形用户界面(GUI)。请大家不要忽略一个显而易见的事实:Linux其实就是Unix,只是换了个名字而已。 Linux自身也体现出一些“第二个系统”的特性。比如说,广为人知的“开源软件”系统其实是从Linux世界开始起步的。这个系统要经过一个漫长过程,在人们辩论、举办研讨会、并阐述其优缺点之后,才会进入“第三个系统”阶段。自此,永久自由分发该系统软件的源代码将成为普遍的做法。 如果说Ken Thompson是Unix的创造者,那么Linus Torvalds就是Linux操作系统的发明人,当时他还是芬兰赫尔辛基大学的一名学生。1991年8月25日他发出了那篇现在广为人知的新闻组主题文章,这篇以“嗨,大家好……我正在编写一个(免费)的操作系统”开头的文章对他的命运产生了深远影响。 Thompson 和Torvalds两人至少有一点相似之处,那就是对事物的好奇之心。我们可以找到证据,Thompson编写Space Travel程序只是为了好玩而已。而Torvalds在痴迷于类Unix操作系统——Minix的同时,也完全是因为非常感兴趣才会将流行的Unix命令解释器bash进行改编并运行在他的“玩具”操作系统上。同时,这些在一开始只是“为了好玩”的举动,却最终对软件产业产生了深远影响。 一开始,Linux也不是一款具备可移植性的操作系统。Torvalds无意将它移植到英特尔386之外的其他架构之上。从某种意义上说,他也只是背水一战,因为他的手头只有少量计算机硬件可供选择。因此,最初他并没有采取任何进一步的举措而只是将自己拥有的资源发挥到极致。但是他发现良好的设计原则和扎实的开发模式还是引领着他去把Linux变成一个可移植的系统。从那一刻开始,别的人接过了这个接力棒,很快便将Linux移植到了其他架构。 在Torvalds的Linux出现之前,借鉴他人编写的软件已成为相当普遍的做法。事实上也就是因为这样,Richard M. Stallman才会在具有里程碑意义的GNU公共授权协议(GPL)下正式确立了这一思想。GPL是一个适用于软件的法律协议,基本保证了软件的源代码可以自由提供给任何想要得到它的人。Torvalds最终为Linux采用了 GPL协议,这个举动免除了所有人对于相关法律与版权纠纷的后顾之忧,让他们可以自由借用Linux的源代码 。由于Torvalds将Linux免费开放出来,因此其他人自然也会将他们的软件免费提供出来以共同发展Linux。 从一开始,Linux已经表现出它确实是一个与Unix非常相似的操作系统。它的开发人员全盘接受了Unix的哲学原理,然后再从头编写了这个新的操作系统。问题是在Linux的世界里,几乎再没有其他程序是重新编写的。一切应用都是建立在其他人写好的代码和概念之上。因此很自然地,Linux成为了Unix系统演变的下一步,或许更准确地说,它是Unix的一个大飞跃。 类似于Unix,在Linux技术发展的早期,有许多开发者参与其中并提供了帮助。不同的是,Unix开发者数量最多的时候也就几千人,而今天Linux的开发者数量却早已达到了几百万之多。这才是登峰造极的Unix!正是这种大规模的开发格局,保证了Unix的后代Linux将在很长时间内都是一款具备强大竞争力的系统。 Linux为Unix世界重新激起波澜,所谓的“开源”要比“专有”软件或是那些没有现成源代码的软件优越。多年以来,Unix开发人员一直坚信这一点。但计算机行业的其他人却被一些专有软件公司的大量宣传所蒙蔽,他们误认为任何借来的或是免费的软件在性能上都无法比拟那些要付费(有时甚至是耗费巨资)的软件。 在市场营销方面,Linux社区也更为精明,他们知道只要市场工作做得好,就算是劣质软件也可以成功销售出数百万份。当然,这并不是说Linux是伪劣产品。只是,有别于它的前身Unix社区,Linux社区认识到,即使是世界上最好的软件,也只有当人们对它产生了解并认识到它的真正价值时,才会为人所用。 开源除了可以让你清楚地了解到这些编程大师们创建系统的方式,还可以激励你去创建更快、更强大的系统。到目前为止,没有一本书同时介绍 Unix 和 Linux 的设计理念,《Linux/Unix设计思想》将这两者有效地结合起来,保留了 The Unix Philosophy 中 Unix 方面的内容的同时,探讨了 Linux 和开源领域的新思想。本文选自《Linux/Unix设计思想》。 分布式开发样板——Linux内核开发过程 作者/ Wolfgang Mauerer Wolfgang Mauerer资深Linux专家,有数十年Linux开发经验。从1997年最初发表关于内核的系列文章开始,他就醉心于解释Linux核心的内部机制、编写相关的文档。此外,他还著有LaTeX排版方面的图书,其撰写的大量文章已经被翻译成7种语言。 显然,算法、数据结构、代码构成了Linux开发的最核心部分,内核就是这些内容。但Linux还有另一个侧面,不应该被忽视:开发了内核的社区、其工作方式、人与人之间交互的方式。这个方面是很有趣的,因为内核是现存最大、最复杂的开源项目之一,它对于大规模的分布式分散开发来说,是一个样板。本文将对内核开发涉及的技术和社会方面提供一个概述。 简介 内核源代码(在主要的README文件中)将开发社区描述为一个“在网络上松散组织的黑客团队”,尽管从开始到现在,内核开发涉及的人数及其职业来源一直在发生变化,但所述说法一直是真实的。这导致的一个直接结果就是开放性:开发者之间大多数的通信都发生在邮件列表上,任何对操作系统演变方式感兴趣的人都可以阅读这些。一个要点在于,来自许多在各方面激烈竞争(请注意,是公司,不是开发者)的公司的开发者在内核开发中密切协作。而非技术人员,通常只能惊讶地站在一边。实际上,这是一项非凡的壮举! 现在,已经不需要多说Linux内核开发的基本原理了。尽管仅仅在15年前创建一个可以实际使用的开源操作系统似乎还是一个妄想,但大多数技术人员已经习以为常。Linux内核开发与经典的开发模型相比,一个本质区别是,前者没有什么固定的形式化规则来规范开发过程如何运作。确实有惯例存在,但很少以文档方式形式化。没有开发路线图,也没有中央代码存储库。但确实有重要的代码存储库和重要的开发者。与固定的刚性结构相比,这在许多情况下可能都是优点,因为开发过程变得更为动态和灵活。但如果对领域不熟悉,工作也会变得更困难。 内核代码树和开发的结构 Linux内核是一个非常动态的软件,最令人惊讶之处在于,其开发根本没有开发版本!至少没有由Linus Torvalds管理的显式、长期的开发版本。 此前的情况有所不同。传统上,内核开发分为两个不同的分支。一个分支包含稳定的内核版本,应该用于生产系统,其次版本号为偶数。内核分支2.0、2.2、2.4都是稳定分支(2.0.x、2.2.x、2.4.x是发布的各系列版本),而2.1、2.3、2.5是开发版本,诸如2.5.x等。这种方法的基本思想在于,使新的特性和试验性的补丁经历大量的测试和改进,一旦添加了足够数量的新特性,而且代码在实际上以可察觉的方式稳定下来时,就打开一个新的稳定的源代码树。理想情况下,发布商可以从稳定的版本分支取得内核,将其集成到发行版中。 遗憾的是,这种方式运作得不十分好。在打开新的稳定版本之前,一个开发周期可能需要数年,在IT界这是一个非常长的时间了。在新硬件出现时,买家通常不会花几年的时间等待内核的支持(至少是大多数人使用的稳定版本的内核)。不仅对设备驱动程序是这样,对大多数新特性来说,都是如此。因而,发布商确实从开发版内核向稳定分支移植了一些新特性。而且由于每个发行版的“口味”不同,后向移植所选择的特性也不同,这导致了发行版内核之间的分歧越来越大。 从内核版本2.6系列以来,采用了一种新的开发策略。只有一个内核系列,不再划分稳定代码树和开发代码树。而采用了若干比较试验性的内核代码树来测试新的特性,在经过稳定和测试期之后,新特性将直接合并到内核的主系列中。2.6版本的内核代码树由Linus Torvalds管理,读者可能听说过,他是Linux最初的创造者和发起者。来自该代码树的内核通常称之为vanilla内核,以区别发行版根据具体需要修改而来的内核,或各种试验性的代码树。该内核系列通常称之为主线内核。 主线内核代码树之外的代码树,通常在版本号之后增加一个后缀进行标识。主线内核之外,最重要的代码树是2.6-mm,由Andrew Morton管理,大多数补丁在被主线2.6内核接受之前,都会先经过该代码树。还存在许多其他子系统相关的代码树,它们通常关注内核的某个特定方面:2.6-net关注网络,而2.6-rt包含了与实时问题和交互性问题相关的工作,这只是其中两个例子。还有一个-stable版本,用于在正式的内核版本发布后,将重要的bug修复集成进来。内核代码树的变动可能因种种原因而发生:开发者可能失去维护代码的兴趣,如果代码树涉及的问题已经以某种方法解决,那么代码树本身可能也会消失。 命令链 内核的所有活动组件都有一个维护者,他会关注相关的特定领域的开发。许多维护者(特别是大组件的维护者)都被各个Linux厂商雇佣,但有一些仍然是在空闲时间工作。维护者的职责变动范围很大,可能只是控制单个设备驱动程序,也可能涉及一项基础设施(如内核对象机制),更大的范围可能涉及整个子系统(如所有的网络代码、块层或特定体系结构在arch/下的所有代码)。维护者在内核代码树顶层的MAINTAINERS文件中列出,其中包括几项信息,读者在这里可以看到:

发表评论

0 评论