CentOS系统变化看开源演进
创始人
2024-06-01 17:24:18
0

CentOS社区还存不存在?CentOS项目还存不存在?众多CentOS用户将何去何从?伴随CentOS停更,大家可能会有这样那样的疑问,今天针对以上问题,我来进行一一解答。

CentOS实际上有两个变种,一个叫做CentOS Linux,另外一个叫CentOS Stream。

CentOS Linux出现比较早,大家所知道的CentOS都是CentOS Linux。而CentOS Stream是两年前红帽对外推出的,推出CentOS Stream之后就相当于把CentOS Linux逐渐做了升级换代。

这就好比是,你过去用的是iphone4,现在是iphone5,相当于是一个升级换代,换代之后主打的名字也发生了一些变化——从CentOS Linux到CentOS Stream,后面我会讲到,这个变化本身是跟开源开发模式的演进,以及市场需求的变化有关系的。

接下来我相信大家还会有其他的一些疑虑,比如CentOS Linux到CentOS Stream是不是稳定的?我先简单一句话回答,它是稳定的。具体怎么稳定,听我一点点给大家引出来后面的一些细节。

Linux发行版开发模式的演进

咱们先来看看Linux发行版开发模式的演进,这可能也是好多开源的开发方式的演进。Linux已经走过了31年,早期完全凭爱好做Linux,那时候的Linux也正像Linus Torvalds本人讲的,就是为了好玩、有趣才做的Linux。

逐渐的Linux这种开源的开发方式被更多的人所接受,随着Linux逐渐走向企业级,Linux逐渐不是一个玩具了。

Linux发行版有社区版、企业版,我们主要讲有了企业需求之后,Linux发展的几大阶段。

Fedora时代

第一个阶段是所谓的v1.0阶段,就是Fedora的时代。其实很多人也用过Fedora,Fedora的桌面还是很炫酷的。

为什么当时会出现Fedora Linux呢?主要是取决于两方面原因,而且这两个原因还是有些对立的。一个是说如果要做企业级的Linux,系统需要足够稳定,这就意味着你的更新也许不能太频繁,即使更新了,你的兼容性也要保证得特别好。

但是对于创新来讲,如果过多考虑稳定、兼容,创新的包袱就会比较重。如何平衡创新和稳定两者之间的关系?红帽把自己原来统一的Redhat Linux,分成了Fedora和Redhat Enterprise Linux。

不光是红帽,其他主流的厂商,像SuSE也是这样的方式。这样两者区分之后,对于不同的用户,如何去选用呢?如果说我们是企业用户,我们就当然选择稳定版,对于社区用户,你就用Fedora。但那时候做Linux开发的时候,不同阶段各有侧重点,那个时候更侧重Linux操作系统本身的东西,特别是图形化桌面的一些功能。

其实尽管红帽已经不做桌面了,但是在Gnome里面的贡献依旧很大。在那个时候,Fedora这种模式是很好的,它把最新的一些软件包给到你。那时候的桌面其实已经很成熟了,但是可能主要是因为兼容性、稳定性的原因,Linux的桌面毕竟用的人少,所以并没有完全发展起来。

CentOS Linux时代

再往后发展,因为逐渐走向移动互联网,类似于安卓这样的东西就出现了,本身桌面的份额也越来越小,在这方面有Windows、有苹果,所以对于Linux桌面来讲,后来逐渐的各大发行版厂商都放弃了在桌面上的投入,比如红帽,再比如SuSE。

在服务器端我们逐渐走向了云、虚拟化。这个方向成为关注焦点后,如果延续之前我们讲的云上创新,那么虚拟化、云、容器或者容器里面的创新我们都基于Fedora去做可不可以?企业级的用RHEL。后来发现这种方式其实不是很好,为什么呢?因为我们希望有稳定的内核,我们认为操作系统是一个最底层软件,我们不希望最底层软件出毛病。

这时候,大家需要一个跟RHEL品质几乎相同的东西作为它的底层去做上面的一些开发,这时候CentOS就应运而生了。但CentOS是社区里出现的,并不是红帽给它做出的一个CentOS。CentOS出现之后,它的理念实际上很契合当时Linux上开发的趋势,所以红帽就把CentOS收购过来,收购过来之后,CentOS Linux继续按照原有的技术方向去发展。

这时候也有一个平衡的问题,一方面CentOS Linux是我们要在这上面做一些基于虚拟化、云之上的创新;另外一方面,它的基础要足够稳定。

所以我刚才讲的这一段历史,就是上边这幅图里所展现的。但是我相信可能我们有好多朋友了解CentOS,可能只知道左边这一部分——我们知道RHEL红帽企业级Linux是来自于Fedora的,可以说Fedora是RHEL的试验场。CentOS是基于RHEL出现的一个下游复刻版本,跟RHEL近乎是一样的,所以它的稳定性是毫不怀疑的。

