硬核老王 发布的文章

数据库损坏导致全美停飞航班

周三,美国联邦航空局(FAA)的空中任务通知系统发生严重故障,一度导致全美停飞航班。FAA 初步判断问题根源是一个数据库文件受损,而没有证据表明这是一次网络攻击。周二晚间 FAA 的计算机系统就出现了问题,于是他们在周三凌晨航班最少的时候重启了系统。但在经过 90 分钟的重启之后,该系统的功能没有完全恢复,而备份系统也同样发现存在问题。FAA 于是下达了全美的停飞令,导致了大规模航班延误和机场瘫痪。

消息来源:CNN
老王点评:你真想不到一些非常重要的系统有多破旧。

因员工监控软件显示摸鱼,被勒令向公司返回工资

一名加拿大女子以远程方式从事会计工作,她最初声称自己去年被无故解雇,并要求获得赔偿。但该公司告诉法庭,该员工有 50 多个小时没有从事工作有关的任务。该公司说,在发现该员工分配的工作超出预算和进度后,该公司在其工作笔记本上安装了名为 TimeCampon 的员工追踪软件。该软件可以跟踪文件打开的时间,员工如何使用该文件,并将时间记录为工作时间。该软件可以将工作时间记录与使用笔记本电脑播放电影和电视节目等活动分开。法官因此判决该女子败诉并向公司返回部分工资。

消息来源:《卫报》
老王点评:真是,都不能愉快的摸鱼了。

谷歌将在 Chrome 开发中使用 Rust

谷歌今天宣布,他们将允许 Rust 代码进入 Chromium 代码库。谷歌正在努力将 Rust 工具链引入他们的 Chromium 构建系统,并将允许在 Chrome/Chromium 中使用 Rust 库。在 Chromium 中使用 Rust 可以避免内存安全错误,这将有助于加快开发速度,提高 Chrome/Chromium 浏览器的整体安全性。

消息来源:Phoronix
老王点评:继安卓之后,谷歌又将 Rust 加入到 Chrome 开发中,这将对改善浏览器安全有很大的意义。

GPT-4 将有 100 万亿参数,与人类大脑神经元数量相当!

OpenAI 发布于 2020 年的 GPT-3 有 1750 亿个参数。根据传闻,即将在 2023 年初发布的 GPT-4 的参数约为 100 万亿。如果将参数比作人类的神经元,这一数量的参数大致相当于人类大脑中存在的神经元连接的数量,而人类实际上并没有使用我们大脑的全部容量。按照 GPT-3 对其前代产品的进步,GPT-4 将在能力、范围和潜力方面与我们目前的 GPT-3 版本的 ChatGPT 相比,可能拥有一个质的飞跃。

消息来源:Impakter
老王点评:我已经无法用想象力来想象 AI 能做到什么了,希望打开的不是潘多拉魔盒吧。

美联邦机构 1/5 的密码在安全审计中被破解

美国内政部最近的一次的安全审计发现,在测试的近 9 万个加密哈希值中,只用了 90 分钟就破解了 16% 的密码,最后有 21% 的账户密码被破解。这些被破解的密码涉及 28 个高价值资产中的 25 个,占比近 90%。破解这些密码只使用了一台价值 15000 美元的设备。值得注意的是,被破解的绝大多数密码都符合密码复杂性要求,该要求规定密码必须至少有 12 个字符,并且至少包含大写、小写、数字和特殊字符等四种字符类型中的三种。

消息来源:Ars Technica
老王点评:传统的“强密码”理论已经不合时宜。多个无关联的单词组成的长密码会更安全一些,最好是使用密码管理器生成随机密码,以及辅助使用多因子认证。

美国原住民要求阿帕奇基金会改名

美国的一个民间组织呼吁 阿帕奇软件基金会 Apache Software Foundation (ASF)改名,以尊重美国原住民,并遵守其自身的行为准则。他们指责 ASF 出于品牌推广的目的盗用原住民文化。该团体对他们所说的阿帕奇部落只存在于过去的历史背景中的说法提出异议。ASF 表示已经知晓此事,但“变化需要时间与成员、董事会和我们的法律团队进行仔细权衡。我们的成员正在探索其他解决方法。”

