标签 内核 下的文章

一个单行补丁提升 Linux 隧道千倍性能

Linux 的通用 TUN 驱动为用户空间的程序提供数据包接收和传输,该驱动长期以来一直在 Linux 内核中使用,可用于 VPN、Open vSwitch 等用途。将近二十年前,Linux TUN 驱动设置了一个 10Mbps 链接的标称速度,这在当时足够了。但是现在,Linux 网络堆栈和硬件都有了很大的进步。开发者提出了一个补丁,将该设定值提升一千倍到 10Gbps,并建议干脆取消该限制,而让应用程序/用户自己决定一个正确的值。

消息来源:Phoronix
老王点评:这就和千年虫一样,当时对日后发展考虑不足。

GitHub 准备推出细粒度的个人访问令牌

GitHub 在 2020 年提供了 OAuth 认证,再之后,GitHub.com 所有认证的 Git 操作都需要基于令牌的认证,而不再接受账户密码。但 GitHub 的个人访问令牌只能被赋予有限的权限,也不是按仓库分配的,而且只有几个宽泛的类别。新的正在测试中的令牌是细粒度的,每个仓库有 25 种权限,其中大部分权限可以设置为只读、读写或不访问,另外有 14 种权限与账户管理有关。

消息来源:Devclass
老王点评:确实这是必要的,只是我原本以为这种细粒度的设置应该更早来到。

Gartner 发布十大战略技术趋势

著名的技术研究和咨询公司 Gartner 发布了 2023 年的十大战略技术趋势:数字免疫系统、应用可观察性、AI 信任/风险和安全管理、行业云平台、平台工程、无线价值实现、超级应用、自适应 AI、元宇宙、可持续技术。

消息来源:福布斯
老王点评:看了一下,感觉不明觉厉。

Firefox OS 复活

Firefox OS 是 Mozilla 在 2013 年创建的安卓替代品,并于 2016 年放弃了它。2018 年,在 Firefox OS 基础上曾出现了一个令人失望的 KaiOS,主要针对功能机市场的商业操作系统,但它是封闭的,还会跟踪用户并且有广告。现在,Capyloon 项目决定复活 Firefox OS,将其带到现代 Linux 智能手机上。该项目还处于早期阶段。它能运行旧的 Firefox OS 应用。目前可以在安卓设备上通过启动谷歌通用系统镜像(GSI)测试其 UI。

消息来源:Tux Phones
老王点评:本来可能成为 Mozilla 的一个基石型项目,非常可惜被放弃了,我认为放弃 Firefox OS 是 Mozilla 的一大败笔。不过,新的复活计划是否能真正复活 Firefox OS,还需要拭目以待,毕竟,时代不同了。

国产编译器项目 LambdaChip 捐赠给 HardenedLinux

开放硬件整体方案 LambdaChip 是为数不多的国产编译器项目,其背后的公司正式破产清算,将其项目改名为 Animula,并正式捐赠给 HardenedLinux 社区。LambdaChip 是一个野心勃勃的国产项目,试图在 10KB 内存的单片机上同时支持 Scheme、Lua 5.2 和 Python3 等语言,已经有了一些不错的进展。HardenedLinux 自嘲其“是否成为商业失败的开源项目的集散地的结论为时尚早”,并对此类项目表示了欢迎。

消息来源:Solidot
老王点评:看来 HardenedLinux 成为了一个孤儿项目摇篮。不过,确实需要一些组织来负责照料这些因为种种原因被放弃的项目。

Linux 内核 6.1 放弃火线串口驱动,删除了 4000 行代码

Linux 的 fwserial 驱动程序允许通过 IEEE-1394(火线接口)连接 TTY,以实现对等体之间的有线高速串行连接。但自从该驱动程序在 2012 年被合并以来,没有人负责维护该驱动程序。而且,现在有更好的连接方式,苹果的火线接口越来越没有人使用了。因此,它在 Linux 内核 6.1 中被删除,为内核减少了约 4000 行代码。

消息来源:Phoronix
老王点评:作为一个发展了 30 年的软件项目,其中肯定充斥着大量过时或无用的驱动和代码,因此时不时清理一下也是好的。不过,我觉得或许应该有更明确的规则对内核的各个组成部分设置不同的生命周期。

功率大到让变电站跳闸的特斯拉 Dojo 超级计算机