但是右边这一部分很多人不了解——实际上当云、虚拟化这些成为一个主要的应用负载的时候,我们会发现其实CentOS里面的东西已经不仅仅是RHEL里面的东西了,它里面还有大量来自于RDO的东西,RDO是红帽的OpenStack社区版。

有很多像比如虚拟化,像Libvirt、oVirt,类似于这样的东西也加到了CentOS里面。所以坦白讲,CentOS里面并不光是红帽企业级的Linux包,它还包括很多其他的包。坦白讲,其他的包在CentOS里面,它的品质就应该不如RHEL了,因为RHEL是经过严格测试的,对于像社区版里的RDO里面的东西并不是严格测试的。但是RDO这个东西,社区版的OpenStack经过严格测试之后,生成红帽企业版的OpenStack,这是严格测试的。

所以在CentOS里面我们看这个箭头的指向,它一方面有RHEL里稳定的操作系统的包,同时也有关于云方面的、从测试各方面看没有那么稳定的包在CentOS Linux里面,实际上这是CentOS Linux那个时代的模式。

CentOS Stream时代

接下来可能就谈到最关键的CentOS Stream阶段了。CentOS Stream阶段我们发现过去的开发方式已经不能满足现在的要求了,这点可能很好理解:现在讲数字化转型也好,数字孪生也好,以前很多东西并没有被数字化,而现在已经被数字化了。这个世界本身就是频繁变化的,所以就要求反映它的东西也要频繁变化。

这个趋势映射在我们的软件里,25年前Linux发布一个版本的时候,没有几个人去做贡献,所以我们用什么样的开发模式、开发流程可能都没有太大所谓。但是现在一个版本里有一千多人去做贡献,贡献量是极大的,所以它的变化是非常快的。在这种变化非常快的社区版本里面,如果红帽还想做一个企业级的非常稳定的版本给大家用,那你的研发流程必然要做这样的一个改进。

这样的改进就是所谓的Stream模式,Stream的模式区别于传统的所谓瀑布式开发,不是把集成、测试、验证这样一些步骤放在最后一步,而是随做开发就随做测试,可以保证每一个发布的版本都是稳定版。这是因为我们这种快节奏要求Stream模式,而不是说我们出了一个Stream模式。所以简单的总结,CentOS Stream是一个稳定的、可靠的RHEL的持续交付版本。

关于CentOS Stream的几个热门问题

CentOS blog上有一篇文章,是2020年12月发布的,里面有几个特别重要的热点问题,我给大家重点再强调一下。

CentOS的未来是怎么样的?在CentOS官方网站上给出的一个FAQ,我不想给它做任何由于翻译的曲解。如果你是一个CentOS Linux的User,你不要着急,未来会有一个CentOS Distribution等着你。CentOS Distribution是什么呢?实际上就是我们现在的这个Stream。

大家关心的是Stream稳定不稳定、安全不安全,有没有CVE漏洞的更新、补丁。我们做这个新版,一定要保证它原有的品质。

第二点也比较重要,如果你还想要一个老版的CentOS Linux一模一样的东西,可以自己去做。那你自己去做的话,肯定要有一个RHEL的代码,代码是从哪儿来呢?git.centos.org。之前RHEL代码是在这里,之后RHEL的代码也是在这里,没有任何区别,这一点实际上是完全公开的。

当然如果你是红帽的客户、订阅用户的话,你在订阅的账号里就可以很方便的下载你的代码。上面提到的这个代码下载的git地址是说你跟红帽没有任何关系,我就想看看你的代码,这是可以的。这实际上也完全遵循GPL协议,大家共同遵守、共同繁荣好这个社区。既然我们是基于GPL的代码,尽管我们做了很多改动,这些改动也都会完完整整的公开。

还有大家比较关注的一个问题,CentOS Stream是不如RHEL的beta测试版吗?我们明确讲CentOS Stream不是一个测试版,后面我会简单解释一下为什么它不是一个测试版。

还有一个比较关键的问题,因为CentOS Linux8现在已经转成CentOS Stream8了,那我怎么去转?你说没有停服,那我怎么能继续拿到补丁?那你就在你的这台机器上敲这两行命令:

[root@centos ~]# dnf swap centos-linux-repos centos-stream-repos

[root@centos ~]# dnf distro-sync

敲完之后,把它的源重新一更新,从CentOS Linux的源更新到CentOS Stream的源,然后把所有的包下载下来安装,然后替换,接下来你的系统就照样去使用了。

即使你是比较资深的用户,如果我在你的电脑上敲了这两条命令,接下来去使用,其实你是毫无感知的。就是它的稳定性、使用、功能都跟之前没有差别。

