分类 观点 下的文章

开源安全基金会(OpenSSF)正式 成立于 2020 年 8 月 3 日。本文将讨论 OpenSSF 创立的初衷,它成立之初六个月内的成就,以及它未来的愿景。

(LCTT 校注:原文发表于 2 年前, 但时至今日仍然有一些值得了解的信息。)

全世界都在推行开源软件(OSS)理念,所以开源软件的安全也至关重要。为了提升开源软件的安全性,业界已经做了大量工作,并取得了一些成果。这些成果包括:Linux 基金会的 核心基础设施计划 Core Infrastructure Initiative (CII)、GitHub 安全实验室的 开源安全联盟 Open Source Security Coalition (OSSC)和由谷歌以及其他公司创立的 联合开源软件计划 Joint Open Source Software Initiative (JOSSI)。

显然,如果这些成果合为一体,软件行业将发展得更加顺利。这三项成果在 2020 年合并为“旨在促进开源软件安全性的、由各行业巨头主导的跨行业联盟”。

OpenSSF 的确受益于这种“跨行业联盟”;它有几十个成员,(按字母顺序)包括 Canonical、 GitHub、谷歌、IBM、英特尔、微软和红帽。联盟的理事会成员还包括安全社区个人代表,这些个人代表是那些不能以企业名义作为联盟成员的个人。该联盟也创造了一些便于人们合作的组织结构:建立一些活跃的工作组,这种工作组确定(并公布)它存在的价值,其中的成员应当就该组织的技术愿景形成一致意见。

但是这并不重要,除非它们有实际成果。当时虽然处于早期,它们也确实取得了一些成果。它们发布了:

  • 安全软件开发基础课程:在 edX 平台上有 3 门免费课程,旨在教授软件开发人员软件安全方面的知识。这些课程注重实际操作,任何开发人员都可以较轻松地学习,而不是那些需要耗费大量资源的理论或案例。开发人员也可以付费参加测试,从而获得认证,表明自己掌握了这些课程地内容。
  • 安全评分卡:为开源项目自动生成“安全分数”,帮助用户进行信任、风险和安全方面的决策。
  • 关键性分数:基于一些参数,为开源项目自动生成关键性分数。临界分数可以让人们对世界上最重要的开源项目有更好的理解。
  • 安全度量仪表盘:这是较早时候发布的成果,它结合安全评分卡、CII 最佳实践和其他数据来源,提供与 OSS 项目有关的安全和支持信息的仪表盘。
  • OpenSSF CVE 基准测试:基准测试由超过 200 个历史上的 JavaScript/TypeScript 漏洞(CVE)的脆弱代码和元数据组成。这将帮助安全团队评估市场上的各种安全工具,使他们能够用真实的代码库(而不是合成的测试代码)确定误报和漏报率。
  • OWASP 安全知识框架:与 OWASP 的合作成果,它是一个知识库,包含了带检查清单的项目和使用多种编程语言的最佳代码样例。它还提供针对开发者如何使用特定的语言编写安全代码的培训材料,以及用于实际操作的安全实验室。
  • 2020 年自由/开源软件贡献者调查报告:OpenSSF 和 LISH 发布了一份报告,其中详细说明了对开源软件贡献者的调查结果,并以此为依据,研究和确定提高 OSS 安全性和可持续性的方法。一共调查了 1200 名受访者。

现有的 CII 最佳实践徽章 项目已经与 OpenSSF 合并,将继续升级。现在项目有很多中文译者,翻译为斯瓦希里语的工作也在进行中,项目也进行了很多小改进,详细阐明获得徽章的要求。

2020 年 11 月举行的 OpenSSF 大会讨论了 OpenSSF 正在进行中的工作。最近,OpenSSF 有这些工作组:

  • 漏洞披露
  • 安全工具
  • 安全最佳实践
  • 对开源项目安全漏洞的识别(重点关注指标仪表盘)
  • 对关键项目的保障
  • 数字身份认证

除了持续更新已发布的项目,未来可能的工作还包括:

  • 为减少重复工作,在多种技术指标中确定哪些是重复和关联的安全需求。这就是作为领导者与 OWASP 协作开发,也称为 通用需求枚举 Common Requirements Enumeration (CRE)。CRE 旨在使用一种公共主题标识符,将标准和指南的各个部分联系起来,这种公共主题标识符的作用是令标准和方案制定者高效工作,令标准使用者能搜索到需要的信息,从而使双方对网络安全有相同的理解。
  • 建一个网站,提供对安全度量仪表盘的免安装访问。再次强调,这将会提供各种来源(包括安全计分卡和 CII 最佳实践)的数据的简单展示。
  • 开发对关键 OSS 项目的识别功能。哈佛大学和 LF 已经做过一些识别关键 OSS 项目的工作。未来一年内,他们会改进方法,添加新的数据来源,从而更好地进行鉴别工作。
  • 资助一些关键的 OSS 项目,提高它们的安全性。预期将关注那些财力不足的项目,帮助这些项目提升整体性能。
  • 识别和实现已改进和简化的技术,用于数字签名的提交和对身份的校验。

跟所有的 Linux 基金会项目一样,OpenSSF 的工作是由其成员决定的。如果你对大家所依赖的 OSS 安全有兴趣,你可以访问 OpenSSF 网站并以某种方式加入它们。参与的最好方式是出席工作组会议——会议每隔一周就举行,而且非常随意。通过合作,我们可以有所作为。欲了解更多信息,可以访问:

https://openssf.org

作者:David A. Wheeler Linux 基金会开源供应链安全总监

本文 首次发表于 Linux 基金会网站


via: https://www.linux.com/news/open-source-security-foundation-openssf-reflection-and-future/

作者:The Linux Foundation 选题:lujun9972 译者:cool-summer-021 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是一个困扰 Linux 用户的常见问题。这也是考试和面试中经常问到的一个问题。下面是你需要了解的所有内容。

开源朗读者 | 徐斯佳

你可能在网络上的各种论坛以及讨论区听过这句话:

Linux 只是一个内核。

这让你感到好奇。它是个内核?还是个操作系统?两者之间有什么区别?