Dojo 是特斯拉的定制超级计算机平台,是为人工智能机器学习而建立的,更具体地说,是利用其汽车的视频数据进行训练。Dojo 是特斯拉去年公布的,但当时还只有芯片,经过一年的努力,现在有了系统托盘和机柜。特斯拉声称它可以用一个 Dojo 贴片取代 6 个 GPU 盒子,且成本低于一块 GPU。每个托盘有 6 块这样的贴片,一个托盘相当于 3 到 4 个满载的超级计算机机架。几个柜子放在一起可以创建一个 “Dojo ExaPOD”,其主要规格为 1.1 EFLOP,1.3 TB SRAM,以及 13 TB 高带宽 DRAM。今年早些时候,特斯拉在测试基础设施时曾让当地电网的变电站跳闸。

消息来源:electrek
老王点评:特斯拉在超算领域的成就也不可小觑。

AWS 云端提供 Ubuntu 虚拟桌面

AWS 为使用亚马逊工作空间分配虚拟桌面的客户增加了一个 Ubuntu 选项。使用的是 Ubuntu 22.04 LTS 版本,价格从每月每桌面 23 美元开始(或每小时 19 美分),包括一个 CPU、2GB 内存和 80GB 的根卷和 10GB 用户卷。但是目前用户只能使用 Windows 或基于 Web 的工作空间客户端进行连接。AWS 计划很快启用 Linux 和 MacOS 客户端的连接。

消息来源:ZDNet
老王点评:为什么我不在本地安装一台 Ubuntu,而要用云端的呢?

Linux 内核 6.1 合并窗口开启

正如预期的,对 Rust 支持被合并到了 6.1 当中,提供了基本的基础设施和一些非常基本的集成,而未来的拉取请求将增加更多的子系统抽象。Linux 6.1 还有一个对 memcpy() 溢出提出警告的安全改进,可以捕获过去 3 年中所有此类问题。Linux 6.1 还将继续花费大量时间来清理 Linux 的随机数生成代码。

消息来源:Phoronix
老王点评:6.1 得到的关注要远比 6.0 要多,或许本来就该有个 5.20。说到底,我觉得 Linus 式版本号还是有悖常理。

Linux 内核 6.0 正式发布,但更期待 6.1

没有遇到意外,Linus Torvalds 于今天推出了 Linux 6.0 稳定版。不过,虽然是新的大版本号,但是 Linus Torvalds 一如既往地重申,“希望每个人都清楚,主要版本号的变化更多是因为我手指头已经数不过来了,而不是任何重大的根本性变化。”这个版本号的前一个版本号是 5.19,曾有提议将此版本命名为 5.20。另外,这也标志着 Linux 内核 6.1 的合并窗口开启.Linus 说,“与 6.0 不同,6.1 有许多相当核心的新东西”,比如内核对 Rust 初步支持、能够大幅提升性能的 MGLRU 等等。6.1 将于今年年底发布。

消息来源:Phoronix
老王点评:好吧,让我们继续期待 6.1。

2022 全球程序员薪资排行榜,中国倒数第九

CodeSubmit 对二十多个国家的程序员的薪酬做了调查,前三名是:美国、瑞士和以色列。其中美国平均年薪 11 万美元。中国在二十多个国家中排名倒数第九(或者说位列中游),平均年薪 23,790 美元。而倒数第一和第二是尼日利亚(7,255)和印度(7,725)。此外,按编程语言划分:Go 和 Ruby 是收入最高的语言,均为 12 万美元左右;Python、Java、JavaScript 稍少一点,11 万美元。

消息来源:CodeSubmit
老王点评:中国程序员薪酬不算高并不意外。不过印度居然倒数第二,所以,印度的 IT 行业真的发达吗?

黑客利用开源软件和虚假工作机会进行钓鱼式攻击

微软威胁情报中心称,一个钓鱼黑客组织一直在使用木马化的开源应用程序和 LinkedIn 招聘诱饵来诱骗科技行业员工。他们发现该组织自 4 月底以来使用 PuTTY、KiTTY、TightVNC 等软件安装程序进行这些攻击。这和我们之前 报道 的谷歌 Mandiant 发现的情况一样。

消息来源:ZDNet
老王点评:这种被带木马的开源软件钓鱼的员工真的合格吗?我觉得各个企业是不是模拟一下这种钓鱼测试。

Rust for Linux 这个项目是希望今后可以使用 Rust 编程语言来编写内核代码,该项目已经进行了几年,有越来越多的开发者认为是时候将这项工作合并到主线中了。在 2022 年的 Linux 内核维护者峰会上,Miguel Ojeda 向大家更新了此项目的最新状况,希望能达成一致来确定何时可以完成合并。

他得到的答案是很清晰的:内核中确实很快会有 Rust 了。