接下来我们讲一下Stream为什么跟RHEL一样是稳定的。对于Fedora来讲,我们可以认为它是滚动更新,因为每半年我们就会出一个新版本。这里面所谓滚动更新,是说我滚动更新出来一个新东西,跟老的东西的兼容性并不是特别好。比如在29里面我们有一个功能,在30里面可能给它废弃了,这是完全有可能的。

但是对于CentOS Stream和RHEL来讲就不会,因为这两个东西是基于Fedora某一个特定版本,比如基于Fedora28,我要做一个稳定的企业版,我拉一个分支出来。但这个稳定版有些新的功能会加入进来,这个加入进来叫Backport,Backport是说我需要一些新的特性、Bug fix,而不是说一股脑的把所有东西都加过来。

CentOS如何构建CI

接下来我们讲到CentOS如何构建CI。CentOS Stream跟RHEL,同一份代码,进到两个编译和测试的系统里面去,编译、测试的过程用到的工具都是一样的,无非一个是社区版本,一个是企业版本,就是名字不一样,但是它的内容是一样的。这里面测试用例有可能不一样,但是最后通不通过测试用例的标准是一样的。比如Stream里面有300个测试用例,RHEL里面有500个测试用例,中间重合了200个测试用例,实际上不重复的一共有600个测试用例。这600个测试用例无论你是CentOS Stream的code走到这儿,还是RHEL的code走到这儿,这600个都必须完全通过之后,才可以往下走。有一个没通过,大家都等一等,这个代码质量不合格,回去重新做。

Gating这一步主要是自动化的一些测试手段,Verification这一步主要是手动的一些测试手段。我们已经尽量的把所有可以自动化的都做自动化了,但是不能说所有东西完全自动化,有一些针对于特定环境的一些可能需要手动的。但这一步Verification也是两边都要满足Verification的这个成功标准之后,才可以往下走,所以它的质量保证是一样的。

说了这么多质量保证,相信很多做测试的朋友可能会讲,你每出一个小的改动,都走完整的测试流程,走得过来吗?你是用什么样的架构去支撑的?所以也是基于这种事件触发的机制,用空间去换时间,CI的系统就完全并发的会起很多个不同的测试环境

所以,整个CI的过程是完全满足DevOps CI/CD流水线的,可以快速的做大规模测试,以保证当有更多并发,有很多人去提交patch补丁的时候,我能够快速的去做Stream的方式。

讲到这里,我不知道大家有没有这样一个疑问,这种方式是不是跟微服务有点像?实际上是有点像。我们做微服务的话,把一个大的分成若干小的模块,也是为了更新方便。我们在内核里边为什么不能做微服务呢?我觉得很关键的一点,因为内核,特别是Linux是一个宏内核,所有东西都在内核里面,而且内核整体上它的代码实际上还是一大坨一个整体。一个小的驱动,实际上它可能就把整个内核都搞崩,这一点在微服务里实际上是不存在的。

正因为这样,内核里面每做一个小的改动,都要对所有的做测试。这样的话测试量很大,所以如果你没有一个先进一点的架构,是无法支撑这种Linux发行版开发的。也就是说你从CentOS Linux到CentOS Stream必须做这样一步转变,因为如果不做这样的转变,那你的开发节奏就跟不上,拿不出一个又稳定同时又比较新的版本。

开源软件供应链安全

因为今年的log4j漏洞,可能有些人会觉得log4j就是洪水猛兽。其实大家选择log4j是没有问题的,问题是说当出现安全漏洞,我们发现安全漏洞的时候,我们如何去应对。

这个过程我们会发现跟现在的DevSecOps的理念很像,我们不能保证你进来的时候一定没有漏洞,我们的目的是打造一个对开源软件供应链安全提供保障的闭环。

第一步,我们在UpStream阶段肯定有一个甄选和识别,是不是存在一些恶意的代码成分呢?甄别出后,是不是有一个规范的流程可以帮助我们去选;选完之后,我们打包对它进行测试;到最后你的传播过程中,是不是有一些很好的校验手段;特别是最关键的,到最后一步我们已经把这个东西给到用户,但我们出现问题的时候,是不是能够有效的去解决。

所以我们认为开源软件的供应链安全,实际上主要是技术问题。

AlmaLinux:一个替代方案

AlmaLinux是什么?现在好多做CentOS Linux一样的东西,完全基于RHEL代码去做复刻。整个过程用到了哪些组建,所有的AlmaLinux里面的东西都是开源的。如果大家感兴趣的话,可以看一下这个流程,就看CentOS.org上面代码的变化。针对于这里面的任何些变化,就可以触动它的打包构建的流程,最终出品它的AlmaLinux。