消息来源:The Register
老王点评:我觉得,要是没有 ASF,可能很多人都不知道阿帕奇部落,我不觉得这是恶意滥用。而且,据我所知,Apache 起名的部分灵感来自于对 NCSA 服务器的修补版。

微软准备向 OpenAI 追投 100 亿美元

OpenAI 开发了聊天机器人原型 ChatGPT 和文本图像创作工具 DALL-E。微软此前已经向 OpenAI 投资了 10 亿美元,如果再追投 100 亿美元,OpenAI 将达到 290 亿美元估值。根据融资条款,一旦 OpenAI 找到方法从 ChatGPT 等产品上赚钱,微软将获得利润的四分之三,直到收回初始投资,之后微软将拥有 OpenAI 的 49% 的股份。

消息来源:路透社
老王点评:这应该是微软近年来不多的最成功的投资之一。

Mastodon 用户活跃度下降三成

在 Twitter 被收购前,Mastodon 有大约 50 万活跃用户。之后,Mastodon 在 11 月份涌入了大量用户,到 12 月初它的活跃用户数达到了 250 万。据 Mastodon 统计,活跃用户数量自高峰期以来已经下降了 30% 以上,并且正在继续缓慢下降,1 月第一周约有 180 万活跃用户。许多从 Twitter 转移到 Mastodon 的用户可能重新回到了 Twitter,但仍然有很多用户留了下来。

消息来源:卫报
老王点评:虽然略有回落,但是 Mastodon 应该还会更好,我在考虑是不是也搭建一个服务器。

苹果应用商店的开发者迄今已赚取了 3200 亿美元

苹果公司今天分享了其订阅业务和全球应用程序商店的最新情况,指出自 2008 年以来,苹果公司已经向应用程序开发人员支付了创纪录的 3200 亿美元。苹果表示,它现在拥有超过 9 亿的苹果服务的付费用户,每周有来自全球 175 个地区的超过 6.5 亿访客访问其应用商店。

消息来源:Tech Crunch
老王点评:无论如何,苹果应用商店开创了一个新的时代。

微软准备将 AI 聊天机器人添加到 Word 和电子邮件中

据报道,微软已经讨论在 Word、PowerPoint、Outlook 等应用程序中加入 OpenAI 的人工智能,以便客户能够使用简单的提示自动生成文本。这一举措可能会改变超过 10 亿人编写文档、演示文稿和电子邮件的方式。工程师们正在开发在客户数据上训练这些模型的方法,并保证这些数据不会泄露给其他客户或落入不良分子手中。

消息来源:The Information
老王点评:让我想一下,或许以后可以就写个提纲,Word 就可以替你补充大段看起来没什么问题的文字?这简直是灌水的福音。

艺术家担心 Adobe 追踪其设计过程来训练 AI

前两天我们 报道 过,Adobe 创意云服务的隐私条款让用户担心其创作被用来训练 Adobe 的生成性 AI。这一讨论在 Twitter 上吸引了数百万次浏览和数千次转发。但是除了对图像、音乐、视频等创作被利用的担心之外,艺术家们还担心 Photoshop 和其他 Adobe 产品追踪其应用的使用,以了解创作者是如何工作的。也就是说,窃取平面设计师在几十年的工作中形成的流程和行动。一个复杂、曲折的艺术过程变得有可能被自动化。

消息来源:Fast Company
老王点评:如果是真的,那么平面设计师或艺术家们也将很快被人工智能取代。我们说的 AI 的消息够多了,总感觉我们处在 AI 爆发前夜,或许明天一切你想得到、想不到的工作都会因 AI 而改变。

动态三重缓冲有望加入 GNOME 44

两年多来,Canonical 一直在为 GNOME 桌面的 Mutter 合成器研究动态三重缓冲。这种按需的三重缓冲可以极大地提高桌面性能,特别是在使用英特尔集成显卡和树莓派板卡的情况下。虽然三重缓冲的实现还没有被上游化,但从 Ubuntu 22.04 LTS 开始就把这些补丁作为他们发行的 Mutter 包的一部分,Debian 等发行版也一直携带该补丁。开发人员表示动态三重缓冲有望会被 GNOME 44 上游纳入。GNOME 44.0 稳定版将于 3 月 22 日发布。

消息来源:Phoronix
老王点评:这对低性能显卡真是一件好事。相比 GNOME、KDE 的各种花哨改进,我更愿意看到它们在性能和稳定性等底层的进展。