这方面并没有什么悬念。Linus Torvalds 在会议开始时就说,他计划接受(可能在 12 月中旬发布的) 6.1 内核的 Rust 补丁,除非他听到强烈的反对意见。Ojeda 表示,他很期待这一天,并询问这些补丁应该如何进入主线。Torvalds 说,他不愿意直接接受这些补丁,所以看起来很可能需要 Kees Cook 来将这项工作引向上游。

Dave Airlie 说,有一些 MacBook 驱动程序的开发者打算用 Rust 来做他们的工作,所以很可能在不久之后就会有真正的 Rust 驱动程序进入上游了。不过,Torvalds 说他希望最开始只合入尽量少的内容,只是让基础设施先进入内核,让开发者开始使用它。它应该可以完成编译,但应该基本仅限在 “hello, world” 这种水平就好。他说,这将是一个向世界发出的信号:“终于落地了”。

Greg Kroah-Hartman 问道,针对特定子系统的 Rust 绑定实现,该如何进入上游;是应该通过 Rust 树还是通过相关子系统的维护者?Ojeda 回答说,Rust 核心支持应该通过 Rust 树来合入,但其他的应该经过维护者来合入。Alexei Starovoitov 担心,如果子系统维护者不想在他们的子系统中使用 Rust,他们也无法拒绝 Rust 补丁;James Bottomley 补充说,对于长期从事 C 语言开发的人来说,Rust 可能是一种很难理解的语言,把它强加给维护者并不合适。Torvalds 回答说,这应该由维护者决定;目前没有必要制定统一的规则。

Paolo Bonzini 说,对于不熟悉该语言的开发者来说,针对特定子系统实现抽象层的 Rust 代码往往是最难读懂的,“but it's stupid code”,并没有做什么复杂的动作。驱动程序级的 Rust 代码则要简单易懂得多。Torvalds 重申,就目前而言,维护者将可以说他们不想接受 Rust。但 Starovoitov 反驳说,无论他如何决定,BPF 都会受到影响;开发者需要能够对 Rust 代码进行跟踪 来调试问题。他补充说,每个人最终都会需要了解 Rust。Torvalds 回答说,他预计这个过程需要几年时间。

Cook 说,这种变化将类似于内核所经历的许多 C 语言变动。停止使用可变长度数组也是一个类似的过程,开发人员目前已经习惯了这一点。Torvalds 说,这其实更加类似于 BPF 的引入过程;这也是一种新的语言,起初是针对特定使用场景的,但现在已经无处不在了。

Ted Ts'o 指出,内核必须使用不稳定的 Rust 功能,这就导致不好确定应该使用 Rust 的哪个版本了。也许开发者应该宣布一个特定版本的编译器作为内核开发所使用的版本?这将鼓励发行版提供商把这个版本打包发行出来,使其得以更广泛地被采用。Thomas Gleixner 说,在 kernel.org 上提供我们选定的编译器应该就够了,但 Torvalds 回答说,只要有可能,他都希望优先从发行版提供商那里获取编译器。Bottomley 问道,Rust 什么时候会成为内核编译的必备条件;答案是 “当某人需要使用的硬件需要 Rust 的时候”。Torvalds 说,如果这一天到来了,那说明 Rust 在内核开发领域是非常成功的了。

Gleixner 问 Rust 语言现在的规范性如何;Ojeda 回答说,这取决于人们希望用什么。Rust 保证了稳定功能都可以向后兼容,所以这些功能不会意外不能用了。不过,内核正在使用一些不稳定的功能;这些功能出现变动是很有可能的。目前正在做的工作就是把这些功能稳定下来,以便让内核能够稳定地使用它们。

目前正在努力为 Rust 编写一个强调安全的系统的规范,这会最终得到一个类似于标准的文档。不过 Ojeda 说目前基于 GCC 的 gccrs Rust 编译器的开发者发现当前的文档有些地方比较模糊。其中经常把相关行为定义为 “参考 rustc 编译器的实现方式”。他说,这 “不是好事”,但会继续改善。

Gleixner 还询问了生成 Rust 绑定的工具,尤其是有没有自动化工具来确保 Rust 和 C 版本的数据结构是相互匹配的。Ojeda 说,这些工具确实存在,但它们还不能成功地对所有类型完成自动转换。这也是可以解决的。

最后,Gleixner 告诫 Rust 开发者不要改变 C 语言中锁定原语的语义;目前看来大家也没有表现出这样的倾向。Ts'o 补充说,应该从一开始就让 Rust 的锁定抽象能跟 lockdep 这个锁定检查工具配合起来。Chris Mason 插话说,如果 Rust 代码需要 lockdep,这将是该语言成功的另一个标志,是时候 “跳个舞庆祝胜利” 了。

