草庐IT

除了RUST,还有国产架构:Linux6.1内核稳定版首发布!

千山 2023-03-29 原文

​编译丨千山

12月11日,Linus Torvalds发布了Linux6.1内核稳定版,并迎来了一个工作量巨大如地狱般的Linux6.2合并窗口。目前在内核官网已经可以找到相应文件。

据悉,每个Linux内核版本发布之后都会留两周时间,贡献者在此期间提交他们希望在下一个版本中看到的代码。Linux 6.1的发布意味着窗口将在12月26日,即圣诞节次日关闭。而且Torvalds透露,他将在假期之前旅行,因此准备时间会比平常更少。

来源:互联网

1、重要升级:初始的Rust语言支持

值得注意的是,在最新版本中,Linux6.1进行的一个重要升级在于初始的Rust语言支持。尽管这一功能仍在构建中,不过这也意味着,在可见的将来,Linux的历史将翻开崭新的一页——除了C之外,开发人员将第一次能够使用另一种语言Rust进行内核开发。

在近几年的讨论中,是否在Linux内核中引入Rust多次成为议题。不过包括 Torvalds在内的一众关键人物均对此表示了期待。

早在2019年,Alex Gaynor和Geoffrey Thomas就曾于Linux Security Summit安全峰会上进行了演讲。他们指出,在Android和Ubuntu中,约有三分之二的内核漏洞被分配到CVE中,这些漏洞都是来自于内存安全问题。原则上,Rust可以通过其type system和borrow checker所提供的更安全的API来完全避免这类错误。简言之,Rust比C更安全。

谷歌Android团队的Wedson Almeida Filho也曾公开表示:“我们觉得Rust现在已经准备好加入C语言,作为实现内核的实用语言。它可以帮助我们减少特权代码中潜在错误和安全漏洞的数量,同时很好地与核心内核配合并保留其性能特征。”

当前,谷歌在Android中广泛使用Rust。在那里,“目标不是将现有的C/C++转换为Rust,而是随着时间的推移,将新代码的开发转移到内存安全语言”。这一言论也逐渐在实践中得到论证。

“随着进入Android的新内存不安全代码的数量减少,内存安全漏洞的数量也在减少。从2019年到2022年,相关漏洞占比已从Android总漏洞的76%下降到35%。2022年,在Android漏洞排行中,内存安全漏洞第一次不再是主因。”

固然某些东西更安全,但并不意味着每个人都想采用它。毕竟,开发人员已经花了近30年的时间在C语言中开发Linux,开发人员都担心将Rust引入Linux所要花费的大量工作。举个例子,为了让Rust Linux NVMe驱动程序工作,需要70个非标准的Rust扩展。

对此,Torvalds在今年早些时候也做出了回应。“请不要担心。Rust不会在这十年的任何时候取代内核中的C。”

正如Rust on Linux的主要开发者Miguel Ojeda所提到的,“内核是一个庞大的项目,有很多利益相关者。从一开始,我们就很明确,在内核中添加第二种‘主’语言将面临技术和管理挑战。”他解释说:“你将在Linux内核中看到的第一个Rust工作将是‘子系统的 Rust抽象以及编写驱动程序和其他模块’。”

目前来说,Linux 6.1对于Rust的支持仍处于初级阶段,没有任何面向最终用户的Rust功能。可以说,Rust将正式使Linux成为一种双语言操作系统,但这种演化进程是缓慢的,对内核开发人员来说这种改变并不会造成极大的不适感。

2、新功能:添加MGLRU、进一步加大对国产LoongArch CPU架构的支持

除了初始的Rust语言支持,Linux 6.1内核的另一个新增功能是MGLRU,即Multi-Generational Least-Recently-Used。据悉,它可以优化页面回收机制,并在重内存负载情况下提高性能,不过默认情况下不会启用。

其他方面,Linux 6.1还集成了对Btrfs文件系统性能的一系列改进、新的AMD平台管理框架、各种开源图形驱动程序改进、Kernel Memory Sanitizer、Maple Tree数据结构的引入以及许多其他硬件驱动程序工作。