我将在本文中回答这些问题。

Linux 是操作系统还是内核?

好吧,从技术上讲,Linux 只是一个内核,而不是一个操作系统。但是,术语 “Linux” 通常是指一个完整的操作系统,它包括一个 交互界面 Shell (例如:bash)和命令行和/或 GUI 工具来控制系统。这个完整的操作系统的正确叫法是 “Linux 发行版”。流行的 Linux 发行版有 Ubuntu、Red Hat 和 Debian。

早在 1991 年,Linus Torvalds 创建的只是一个内核。直到今天,他也在为 Linux 内核工作。他不再编写代码,而是监督哪些代码进入内核。

内核?什么东西?

内核是每个操作系统的中心。不仅仅是 Linux,Windows 和 macOS 也有内核。

将内核想象成操作系统的心脏。没有心脏,你就无法生存。没有内核,操作系统就无法存在。

但是,就像心脏需要一个身体来生存一样,内核需要其他人们可以在计算机上使用的程序和工具来构成一个完整的操作系统。

这是一个操作系统的典型架构:

在中心的内核与硬件交互。在它之上是与内核交互的 交互界面 Shell 。然后你有应用程序、命令行和图形界面,为你提供使用系统的各种方式。

内核是引擎,操作系统是汽车

一个更好的类比是将内核想象成汽车的引擎,而操作系统则是汽车。

你不可能驾驶一个引擎,但是如果没有引擎,你也不能驾驶一辆汽车。你需要轮胎、转向机和其他组件才能将其变成一辆可以驾驶的汽车。

相似地,你不能直接使用内核。你需要 交互界面 Shell ,其他工具和组件才能使用操作系统。

Linux 对比 GNU/Linux

在类似的地方,你也会看到例如 “Linux 只是一个内核,你所说的 Linux 实际上是 GNU/Linux” 的陈述。

在 Linus Torvalds 在 1991 年创建 Linux 之前,Richard Stallman 就创建了 自由软件运动 Free Software movement 和 GNU 项目。GNU 项目包括对流行的 UNIX 工具和命令的重新实现,例如 lsgrepsed 等。

通常,你的 Linux 发行版会在 Linux 内核之上包含所有这些 GNU 工具。

这就是为什么纯粹主义者坚持称之为 GNU/Linux,以便人们不要忘记 GNU 对 Linux 成功的贡献和重要性。

最后……

所以,如果你在面试或者考试中被问到这个问题,回答 “Linux 是一个内核,而不是一个操作系统”。这是你的老师或面试官在大多数情况下想要的答案。

但是更深入一点,理解内核和操作系统之间的区别。

如果有人说:“我使用 Linux”,你就会明白这个人是指 Linux 发行版,而不仅仅是内核。诚然,没有必要用 “Linux 只是一个内核,而不是一个操作系统” 来纠正别人。


via: https://itsfoss.com/linux-kernel-os/

作者:Abhishek Prakash 选题:lkxed 译者:Cubik65536 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

从千禧年间走过来的人,必然都经历过盗版的 Windows XP 满天飞的时代。而在那个时代,也有这么一撮儿 Geek,他们选择不与盗版共行,但又希望能够使用一个正版的操作系统,开源免费的 Linux 成为了最终的选择。毕竟,选择使用盗版虽然免费,但难免有风险。开源免费的 Linux 看起来也不错,还没有任何心理负担。何乐而不为?作为一个倒腾计算机比较早的人,我也有幸经历过那段时间,装过机,玩过 Linux 。我曾不止一次试图将 Linux 作为我的主要的操作系统,但都败在了当时国内软件对于 Linux 操作系统生态支持不佳的问题上

毕竟,作为一个年轻人,如果连 QQ 都不能在 Linux 上使用,不亚于断网造成的困扰。你可能可以用 Linux 来写完工作的文档,但你无法将其传递给你的同事们;你可能需要使用 FTP 将其上传到自己的网站上,再给同事链接,让同事去下载,抑或是使用海外的 Skype、Slack 等产品。虽然你连接着互联网,但你仿佛就是断网

但那个时候,腾讯尚未为 Linux 提供 QQ 应用。虽然有人通过其它的一些变通方式可以勉强在 Linux 上使用 QQ,但效果差强人意。直到 2009 年,腾讯才正式推出了 QQ 1.0 版本。随后的十年里,Linux 上的 QQ 就再无动静,一直到 2019 年,QQ 才 再次更新 了 2.0 版本。

图片来自 OSChina

但这个新的 2.0 版本,其应用界面却还停留在 10 年前。而随后,QQ for Linux 并为见到持续的更新。虽然缓解了部分 Linux 用户使用 QQ 的难处,但几年来,并未引来更多反响和改进。

直到最近,QQ for Linux 又有了 新的动作,先后推出了 3.0、3.1,并且比之前的版本有了突破性的改变,真正让 QQ For Linux ,成为一个可用的选项。

QQ For Linux 3.1 — 完成度堪比 Windows/macOS 版本的新版

之所以让我感受到 QQ For Linux 3.1 成为可用的,是它在功能和 UI 上的完备。和 2.0 的老式用户界面不同,QQ For Linux 3.1 使用了和 Windows QQ 和 macOS QQ 相同的 UI。

在产品的功能上,QQ For Linux 3.0 和我们所熟悉的 Windows QQ 、macOS 做到了常用功能的对标提供。诸如群管理、QQ 空间、甚至是最新的群频道,都已经在 QQ for Linux 当中提供。可以说,作为一个普通的 QQ 用户,这些功能已经可以满足你 90% 的需要了。

如果过去 QQ 是一个阻拦你选择 Linux 的拦路虎,如今这个拦路虎已经不复存在

从技术的角度来看,采用跨平台框架 Electron 的设计确实为 QQ For Linux 的开发带来了便利,不仅可以实现多平台兼容性,还可以大大降低开发人员的工作量。同时,采用跨平台框架也可以提高开发效率和质量,减少开发成本和维护成本。这种技术方案设计的优势不仅可以在 QQ For Linux 中得到体现,未来,还可以引导更多的国产应用提供对于 Linux 的支持。

稍有瑕疵,但进展迅速

