大家好,我是刘遄。 RHEL 系统的爱好者们,不少人听说刘遄这个名字,或许你还不会念,但肯定有点眼熟。2015年初,我起笔写了《Linux 就该这么学》这本国内第一本基于最新 Linux 系统的入门书籍。目前书籍经过了几十次大的改动已经把品质做的非常好,有空可以免费下载来看。同时我自己也做了将近七年的运维,取得有红帽 RHCA 架构师、红帽 RHCE 工程师6和7版本的双认证,也应该是国内为数不多的 Linux 在线讲师之一。从2014年 RHEL7 系统的发布到现在写这篇文章,两年的时间里时时刻刻的关注 Linux 系统的演进,参加了大大小小无数场讲座,为的就是我今天能对 RHEL7 有足够的话语权,没有耐心看完的读者也可以直接记住我的观点——RHEL7 不是个失败的产品

大约两年前的这个时候,RedHat 公司推出了新的企业版 Linux 系统,国内外各大媒体都给了不少特写镜头,行业也给予了硕大的期待程度。但是时至今日 RHEL7 系统的市场占有率却一直不温不火,逐渐的就有人开始对 RHEL7 系统的未来表示担心。甚至有人还搬出各种 “大道理”来唱衰 Linux 系统,觉得开源厂商已经过了事业最高点,开始要在服务器领域让步给 Windows 了。当然这些我没必要去反驳,任何一个产品都一定会有支持者和唱衰者,我们这次只评这个 RHEL7 系统。

在正式讨论话题之前,我希望读者已经对于 Linux 系统特性和应用领域有了必要的了解;知道 Linux 系统在服务器领域中不可小觑的市场份额;知道 RedHat 厂商对于 Linux 系统及整个开源行业的重要性影响;知道 CentOS 也是 RHEL 系统的衍生品等等常识;甚至是以前使用过一段时间 RHEL7 系统了。基于这样的经验共识,我们才能更顺畅的讨论红帽 RHEL7 系统是不是个失败的产品这个问题。

要论证我在上面的看法,不如谈谈现在最烫手的热议问题:“为什么2年过去了,RHEL7 系统的市场份额依然不温不火?要不要反而去学习老版本的 Linux 系统”,甚至有阴谋论说新版本的 Linux 系统还在让美国用于搜集全球信息,告诫我们千万不要去碰。这个问题必须要回应,否则更多的阴谋论会层出不穷,甚至会影响到国内某些不太了然的媒体对开源行业有了扭曲的理解。

能够耐心坚持读到这里,我猜一定是从事于运维行业或者对于 Linux 系统感兴趣的朋友,所以基于我们的经验共识和文章篇幅的限制,我们下面的论证速度会比较快,也很有意思。首先 RHEL 是企业版的服务器系统,而不是用来玩耍折腾的桌面机系统,更何况作为桌面环境的 Windows7 系统在2009年7月14日发布,用了3年才开始真正普及,难道在2009年到2013年中,Windows7 就是失败的产品吗?

红帽 RHEL7 系统紧密的集成了虚拟化技术 Docker,支持了 XFS 文件系统,兼容了微软的身份管理技术,采用了 Systemd 作为初始化系统,性能和兼容性都有了很大的改善,无疑是一款非常优秀的操作系统。单从 OpenStack 和 Docker 的决策上来讲,我们也应该相信红帽的开发团队不是闭门造车,所以是否应该重新考虑到底是那里出了问题?

运维人员经常会讲一句表达心理的想法:“现在的环境跑得好好的,为啥还要换?”。

  • 重新部署生产环境不是装上操作系统就能完事的,也不是把软件随便安装上就能走人的,你是否考虑过升级带来的风险?
  • 日后生产环境出了问题,谁负责任?
  • 旧的软件依然能否兼容与新系统?
  • 新的系统或软件是否有 Bug?
  • 安全性如何,审计怎么做?
  • 之前购买的第三方技术支持能力是否已经跟上?
  • 升级后是否会影响到某些软件的版权?
  • 新系统产生了很大变化,不习惯怎么办?
  • 费力升级后又会对自己有什么好处?

红帽 RHEL7 系统的改进很多,其中最痛点的就是采用了 Systemd 作为初始化系统,几乎之前所有的运维自动化脚本还都要修改。于是我们再回来思考刚刚的这个问题,到底还要不要升级到 RHEL7 了?

当然,服务器机房里也绝不是不更新换代,升级是早晚都必须要的,就看什么时候工作的需求超过了老版本的能力界限,就肯定会升级。比如 Rsyslogd 日志记录服务在 RHEL6 中版本是 V 5.8,而现在最新的版本已经是 V 8.18,差了3个大的主版本号,已经产生了如此大的差距,你觉得会一直用旧的版本吗?

