Linux系统的兴盛受益于开源社区的强健根基,我们将与读者一起学习了解开源软件的优势,了解诸如GPL、LGPL、BSD、Apache、MIT、Mozilla等热门的开源许可证,方便今后做出更适合自己的选择。
开源软件具有低风险、低成本、品质好、更透明等4大优势,开源精神也是每位Linux技术人从骨子里感到自豪的情怀。讲述Linux系统从1965年至今的发展历程,在“八卦”的同时不忘诙谐幽默,旨在让我们能够在轻松的氛围下厘清半个多世纪以来开源技术的历史发展脉络,充分认识当今最热门的9款开源操作系统——RHEL、CentOS、Fedora、Debian、Ubuntu、openSUSE、Kali、Gentoo、Deepin,并了解开源软件的盈利模式等,进而判断整个开源行业的未来发展趋势。
开源共享精神
一般情况下,软件的源代码只由编写者拥有,而开源(即开放源代码,Open Source Code)是指一种更自由的软件发布模式。简单来说,开源软件的特点就是把软件程序和源代码文件一起打包提供给用户,让用户在不受限制地使用某个软件功能的基础上还可以对代码按需修改,让软件更贴合硬件环境,让功能更符合工作需求。用户还可以将其编制成衍生产品再发布出去。用户一般享有使用自由、复制自由、修改自由、创建衍生品自由,以及收费自由。是的,您没有看错,用户具备创建衍生品和收费的自由。这也就是说,可以对一个开源软件进行深度定制化加工。如果修改过的程序更加好用,或者颇具新的特色,只要符合原作者的许可要求,我们就完全可以合法地将软件进行商标注册,以商业版的形式再发布出去,只要有新用户使用您的软件并支付相应的费用,那就是您的收入。这也正好符合了黑客和极客对自由的追求,因此在合作与竞争中,国内外的开源社区慢慢生长出了强健的根基,人气也非常高。
但是,如果开源软件只单纯追求“自由”而牺牲了程序员的利益,这肯定会影响程序员的创作热情。为了平衡两者的关系,截至目前,世界上已经有100多种被开源促进组织(OSI,Open Source Initiative)确认的开源许可证,用于保护开源工作者的权益。对于那些只知道一味抄袭、篡改、破解或者盗版他人作品的不法之徒,终归会在某一天收到法院的传票。
考虑到大家没准儿以后会以开源工作者的身份编写出一款畅销软件,提前了解最热门的开源许可证,并在未来选择一个合适的可最大程度地保护自己软件权益的开源许可证,这对创业公司来讲能起到事半功倍的作用。
开源许可证总览:https://opensource.org/licenses/alphabetical
Tips
Tips
自由软件基金会(Free Software Foundation,FSF)是一个非营利组织,其使命是在全球范围内促进计算机用户的自由,捍卫所有软件用户的权利。
大家经常会在开源社区中看到Copyleft这个单词,这是一个由自由软件运动所发展出的概念,中文被翻译为“著佐权”或者“公共版权”。与Copyright截然相反,Copyleft不会限制使用者复制、修改或再发布软件。
此外,大家应该经常会听到别人说开源软件是free的,没错,开源软件就是自由的。这里的free千万不要翻译成“免费”,这样就大错特错了,这与您去酒吧看到的“第一杯免费”的意思可相差甚远。
下面我们来看一下程序员最喜欢的前6名的开源许可证,以及它们各自赋予用户的权利。
GNU通用公共许可证(General Public License,GPL):目前广泛使用的开源软件许可协议之一,用户享有运行、学习、共享和修改软件的自由。GPL最初是自由软件基金会创始人Richard Stallman起草的,其版本目前已经发展到了第3版。GPL的目的是保证程序员在开源社区中所做的工作对整个世界是有益的,所开发的软件也是自由的,并极力避免开源软件被私有化以及被无良软件公司所剥削。
现在,只要软件中包含了遵循GPL许可证的产品或代码,该软件就必须开源、免费,因此这个许可证并不适合商业收费软件。遵循该许可证的开源软件数量极其庞大,包括Linux内核在内的大多数的开源软件都是基于GPL许可证的。GPL赋予了用户著名的五大自由。
使用自由:允许用户根据需要自由使用这个软件。
复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。
修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可证。
衍生自由:允许用户深度定制化软件后,为软件注册自己的新商标,再发行衍生品的自由。
收费自由:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的。因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。
较宽松通用公共许可证(Lesser GPL, LGPL):一个主要为保护类库权益而设计的GPL开源协议。与标准GPL许可证相比,LGPL允许商业软件以类库引用的方式使用开源代码,而不用将其产品整体开源,因此普遍被商业软件用来引用类库代码。简单来说,就是针对使用了基于LGPL许可证的开源代码,在涉及这部分代码,以及修改过或者衍生出来的代码时,都必须继续采用LGPL协议,除此以外的其他代码则不强制要求。
如果您觉得LGPL许可证更多地是关注对类库文件的保护,而不是软件整体,那就对了。因为该许可证最早的名字是Library GPL,即GPL类库开源许可证,保护的对象有glibc、GTK widget toolkit等类库文件。
伯克利软件发布版(Berkeley Software Distribution, BSD)许可证:另一款被广泛使用的开源软件许可协议。相较于GPL许可证,BSD更加宽松,适合于商业用途。用户可以使用、修改和重新发布遵循该许可证的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面3个条件。
如果再发布的软件中包含开源代码,则源代码必须继续遵循BSD许可证。
如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD许可证。
不允许用原始软件的名字、作者名字或机构名称进行市场推广。
Apache许可证(Apache License):顾名思义,是由Apache软件基金会负责发布和维护的开源许可协议。作为当今世界上最大的开源基金会,Apache不仅因此协议而出名,还因市场占有率第一的Web服务器软件而享誉行业。目前使用最广泛的Apache许可证是2004年发行的2.0版本,它在为开发人员提供版权及专利许可的同时,还允许用户拥有修改代码及再发布的自由。该许可证非常适合用于商业软件,现在热门的Hadoop、Apache HTTP Server、MongoDB等项目都是基于该许可证研发的。程序开发人员在开发遵循该许可证的软件时,要严格遵守下面4个条件。
该软件及其衍生品必须继续使用Apache许可证。
如果修改了程序源代码,需要在文档中进行声明。
若软件是基于他人的源代码编写而成的,则需要保留原始代码的许可证、商标、专利声明及原作者声明的其他内容信息。
如果再发布的软件中有声明文件,则需在此文件中注明基于了Apache许可证及其他许可证。
MIT许可证(Massachusetts Institute of Technology License):源于麻省理工学院,又称为X11协议。MIT许可证是目前限制最少的开源许可证之一,用户可以使用、复制、修改、再发布软件,而且只要在修改后的软件源代码中保留原作者的许可信息即可,因此普遍被商业软件(例如jQuery与Node.js)所使用。也就是说,MIT许可证宽松到一个新境界,即用户只要在代码中声明了MIT许可证和版权信息,就可以去做任何事情,而无须承担任何责任。
Mozilla公共许可证(Mozilla Public License,MPL):于1998年初由Netscape公司的Mozilla小组设计,原因是他们认为GPL和BSD许可证不能很好地解决开发人员对源代码的需求和收益之间的平衡关系,因此便将这两个协议进行融合,形成了MPL。2012年年初,Mozilla基金会发布了MPL 2.0版本(目前为止也是最新的版本),后续被用在Firefox、Thunderbird等诸多产品上。最新版的MPL公共许可证有以下特点。
在使用基于MPL许可证的源代码时,后续只需要继续开源这部分特定代码即可,新研发的软件不用完全被该许可证控制。
开发人员可以将基于MPL、GPL、BSD等多种许可证的代码一起混合使用。
开发人员在发布新软件时,必须附带一个专门用于说明该程序的文件,内容要有原始代码的修改时间和修改方式。
估计大家在看完上面琳琅满目的许可证后,会心生怨念:“这不都差不多吗?到底该选哪个呢?”写到这里时,刘遄老师也是一脸无助:“到底该怎么让大家进行选择呢?”搜肠刮肚之际突然眼前一亮,乌克兰程序员Paul Bagwell创作的一幅流程图正好对刚才讲过的这6款开源许可证进行了汇总归纳,具体如下图所示。
开源许可证的选择流程图
众所周知,绝大部分的开源软件在安装完毕之后即可使用,很难在软件界面中找到相关的收费信息。所以经常会有人提问:“刘老师,开源社区的程序员总要吃饭的呀,他们是靠什么营利呢?”针对这个问题,网络上好像只有两种声音:
情怀——开源社区的程序员觉悟好,本领强,写代码纯粹是为了兴趣以及造福社会;
服务——先让用户把软件安装上,等用好、用习惯之后,再通过提供一些维护服务来营利。
这两种解释都各有道理,但是不够全面。读者也不要把开源软件和商业软件完全对立起来,因为好的项目也需要好的运营模式。就开源软件来讲,盈利模式具体包括以下5种。
多条产品线:如MySQL数据库便有个人版和企业版两个版本,即个人版完全免费,起到了很好的推广作用;企业版则通过销售授权许可来营利。
技术服务型:JBoss应用服务器便是典型代表,JBoss软件可自由免费使用,软件提供方通过技术文档、培训课程以及定制开发服务来盈利。
软硬件结合:比如IBM公司在出售服务器时,一般会为用户捆绑销售AIX或Linux系统来确保硬件设施的营利。
技术出版物:比如O’Reilly既是一家开源公司,也是一家出版商,诸多优秀图书都是由O’Reilly出版的。
品牌和口碑:微软公司曾多次表示支持开源社区。大家对此可能会感到意外,但这是真的!Visual Studio Code、PowerShell、TypeScript等软件均已开源。大家是不是瞬间就对微软公司好感倍增了呢?买一份正版系统表示支持也就是人之常情了。
为什么学习Linux系统?
“为什么学习Linux系统?”很多学生会脱口而出:“因为Linux系统是开源的,所以要去学习。”其实这个想法是完全错误的!开源的操作系统少说有100个,开源的软件至少也有10万个,为什么不去逐个学习?所以上面谈到的开源特性只是一部分优势,并不足以成为您付出精力去努力学习的理由。
对普通用户来讲,开源共享精神仅具备锦上添花的效果,我们更加看重的是,Linux系统是一款优秀的软件产品,具备类似UNIX系统的程序界面,并继承了其良好的稳定性。而且,开源社区也在源源不断地提供高品质代码以及丰富的第三方软件支持,能够在高可用性、高性能等方面较好地满足工作需求。
当然,大多数读者应该都是从微软的Windows系统开始了解计算机和网络的,因此肯定会有这样的想法“Windows系统很好用啊,而且也满足日常工作需求呀”。客观来讲,Windows系统确实很优秀,但是在安全性、高可用性、高性能方面却难以让人满意。您应该见过下面这张图片。虽然蓝屏不是经常可以看到的,但若这样的“事故”发生在生产环境中则是绝对不敢想象的。
大家可以讨论一下,为什么要在需要长期稳定运行的网站服务器上、在处理大数据的集群系统中,以及需要协同工作的服务器环境中采用Linux系统呢?
还有一个更极端的应用场景——全球超级计算机竞赛。每年全球会评选出计算峰值速度最快的500台超级计算机,其中包括美国的Summit、Sierra和中国神威·太湖之光、天河二号等超级计算机。截至本书写作时,这些超级计算机无一例外采用的都是Linux操作系统。
为了能更清晰地比较Linux和Windows具体的差别,我们进行了简单归纳,如下图所示。
坦白来讲,每位投身于Linux行业的技术人或者程序员只要听到开源项目就会由衷地感到自豪,这是一种从骨子里带有的独特情怀。开源企业不单纯是为了利益,而是互相扶持,努力服务好更多的客户。开源社区更是与全球用户唇齿相依,任何人都可以贡献自己的代码与灵感,任何人也都可以从开源社区中受益。如此良性循环下来,开源软件便具备了4大关键性优势。
低风险:使用闭源软件无疑把命运交付给他人,一旦封闭的源代码没有人来维护,您将进退维谷。而且相较于商业软件公司,开源社区很少存在倒闭的问题。并且,源代码一旦公布于世,任何人或组织都可以接手进行新的维护工作。
高品质:相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试的用户数量众多,一般的bug还没有等暴发就已经被修补。另外,在灵感不断碰撞、代码不断迭代的交流氛围中,程序员也不可能将“半成品”上传到开源社区中。
低成本:开源工作者大多都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。
更透明:没有哪个笨蛋会把木马或后门代码放到开源项目中,这样无疑是把自己的罪行暴露在阳光之下,很容易被他人发现。
总结Linux系统的发展历程,
我们从1965年开始讲起。当时,为了解决服务器的终端连接数量的限制和处理复杂计算的问题,贝尔(Bell)实验室、通用电气(GE)公司以及麻省理工学院(MIT)决定联手打造一款全新的操作系统——MULTICS(多任务信息与计算系统)。但由于开发过程不顺利,遇到了诸多阻碍,后期连资金也出现了短缺现象,最终在1969年,随着贝尔实验室的退出,MULTICS也终止了研发工作。而同年,MULTICS的开发人员Ken Thompson使用汇编语言编写出了一款新的系统内核,当时被同事戏称为UNICS(联合信息与计算系统),在贝尔实验室内广受欢迎。
1973年时,C语言之父Dennis M. Ritchie了解到UNICS系统并对其非常看好,但汇编语言有致命的缺点——需要针对每一台不同架构的服务器重新编写汇编语言代码,才能使其使用UNICS系统内核。这样不仅麻烦而且使用门槛极高。于是Dennis M. Ritchie便决定使用C语言重新编写一遍UNICS系统,让其具备更好的跨平台性,更适合被广泛普及。开源且免费的UNIX系统由此诞生。
但是在1979年,贝尔实验室的上级公司AT&T看到了UNIX系统的商业价值和潜力,不顾贝尔实验室的反对声音,依然坚决做出了对其商业化的决定,并在随后收回了版权,逐步限制UNIX系统源代码的自由传播,渴望将其转化成专利产品而大赚一笔。崇尚自由分享的黑客面对冷酷无情的资本力量心灰意冷,开源社区的技术分享热潮一度跌入谷底。此时,人们也不能再自由地享受科技成果了,一切都以商业为重。
面对如此封闭的软件创作环境,著名的黑客Richard Stallman在1983年发起了GNU源代码开放计划,并在1989年起草了著名的GPL许可证。他渴望建立起一个更加自由和开放的操作系统和社区。之所以称之为GNU,其实是有“GNU’s Not Unix!”的含义,这暗戳戳地鄙视了一下被商业化的UNIX系统。但是,想法和计划只停留在口头上是不够的,还需要落地才行,因此Richard便以当时现有的软件功能为蓝本,重新开发出了多款开源免费的好用工具。在1987年,GNU计划终于有了重大突破,Richard和社区共同编写出了一款能够运行C语言代码的编译器——gcc(GNU C Compiler)。这使得人们可以免费地使用gcc编译器将自己编写的C语言代码编译成可执行文件,供更多的用户使用,这进一步发展壮大了开源社区。随后的一段时间里,Emacs编辑器和bash解释器等重磅产品陆续亮相,一批批的技术爱好者也纷纷加入GNU源代码开放计划中来。
在1984年时,UNIX系统版权依然被AT&T公司死死地攥在手里,AT&T公司明确规定不允许将代码提供给学生使用。荷兰的一位大学教授Andrew(历史中被遗忘的大神)为了能给学生上课,竟然仿照UNIX系统编写出了一款名为Minix的操作系统。但当时他只是用于课堂教学,根本没有大规模商业化的打算,所以实际使用Minix操作系统的人数其实并不算多。
芬兰赫尔辛基大学的在校生Linus Torvalds便是其中一员,他在1991年10月使用bash解释器和gcc编译器等开源工具编写出了一个名为Linux的全新的系统内核,并且在技术论坛中低调地上传了该内核的0.02版本。该系统内核因其较高的代码质量且基于GNU GPL许可证的开放源代码特性,迅速得到了GNU源代码开放计划和一大批黑客程序员的支持,随后Linux正式进入如火如荼的发展阶段。Linus Torvalds最早发布的帖子内容的截图如下。
Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-) Linus torvaldsLinux系统的吉祥物名为Tux,是一只呆萌的小企鹅。相传Linus Torvalds在童年时期去澳大利亚的动物园游玩时,不幸被一只企鹅咬伤,所以为了“报复”就选择了这个物种作为吉祥物。这个故事是否可信无从考证,但万幸是只企鹅,而不是老虎或者狮子,否则就不是换个Logo这么简单的事了。
1994年,红帽(Red Hat)公司创始人Bob Young在Linux系统内核的基础之上,集成了众多的常用源代码和程序软件,随后发布了红帽操作系统并开始出售技术服务,这进一步推动了Linux系统的普及。1998年以后,随着GNU源代码开放计划和Linux系统的继续火热,以IBM和Intel为首的多家IT巨头企业开始大力推动开放源代码软件的发展,很多人认为这是一个重要转折点。2012年,红帽公司成为全球第一家年收入10亿美元的开源公司,后来是20亿、30亿……不断刷新纪录。
时至今日,Linux内核已经发展到5.6版本,衍生系统也有数百个版本之多,它们使用的都是Linus Torvalds开发维护的Linux系统内核。红帽也成为开源行业及Linux系统的领头羊。
0.5 常见的Linux系统版本
在介绍常见的Linux系统版本之前,首先需要区分Linux系统内核与Linux发行套件系统的不同。
Linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、磁盘、文件系统控制及多任务功能的系统核心程序。
Linux发行套件系统是我们常说的Linux操作系统,也就是由Linux内核与各种常用软件的集合产品。
全球大约有数百款的Linux系统版本,每个系统版本都有自己的特性和目标人群——有的主打稳定性和安全性,有的主打免费使用,还有的主要突出定制化强等特点。下面从用户的角度选出最热门的几款进行介绍。
Tips
本书全篇将以“Linux系统”来替代“Linux发行套件系统”这个词。红帽企业版系统(RHEL,RedHatEnterpriseLinux)
前文在介绍Linux系统的发展历史时,曾提到过红帽公司。红帽公司作为全球知名的开源技术厂商,某产品值得我们放到第一位来介绍。红帽公司成立于1994年,于1998年在纳斯达克上市,自从1999年起陆续收购了包括JBoss中间件供应商、CentOS(社区企业操作系统)、Ceph企业级存储业务等在内的数十家高科技公司及热门产品,这么做的目的当然是为了对主营业务红帽企业版Linux进行增强。
红帽企业版Linux最初于2002年3月面世,当年Dell、HP、Oracle以及IBM公司便纷纷表示支持该系统平台的硬件开发,因此红帽企业版Linux系统的市场份额在近20年时间内不断猛增。红帽企业版Linux当时是全世界使用最广泛的Linux系统之一,在世界500强企业中,所有的航空公司、电信服务提供商、商业银行、医疗保健公司均无一例外地通过该系统向外提供服务。
红帽企业版Linux当前的最新版本是RHEL 8,该系统具有极强的稳定性,在全球范围内都可以获得完善的技术支持。该系统也是本书和红帽认证考试中默认使用的操作系统。
CentOS社区企业操作系统(Community Enterprise Operating System)
顾名思义,CentOS是由开源社区研发和维护的一款企业级Linux操作系统,在2014年1月被红帽公司正式收购。CentOS系统最为别人广泛熟悉的标签就是“免费”。如果您问一个运维“老鸟”选择CentOS系统的理由,他绝对不会跟你说更安全或更稳定,而只是说两个字——免费!由于红帽企业版Linux是开源软件,任何人都有修改和创建衍生品的权利,因此CentOS便是将红帽企业版Linux中的收费功能通通去掉,然后将新系统重新编译后发布给用户免费使用的Linux系统。也正因为其免费的特性,CentOS拥有了广泛的用户。
从本质上来说,由于CentOS是针对红帽企业版Linux进行修改后再发布的版本,因此不会针对它单独开发新功能,CentOS的版本号也是随红帽企业版Linux而变更。例如,CentOS 8.0对应的就是RHEL 8.0,CentOS 8.1对应的就是RHEL 8.1;以此类推。再就是,CentOS系统和RHEL系统的软件包可以通用。也就是说,如果工作中用的是RHEL,但是在安装某款软件时只找到了该软件的CentOS系统软件源,也是可以正常安装该软件的。
Fedora Linux
Fedora翻译为中文是“浅顶软呢男帽”的意思,翻译之后跟Linux系统很不搭界,所以更多人干脆将其音译为“费多拉”系统。Fedora Linux是正正经经的红帽公司自己的产品,最初是为了给红帽企业版Linux制作和测试第三方软件而构建的产品,孕育了最早的开源社群,固定每6个月发布一个新版本,当前在全球已经有几百万的用户。
Fedora是桌面版本的Linux系统,可以理解成是微软公司的Windows XP或者Windows 10。它的目标用户是应付日常的工作需要,而不会追求稳定性的人群。用户可以在这个系统中体验到最新的技术和工具,当这些技术和工具成熟后才会被移植到红帽企业版Linux中,因此Fedora也被称为RHEL系统的“试验田”。运维人员如果想每天都强迫自己多学点Linux知识,保持自己技术的领先性,就应该多关注此类Linux系统的发展变化和新特征,不断调整自己的学习方向。
Debian Linux
一款基于GNU开源许可证的Linux系统,历史久远,最初发布于1993年9月。Debian的名字取自创始人Ian Murdock和他女朋友Debra的姓氏组合。在维基百科中,Debian被翻译为“蝶变”系统,多么浪漫而富有诗意的名字。但可惜国内的用户不买账,看着Logo一圈一圈的形状,硬生生地将经念歪了。这么多年下来,现在反而很少有人听说过蝶变系统这个名字了。
Debian系统具有很强的稳定性和安全性,并且提供了免费的基础支持,可以良好地适应各种硬件架构,以及提供近十万种不同的开源软件,在国外拥有很高的认可度和使用率。虽然Debian也是基于Linux内核,但是在实际操作中还是跟红帽公司的产品有一些差别,例如RHEL 7和RHEL 8分别使用Yum和DNF工具来安装软件,而Debian使用的则是APT工具。
Ubuntu Linux
ubuntu是一款桌面版Linux系统,以Debian为蓝本进行修改和衍生而来,发布周期为6个月。Ubuntu的中文音译为“乌班图”,这个词最初来自于非洲南部部落使用的祖鲁语,意思是“我的存在是因为大家的存在”,体现了一种谦卑、感恩的价值观,寓意非常好。
Ubuntu系统的第一个版本发布于2004年10月。2005年7月,Ubuntu基金会成立,Ubuntu后续不断增加开发分支,有了桌面版系统、服务器版系统和手机版系统。据调查,Ubuntu最高峰时的用户达到了10亿人。尽管Ubuntu基于Debian系统衍生而来,但会对系统进行深度化定制,因此两者之间的软件并不一定完全兼容。Ubuntu系统现在由Canonical公司提供商业技术支持,只要购买付费技术支持服务就能获得帮助,桌面版系统最长时间3年,服务器版系统最长时间5年。
openSUSE Linux
一款源自德国的Linux系统,在全球范围内有着不错的声誉及市场占有率。openSUSE的桌面版系统简洁轻快易于使用,而服务器版本则功能丰富极具稳定性,而且即便是“菜鸟”也能轻松上手。虽然openSUSE在技术上颇具优势,而且大大的绿色蜥蜴Logo人见人爱,只可惜命途多舛,赞助和研发该系统的SuSE Linux AG公司由于效益不佳,于2003年被Novell公司收购,而Novell公司又因经营不佳而在2011年被Attachmate公司收购。而到了2014年,Attachmate公司又被Micro Focus公司收购,后者仍然只把维护openSUSE系统的团队当作公司内的一个部门来运营。
即便如此,依然不妨碍openSUSE系统的坚强发展,用户可以完全自主选择要使用的软件。例如,针对GUI环境,就提供了诸如GNOME、KDE、Cinnamon、MATE、LXQt、Xfce等可选项;除此之外,还为用户提供了数千个免费开源的软件包。
Kali Linux
跟上面的呆萌大蜥蜴相比,Kali Linux的Logo似乎有点凶巴巴,一副不好惹的样子。这款系统一般是供黑客或安全人员使用的,能够以此为平台对网站进行渗透测试,通俗来讲就是能“攻击”网站。Kali Linux系统的前身名为BackTrack,其设计用途就是进行数字鉴识和渗透测试,内置有600多款网站及系统的渗透测试软件,包括大名鼎鼎的Nmap、Wireshark、sqlmap等。Kali Linux能够被安装到个人电脑、公司服务器,甚至手掌大小的树莓派(一款微型电脑)上,可以让人有一种随身携带了一个武器库的感觉,有机会真应该单独写本书聊聊它。
Gentoo Linux
Gentoo翻译为中文是“巴布亚企鹅”。终于找到一个跟Linux吉祥物——企鹅相关的名字了。巴布亚企鹅是企鹅家族中体型最大的物种之一,游泳时速最快可达36千米——多么灵活的胖子!
Gentoo系统最大的特色就是允许用户完全自由地进行定制。开发人员Daniel曾经说过:“Gentoo系统的设计出发点就是让用户随意使用,没有限制地使用”。只要理解了这句话,后面也就不需要再解释什么了。在Gentoo系统中,任何一部分功能(包括最基本的系统库和编译器)都允许用户重新编译;用户也可以选择喜欢的补丁或者插件进行定制。但是,也因为Gentoo极高的自定制性,导致操作复杂,因此仅适合有经验的运维人员使用。有兴趣的读者可以在学习完本书后尝试一下该系统。
如果大家今后真的安装了Gentoo系统,千万别忘记试一下Portage工具。这款软件管理工具以模块化、可移植、易维护和灵活性而著称,几乎可以无限制地适应用户的计算机硬件。
深度操作系统(deepin)
在过去的十多年,基于开源系统二次定制开发的“国产操作系统”陆续出现过一些,但大多发展不好,深度操作系统却是少数能够将技术研发与商业运作结合起来的成功案例。据Deepin的官网介绍,该系统是由武汉深之度科技有限公司于2011年基于Debian系统衍生而来的,提供32种语言版本,目前累计下载量已近1亿次,用户遍布100余个国家/地区。
就Deepin来讲,最吸引人的还是它的本土化工作。Deepin默认集成了诸如WPS Office、搜狗输入法、有道词典等国内常用的软件,对“小白”用户相当友好。当然,Deepin的技术研发能力相较于国际水平肯定还有差距,这点我们也要承认并正视。虽然刘遄老师偶尔也会在微博上调侃一下,但谁又不希望自己国家的技术发展越来越强大呢?
总结来说,虽然上述不同版本的Linux系统在界面上可能差别很大,或是在操作方法上不尽相同,但只要是基于Linux内核研发的,我们都称之为Linux系统。大家手中的这本书是基于最新发布的RHEL 8系统编写而成,书中内容及实验完全通用于当前主流的Linux系统。也就是说,当您学完本书后,即便公司内的生产环境部署的是CentOS、Fedora等,我们也照样可以搞得定。更重要的是,本书配套资料中的ISO系统镜像与红帽RHCSA及RHCE考试基本保持一致,因此很适合备考红帽认证的考生使用。
另外,需要强调的是,现在国内大多数Linux相关的图书都是基于CentOS系统编写的,作者大多也会给出围绕CentOS系统进行写作的一系列理由,但是很多理由都站不住脚,根本没有剖析到CentOS系统与RHEL系统的本质关系。CentOS系统是通过把RHEL系统释放出的程序源代码经过二次编译之后生成的一种衍生Linux系统,其命令操作和服务配置方法与RHEL完全相同,只是去掉了RHEL的一些收费功能,而且还不提供任何形式的技术支持,出现问题后只能由运维人员自己解决。
经过这般分析基本上可以判断出,选择CentOS系统的理由只剩下一个——免费!当人们大举开源、免费、正义的旗帜来宣扬CentOS系统的时候,殊不知CentOS系统其实早在2014年年初就已经被红帽公司“收编”,当前只是战略性的免费而已。再者,根据GNU GPL许可协议,我们同样也可以免费使用RHEL系统,甚至是修改其代码创建衍生产品。开源系统在自由程度上没有任何差异,更无关道德问题,请大家务必要辨别清楚。
0.6 优秀的RHEL 8系统
2019年年末,Red Hat公司发布了当前最新的红帽企业版Linux系统——RHEL 8,彼时国内外各大媒体都给了不少特写镜头,行业也给予了硕大的期待。但是,时至今日RHEL 8系统的市场占有率却一直不温不火,于是有人开始对RHEL 8系统的未来表示担忧,甚至有人还拿出各种论调来唱衰Linux系统,觉得开源厂商已经过了事业最高点,要在服务器领域让步于Windows系统了。这些话其实并没必要去反驳,任何一个产品都会有其拥趸和黑粉,时间会向所有人证明一切。我们现在只是来单纯地聊一聊这个RHEL 8系统。
在正式开聊之前,希望读者对Linux系统的特性和运维领域有基本的了解,知道Linux系统在服务器领域中占据着不可小觑的市场份额,认识到Red Hat厂商对Linux系统及整个开源行业的重要影响,更知道CentOS系统其实是RHEL系统的衍生品。如果您以前使用过一段时间的Linux系统,那么我们就更能顺畅地讨论“红帽RHEL 8系统是否是一个失败的产品”这个问题。
我们先来看一个烫手的热议问题:“为什么半年过去了,RHEL 8系统的市场份额依然不温不火?要不要返回去学习老版本的Linux系统?”甚至有阴谋论说是美国在使用新版本的Linux系统来搜集全球用户信息,告诫大家千万不要去碰。这个问题必须要回应,否则更多的阴谋论会层出不穷,甚至会让国内某些认知能力欠缺的媒体对开源行业产生误解。
首先,RHEL是企业版的服务器系统而不是用来玩耍折腾的桌面版系统,并不是能随意更换的,更何况作为桌面版系统的Windows 7在2009年7月14日发布之后,也整整用了4年才开始真正普及,难道在2009年到2013年间,Windows 7就是失败的产品吗?再者,RHEL 8系统创新式地集成了Docker虚拟化技术,支持XFS文件系统,兼容微软的身份管理,并采用systemd作为系统初始化进程,其性能和兼容性相较于之前版本都有了很大的改善,很明显是一款非常优秀的操作系统。最后,其实从纳入OpenStack、Docker、Cockpit以及Ansible等技术的决策上来讲,就应该相信红帽公司的开发团队不是在闭门造车。应该重新思考到底是哪里出了问题。
当大家真正从事运维工作后,相信就能回答这个问题了。因为运维人员每天都在想:“现在的环境跑得好好的,为什么要换呢?”重新部署生产环境可不是说装上操作系统就万事大吉,也不是把软件随便安装上就能拍屁股走人的,还要考虑升级带来的一系列风险。
日后的生产环境出了问题,谁来负责?
新系统是否能与旧的软件兼容?
不再兼容的软件是否有升级版本?
新的系统或软件是否有bug?
安全性如何,审计怎么做?
之前购买的第三方技术支持是否可以具备相应的能力?
升级后是否会影响到某些软件的版权,是否需要重新付费?
不习惯新系统带来的变化怎么办?
费力升级后对自己有什么好处?
……
我们来看一个极端的例子。现在全国各地有几十万台ATM机,绝大部分使用的是Windows XP系统,但微软公司已经从2014年4月8日起停止对Windows XP进行任何的维护,甚至不再提供补丁服务。假设中国人民银行发布招标公告,想将ATM机的操作系统统一替换成Windows 7版本。现在我们敢不敢接这个活?如果接了,且不说旷日持久地升级和调试工作,也不提升级期间因业务关停带来的损失,我们就看一个小问题——用户在从升级后的ATM机上取钱时,如果有钞票多吐出来,这个责任该由谁承担?
当然,上面的情况非常极端,描述的也比较偏激,目的只是给大家举个例子,让没有工作经验的同学也能迅速明白“生产环境中的设备不要随便乱动”的道理。但这绝对不是说运维工作就是日常“丢锅”,不作为。在需要升级的时候,我们需要当机立断,采取行动,不能有一丝马虎。
Tips
2012年5月19日,在英国汉普郡利明顿附近的小镇Milford-on-Sea上,一台ATM机在维护后发生故障,在顾客取款时会吐出双倍数额的现金。此消息不胫而走之后,总共有200名顾客取走现金,有的人甚至取走了数千英镑。“狂欢”总共持续了两个多小时,随后警方赶到现场,关闭了这台ATM机。
客观来讲,RHEL 7和RHEL 8系统的改变都很大,最重要的是它们采用了systemd作为初始化进程,替换了很多原有的老命令。这样一来,几乎之前所有的运维自动化脚本都需要修改。那么,到底还要不要升级到新版本呢?当然,也不是说服务器机房中的生产环境从不更新换代。除了硬件更替外,当工作需求超过了当前软件版本的能力范围时,就必须要进行升级了。
比如,RHEL 7系统使用的Linux内核还是3.10版本,而现在最新的RHEL 8系统使用的内核版本已经是4.18,两个系统之间差了一个大版本号。再者,RHEL 7在安装软件时使用的是基于v3版本的Yum技术,这个版本的技术滞后且效率低,而RHEL 8在安装软件时则使用的是DNF技术。DNF技术已经相当于Yum 4.x版本,其功能就有了巨大的差别。此外,RHEL 8系统最大支持24TB的物理内存,比RHEL 8系统整整翻了一倍。这些更新数不胜数,您现在还觉得会一直使用旧的版本吗?
早在2014年年初,Fedora系统首次采用了systemd系统初始化进程,当时我就断言RHEL 7系统也会使用systemd,所以当即更新了自己的培训课程。这也让身在其他培训机构还在学习init参数的学员心生羡慕。所以,不论是学习Linux还是编程语言,都应该选择当前稳定且最新的版本作为学习环境。这样在学完后,从概率上来讲能适应的工作也会越多。
0.7 了解红帽认证
红帽公司成立于1993年,总部位于美国,分支机构遍布全球,是全球首家收入超10亿美元的开源公司。红帽公司作为全球领先的开源和Linux系统提供商,其产品已被业界广泛认可并使用,尤其是RHEL系统在业内拥有超高的Linux系统市场占有率。当前,红帽公司除了提供操作系统之外,还提供了虚拟化、中间件、应用程序、管理和面向服务架构的解决方案。
关注国际时事或炒股的同学一定很熟悉标准普尔500指数,在标准普尔公司选择的这500支股票中,由400支工业股票、20支运输业股票、40支公共事业股票以及40支金融业股票共同组成,它们联合反映了美国国家的经济情况,其中红帽公司就在其中(代码:RHT)。
红帽认证是由红帽公司推出的Linux认证,该认证被认为是Linux行业乃至整个IT领域价值最高的认证之一。红帽认证考试全部采用上机形式,在考察学生基础理论能力的同时还考察了实践动手操作和排错能力。红帽公司针对红帽认证制定了完善的专业评估与认证标准,其认证主要包括红帽认证系统管理员(RHCSA)、红帽认证工程师(RHCE)与红帽认证架构师(RHCA)。
2014年6月10日,红帽公司在发布新版红帽企业版系统(RHEL 7)的当天即在红帽英文官网更新了其对培训政策的调整,原先的红帽认证技术专家(RHCT)被RHCSA替代,彻底退出历史舞台。考生只有先考试通过RHCSA认证后才能考取RHCE认证(一般是在一天的上下午分别完成)。
由于受到新冠疫情的影响,新版RHEL 8认证的发布时间足足推迟了一年,最终于2020年8月1日改版完成。新版的RHEL 8认证延续了RHCSA、RHCE、RHCA的阶梯架构,明确了考生不能跳级考试。这意味着只要取得了RHCA认证,就一定具备了RHCE和RHCSA认证所需的全部知识。
最新的红帽证书的编码共9位,由“考试年份-随机码-随机码”组成,具有唯一性,且会伴随证书持有人的一生,即使后期再考下更高级别的红帽认证,该编码也不会变。
对于已经下定决心考取红帽认证的同学,还应该注意考试年份的问题。假设您是一家公司的招聘人员,当前收到了两份简历,这两份简历唯一的不同是,其中一人的证书编码是“120-xxx-xxx”,另一位是“200-xxx-xxx”。您会怎么选择呢?
有经验的招聘人员一定会选择120证书编码开头的应聘人员,因为他已经从业至少10年时间了。而这位以200证书编码开头的应聘人员,在2020全年里都会被当作新手来对待。很多读者想到自己也要经历一遍从新手到老手的痛苦的蜕变过程,都表示很扎心。总结来说,考取红帽认证最好的时间是10年前,其次是现在。
红帽公司将RHCE 8版本的认证课程分为3门——RH124、RH134、RH294。RH124涵盖了系统管理的基础知识,例如安装系统、用户管理、网络管理、远程管理以及软件管理等;RH134涉及Shell自动化脚本的编写、磁盘管理、计划任务、系统安全维护等;RH294主要介绍Ansible自动化管理工具的使用方法。
红帽认证考试的形式为上机实操,且在一天内考完。上午的RHCSA认证的考试时长是2.5小时,对应的是RH124和RH134的课程内容,下午的RHCE认证的考试时长是3.5小时,对应的是RH294课程内容。两门考试的成绩通常会在考试结束后的72小时内公布。RHCSA和RHCE认证考试的满分均为300分,达到210分为合格,会连同成绩和电子证书发送到考试邮箱中。
RHCSA属于Linux系统的初级认证,主要考核对系统平台的管理能力,比较适合Linux爱好者。该认证要求考生对Linux系统有一定的了解,并且能够熟练使用Linux命令来完成以下任务:
红帽认证系统管理员(RHCSA,Red Hat Certified System Administrator)属于Linux系统的初级认证,主要考核对系统平台的管理能力,比较适合Linux爱好者。该认证要求考生对Linux系统有一定的了解,并且能够熟练使用Linux命令来完成以下任务:
访问命令行;
使用命令行管理文件;
创建、查看和编辑文本文件;
管理本地用户和群组;
监控和管理Linux进程;
控制服务和守护进程;
利用文件系统权限控制文件访问;
分析和存储日志文件;
配置和确保OpenSSH服务的安全;
安装和更新软件包;
访问Linux文件系统;
管理Linux网络;
使用Kickstart安装红帽企业版Linux;
管理文件系统和逻辑卷;
管理计划作业;
访问网络文件系统;
管理SELinux;
控制防火墙;
执行故障排除任务。
RHCE属于Linux系统的中级水平认证,主要考核对常见服务的部署和维护能力,相较于RHCSA认证来说难度更大,而且要求考生必须已获得RHCSA认证。RHCE 8版本的认证与RHCE 7版本的认证相比还有一个重要区别,那就是增加了Ansible的知识,而且每道考题都要求用Ansible自动化完成,其目的主要是为了让用户适应当前对自动化部署工作的需求。这部分内容原本应是顶级RHCA认证中DO407课程的知识。随着考试难度的增高,新版RHCE认证的含金量也越高。总之,RHCE认证适合有基础的Linux运维管理员,主要考察对下列服务的管理与配置能力:
在控制节点上安装和配置Ansible或红帽Ansible引擎;
创建和管理托管主机列表,并使它们为Ansible自动化做好准备;
通过命令行运行单个ad hoc自动化任务;
编写Ansible playbook(剧本)以便一致地自动执行多个任务,并将其应用于托管主机;
使用变量和fact对剧本进行参数化处理,并使用Ansible vault保护敏感数据;
编写和重用现有的Ansible角色,以简化剧本的创建并重用代码;
使用Ansible自动执行常见的红帽企业版Linux系统的管理任务。
Tips
红帽RHCSA和RHCE认证考试在一天举行,如果两门都通过则获得RHCSA与RHCE双认证;如果RHCSA通过,而RHCE挂科,则可以获得RHCSA认证,在补考并通过RHCE认证后获得双认证;如果RHCSA挂科,而RHCE通过,则无认证证书,需要补考并通过RHCSA后方可获得RHCSA与RHCE双认证。RHCA属于Linux系统的最高级别认证,是公认的Linux操作系统顶级认证,目前中国仅有不到3000人(2020年更新数据)持有该认证。考生需要在获得RHCSA与RHCE认证后再通过5门课程的考试才能获得RHCA认证,因此难度最大,备考时间最长,费用也最高(考试费约在1.8万元~2.1万元人民币)。该认证考察的是考生对红帽卫星服务、红帽系统集群、红帽虚拟化、系统性能调优以及红帽云系统的安装搭建与维护能力。
下表为2020年最新版的RHCA考试课程。欲取得红帽RHCA认证,您必须通过以下任意5门认证考试。
考试代码 认证名称 EX210 红帽 OpenStack 认证系统管理员考试 EX220 红帽混合云管理专业技能证书考试 EX236 红帽混合云存储专业技能证书考试 EX248 红帽认证 JBoss 管理员考试 EX280 红帽平台即服务专业技能证书考试 EX318 红帽认证虚拟化管理员考试 EX401 红帽部署和系统管理专业技能证书考试 EX413 红帽服务器固化专业技能证书考试 EX436 红帽集群和存储管理专业技能证书考试 EX442 红帽性能调优专业技能证书考试
Tips
红帽RHEL 8版本的RHCA认证依然需要至少通过5门考试,每门考试的内容完全不同,但均为210分合格(70%)。而且红帽公司非常注重RHCA认证的实用性,所以课程总是在随行业趋势而不断调整。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/98437.html