引言

2022 年末,openEuler Summit 2022 上,中国 Linux 内核圈最有影响力的开发者之一——吴峰光博士做了名为《面向全场景操作系统的构建服务发布》的主题演讲,正式向开发者披露了 openEuler 统一构建服务 EulerMaker

Linux 中国开源社区就此采访了吴峰光博士,为读者挖掘到一些在峰会上亮相的 EulerMaker 背后的有趣细节。

? 吴峰光博士是著名的 Linux 内核贡献者、华为计算操作系统首席专家、openEuler 社区技术委员会委员。他在 Linux 内核领域上拥有卓越贡献,在 I/O 和内存管理、内核测试服务方面做出了重要的贡献。有关他的故事,可以参阅《新程序员》杂志的专访《吴峰光杀进 Linux 内核》。

openEuler 的全场景

2021 年 9 月,openEuler 宣布将支持全场景,在服务器、云计算之外,还支持编译计算和嵌入式场景,这就引来了很多人的关注,但也有一些怀疑的眼光。因为,服务器和嵌入式分处两端,中间有着巨大的鸿沟。

“30 年前,服务器 OS、嵌入式 OS,界限非常清晰,像是两个村,中间全是农田。但后来 IT 越来越深入千行百业,云、边缘、IoT 兴起,各种场景涌现,发生了交叠。所以我们认为这是一个新的历史机会,来做一个全场景 OS。”吴峰光说。

? 关于多场景的支持和融合,请参考我们之前对欧拉技术委员熊伟的采访:《操作系统专家解读 openEuler 22.09 最新技术特性》。

“要做全场景 OS,就引入了一个需求:原来的构建系统,如何转化为全场景统一构建系统?”

什么是 OS 构建系统?

OS 构建系统以 OS 源代码作为输入,以用户可安装使用的软件仓或OS镜像作为输出。

? 服务器领域的 OBS、嵌入式领域的 Bitbake,是各自领域的代表性构建系统,历史悠久。

为什么需要新的构建系统?

“openEuler 社区一开始是用 OBS 来构建的,”吴峰光介绍说,“OBS 最初由 SUSE 贡献开源,功能强大。但随着使用的深入,我们发现一些复杂的新需求很难在它上面改进,这就对 openEuler 的演进造成了困难。”

就一般的 OS 来说,OBS 构建可能够用;但是当一个操作系统要支持全场景,复杂度就大大增加,对构建系统提出了更严苛的要求。

吴峰光博士对 OBS、Bitbake 做了深入调研。他解释了这些老牌构建系统,为什么满足不了openEuler的需求:

“服务器领域的 OBS 主打能力是什么?几大主流的 Linux 发行版它都支持,比如可以给 Redhat 打包,也可以给 Debian 打包。兼容并包是它的核心设计目标,适应了 Linux 多样化的现状。但我们认为,多样化在早期对 Linux 发展有利,但长期而言,Linux 生态的碎片化是一个需要被解决的问题。”

“嵌入式领域的 Bitbake 采用了面向任务和过程的 DSL 描述语言,这使得它非常灵活强大,但自由度和复杂性过高,以学习曲线陡峭知名。现在流行的理念是如 YAML、JSON 等通用、声明式的配置语言,和函数式编程,以实现低门槛、易理解、可控可重复的构建过程。”

在吴峰光看来,在 30 年后的今天,构建系统有着新的时代目标

2022 年 3 月,openEuler 团队开始设计新的构建系统 EulerMaker。

EulerMaker 构建系统

OS 构建系统的核心流程是,用户给定一组软件包后,按照包依赖关系,对它们发起并行构建任务。“那么搭一个 Kubernetes 集群,上面叠加一个包构建调度模块,是不是就可以了呢?”

“这里的包依赖管理和调度,的确非常复杂:既有源包的依赖,又有二进制包的依赖,还有构建环境的依赖;既有构建依赖,又有运行依赖,还有传递依赖;成千上万的依赖关系,形成一个巨大的图,要考虑怎么破环,把它变成一个有向无环图(DAG),用于最大化并发调度。随着包构建的推进,新输出的 RPM 包需要成为之后 RPM 包构建的环境,还会提供新的依赖信息,动态更新这个 DAG 图。还要考虑各种包构建的失败情况,多用户并发任务之间的干扰,或者任意机器、模块随时崩溃重启后如何接力,避免单点故障,等等,这需要一整套精巧的架构设计。”