QQ For Linux 3.1 并不是横空出世,其实在 2022 年 12 月底,QQ 便对外放出了 QQ For Linux 3.0 ,但 3.0 版本的 QQ For Linux 还有不少的问题,存在功能不完整。比如登录时每次都要扫码(在 3.1 版本已经修复)、不支持语音、视频(3.1 仍不支持)。

不过,多年来 QQ 团队在 Linux 上的懈怠,确实让社区用户对于 QQ 不敢抱有太高的期待,Linux 中国的贡献者们对于 QQ For Linux 的评价多是”腾讯能支持 QQ,已感激不尽“、”首先不折腾不闪退,可以平滑打字看图片我就算满意了。毕竟我也不会使用太多群功能。但是如果能过像 Windows qq 一样提供文件夹一键下载就好了,而且打开群聊也查看不到群Q号,不知道是不小心还是故意没放”。

多年的懈怠,使得大家不敢对腾讯抱有太高的期待,但 3.0 发布的一个多月后,QQ For Linux 便推送了新的 3.1 版本,其迭代速度,也让大家真的可以期待一下,相信腾讯 QQ 团队也在快速迭代,或许要不了多久,我们就可以在 QQ For Linux 上使用完整的 QQ 能力。

生态支持广泛,但可更进一步

Linux 生态和 Windows、macOS 生态有一个很大的不同,它有多种不同的发行版和包管理器机制。虽然可能底层的二进制完全相同,但对于普通的用户来说,自己去解包,再重新打包依然是一个不靠谱的方案。

这一点,QQ For Linux 已经完成了大部分工作:QQ For Linux 提供了 RPM、DEB、AppImage 方式的安装包,对于绝大多数主流的发行版都已经提供适配。

对于 QQ For Linux 来说,要想让更多的 Linux 用户方便地使用,确实需要更多的努力。QQ For Linux 虽然已经预装在一些国内常用的 Linux 桌面发行版,但目前还没有进入更多主流的 Linux 桌面发行版的官方仓库。这对于使用 Linux 桌面的更多用户来说,不能方便的在官方的软件仓库、软件中心中便捷的安装,还是稍显麻烦,也不利于 QQ 在 Linux 用户群体中的推广。

除了 QQ ,我们更值得关注背后的中国 Linux 生态

QQ For Linux 的出现,对于我们每一个 Linux 用户来说,是一件好事、大事。细想一下,这其实是中国 Linux 生态在不断变好的佐证。作为一个专注于 Linux 和 Linux 周边生态的技术人,近几年来,我们在不断感受到国产 Linux 的变化,开始逐渐丰满、完善。

从层出不穷的国产 Linux 发行版,到各个行业和领域开始使用 Linux 作为面向用户的主要界面系统,再到如今我们看到最重要的 QQ For Linux 也与时俱进的发布了新版。作为一名 Linux 老用户,我认为,用 Linux 作为日常办公,已经被搬开了最后一块石头

这对于整个中国的 Linux 生态来说,也起到了带头的作用。以往我们在说 Linux 的时候,常常说没有 QQ 、微信, 不可能推广下去的,但如今 QQ 已经入局参与到 Linux 生态的建设了,其他的厂商相信很快也会随之涌入,帮助大家可以在获得自由的同时,也与世界密切相接。

除了 x86,还有 ARM64 和龙芯,为国产芯注入强心剂

在 QQ For Linux 的安装页面上,除了我们熟悉的 x86 平台,还有 ARM 平台和 LoongArch 平台。x86 自不必说, PC 主机的核心战场;而 ARM 平台也一直伴随着 Linux 用户,毕竟树莓派几乎是每一个玩 Linux 人必备的小主机。LoongArch 便是我们所熟悉的龙芯平台。作为国产操作系统和国产芯片的主要阵地,龙芯过去一直也缺少一些杀手级应用。QQ 对于龙芯的支持,让普通群众从 x86 芯片切换到龙芯也成为了一个可能。

在信创飞速发展的大背景下, 可以预见到,在未来的若干年里,我们的一些公共基础设施,可能都将会使用 Linux 来提供服务。普通用户所需要的核心软件,在 Linux 下也都得到了完善的支持。

可以预期的是,虽然普通用户还会在许多场景使用 Windows、macOS ,但在未来,Linux 已经可能成为用户无感知使用上的主流。

除了功能对齐,QQ For Linux 还可以是什么?

和 Windows 不同,Linux 的用户群体大多是开发者或者极客们。这样的大背景下,QQ For Linux 可以探索更多的功能和应用场景,特别是在 Linux 用户群体中,他们更加熟悉命令行和自动化工具的使用,这也为 QQ For Linux 提供了更广阔的应用前景。

  1. 支持通过命令行工具进行 QQ 聊天:将 QQ 的聊天功能通过命令行封装成一个命令行工具,用户可以通过命令行工具发送消息、接收消息等,方便用户在终端界面中使用 QQ 进行聊天,让在 Emacs 里聊天成为可能。
  2. 提供原生 API ,让用户可以通过脚本语言来控制 QQ :QQ For Linux 可以提供一些原生 API 接口,例如 Python API、JavaScript API 等,用户可以通过脚本语言调用这些 API 接口,实现对 QQ 的控制,例如通过 Python 脚本来定时发送消息、自动回复消息等。
  3. 结合自动化工具提供更丰富的应用场景:QQ For Linux 可以和常用的自动化工具如 Cron、Jenkins、Ansible 等结合,实现更丰富的应用场景,例如在 Cron 中定时发送消息、在 Jenkins 中实现自动化测试中的通知功能等。

而所有的这些都能够为用户提供更加便捷、灵活的应用场景和功能,为开发者群体提供更多的便利和灵活性。

距离全面迁移 Linux ,我们还差多少?

QQ 给大家开了个好头,而其他领域的软件,其实也很早就开始深耕 Linux 操作系统。我简单数了一下,我们日常使用的浏览器都是有 Linux 版本的;而办公用的 WPS Office,同样也有 Linux 版本。如果你需要做日常沟通,QQ 和邮箱,都有相应的客户端来满足你的需求。至于微信,QQ 珠玉在前,微信的新版,也指日可待。