早在2014年初,Fedora 系统首次采用了 Systemd 初始化系统。我当时就断言 RHEL7 系统也会使用 Systemd,所以当即更新了自己的培训课程,让很多其他机构背了 init 参数的同学找我说有多羡慕。对于不论是想要学习 Linux 系统还是编程语言的同学,都应该去选择当前稳定且最新的版本作为学习环境。

  • 稳定:不管是做开发和运维,都是一种保障。
  • 最新:老的版本会有更大的概率存在安全漏洞或者功能缺陷,而新的版本不仅漏洞出现的几率小,而且即便出现漏洞也可以获得众多开源社区和企业的支持,更快的被修复。

再最后讲一句,我每次在公开的场合讲座都会表达的一个观点:“我们并不是因为开源而喜欢 Linux,而是因为 Linux 系统真的非常优秀,开源精神仅是优秀产品上的锦上添花而已”。在我的书籍《Linux 就该这么学》的绪论中也狠狠的肯定了 Linux 系统对于运维行业、甚至是对世界的影响。另外我也会把这本书一直以在线阅读的方式提供给读者们,并且会持续更新 RHEL8/RHEL9/RHEL10 版本的课程。

不忘初心方能始终,致敬所有的 Linuxer。

继 Arch Linux、Ubuntu、Fedora、Gentoo、Red Hat Enterprise Linux、CentOS 和 openSUSE 等发行版之后,Debian GNU/Linux 的软件库正式加入了 ZFS For Linux,为操作系统提供原生的 ZFS 文件系统支持。

Debian 的不稳定通道加入的 ZFS For Linux 版本是 zfs-linux 0.6.5.6-2 并不是最新上游版本,最新版本是 0.6.5.7。Debian 对 ZFS 的支持算得上比较晚了,上个月发布的 Ubuntu 16.04 LTS 加入了对 ZFS 的正式支持,而 Debian 的 ZFS 实现看起来借鉴了很多来自 Ubuntu 的实现。

头条消息

今年早些时候有消息称,微软与美国国防部签署了合作协议,将在2017年前为其安装升级至少 400 万台 Windows 10 的计算机。但是,目前看起来这一计划受挫,原因是,美国国防部的很多计算机都太老旧了,安装不了 Windows 10。比如其海军就只有 10% 的计算机可以远程升级, 剩下的都因为太旧了而无法升级——目前美国国防部还没有这么多的钱来升级硬件。

之前有传闻说,美国 FBI 掌握了一些 Mozilla Firefox 和 Tor 浏览器的零日漏洞,并以此来用于他们的行动中。昨天,Mozilla 向华盛顿地区法庭申请,要求法庭判决 FBI 需向 Mozilla 披露他们发现的零日漏洞,以便 Mozilla 尽快修复。 

当前各个 Linux 发行版都在逐渐切换到最新的 GCC 编译器上,而 OpenMandriva 则与众不同,该发行版是唯一一个使用 LLVM Clang 作为主要编译器的发行版。 

版本更迭

  • ZFS for Linux 项目发布了新的版本 0.6.5.7,支持了最新的 4.6 和 4.5 的 Linux 内核。现在这个 openZFS 移植版支持从 2.6.32 到 即将发布的 4.6 的 Linux 内核。
  • Qt 公司发布了 Qt Creator 4.0 ,这是一个给 Qt 开发者使用的跨平台的开源 IDE 。在这个新版本中,最重要的是它开源了其 Clang 静态分析器和自动测试功能。
  • 最新的 Snappy Ubuntu Core 支持 LeMaker 的 HiKey 96Boards ,HiKey 应该是第一个支持最新的 Snappy Ubuntu Core 的单板计算机。
  • GNOME 发布了 3.20.2 ,同时 3.22 也在继续开发中,预计今年的  9 月份会发布。
  • Linux 内核发布 3.14 LTS 的第 69 个维护版本。
  • 如之前承诺的,Adobe 发布了 Flash Player 21.0.0.242,修复了几个零日漏洞。
  • QEMU 发布了 2.6,QEMU 是一个 Linux 系统上广泛使用的、可高度定制的虚拟化软件。这个版本提供了树莓派 2 的模拟支持。

Greg Kroah-Hartman 是 Linux 内核社区的二号人物(第一位显然是 Linus Torvalds),他在设备驱动方面做了许多工作,他也是当前 Linux 内核稳定分支的负责人。

在本周柏林举办的 CoreOS Fest 上,Kroah-Hartman 做了一场讲演介绍了 Linux 内核项目是如何的巨大。之后我找了个机会邀请他聊了聊内核和安全方面的话题。