人们经常说,将 Rust 合并到内核代码树中还是一个实验性质的动作;如果不成功就可以删除掉。Ojeda 说,为 Rust for Linux 工作的开发者们想知道试验期可能会有多长。不过,他并没有从这个小组讨论中得到切实的答案。

相反,Bottomley 建议说,与其引入 Rust,不如直接将更多类似 Rust 的功能移入 C 语言。Ojeda 说,他实际上一直在与 C 语言委员会合作来推动这些改进,但这方面的任何变动如果能够落实,也需要很长的时间。Christoph Hellwig 说,除非计划用 Rust 重写整个内核,否则这种改动无论如何都得去做;他对使用一种新的语言来重写已经能正常工作的代码的方案不是很满意。他说,也许 sparse 静态分析工具可以加强一下,从而实现更多 Rust 可以做到的检查。Ojeda 回答说,这种做法最终的效果就像是又获得了一个 Rust 一样——但时间上要晚很多。

Hellwig 继续说,可以随着时间的推移,来逐步采用类似 Rust 的一些功能。这 “必定是不如从 Rust 开始”,但内核社区现在有一个庞大的代码库需要管理。他说,需要有一种方法将类似 Rust 的语言的好处纳入所有的 C 代码中。Cook 说他一直在推动编译器开发人员来创建更安全的 C 语言。

Ts'o 在会议结束时指出,语言设计本身就是一个耗时很长的研究项目;也许我们大家应该在下一年来专注于策略问题。Torvalds 说,他希望看到各位维护者能运行一些持续集成测试并且加入 Rust 相关的测试——这个情况其实已经在进行中了。Laurent Pinchart 说,Rust 开发者需要准备好前期需要给内核社区提供支持;开发者会很快掌握一些技能,在一段时间后应该可以开始相互帮助了。Torvalds 补充说,Rust 其实并不是那么可怕的;“毕竟不是 Perl”。

当被问及文档问题时,Ojeda 说,Rust 的开发者正试图改进一些相应的 C 语言中已经完成了的文档。例如,可以让 Rust 的文档机制能很简单地就确保这些例子是可以被实际测试通过的。他们正在遵守关于应如何解释不安全区块的规则。

时间不够了,Matthew Wilcox 最后问道,内核开发人员是否应该编写地道的 Rust 代码,还是说应该写 “C in Rust”。Ojeda 回答说,这些代码在开始时可能更像 C 语言;采用更高级的功能(如 async)可能会需要更长时间。Gleixner 问,怎样才能防止开发者使用那些不稳定的特性(是说等内核使用的特性已经变成稳定特性之后);答案是指定内核开发时使用的编译器版本。

MGLRU 页面回收算法有望并入 Linux 6.1 内核

LPC 2022 上,谷歌工程师披露了 MGLRU 项目的最新进展。作为当前 Linux 内核页面回收代码的一个更好替代方案,如果 MGLRU 能够在 2022 年进入 Linux 6.1,那它也将成为年内最激动人心的创新之一。从 ChromeOS / Android,到台式机、工作站、甚至服务器领域,MGLRU 普遍能够在各项工作负载和各类硬件平台上提供更好的性能。一旦进入主线,它的下一个改进是让 MGLRU 达到可以安全地默认启用的程度。

消息来源:Phoronix
老王点评:在这次 LRC 大会上,谷歌宣讲了好几个重量级的技术进展。

到 2030 年,软件将占拖拉机公司约翰迪尔收入的 10%

美国农机巨头约翰迪尔公司的所有拖拉机和收割机都标准配有自动驾驶功能。该公司现在计划在几年内将 150 万台机器和 5 亿英亩的土地连接到其运营中心,并将之前销售的没有自动驾驶功能的拖拉机升级自动驾驶功能。尽管农民已经在为运营成本,如化肥和燃料,而苦苦挣扎,但该公司希望为运营其越来越智能的车辆出售软件订阅。分析师估计,农用软件的平均毛利率为 85%,而设备销售的毛利率为 25%。

消息来源:The Register
老王点评:软件和硬件哪个重要?从汽车到拖拉机,纷纷采用软件订阅,这是不是说明软件越来越重要,而且软件的利润也更高。

谷歌在欧洲面临 250 亿欧元的反垄断罚款

谷歌是最大也是最重要的广告技术提供商,市场份额超过九成。欧盟以及英国的监管机构正在调查谷歌是否滥用其在数字广告市场的支配地位,可能导致其面临 250 亿欧元的反垄断罚款。去年法国的反垄断监管机构对谷歌开出了 2.2 亿欧元的罚单。

消息来源:BBC
老王点评:真是树大招风啊,谷歌太有钱了。