在我看来,日常使用 Linux 已是坦途。

下载 QQ for Linux 3.1

学者现在可以免费发表(文章),免费阅读(文章),与此同时仍然能够在专业成就的道路上持续进步。

学者们经常将他们的作品免费提供给公司,然后却要花钱购买它!你能想象农民在免费送出他们的食物之后再重新花钱买回来做晚餐吗?可能不能吧。像我这样的学者陷入这样的阴谋中几十年了,我们以工作保障为交换免费提供我们的作品,然后却要每年花几百万美元来阅读我们自己的文章。

幸运的是,情况正在发生改变。我刚刚完成的一项 研究 的结果显示:对于学者来说,获得工作保障的同时而不对此付出代价是可能的。我的研究发现数百种期刊是 白金开放获取 platinum open access (LCTT 译注:译名源自中文网络)的 —— 也就是说,它们不需要作者或者读者为同行评议的工作付费,却仍然拥有帮助学者在他们的职业生涯中取得成功的声望和读者群。

这一趋势正在扩张:开放获取期刊目录 罗列了超过 17300 种期刊,这些期刊均提供了某种程度上的 开放获取 open access (OA)方式。该目录还提供了超过 12250 种无须 文章处理费 article-processing charges (APC)的期刊。我使用一段简易的开源 Python 脚本 来将该列表与另一按照期刊发表的文章被其他文章引用的频次排名的期刊列表(期刊影响因子列表)进行比较。很明显,最近几年来,总体的开放获取期刊与白金开放获取期刊均呈上升趋势。这一趋势可能有助于在避免学术奴役的同时加速科学发展。

学者的窘境

学者们通常是相当聪慧的,那么他们为什么如此长时间地投身于这种不利体系中呢?简而言之,学者陷于这样一个陷阱中:为了维系他们的工作和获得终身教职,他们需要在高 影响因子 impact factor 的期刊上发表文章。影响因子是一种基于最近两年间在给定期刊上发表的文章的平均引用数量的衡量指标。影响因子由 Web of Science 索引。对学者而言,影响因子是一个有影响力的衡量指标。

历史上,学术出版一直由一小部分主要出版商统治。他们采用基于订阅制的商业模式。在这样的商业模式中,学术作者撰写文章,评审同行的文章,也经常对这些文章进行编辑。这些工作都是没有任何报酬的。这些文章出版了,它们的版权则由那些主要的出版公司所有。即使是参与上述工作的学者也需要个人付费阅读这些文章(每篇文章大约 35 美元),或者由他们所在学校的图书馆付费订阅期刊上的所有文章。(订阅)所花的费用是相当可观的:单是一个出版商的所有文章的订阅费用通常超过一百万每年。

有很多显然的理由都说明这一体制是毫无意义的。由于限制对隐匿在付费专区后的受版权保护的科学文献的访问,使得科学进程陷于停滞。如果你因为无法查看而不知道前沿科技是什么的话,你就无法进行相应的前沿技术研究。科学家被划分为能够负担访问这些文章的费用的人,以及不能负担(这些费用的人)。发展中国家的学者往往难以支付,不过即使是财力雄厚的 哈佛大学 也已经采取行动控制它的年度期刊费用。

文章作者的花费也同样高昂。每篇文章的文章处理费从几百美元到骇人听闻的几千美元不等。文章处理费对一些资金不足的学科尤其有害,比如人文学科与社会学科(与物理学、医学和工程学相比而言)。大量的文章处理费也强化了学术界的贫富差距,使得(学者的)专业成就依赖于是否有收入投入文章发表。还有哪种职业要求从业者付费为他人制造产品?

开放获取,解决之道!

开放获取行动可以解决上述问题,开放获取行动倡导使所有的学术文献对任何人都能自由自由获取。开放获取的出版量有明显上升:它占了当前同行评议文章的将近三分之一。

开放获取的优势分两个方面。首先,开放获取有利于科学整体,因为它提供了一个不受阻碍地阅读前沿技术的方式。这些技术有助于进一步做出重要的认知进步。其次,就学者个人层面而言,通过让他们的作品在网络上轻而易举地免费获得,提供了最大化他们作品的潜在受众的实际优势。

基于上述原因,资助者已经开始要求开放获取,尤其是科学领域的公共资助者。如果一项研究的公共资助者还需要在阅读研究内容时二次付费,这种做法很难站得住脚。

学术出版目前身处何方,以后又去向何处?

传统出版商仍然掌控着目前的局面,主要是因为认为他们垄断了具有影响因子的期刊这一认知。很多学者无视传统出版方式的缺点,仍然持续在基于订阅制的期刊上发表文章或者支付高昂的文章处理费,因为他们知道在高影响因子的期刊上发表文章是至关重要的,它能够提供赖以获取补助、终身教职与职位晋升的专业性的证明。

多年以前,学术界完全没有选择的余地:要么在具有影响因子的期刊上发表,要么在通过开放获取方式发表。现在他们可以通过开放获取方式发表并仍然能够通过以下三种方式之一享受影响因子的益处:

  • 绿色开放获取模式 Green OA :以传统方式出版后,再通过上传预印版或者接受版论文至开放仓库或者服务器完成自行归档。一些高校拥有用于上述目的的公共仓库。举例而言, 韦仕敦大学 Western University 拥用 Scholarship@Western 公共仓库,该校的任何教师都可以在上面分享他们的作品。而没有自己机构的公共仓库的学者可以使用诸如 preprints.orgarXivOSF preprints 等网络服务器。我也会将社交媒体用于学术,比如将 AcademiaResearchGate 用于自行存档。由于不同的出版商设计了不同的规则,这是不方便查阅的,而且某种程度上是耗时耗时耗力的。
  • 金色开放获取模式 Gold OA :在日益壮大的具有影响因子的期刊列表上选一份期刊发表,它将使你的文章发表后可以自由获取但是需要文章处理费。这种方式易于查阅:开放获取设置内建于出版过程中,只需要像往常一样进行学术出版。这种方式的缺点是可能会从研究活动中拿出一部分资金用于文章处理的费用。
  • 白金开放获取模式 Platinum OA :在具有影响因子的白金开放获取期刊上发表。不需要为出版和阅读付费。挑战在于在你的学科中找到符合上述标准的期刊,不过情况正在持续变化。