我们的话题先从代码方面开始,Kroah-Hartman 说刚刚于两个月前发布 4.5 版已经包含了 2100 万行代码!

可能很多人觉得在那么小的设备上运行这么多的代码有点夸张,事实上,并不是所有的 2100 万行代码都运行在他们的设备上,只有需要的部分才会运行在里面。正如 Kroah-Hartman 说的,“你不会全部用到它们。在内核里面包含了各种硬件的驱动。我的笔记本上运行的内核代码大概有 160 万行,而你的电话可能运行了 250 万行代码。”

这里面,内核的核心部分是一定算在其中的,而它只占整个 Linux 内核代码的 5%,而剩下的还有 35% 是网络部分,40% 是设备驱动。

比代码规模更让人印象深刻的是它的参与人数规模,去年就有大约 4000 名开发人员参与了开发,至少 440 个公司向内核提交了贡献,这使得 Linux 成为了世界上最大的软件项目!Kroah-Hartman 说:“这是计算机有史以来最大的软件开发项目,无论是使用它的人数、开发它的人数,还是与之相关的公司数量,规模都很大。”

greg kernel

Greg Kroah-Hartman 在 CoreOS Fest, Berlin 的讲演

每天,平均有超过 10800 行的代码增加, 5300 行代码被删除,并且还有 1875 行代码被修改,也就是说每秒钟都有超过 8 行代码的变化!

这是非常大的数量,这意味着 Linux 内核不像其它的技术,它在不断的变化,变得越来越好。

Kroah-Hartman 说,“当我第一次参与这个项目时,我们每个小时可以完成 2.5 个变更。每个人都这么说,‘哦,天哪,我们不可能更快了,那不现实’。微软和苹果也说,‘你赢了’,他们一字一顿的说,‘我们比不上,你们干的比任何人都要快,我们是望尘莫及啊’。而我们的开发速度越来越快,我们每次都会更快一些。”

但是,如果你的公司的发展依靠着 Linux,那这个变化速度看起来就很可怕。Kroah-Hartman 解释了为什么会有这么多变更:“我们提交了很多变更,但是不是因为我们为变更而变更的,那可需要很多的工作。我们其实很懒,我们做这么多的变更的原因是因为我们必须做,是因为这个世界不断变化而需要我们做这么多的变更。那种‘你做了个东西,然后啥也不用管,将它丢在一边就好了’的模式已经不可行了,因为这个东西已经连通了世界,而世界每时每刻在变化。事物都在互相作用,所以你必须跟着进化。如果你的操作系统不能改变,那它就没用了,这毋庸置疑。如果你的设备不能跟着与之互动的世界变化,那它同样也没用,这也毋庸置疑。所以,你可以看看那些不能与时俱进的操作系统,根本没有人用它们。”

为了做到这些变更,Linux 内核社区需要做到两点。首先,我们要有个按时间进行的发布计划。其次,我们需要小步快跑。我们完成一个发布就要开始下一个发布的开发。下一个发布的第一个 RC 版本里面就要包含进去所有开发人员丢进去的各种东西,包括各种新的东西、新的功能,而且它们需要经过严格考验。当所有的东西都测试良好,我们才会放出第一个 RC 版本,之后的 RC 版本就是各种问题的修复。这样,我们就能在一个分支的 7-8 个 RC 版本之后赶走所有发现的问题。

当我们准备好发布一个新的内核发布版本时,它已经经过了详尽的测试。但是仍然有问题时,人们使用的稳定版怎么修复问题呢,他们可不想在产品环境中使用 RC 版本,那么他们怎么修复问题?在 15 年前,内核社区就找到了解决方案,而这就是 Kroah-Hartman 的任务,他会对稳定版本进行分支,比如说 4.2 版,它的问题修复版本会以 4.2.1 、4.2.2、4.2.3 等等发布。

“这个版本规则就是它必须是一个问题修复版,而且它必须是一个正确的版本号或者是新的设备 ID,它必须出现在 Linux 内核代码树上。在我将它放到稳定分支之前,它就必须出现在 Linux 内核代码树上。这可以确保人们运行我们的稳定内核时,如果跳到一个新的分支版本时,不会发生中断,没有什么不一样的变化。这就是规则,而且一直以来运作良好。”Kroah-Hartman 说。

而当下一个新的分支(4.3)出来时,Kroah-Hartman 就会从当前的分支(4.2)离开而去维护 4.3。这样内核社区就完美的保证了当新的版本发布时任何事情都很连贯。