看到这样的难题,可能有工程师大牛们要摩拳擦掌,跃跃欲试了。但是在难题面前,吴峰光不慌不忙,踩了一脚刹车——

“我们先把发动机放一边,追根溯源,回到最初的那一个问题:用户到底需要一辆什么车?

做架构设计,首先要考虑用户场景,然后推导出功能,最后才能确定数据和流程。设计时全盘考虑了所有的用户需求,数据和流程在未来才会稳定,才不会变来变去。

“我们对用户需求的考虑,真的全面了吗?”

吴峰光继续展开分析:“在 Linux 发展的最初阶段,需求是简单的:只要功能实现了,跑一下 gcc / make 能构建出来,用户能用,构建系统的工作就完成了。那时侯 Linux 社区对测试不重视,也还没有 CI / CD 的概念,测试基本全靠用户踩坑。现在情况就不一样了,时代的要求在提高:开发者期望有质量把控,要做测试,要有一整套的构建测试 CI / CD,要覆盖一整个开发流程,一站式全部搞定,出来的 RPM 包已经是经过测试的、用户能放心用的。这已经被开发者认为是标配,是开发者的正常预期。”

所以,新的构建系统要集成测试流程。

那么,是不是直接集成现在流行的通用 CI / CD 测试工具就可以了呢?

“市面上的 CI / CD 通用测试服务,适合测试上层的应用;而操作系统需要测试的,既有上层软件,又有基础软件;既面向应用开发者,又面向内核开发者,还有软件厂商、硬件厂商、OS 厂商,他们都有独特的测试需求;既要做功能测试,还要做性能测试。这些不是市面上通用 CI / CD 能做的。”

“所以,我们需要一套全栈系统,既能构建,又满足上述所有测试需求。”

早在 2020 年,吴峰光就综合分析上述需求,设计了 Compass-CI。Compass-CI 被设计为一个通用的任务执行系统,可以执行构建、功能测试、性能测试等各类任务。Compass-CI 也被设计为一个异构调度系统,可以调度物理机、虚拟机、容器等各种资源。

“Compass-CI 已经在 2020 年上线服务,在这个基础上补足构建相关的模块,就可以作为 EulerMaker 的后端,服务 openEuler 的构建。”

“当我们可以用一套系统,来服务好业界各方的需求,就会有硬件厂商问我们,能不能远程接入他们的硬件?然后,我们就需要支持工作机远程接入,分布式调度,数据共享,立足云端,连接各类线下机房,x86、ARM 等各类硬件,方便开发者之间、厂商之间、开发者与厂商之间的分布式协作。”

“资源有了,功能有了,开发者来了,也会有很多需求:我打包了,能不能看见进展?出问题了能不能复现当时的环境?能不能登录调试修复?能不能 DIY 验证?这些需求都需要一一满足大家。现在 EulerMaker 的可视化界面可以显示构建的进展,每个包会显示其依赖关系图以及其构建的进度,哪些包已经构建了,哪些包还没有构建,预计还有多少分钟,它前面还有哪几个依赖都一目了然。而且每个开发者都可以有专属队列,可以大大缩短等待时间。”

EulerMaker 怎么解决全场景

一个 OS 怎么支持全场景?

“首先这个 OS 要足够通用。但这还不够。”吴峰光继续说到:“一个通用的 OS,所带的软件往往要求大而全,把常见的功能都编进去。但很多场合有着不同的需求,比如启用一个不常用的功能,或者在嵌入式设备上,因为资源受限,需要把不必要的功能裁减掉。”

一个通用软件,往往会提供一组编译期的定制功能,方便不同场景的开发者和用户针对自己的需求,构建出不同功能组合的二进制程序。

“类似的,当我们说一个 OS 支持全场景,是只需维护一套 OS 源代码,通过源码级 + 镜像级定制,即可构建生成各类场景化的二进制 OS 发布。强大的定制能力,是赋能一套 OS 源码支持全场景的‘究极魔法’。”

吴峰光进一步介绍什么是定制能力:

“最简单的定制能力,体现在软件打包上,就是对用户提供定制选项。一般是把上游软件的可选功能做一个封装,让用户在做包构建的时候可以打开或者关闭。比如 RPM SPEC 文件中通过宏定义了 %{with xxx} 选项,用户就可以通过 rpmbuild --with xxx 来打开 xxx 选项对应的软件功能。”

“然而 SPEC 文件中往往只封装了少量选项,对于没有被 SPEC 维护者封装的上游软件功能,用户就只好自行修改 SPEC 文件来实现定制,这样就很杂乱了。”

“事实上 OS 的用户和场景多种多样,他们需要的定制项,往往远超包维护者所能提供。比如有人想升级版本号,有人想加个补丁,有人想加个编译选项,或者修改编译器。我们需要一种开放式的定制规范,即允许用户在不修改打包文件的情况下,实现对打包文件的定制,且允许定制任意字段,不限于包维护者事先提供的一个封闭选项集合。”

“这时候就会发现 SPEC 文件的定制能力不够用了。”

EulerMaker 怎么解决这个问题呢?

“我们引入了开发者们都很熟悉的 YAML 配置语言,用它来声明式的描述一个软件包。然后允许用户再定义一个 YAML 文件,来选择性覆盖或者修改 OS 软件包 YAML 文件里的任意字段。这样不但实现了开放式定制,而且用户定制选项都可以以 YAML 配置文件的形式,集中存储管理,或者代码化 Git 管理。”

不过,事情并没有这么简单。

“当用户可以非常方便的定制任意字段,随之而来一个风险:很多包字段之间有条件依赖和约束,用户一不小心,就容易在不知情的情况下,破坏一些关联约束。在过去,很多这种约束在 Git 日志里隐式维护的。比如开发者首先修改一个 SPEC 文件里的版本号,同时去掉一个只适用于老版本的补丁,完成对软件包的一次升级。当暴露在定制环境下,这就是一大脆弱性,会造成事实上难以自由定制。”

而 EulerMaker 的解决办法,是把该补丁适用的版本范围,用条件语句显式的写在软件包 YAML 里。“这样用户随便改版本号,都不会出错,其它关联字段会自适应的变化,从而实现定制自由。”

如此一来,定制能力是强大了,那么易用性又如何?

“一般用户要的不是一堆零件,而是套装。成千上万的定制项,小白用户眼花缭乱,不知道拿它们怎么办,他可能只知道我用的是 OrangePI,那有没有对应的一组定制项可以拿来就用的?”

针对这个问题,EulerMaker 的解决思路如下:

“这组定制项,要由这个专业领域的开发者或者厂商,在社区里提供,我们称之为一个定制层。每一种硬件、场景都可以有这样一个个的定制层。这样场景化 OS 的开发任务就简化为,菜单式选择所需的层,像搭积木一样组合,轻松完成 OS 的场景化分层定制。”

以上,就是 EulerMaker 解决全场景的整体思路。最后,吴峰光总结说:

“一个好用的全场景 OS,一定会是一种生态协作的组织形态。首先把各个场景的公共知识下沉到 BaseOS,统一描述,汇聚复杂枯燥的字段间条件依赖,方便在各个场景中复用。然后创建一个个薄薄的场景化定制层,简单描述各场景下“我要什么”的问题。BaseOS + 多样化场景层,成为 openEuler 社区共同维护和提供的公共组件,通过搭积木的方式,让开发者 DIY 菜单式定制,成就一个轻松愉悦的 OS 创造体验。”

为了让读者们对分层定制有一个直观的概念,吴峰光举了两个例子:

1、Redis 容器裁剪:

env.CC: /usr/bin/musl-gcc -static
env.CFLAGS: -I/usr/musl/include
env.LDFLAGS: -L/usr/musl/lib

buildRequires:
    - musl-gcc

subpackage.redis-server:
    meta.summary: redis-server
    files: %{_bindir}/%{name}-server

redis.yaml 示例

该示例使用十行 YAML,即可裁剪出 1MB 的 Redis 。

​以下视频演示了分层定制 Redis 的过程:

2、内核定制维护:

env.kconfig: CONFIG_BTRFS_FS=y
patchset.my-xxx-improve: xxx.patch

kernel.yaml 示例