有数以万计的期刊,但是只有几百种具有影响因子的白金开放获取期刊。对于学者,困难可能在于在他们的研究与符合他们预期的期刊之间找到一个合适的平衡。你可以在我的研究报告附录中找到本文提到的列表,或者使用上文提到的 Python 脚本自行更新列表数量。白金开放获取期刊的数量正在快速增长,因此如果你目前尚未找到合适的期刊,仍然可能在不久以后拥有一些可靠的期刊以供选择。祝你享受出版的乐趣!


via: https://opensource.com/article/22/5/platinum-open-access-academic-journals

作者:Joshua Pearce 选题:lkxed 译者:CanYellow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

微分分析仪是一种能够求解微分方程的机械式模拟计算机。它已经不再使用了,因为如今最便宜的笔记本电脑都能更快地解决相同的问题,并且你还可以同时在线刷剧。然而在数字计算机发明之前,微分分析仪使数学家能够完成一些用其它工具不可能完成的计算。

现如今很难想象一台不是由印刷的数字电路组成的计算机竟然是可以正常运作的。机械计算机听起来就像是从蒸汽朋克小说里跑出来的一样。事实证明微分分析仪不但能用,而且还是一些研究领域中必不可少的工具。它最为人所知的应用是曾被美国陆军用于编制火炮射表。如果没有射表辅助瞄准,口径再大的火炮也无法充分发挥效能。所以理论上来说,微分分析仪在帮助同盟国赢得二战上发挥了重要作用。

要弄清微分分析仪是如何做到这些的,你首先得知道什么是微分方程。已经还给学校了?没事,我也一样。

微分方程

你首次接触微分方程应该是在大学《微积分 I》的最后几周。在学期的这个阶段,你那薪资低微的兼职教授应该已经教授过极限、导数和积分这些概念了。在这些概念之上再引入等号,现在你就得到了一个微分方程。

微分方程描述了一个变量相对于另一个(或多个)变量的变化率。形如 的常见代数式表示变量 y 与 变量 x 之间的关系。形如 的微分方程表示变化率与其它变量间的关系。本质上微分方程就是用纯数学方式来描述变化率。前面第一个方程表示 “变量 y 相对于变量 x 的变化率刚好等于 x 。”第二个方程表示“无论 x 的值是多少, y 相对于 x 的变化率总是 2。”

微分方程非常有用,因为在现实世界中,描述复杂系统从一个瞬间到下一个瞬间的变化往往比想出一个描述系统在所有可能的瞬间的方程要容易。因此,微分方程被广泛应用于物理和工程领域。一个著名的微分方程是 热传导方程 heat equation 。它能描述热量在物体中的扩散过程。要提出一个完全地描述物体在某时刻 t 的热量分布的函数很困难,但推理热量从某时刻到下一个时刻的扩散过程不太可能会让你绞尽脑汁——近冷者变热,近热者变冷。所以尽管热传导方程在形式上比起前面的例子要复杂得多,它也只是变化率的描述而已。它描述了在给定与周围的温差时,物体上任意一点的温度随时间的变化。

再来举一个更具体的例子。假如我在真空中竖直向上抛出一个网球,在我窒息之前它会落回来吗?这是我在高中物理课上被问到的问题,解决它只需要基本的牛顿运动方程。现在暂且假设我已经忘记了牛顿运动方程,只记得物体以恒定的加速度 g (大约为 )向地球加速运动。那么如何用微分方程来解决这个问题呢?

现在把我对高中物理仅存的记忆表示成微分方程。网球在离手后会向地球以 g 加速运动。也就是说网球的速度相对于时间的变化率为 g(在负方向上)。进一步,我们可以说球离地高度的变化率(也就是速度)随时间的变化率是负方向的 g 。其微分方程形式如下,其中 h 表示高度, t 表示时间:

它跟前面的微分方程看起来略有差别,因为这是所谓的二阶微分方程。我们讨论的是变化率的变化率,也许你还记得微积分课讲过,这需要用到二阶导数。这是方程左边部分看上去像被平方了的原因。但是该方程也仅仅表示了球向下以恒定的加速度 g 加速运动这一事实。

到这里,我可以选择使用微积分来求解微分方程。解微分方程并不是要找满足指定关系的值,而是要找满足关系的函数。对上面的微分方程的另一种理解是存在这样的函数,它的二阶导数为 -g 。我们想要找到这个函数,因为它能告诉我们球在任意时刻的高度。好在这个微分方程恰巧是容易求解的。通过这样,我们可以重新推导出那些被我遗忘了的运动方程,从而轻松地计算出球落回来所花的时间。

但是大部分情况下微分方程是很难求解的。有时甚至是无法求解的。假设我在大学时把更多的精力花在了计算机科学上,那么我的另一种选择就是用微分方程来做模拟。如果已知球的初速度和加速度,我可以轻易用 Python 写一个 for 循环来逐秒迭代计算球在离手后 t 时刻的速度。在此基础上对循环程序稍加修改,就可以用算出的速度迭代计算出球的高度。运行这个 Python 模拟程序,它就可以计算出球什么时候落回来了。这个模拟并不是完全精确的,但是我可以通过减小计算用的时间步长来提升精度。总之我要做的只是搞清楚当球落回来时我是否还活着。

这就是微分方程的数值解法。这也是大多数领域中求解微分方程时实际采用的方法。对于用数值方法求解微分方程,计算机是必不可少的,因为模拟的精度取决于在微小步长上进行的大量计算。手工计算容易出错并且太耗时。

那如果将这个问题的背景时间设定在 1936 年呢?我仍然希望实现计算过程的自动化。但是此时离 克劳德·香农 Claude Shannon 完成他的硕士论文还有一年时间。在这篇论文中香农用数字电路实现了 布尔代数 boolean algebra 。没有数字计算机可用,恐怕就只能寄希望于于模拟计算机了。

微分分析仪