“每个版本我每周都会做一次发布,每周会对稳定分支打 100 到 150 个补丁。这很多,许多东西都变化了,也修复了许多东西。而这就是我们做的——稳定的分支。当 4.3 发布时,最好的事情是我解脱了,我说,‘啊!4.2,我再也不要见到你了’,然后我就跑到新的分支了,因为我们的工作,这一切都可以继续发展下去,所有人都很满意。”

长久以来,Ubuntu Unity 的下一代版本始终未能亮相。它最初公布于2013年,但随后推出时间被多次延后。为什么会这样?原因有两个:Mir 与 Convergence。Ubuntu 开发者们多年来一直希望能够让 Convergence 的圆润效果登陆 Linux 桌面。

不少用户已经在各种机缘下目睹过 Unity 8 的身影,那么它到底有何新鲜元素?在今天的文章中,我们将整理出 10 条,供大家参考!

1.Unity 8 对 Unity Touch

如果大家体验过 Ubuntu Phone 界面(即 Ubuntu Touch),请千万别把它跟 Unity 8 混为一谈。没错,Canonical 的目标在于推动 Convergence 的普及,但二者的具体界面则完全不同——当然,Launcher 与 Scopes 等基本元素是双方都有。需要强调的是,如果我们把手机接入显示器,那么 Unity 会直接切换为“桌面模式”。除了 Convergence 之外,Unity 8 与我们多年来所熟悉的 Unity 仍然非常相似。

2.Snappy Packages

这两个词长久以来一直作为争议的焦点。开发者们将其视为便捷的软件包更新方式,而最终用户则几乎感受不到什么具体区别。事实上,Snappy Packages 凭借着消除关联性使得 Ubuntu(乃至整个 Linux 阵营)成为更易用且更安全的系统平台。

3.发布时间

如前所述,Unity 8 最初公布于 2013 年——但每年都会传出延期的消息。而且直到现在,准确的发布时间仍然未被敲定。我个人认为 Canonical 公司不会在 2016 年 10 月之前公开发布 Unity 8/Mir。如果要选一个更为现实的同步推出版本,我个人会将票投给 Ubuntu 17.04(预定发布时间为 2017 年 4 月)。

4.通知区

Unity 8 的通知区机制与 Unity 7 区别不大。在这里,大家可以查看通知内容、控制音量、连接网络、操作日历等等。其最大变化在于,大家可以在通知下拉菜单中进行多种设置。相较于逐个排列的图标,大家将能够向左或向右划动以访问不同分区。这是一种更为现代的通知方式。

5.桌面效果

Unity 8 的桌面效果可谓全系列最佳。渐变窗口与工具提示、窗口推进与拉出、应用间的移动/切换等都非常优美且无缝。但这也意味着低配置设备在运行时可能会面对一定压力。最令人激动的是,窗口尺寸缩放终于如丝般顺滑——这也是长久以来用户渴望的效果。

6.良好的触控支持性

Unity 8 专为键鼠与触控两类操作方式设计,因此如果大家偏爱用手指点点戳戳,Unity 8 将能够很好地满足各位的需求。

7.漂亮的应用切换机制

Unity 8 带来了新的应用切换机制。新版本支持热键操作,并以叠加方式帮助大家快速回归上一个操作应用。将鼠标悬停于各条目上则会出现工具提示,告知用户该窗口属于什么应用。

8.取消 Dash

这一变更可能会损失部分用户。Unity 7 中利用 Scopes 应用取代了 Dash——点击 Unity Dash,Scopes 容器即会出现。就个人而言,我发现这一变更并不理想。因为 Scopes 相较于 Dash 并没做出什么实质性的改进。虽然效果还算不错,但并不足以适应 Unity 8 将要使用的统一化主题。然而作为一大升级,如今 Ubuntu Store 成为 Scopes 应用中的组成部分,因此大家无需启动其他工具即可在这里安装应用。

9.命令行

别怕,命令行仍然存在,而且启动与使用方式同样简单。事实上,Unity 8 的终端窗口与 Unity 7 并无太大区别,因此请各位命令行爱好者们不必担心。

10.仍在开发当中

这里要再次强调,Unity 8 目前发布的是预览版显示,其仍然未做好公开发布的准备。有趣的是,Ubuntu Phone 中的桌面模式倒是比 Unty 8 更为成熟。不过 Unity 8/Mir 终将做好亮相的准备,而且我对其实际效果充满信心。

总结

Ubuntu 粉丝们一直在耐心等待着 Unity 8 的来临。我猜其亮相之日应该是在明年——我也相信其最终效果值得我们的多年期盼。

大家对此有何看法?目前 Canonical 在 Unity 8 中实现的效果又给您留下了怎样的印象?请在评论栏中分享您的感受。