值得一提的是,新版本还进一步提升了对国产LoongArch架构CPU的支持。

LoongArch是龙芯中科推出的自研处理器架构,该架构基于龙芯基础指令集系统,并有向量指令、虚拟化、二进制翻译等扩展部分。此次Linux 6.1加大支持能够从底层提升基于Linux的国产发行版系统对于国产硬件的支持与适配性。

3、是否是LTS版本,仍有待观望

此外,在本次版本更新的公告中并没有提及Linux 6.1是否是LTS版本。据Linux内核维护者Greg Kroah-Hartman描述,通常来说,每年的最后一个内核版本会成为Linux内核的LTS。如今Linux 6.1赶在年尾发布,惯例来说它就是LTS版本。

但也有人提出异议。Carl Dasantas谈到,因为Linux 6.1引入了Rust,目前很多社区依旧对Rust持保留态度,这种犹豫往往会带来变数。相较来说,Linux 6.0或5.19更合适作为LTS版本。

参考链接:

https://www.theregister.com/2022/12/11/linux_6_1/

https://www.theregister.com/2022/12/09/linux_kernel_61_column/

https://new.qq.com/rain/a/20221212A03RAM00

有关除了RUST,还有国产架构:Linux6.1内核稳定版首发布!的更多相关文章

  1. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  2. ruby-on-rails - 为什么在 Rails 5.1.1 中删除了 session 存储初始化程序 - 2

    我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于

  3. ruby - Ruby 和 Ruby on Rails 中的三层架构 - 2

    我是一名决定学习Ruby和RubyonRails的ASP.NETMVC开发人员。我已经有所了解并在RoR上创建了一个网站。在ASP.NETMVC上开发,我一直使用三层架构:数据层、业务层和UI(或表示)层。尝试在RubyonRails应用程序中使用这种方法,我发现没有关于它的信息(或者也许我只是找不到它?)。也许有人可以建议我如何在RubyonRails上创建或使用三层架构?附言我使用ruby​​1.9.3和RubyonRails3.2.3。 最佳答案 我建议在制作RoR应用程序时遵循RubyonRails(RoR)风格。Rails

  4. ruby - 为什么 Object 在 Ruby 中既包含内核又继承它? - 2

    在Ruby(1.8.X)中为什么Object既继承了内核又包含了内核?仅仅继承还不够吗?irb(main):006:0>Object.ancestors=>[Object,Kernel]irb(main):005:0>Object.included_modules=>[Kernel]irb(main):011:0>Object.superclass=>nil请注意,在Ruby1.9中情况类似(但更简洁):irb(main):001:0>Object.ancestors=>[Object,Kernel,BasicObject]irb(main):002:0>Object.included

  5. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  6. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  7. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

  8. ruby - rbenv:在 Linux Mint 上找不到 gem 命令 - 2

    我在LinuxMint17.2上。我最近使用apt-getpurgeruby​​删除了ruby​​。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,

  9. ruby - 在 Linux 上编译 Ruby 1.9.2 所需的先决条件? - 2

    我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby​​所需的包和安装过程;它引

  10. ruby-on-rails - 具有六边形架构和 DCI 模式的框架和数据库适配器 - 2

    我尝试用Ruby设计一个基于Web的应用程序。我开发了一个简单的核心应用程序,在没有框架和数据库的情况下在六边形架构中实现DCI范例。核心六边形中有小六边形和网络,数据库,日志等适配器。每个六边形都在没有数据库和框架的情况下自行运行。在这种方法中,我如何提供与数据库模型和实体类的关系作为独立于数据库的关系。我想在将来将框架从Rails更改为Sinatra或数据库。事实上,我如何在这个核心Hexagon中实现完全隔离的rails和mongodb的数据库适配器或框架适配器。有什么想法吗? 最佳答案 ROM呢?(Ruby对象映射器)。还有

随机推荐