首台微分分析仪是由 范内瓦·布什 Vannevar Bush 哈罗德·哈森 Harold Hazen 于 1928 年到 1931 年在 MIT 建造的。他们两人都是工程师。制造它是为了解决应用数学和物理领域中的实际问题。正如布什在 1931 年的一篇论文 中所说,微分分析仪是为了解决那些“不断为他们所用方程的复杂性而不是深刻性所困扰的”的数学家的所面临的当代问题。

微分分析仪是一台由传动轴、齿轮和转盘组成的复杂仪器,它能够求解高达六阶的微分方程。它是一台由简单部件通过复杂组合而成的神奇机器。在这一点上它和数字计算机很像。不同点是,数字计算机通过在电路中实现布尔代数来模拟代数问题,而微分分析仪通过传动轴、齿轮和转盘直接模拟微分方程问题。微分分析仪的本质就是对实际问题的直接机械类比。

那到底怎么用齿轮和转盘来计算微积分呢?其实这是最容易解释的部分。微分分析仪最重要的构件是六个积分器,每一个对应一阶的微分方程。机械积分器的历史可以追溯到 19 世纪,它是一个相对简单的装置,能够对单个简单函数进行积分运算的。下面我们将了解积分器的工作原理,但顺便说一句,布什的巨大成就不是发明了机械积分器,而是发现了一种将积分器串联起来解决高阶微分方程的方法。

机械积分器由一个大转盘和一个小得多的转轮组成。转盘像唱片机的转台一样平行于地面平放。它由电机驱动匀速转动。转轮竖直的轻放于转盘表面上,其压力既要足够让转盘驱动转轮,又不能太大以致于阻碍转轮相对于转盘自由侧向滑动。总之当转盘转动时,转轮也跟着转动。

转轮的转速由它距离转盘中心的距离决定。转盘的中心部分自然转动得比边缘部分慢。转轮的位置是固定不动的,而转盘被安装在一个可以来回滑动的底座上。这样就可以调节转轮相对转盘中心的位置。下面就是积分器工作的关键原理:转盘底座的位置由积分器的输入函数控制。积分器输出取决于转轮的转动量。所以输入函数驱动了输出函数的变化率,这就是将某个函数的导数转换成了这个函数本身。这不就是积分运算吗?

如果刚才的解释还没有让你理解积分器的原理,那么直接看到机械积分器实际工作的样子应该对你有所帮助。其实它的原理出乎意料的简单,看一遍它的运行过程你肯定就能窥见其运作机制。因此我制作了一个 运行中的机械积分器动态原理图,强烈建议你看一看。它展示了通过各个部件的旋转和移动求函数 f(x) 的 不定积分 antiderivative F(x) 的过程。这可太有趣了。

我的可视化的一个漂亮的截图,但你应该看看原图!

现在我们有了可以做积分运算的组件,但是只靠它还不足以解决微分方程。为了解释求解微分方程的全过程,我将使用布什在他 1931 年的论文中所举的例子。这个例子恰巧跟前面考虑的微分方程是在本质上是一样的。(真是奇妙的巧合!)布什使用下面的微分方程来表示下落物体的运动:

这跟前面的网球运动的方程基本上是一样的,只不过布什使用 x 代替了 h ,并且增加了一项来表示空气阻力的减速作用。这个新增项采用了最简单的形式来描述空气阻力的作用:空气减慢球速的比率正比于球的速度(这里 k 是一个常比例系数,我并不关心它的具体取值)。也就说是球运动得越快,空气阻力就越大,对球的减速作用越显著。

为了配置微分分析仪来解决这个微分方程,我们需要从布什称之为“输入面板”的东西开始。输入面板其实就是一张安装在支架上的坐标纸。如果想要解更复杂的方程,首先需要操作员在坐标纸上绘制好输入函数图像,然后在机器启动时用一个与机器主体相连的指针来跟踪函数图像的轨迹。在我们举的例子中,输入是常数 g ,所以我们只需将指针移动到正确的位置并让它保持不动即可。

剩下的变量 x 和 t 又是什么呢?变量 x 表示球的高度,是微分分析仪的输出。它会被绘制在输出面板上的坐标纸上。输出面板与输入面板类似,只是它没有指针,取而代之的是由微分分析仪驱动的绘图笔。变量 t 仅仅是按固定速率步进。(在前面模拟网球运动 Python 程序中,我们通过循环来增加 t 。)变量 t 来源于微分分析仪的电机,它通过匀速转动传动轴来驱动整个计算过程。

布什的原理图对于理解我下面要介绍的内容很有帮助。不过为了便于理解,需要先对微分方程再做一次变换。对方程两边同时进行一次积分,得到下式:

现在方程中的各项与微分分析仪运行中各部件转动量所表示的值之间有了更明确的对应关系。布什的原理图如下:

配置的微分分析器用于解决一个维度上的落体问题。

在原理图的顶部是输入面板,右下角是输出面板。

图中的输出面板被配置成同时绘制高度 x 和速度 。积分器在左下方,由于这是二阶微分方程,所以我们需要两个积分器。电机驱动顶部标注为 t 的传动轴。(有趣的是,布什将这些水平传动轴称为“总线”。)

现在原理图中还剩下两个部件没有解释了。里边标记了 k 的方框是 乘法器 multiplier , k 是比例常数。它获取由 标记的传动轴的转动量,并通过齿轮组进行放缩。用 ∑ 标记的方框是 加法器 adder 。它通过巧妙的齿轮组合将两个传动轴的的转动叠加起来驱动第三个传动轴。我们的方程中涉及了求两项之和,所以需要引入加法器。这些额外组件的引入确保了微分分析仪有足够的灵活性来模拟由各种各样的项和系数组成的方程。

我发现以慢放的方式来推演电机启动时的级联因果过程对于理解微分分析仪的原理很有帮助。电机启动后立即驱动传动轴 t 匀速旋转。这样我们就有了时间的概念。这个传动轴有三个作用,分别由连接其上的三个竖直传动轴表示:它驱动了两个积分器的转盘的转动,同时带动输出面板的支架让绘图笔作图。