该示例使用一个 YAML 文件,两行搞定 Linux 内核的定制维护。

“比如您在一家大公司的基础设施团队,需要在 openEuler 基础上定制 Linux 内核,改一下 kconfig,加一个补丁。在过去,您可能需要拷贝一份 kernel.spec,然后直接在上面修改。这意味着维护上百行的 SPEC 文件,且时不时要从上游回合新的改进,这一过程枯燥而繁琐。现在从 Fork 模式转为搭积木模式,只需维护好一个小小的 kernel.yaml 文件。然后每次拉新的 BaseOS 重新构建,都会自动拿到上游欧拉内核的最新错误修复。这样就很好的降低了开发维护成本,提高了安全性。是一种更加可持续的上下游协同演进方式。”

统一的包格式

在吴峰光的介绍中,我发现了一件令我很感兴趣的事情,就是 openEuler 在探索自己独有的软件包规范。

我们知道,openEuler 现在采用的是业界主流的软件包格式之一:RPM 。这种软件包格式不仅仅被 Redhat Linux 使用,也被 openSUSE、OpenMandriva、Oracle Linux、Tizen 等使用。

而在 openEuler 中,RPM 软件包不仅仅用在我们熟知的服务器、云计算领域,还应用在其它场景中,比如嵌入式。

为了一统软件包的定义,openEuler 采用了新的 YAML 配置语言进行包描述,并接管 RPM 的 SPEC 文件,成为新的开发者界面。吴峰光说,SPEC 文件中采用了大量复杂的宏定义,而 EulerMaker 将这些复杂性隐藏到YAML后面。换言之,openEuler 新的统一构建系统采用的 YAML 配置语言制定了一种更通用、更灵活的包定义。

这是不是代表着 openEuler 会逐渐发展自己的软件包格式?吴峰光表示,在保持兼容性的同时,openEuler 会走出一条自己的路。

别出心裁创建一种新的包格式容易,但是能在兼容既有架构的基础上,又能开拓新的特性,乃至于支持更广泛的场景,这应该很值得期待。

迈向开源开放

经过半年的努力,统一构建系统服务 EulerMaker 已经上线,已经在欧拉社区发挥作用,但是作为一个开源社区的产物,笔者更希望看到它能开源出来,惠及更广大的开源社区,也接受开源社区的批评和贡献。对此,吴峰光博士表示,一定是会开源的,但是目前还需要进一步打磨成熟。对于这样的回应,笔者很认可,毕竟吴峰光博士对开源社区的贡献一向以精益求精而著称。非常期待能早日见到一个强大而完善的统一构建系统开源出来。

数千用 Rust 开发的项目面临拒绝服务攻击

Rust Hyper 包是一个非常流行的处理 HTTP 请求的 Rust 库。安全研究人员发现,大量包含 Hyper 的项目容易受到精心设计的 HTTP 请求引起的拒绝服务攻击,漏洞源于在使用 Hyper 库时忘记对 HTTP 请求设置适当的限制。目前,Rust 的包存储库 crates.io 中列出的 2,579 个项目依赖于 Hyper,下载量已超过 6700 万次,但大量项目尚未回应修复的消息。

消息来源:The Register
老王点评:并不是使用了 Rust 就高枕无忧了,还是会有各种其他的安全漏洞。

美国最幸福、压力最小的工作是伐木工和农民

根据美国劳工统计局的调查,农业、伐木业和林业在所有主要行业类别中具有最高的自我报告的幸福水平,以及最低的自我报告的压力水平。压力最大的行业是包括金融和保险在内的行业,其次是教育和专业和技术行业。

消息来源:华盛顿邮报
老王点评:看看手里的键盘,突然不香了。

苹果公司因非法获取用户数据而被罚

法国数据保护机构 CNIL 周三对苹果公司处以 800 万欧元的罚款。CNIL 称,苹果公司未能 “在将用于广告目的的标识符存入法国 iPhone 用户(iOS 14.6 版本)的终端之前获得他们的同意”。在运行较低版本的 iOS 的 iPhone 中,苹果的个性化广告隐私设置是默认打开的。较新版本的 iPhone 操作系统已纠正了这一问题。

消息来源:Gizmodo
老王点评:虽然苹果公司在隐私方面已经算是不错了,但是也难免会有这种有意无意的错误。