从这点也以看出来,CentOS肯定是没有停服的,如果停了之后,所有这些下游的版本,像AlmaLinux、RockLinux和其他很多的Linux,它的来源从哪儿来呢?因为红帽这个RHEL就是基于CentOS Stream来做的,除非红帽不做RHEL了,否则CentOS Stream就会一直都在。

CentOS Linux不是红帽企业级Linux

最后说一下CentOS Linux,它跟红帽企业级的Linux还是有很大差别的。对于企业级Linux要求的安全认证、软硬件认证,在企业级保障中,更多的不是功能而是保障,这样的一些保障在企业级Linux里面是有的。在CentOS里面坦白讲确实很稳定,如果一旦出问题,一旦有安全漏洞,就去找补丁,总有一天我可以找到补丁。但实际上你拿到补丁的速度,肯定没有企业级Linux快。

如果是延续这样的使用方式,你切到Stream上,可不可以呢?是完全可以的。当然了,其实对于企业级Linux,如果说有明确的规定,比如说有一些行业标准,建议还是选用红帽的企业级Linux。

相关内容

热门资讯

此次新版龙之谷怎么去查看自己的... 此次新版龙之谷怎么去查看自己的VIP等级?此次新版龙之谷怎么去查看自己的VIP等级?点击VIP按钮问...
吴京爆出易烊千玺伤情,恢复情况... 吴京爆出易烊千玺伤情,恢复情况让人担忧,易烊千玺该何去何从?也没有多严重啊,易烊千玺后面自己的还有几...
奥比岛时空穿梭机的答案是多少 奥比岛时空穿梭机的答案是多少我很想要礼物!!如果有谁知道,就告诉我吧1.黄金海岸:点精灵打章鱼的牌子...
谁帮我学一篇关于大学校园生活的... 谁帮我学一篇关于大学校园生活的英语作文,谢谢了哦这是我们老师给我们的作业,我不会写,帮帮忙你自己好好...
世界是否在本质上是数学的 世界是否在本质上是数学的即数学是否是分析和理解这个世界的真正途径;还是数学仅仅适用于事物的表面和数量...
鲁智深 倒拔垂杨柳表面上的原因... 鲁智深 倒拔垂杨柳表面上的原因 目的是什么表面原因:大树上的乌鸦喳喳叫个不停,吵得人心烦。泼皮们嫌不...
洛阳历史上的大事件 洛阳历史上的大事件董卓火烧洛阳城!
末伏是什么节日,又是什么意思 末伏是什么节日,又是什么意思一年中最热的时间称三伏天,末伏是三伏中的第三伏就是三伏天的最后一个阶段
倚天开篇的何足道武功高强,为什... 倚天开篇的何足道武功高强,为什么在书中却销声匿迹了?其实并未销声匿迹,反而光大了昆仑派,助昆仑派成为...
如何处理日常工作和临时性任务之... 如何处理日常工作和临时性任务之间的关系临时性任务多半是重要的突发性任务,优先处理如果是不怎么重要的临...
陈情令:魏无羡当年求死坠落悬崖... 陈情令:魏无羡当年求死坠落悬崖,为何复活后没了这种想法?我觉得主要是因为找到了知音蓝忘机,知道这个世...
有谁知道这部电影叫什么名字?是... 有谁知道这部电影叫什么名字?是部国外电影。讲述的是一个女人如果赶上火车跟没有赶上是两种不同的命运。知...
孩子现在二年级,想报跟谁学张镇... 孩子现在二年级,想报跟谁学张镇老师的课,又不知道能不能学?有报过的吗?表示不认识,可以啊真的张镇老师...
《十段生命的律动》完整版在线播... 《十段生命的律动》完整版在线播放
斯文书卷气是什么意思呢? 斯文书卷气是什么意思呢?不是的.是说你很有书生的味道.好好先生.缺乏男人的阳钢之美,太细腻了或许已经...
电子手表怎么换电子,学生表 电子手表怎么换电子,学生表去找一个修手表的地方买一个电池,可以自己用螺丝刀扭开后盖,如果不放心可以让...
汽车后退时踩刹车出现响声? 汽车后退时踩刹车出现响声?刹车片和刹车盘摩擦的声音如果不严重可以不处理。
君高声自远,非是藉秋风 君高声自远,非是藉秋风有没有关于”君高声自远,非是藉秋风”的文章啊?你桐棚需要什么,说清楚点。原诗“...
现在高三了,到每次考试英语听力... 现在高三了,到每次考试英语听力都失分很多,应该怎么样提高英语听力能力?多数是不认真,你能听好的多看英...
后期做好的歌曲怎么替换上传到唱... 后期做好的歌曲怎么替换上传到唱吧?好像是添加到那个录音对应的本地文件夹