如果积分器的转轮被放置在转盘中心,那么传动轴 t 就不会带动其它传动轴转动。积分器的转盘会转动,但是放置在转盘中心的转轮不会被带动。这时输出图像将会是一条平坦的直线。出现这种情况是因为我们没有明确指定问题的初始条件。在上面的 Python 程序中,我们需要以常量或函数参数的形式用到网球的初始速度。在启动机器之前,我们通过将两个积分器的转盘调整到合适的位置来指定速度和加速度的初始值。

设置好这些之后,传动轴 t 的转动将会传导到整个系统之中。从物理上来说,许多部件会同时开始转动。但是我们可以认为转动首先传导到积分器 II,然后与基于 g 计算得到的加速度表达式求积分得到球的速度 。速度又反过来作为积分器 I 的输入,推动它的转盘让输出转轮以速率 转动。积分器 I 的输出作为最终结果将会被直接导向到输出面板上。

前面我有意避开了一个令人困惑的细节,那就是机器里有一个怪圈。积分器 II 以传动轴 为输入,但是该传动轴的转动又部分决定于积分器 II 的输出本身。这可能快把你绕吐了,但在物理上这并没有任何问题——因为所有部部件都是一同转动的。出现这种怪圈并没什么奇怪的,因为在用微分方程在描述某函数的变化率时,也经常会用该函数的函数的形式。(在这个例子中,加速度,即速度的变化率,取决于于速度。)

在将所有东西都正确配置好后,机器会输出球的高度和速度随时间变化的函数图像。这个图像是纸质的。用我们的现代数字化思维来看,这可能有点难以理解。画在纸上的函数图像能干什么?微分分析仪确实不能魔术般地给出解的简洁数学表达式,这是事实。但也请记住一点,很多的微分方程根本没有简洁的解析解。纸上的函数图像与前面模拟球下落的 Python 程序包含相同的信息:某时刻球的位置。它可以回答任何关于该问题的实际问题。

微分分析仪简直酷到爆。它虽然结构复杂,但是本质上只是一些传动轴和齿轮外的组合。要理解它的运作过程,你不必是电气工程师或者会制造芯片。然而它确实可以解微积分!它能够求解出那些靠你自己永远无法解决的微分方程问题。它证明建造计算机器的关键材料不是硅而是人类的创造力。

杀人

人类的创造力既能为善,也能为恶。正如我提到的,微分分析仪在历史上最知名的应用是为美国陆军计算火炮射表。鉴于二战是一场“正义的战争”,这是最好的结果。但是也不能忽视微分分析仪增强了大口径火炮的杀伤效能。火炮的确杀死了很多人。如果维基百科可信的话,在二战中死于炮火的士兵比被轻武器杀死的更多。

我们稍后再回到道德讨论上来,先快速解释一下为什么计算射表这么困难,以及微分分析仪是怎么帮助计算射表的。这是将微分分析仪应用于实际问题的很好的例子。射表能告诉炮手在射击某个距离外的目标时需要将炮口上抬多高。编制射表的一种方法是在不同的仰角下发射该火炮,并将结果记录下来。这种方法被用在靶场,比如位于马里兰的阿伯丁试验场。但是单纯通过实验观察的方式来编制射表即昂贵又耗时。在考虑到如天气状况或不同弹丸重量等其它因素时,需要进行的射击次数将会随组合爆增到无法实施的程度。所以基于少量观测数据建立数学模型,再基于该模型来填充出完整的射表是一个更好的方法。

我不想太深入讨论这些数学理论,它们实在太难了,我也不懂。但是你应该也想到了,支配飞行中的炮弹和向上抛出的网球运动的物理规律并没有什么不同。由于计算精度的需要,我们使用的微分方程不得不偏离其理想化的形式,并迅速变得面目狰狞起来。即便是最早的精确弹道理论中的公式,除其它因素外,还考虑了弹丸的重量、直径、形状、主风、海拔、大气密度以及地球自转 [1]

虽然关于射表计算的方程很复杂,但它们跟前面的微分方程一样,都可以通过微分分析仪数值求解。1935 年微分分析仪被阿伯丁试验场用于求解弹道方程。这显著加快了计算射表的速度。 [2] 然而,二战期间对于射表的需求增长太快了,以至于美国陆军计算射表的速度难以满足运往欧洲战场的武器装备的配套需求。这最终导致陆军资助了宾夕法尼亚大学的 ENIAC 项目。这促成了世界上第一台数字计算机的诞生。(LCTT 译注:严格来说 ENIAC 是第二台电子数字计算机。第一台电子计算机是 阿塔纳索夫-贝瑞计算机 Atanasoff–Berry Computer ,简称 ABC 计算机。)ENIAC 能够通过重新布线运行任意程序。但建造它的主要是为了以数倍于微分分析仪的速度来计算射表。

鉴于在微分分析仪之外,射表计算问题极大地推动了早期计算领域的发展,专门挑出微分分析仪的道德问题也许是不公正的。微分分析仪并没有局限于军事领域的应用,在二战期间和二战后的很大一段时间里,由于美国军方投入的大量的拨款,整个计算领域得到了发展。

总之,我认为微分分析仪更有趣的遗产是它告诉了我们计算的本质。我惊叹于于微分分析仪能做到这么多事情,我猜你也一样。我们很容易落入这样的思维陷阱:将计算看作是由快速数字电路实现的领域。事实上,计算是更抽象的过程,电子数字电路只是实现计算的典型手段罢了。在关于微分分析仪的论文中,布什说他的发明不过是在“运用复杂机械结构来类比复杂的推理过程这一影响深远的计划”上的微小贡献。他的总结很贴切。


  1. Alan Gluchoff. “Artillerymen and Mathematicians: Forest Ray Moulton and Changes in American Exterior Ballistics, 1885-1934.” Historia Mathematica, vol. 38, no. 4, 2011, pp. 506–547., https://www.sciencedirect.com/science/article/pii/S0315086011000279. ↩︎
  2. Karl Kempf. “Electronic Computers within the Ordnance Corps,” 1961, accessed April 6, 2020, https://ftp.arl.army.mil/~mike/comphist/61ordnance/index.html. ↩︎

via: https://twobithistory.org/2020/04/06/differential-analyzer.html

作者:Two-Bit History 选题:lujun9972 译者:toknow-gh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

好奇心能激发人们对于知识和真理的渴求,无论是对于硬件、开源软件、编程、组装个人电脑、优化系统设置,还是只是学习使用一个新软件。

 title=

我通常在家架设运行一个由一打计算机组成的家庭网络 —— 没错,正好 12 台计算机。同时我还负责其它地方的一些计算机维护工作。由于计算机很多,总会出现各种各样的故障,其中有很多最终确诊为硬件问题。但是要判定出是哪个硬件设备引发的故障却是一件难事。

就在这周,我的主工作站上出现了一个棘手的问题,导致我两次误判了问题的原因。本文将带你跟随我排查问题的过程。我将告诉你我在哪一步做了错误的判断以及为什么,还有误判是多么容易发生。

最初的症状

我手上一直有好几个项目。最近,我在几台台式机上打开了很多应用程序,我刚开始工作,突然就黑屏了。主工作站的大多数(不是全部)风扇都停了,这让我倒吸一口凉气。我从来没有遇到过这种情况,但显然我的系统出问题了。

我有两条主要线索可以跟进:一是显示黑屏,二是有些风扇不转了。但是前面板上的电源和磁盘活动指示灯还是亮的,只是比平常要暗一点。大多数安装在主板、内存条和风扇上的 RGB 装饰灯也都灭了。

我试过按电源键和重启键,都没有反应。我直接按供电单元的船型开关关闭了电源。重新供电后还是出现了刚才的症状。

最初的猜想

问题的现象和我数十年处理各类故障的经验将原因指向了供电问题。

我将供电单元拆了下来并用电源测试仪对它进行了检查。结果是供电单元没有任何问题,各项电压都符合规范。当然测试仪的结果也可能是错误的。测试仪并没有在满负荷状态下进行测试,比如计算机运行中耗电几百瓦的情况。我凭直觉更换了一个一千瓦的备用电源。

由于我的家庭网络中有 12 台计算机,我已经习惯准备了一些备用配件在身边。这样当有配件损坏时,我就不必非得跑一趟附近的电脑城或者网购后等快递了。由于计算机这么多,配件损坏是经常的事。

虽然电源测试仪告诉我电源没有问题,但更换电源后问题确实消失了。即便检测仪在过去都是正确的,我的经验、知识和直觉告诉我就是电源问题。

不幸的是,我的直觉错了。

第二个猜想

没过多久我的工作站再次又了相同的问题。但两个不同的供电单元有相同问题的可能性太低了。

我马上想到那一定是主板出问题了。我没有备用的主板,所以网购了一块新主板。我想到其实可以用上手上多余的内存条,然后把 CPU 连同一体水冷单元一起装到新主板上。

专业的故障排查

新主板需要几天天才能送到,所以我决定先将工作站上的旧主板拆下来。就在拔掉主板供电之前,我的好奇心显现,并驱使我给只剩主板、CPU 和内存的系统开机。我已经把其它的部分都拆掉了。

好的故障排除过程需要分离所有潜在变量,目前我只是对供电单元进行了测试。我需要对每个组件都进行测试。

这需要我先拔掉前面板上的扬声器和多功能面板连接线。多功能面板上集成了各种 USB、SATA 和内存卡插槽。

令人惊讶的是,当只有主板通电时竟然一切正常。

计算机本身无法开机,因为根本没有连接存储器。也不会有显示输出,因为我已经把显卡拆掉了。但是没有电源或主板故障的迹象。这进一步激发了我的好奇心。如果主板真的有问题的话,故障现象应该仍然存在才对。

所以我开始一系列的重复试验:断电,安装一个已经拆掉的配件,重新上电。

最终发现问题上由前置多功能面板引发的。

我拆除了多功能面板并将其它零件全部装了回去。工作站开机正常,运行良好。终于让我逮到罪魁祸首了。

起因

弄清真正的问题之后,我立刻就明白了问题的根本原因。这还要从几天前说起。那时我正在测试一些外接 USB 设备,包括几种摄像头、几个用于备份的存储设备和一个外接 USB 集线器。

我把一根 USB 连接线插到了多功能面板上的一个 USB 2.0 插口中。所有东西都停摆了,大部分灯熄灭了,风扇也不转了。USB 连接线发热很严重,我拔掉它时还把手指烫伤了。原来我不小心将连接线的 C 型插头插到了一个 USB 3.0 A 型插口里,导致了供电短路。

拔掉 USB 连接线之后,一切都恢复了“正常” —— 但事实并非如此。我粗心的错误对多功能面板造成了损伤,它在坚持了几天之后彻底短路了。

妄下结论

知识和经验有时候比电源测试仪之类的工具更重要。当然知识跟经验有时候也不管用。我最终找到了问题的真正原因,但其实我本该早就发现的。

尽管我在问题跟供电有关这一点上是对的,但还是误入歧途了。原因是我没能正确解读问题现象并根据线索调查得出逻辑结论导致的。我本可以更早找出问题的根本原因的,这样就不至于在修好主工作站之前浪费那么多时间在将我的笔记本变成临时主要设备上了。

系统管理员总与复杂的设备打交道,过早下结论在所难免。我有超过 50 年的从业经验,还是犯了这样的错误。我只需记住做几个 深呼吸,然后刨根问底直到找到问题的根本原因。

好奇心

至少在等待新主板到货期间,我遵循了自己的好奇心。这让我比等新主板到货要早得多将事情恢复正常。同时也避免了我在没有充分测试的情况下把一块完好的主板丢掉。

谚语说好奇心害死猫。我讨厌这个谚语,因为它被家长、学校、见识短浅的老板、老师和那些不想被我们这种好奇宝宝干扰的人用得太多了。事实上,好奇心激发了对于人们对于知识和真理的渴求。这可能是关于硬件、开源软件、编程、组装个人电脑、优化系统设置或者学习使用新软件。满足你的好奇心吧!


via: https://opensource.com/article/22/1/troubleshoot-hardware-sysadmin

作者:David Both 选题:lujun9972 译者:toknow-gh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出