《代码英雄》第四季（7）：游戏机 —— Dreamcast 的新生

>
> 代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。
>
>
>

>
> **什么是《代码英雄》**
>
>
> <ruby> 代码英雄 <rt>  Command Line Heroes </rt></ruby>是世界领先的企业开源软件解决方案供应商红帽（Red Hat）精心制作的原创音频播客，讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。
>
>
>

![](/data/attachment/album/202108/30/115650iuol8l242xh2uwok.jpg)

本文是《[代码英雄](https://www.redhat.com/en/command-line-heroes)》系列播客[《代码英雄》：第四季（7）：游戏机 —— Dreamcast 的新生](https://www.redhat.com/en/command-line-heroes/season-4/consoles)的[音频]( https://cdn.simplecast.com/audio/a88fbe/a88fbe81-5614-4834-8a78-24c287debbe6/0570a364-531f-472f-82f6-6b552fb07701/clh-s4e7-sega-dreamcast-vfinal-20200407_tc.mp3)脚本。

>
> 导语：游戏机是开创性的机器。Dreamcast（DC）推动了游戏机所能做到的极限。但这并不足以保证商业上的成功。但尽管它在商业上失败了，可粉丝们说，从没有其它游戏机取得过如此大的成就。
>
>
> 世嘉打造 Dreamcast 是为了恢复其辉煌时代。在令人失望的<ruby> 土星 <rt>  Saturn </rt></ruby>之后，世嘉让两个团队相互竞争，以开发一个新的游戏机。Andrew Borman 将 Dreamcast 视为一个硬件上的时代性飞跃。Jeremy Parish 解释了它的生产与世嘉通常的流程的不同之处。Mineko Okamura 提供了关于开发 Dreamcast 的内幕消息。Brian Bacino 讲述了该游戏机在美国的大规模上市的情况。但是，尽管在美国的销售量创下了新高，世嘉还是不得不拔掉了 Dreamcast 的插头。不过因为它太棒了，像 Luke Benstead 这样的自制爱好者又把插头给插了回去。
>
>
>

**00:00:07 - Saron Yitbarek**：

1999 年 9 月 9 日，在日本的某个地方，一名间谍潜入了一个大型计算机的机房。她入侵并关闭了安全系统。警卫出来调查，却被她一个漂亮的踢腿打晕了。而这时，计算机系统却突然“活”了起来，所有警报都变红了，显示器上突然出现一个奇怪的漩涡图案。很明显，这个计算机系统正在运行、正在“思考”。间谍被吓跑了。而“思考”中的计算机想要阻止她，试图把她困在大楼里。最终，这名间谍撞破了一扇窗户逃跑了，不过在逃跑前她带走了一个箱子。而在这个箱子里，是一种可以改变一切的新型机器的原型机。

**00:01:06**：

我所描述的是一个名做“<ruby> 启示录 <rt>  Apocalypse </rt></ruby>”的电视广告。它在宣传游戏公司<ruby> 世嘉 <rt>  Sega </rt></ruby>最新的游戏机，这并非是一台普通的游戏机。这个革命性的装置被称为 Dreamcast（DC），“启示录”广告中的间谍正在偷的那个箱子里放的东西，正是那个游戏机。

**00:01:29 - Brian Bacino**：

然后这个 Dreamcast 盒子，从小偷的背上滚落下来，掉在了街上，这个神奇的盒子一直锁着的盖子突然打开了。这时，镜头放大到 Dreamcast，进入到了它的窗口之中，并下降到底部，在那里，所有的游戏角色们聚集在了一起。我们看到<ruby> 索尼克 <rt>  Sonic </rt></ruby>在那里，他得意洋洋地说……

>
> **00:02:00 - 索尼克**：
>
>
> 我们拿到了！
>
>
>

**00:02:01 - Brian Bacino**：

大家全都兴奋地跳起来了，都在欢腾尖叫。

**00:02:05 - Saron Yitbarek**：

这位是 Brian Bacino，他是“启示录”广告活动的创意总监。他所指的“索尼克”就是世嘉著名的游戏角色“<ruby> 刺猬索尼克 <rt>  Sonic the Hedgehog </rt></ruby>”。

**00:02:16**：

在上世纪 90 年代，世嘉是世界上最知名的电子游戏公司之一。但在那个年代结束时，竞争很激烈，所以世嘉把赌注全押在了 Dreamcast 上，它将成为公司的救星。“启示录”广告被描述为“有史以来最具史诗性的电子游戏商业广告”，似乎找不到更好的方法来展示这台有史以来最先进的游戏机了，它是如此的智能，你几乎可以说它真的在“思考”。

**00:02:49**：

唉，但是 Dreamcast 并没有改变世界。它几乎什么都没有改变。它被一些人认为是最棒的游戏机，但却从未有机会改变些什么。这是世嘉的最后一款游戏机，它几乎让该公司破产。

**00:03:11**：

这一季播客都是关于硬件改变了发展进程的，在本季的倒数第二集，让我们来看看世嘉 Dreamcast 系列的短暂历史。然而，尽管很短暂，但它仍然被许多人认为是有史以来最好的游戏机之一。在它结束后的 20 年里，它仍然以一种非常真实的方式存在着。

**00:03:40**：

我是 Saron Yitbarek，这里是《代码英雄》，一款来自红帽的原创播客。

**00:03:48**：

就像“启示录”广告里的那个思考的电脑，那低语......

>
> **00:03:52 - 配音 1**：
>
>
> 正在思考
>
>
>

**00:03:53 - Saron Yitbarek**：

成为了该公司新游戏机的新广告语。

**00:03:56 - Brian Bacino**：

所以一想到我们的配音员总是低语......

>
> **00:04:01 - 配音 1**：
>
>
> 正在思考
>
>
>

**00:04:02 - Brian Bacino**：

我们认为这是一个非常巧妙的方式，可以演变成世嘉标志性的口号。

>
> **00:04:10 - 配音 2**：
>
>
> SEGA！
>
>
>

**00:04:10 - Saron Yitbarek**：

这是一款越玩越聪明的游戏机，至少它的市场宣传是这样说的。这款游戏机为家用电子游戏市场带来了新的、大的、革命性的东西。这是一个为铁杆玩家服务而构建的系统。而在该公司内部，人们的想法是，这款游戏机将使世嘉成为电子游戏界的头牌。

**00:04:34 - Brian Bacino**：

这将改变游戏规则，改变世界。

**00:04:38 - Saron Yitbarek**：

所以，后来到底发生了什么？要想弄清楚这一切，我们需要回到过去，一直回到……

>
> **00:04:44 - 配音 3**：
>
>
> 第一关
>
>
>

**00:04:47 - Saron Yitbarek**：

在整个 90 年代早期，世嘉一直以制作超级酷的游戏而闻名，而且它的游戏比竞争对手的更成熟，尤其是相比于<ruby> 任天堂 <rt>  Nintendo </rt></ruby>和它的那个拯救公主的水管工。他们用一款非常成功的游戏机<ruby> 世嘉创世记 <rt>  Sega Genesis </rt></ruby>建立了这个声誉。

**00:05:05 - Alex Handy**：

世嘉决定成为真正的先锋，这些拥有过任天堂游戏机的孩子们，现在他们是青少年了，他们想要真正的体育游戏和真正的团队。他们想要血腥的格斗游戏，比如后来才出现的《<ruby> 真人快打 <rt>  Mortal Kombat </rt></ruby>》。他们想要一个更成熟的、更刺激的游戏。

**00:05:22 - Saron Yitbarek**：

Alex Handy 是加州奥克兰<ruby> 艺术和数字娱乐博物馆 <rt>  Museum of Art and Digital Entertainment </rt></ruby>的创始人兼负责人。他也为红帽公司工作。

**00:05:31 - Alex Handy**：

假如你回头看看这一时期的电子游戏杂志上的广告，会有点令人震惊。有些广告里会有一条血淋淋的断臂，上面有碎肉脱落，写着，“这是你对付坏人最好的武器。” 所以，世嘉在创世记游戏机上的刺猬索尼克的这种极端而刺激的成功方面做得非常非常好，与<ruby> 马里奥 <rt>  Mario </rt></ruby>的 OshKosh B'gosh 工装裤的那种快乐主题正好相反。

**00:06:00 - Saron Yitbarek**：

超过 3000 万人购买了世嘉创世纪，这是一款 16 位的游戏机，可以用<ruby> 卡带 <rt>  cartridge </rt></ruby>来玩游戏。全世界的玩家都喜欢它。

**00:06:11**：

随着时间的推移，世嘉努力扩大其用户群。创世纪之后，他们推出了 32 位世嘉<ruby> 土星 <rt>  Saturn </rt></ruby>。比创世纪更强大的是，它可以显示二维图形和基本的三维图形。但是，土星平台从未真正兴起。它的销售很艰难。他们成功地卖出了 920 万台游戏机，只有创世纪的销量的三分之一。

**00:06:38**：

另一个严重问题是：开发者发现为土星专有的内部设计的硬件编写游戏是一个挑战。这是世嘉为未来埋下的一个隐患。再加上，任天堂 64 游戏机的推出，以及索尼的 PlayStation 的首次进入该领域，游戏业突然变得人满为患，竞争非常激烈。

**00:07:04**：

1998 年，世嘉公布亏损了 2.7 亿美元。在世嘉北美总部，电子游戏的负责人 Bernie Stolar 宣布了这样的一句话：“土星不是我们的未来”，他终止了土星的研发和销售。就这样，世嘉将重点转向打造下一代游戏机。

>
> **00:07:32 - 配音 3**：
>
>
> 第二关：打造梦想
>
>
>

**00:07:35 - Saron Yitbarek**：

世嘉土星已经严重伤害了该公司的品牌和利润。如果世嘉想要重新夺回市场份额和声誉，那么下一款游戏机需要功能更加强大、易于编写代码，并且与其他市场上其它游戏机都不一样。

**00:07:51**：

Andrew Borman 是纽约罗切斯特的<ruby> 斯特朗国家游戏博物馆 <rt>  Strong National Museum of Play </rt></ruby>数字游戏馆的馆长。

**00:07:59 - Andrew Borman**：

他们想真正证明这是一个世代的飞跃。这不仅仅是世嘉土星的一个快速替代品，而是要推动图形、声音和在线技术的发展，以及 CPU 处理技术的进步，使得它比以前的游戏机更加智能化。

**00:08:22 - Saron Yitbarek**：

世嘉准备把他们的机器升级。在世嘉日本总部，他们有了一些想法。不过，他们并不是唯一有远大想法的人。

**00:08:34 - Andrew Borman**：

当时在世嘉内部也起了很多内讧。他们开始开发下一代游戏机，也就是 Dreamcast，而在美国的世嘉公司（世嘉美国）可能也有开发他们自己的下一代游戏机的想法。

**00:08:52 - Saron Yitbarek**：

因此，世嘉日本和世嘉美国同时开始开发两种不同的系统。这两个团队正在竞争谁的硬件设计会胜过对方。

**00:09:07 - Jeremy Parish**：

美国版被称为“<ruby> 黑带 <rt>  Black Belt </rt></ruby>”，这是它的代号，日本版的代号是“<ruby> 杜拉尔 <rt>  Dural </rt></ruby>”，以游戏《<ruby> VR 战士 <rt>  Virtua Fighter </rt></ruby>》中的一个 BOSS 的名字命名。

**00:09:17 - Saron Yitbarek**：

Jeremy Parish 和人共同主持了一个名为 Retronauts 的播客。他说，日本和美国的团队都把从土星游戏机上吸取到的教训牢记在心。

**00:09:28 - Jeremy Parish**：

他们真的很想让这个系统更容易开发，这样那些创造游戏和编程游戏的人会说，“哦，你知道，这个系统有出色的性能，把游戏从其他系统移植到这里来会看起来更好。”这是他们考虑的一个关键因素。

**00:09:47 - Saron Yitbarek**：

这让他们远离了定制硅胶的设计。

**00:09:52 - Alex Handy**：

世嘉土星是从头开始建造的。我的意思是，他们设计了芯片，设计了驱动器，设计了所有部分。当到了设计 Dreamcast 的时候，世嘉只是使用了这些现成的处理器、现成的 3D 芯片，所有的东西都已经基本上设计好了，他们只是作为系统的集成商把它们整合在一起。在 90 年代的大部分时间里，它完全专注于硬件创新，这是世嘉公司迈出的重要一步。

**00:10:16 - Saron Yitbarek**：

但他们会采用哪种芯片呢？在这一点上，世嘉日本和世嘉美国意见相左。

**00:10:25 - Jeremy Parish**：

美国方面正在与 3dfx 合作，而日本方面正与 NEC 合作，共同开发基于 PowerVR 的 3D 解决方案。但由于各种政治和法律原因，世嘉最终选择了杜拉尔版本，即日本的硬件厂商。

**00:10:49 - Saron Yitbarek**：

所以，美国队的选择 3dfx 不见了。他们不得不选择了日本队的 PowerVR 芯片。这个决定给以后挖了个大坑。而后，再将其它的硬件集成在一起。DVD 技术还处于起步阶段，而且非常昂贵，因此排除了这种可能性。但是 CD-ROM 光盘，并不能容纳运行下一代游戏的图形、声音和复杂性的足够的数据。因此，世嘉用 GD-ROM（千兆光盘）光驱制造了游戏机，其本质上类似于 CD-ROM 系统，只是这些光盘能容纳千兆字节的数据。现在他们找到了这个游戏机的大脑。正如 Alex Handy 所说：

**00:11:42 - Alex Handy**：

真正重要的是，该系统确实包括了一个专用的 3D 渲染芯片。这个芯片可以做比 PlayStation 更复杂的三维渲染。Dreamcast 是我们开始获得 3D 的分界线，它在未来看起来还是相当不错的，你是知道后来的事情的。没有什么悬念。

**00:12:04 - Saron Yitbarek**：

这确实是次世代系统。Andrew Borman 表示，Dreamcast 正在成为世嘉为挑战自己而打造的革命性游戏机。

**00:12:15 - Andrew Borman**：

Dreamcast 的视频输出：它可以在四个 ADP 上输出 VGA 信号，在当时很多其他游戏机都没有这样的功能。

**00:12:23 - Saron Yitbarek**：

即使是像可拆卸存储卡、<ruby> 视觉存储单元 <rt>  visual memory unit </rt></ruby>（VMU）这样简单的东西也是一种全新的设计。

**00:12:31 - Andrew Borman**：

Dreamcast 上的存储单元 VMU，真正暗示了以后的第二屏幕体验。

**00:12:39 - Saron Yitbarek**：

这些 VMU 上有小屏幕和按钮，就像一个微型游戏机。

**00:12:44 - Andrew Borman**：

你可以在里面存放你的游戏存档，它可以随身携带，可以在上面玩游戏，还可以以不同的方式、外形或形式带着你的存档，然后将其恢复到你家里的游戏机中。

**00:12:54 - Saron Yitbarek**：

但还不止这些。在 90 年代末，虽然也能将游戏机连接到互联网，但确实不常见。在线可玩性仍然只是一个概念，而不是现实。世嘉看到了这种机会。

**00:13:11 - Andrew Borman**：

每个 Dreamcast 都配有一个 56K 调制解调器，虽然现在看起来已经过时了，但当时没有其他游戏机配备了 56K 调制解调器。没有其他游戏机能够在其上安装 Web 浏览器。也没有其他游戏机可以下载内容，除非添加一些配件。而这台游戏机开箱就有这些。

**00:13:36 - Saron Yitbarek**：

这位是 Mineko Okamura，Grounding 公司的 CEO。她在 Dreamcast 时代曾是世嘉的一名助理制作人。

**00:13:50 - Mineko Okamura**：

我们当时的目标是，除了世嘉的核心粉丝，我们还想吸引新的世嘉游戏爱好者。首先，它有一个非常前沿的技术或功能，就是 Dreamcast 能够连接到互联网上，可能很多人还记得一个叫 《Seaman》的游戏，然后它引入了语音识别功能。虽然现在很普遍，但在当时，你可以通过在线下载更多的应用程序，这在当时是非常新颖的。

>
> **00:14:26 - 配音 3**：
>
>
> 第三关：梦想成真
>
>
>

**00:14:31 - Saron Yitbarek**：

继续生产新游戏主机的同时，世嘉土星也退役了。而由于世嘉的缺席，在市场上留下了一个需要填补的空白。1999 年，留给世嘉重新夺回市场份额的时间窗口很小，他们需要做的就是尽可能完美地推出新品。

**00:14:56 - Jeremy Parish**：

他们在全力以赴。Dreamcast 的发布会被广泛认为是有史以来最大的娱乐发布会。他们真的大获成功。对我来说，这是一个样板性的系统发布，就像他们应该做的那样。炒作和广告恰到好处，很引人入胜。

**00:15:16 - Saron Yitbarek**：

在发布之前，由 Brian Bacino 的“思考中”广告宣传活动所推动的炒作机器正在完美无缺地运作。下面这位是 Andrew Borman。

**00:15:26 - Andrew Borman**：

美国的 Dreamcast 在上市前就被预购了 30 万台，创下了新纪录。世嘉进入 1999 年 9 月 9 日，情况看起来非常非常好。

**00:15:40 - Saron Yitbarek**：

然后这一天到了。1999 年 9 月 9 日，Dreamcast 在美国上市，售价 199 美元。这是一个历史性的发布日。该公司在一开始的 24 小时内赚了 1 亿美元，创下了整个行业的纪录。他们把所有的游戏机都卖光了。

**00:16:11 - Andrew Borman**：

商店前台仍在不断打来电话，说，“嘿，我们需要更多的 Dreamcast 游戏机”，特别是当进入到第一个节假日的时候。

**00:16:17 - Saron Yitbarek**：

他们也确保了在发布时就有很多游戏可以玩。从格斗类到动作类再到比赛类和运动类，总共有 18 款游戏。

**00:16:26 - Andrew Borman**：

特别是在那个发布期间，我最喜欢的游戏之一是《<ruby> 索尼克大冒险 <rt>  Sonic Adventure </rt></ruby>》，索尼克终于以一种非常棒的方式以 3D 形式出现了，此外还有《<ruby> 剑魂 <rt>  Soulcalibur </rt></ruby>》。我是一个格斗游戏的超级粉丝，尤其是在那时，《剑魂》不仅是完美的街机游戏，而且比基于 PS1 硬件的街机版本还要好。有了 Dreamcast 和它绚丽的新图形显示，《剑魂》比我想象中的格斗游戏还要好得多。

**00:16:58 - Saron Yitbarek**：

玩家们喜欢 Dreamcast 的游戏库。它最终发展到有 600 多部作品。就连 Brian Bacino 也忍不住沉迷于其中。

**00:17:09 - Brian Bacino**：

就我个人来讲的话，我对《<ruby> 疯狂出租车 <rt>  Crazy Taxi </rt></ruby>》完全着迷了。我沉迷于那个游戏，游戏中的感觉和 3D 图形是如此的有趣。

**00:17:22 - Saron Yitbarek**：

Dreamcast 显然是一款次世代游戏机，它的粉丝们都喜欢这款硬件。而且游戏本身也提供了一些不同的东西。

**00:17:31 - Jeremy Parish**：

你会体验到这么多标新立异的、富有创造性的、从未见过的游戏概念。

**00:17:38 - Saron Yitbarek**：

其中一个游戏需要一对<ruby> 沙槌 <rt>  maracas </rt></ruby>来与游戏互动。还有一个游戏让你和一条长着人脸的奇怪的鱼互动。

**00:17:47 - Jeremy Parish**：

有一些控制器是非常古怪的。有一个类似传统游戏控制器的游戏控制器，但是它中间有一个完整的 ASCII 键盘，所以当你和他们在线玩的时候，你还可以打字给他们。这也适用于《<ruby> 死亡打字机 <rt>  Typing of the Dead </rt></ruby>》游戏，它就像一个鬼屋射击游戏。只是你不是向僵尸射击，而是你向他们输入奇怪的、零散的短语，比如随机的英语短语。这真是一个奇怪而奇妙的系统。

**00:18:22 - Saron Yitbarek**：

世嘉在上市后的两个月内售出了第一百万台 Dreamcast。到圣诞节，它已经占据了北美市场的 31% 市场份额。他们做到了。Dreamcast 很受欢迎。但就在那次精彩的发布会后不久，Dreamcast 的梦想变成了一场噩梦。

>
> **00:18:47 - 配音 3**：
>
>
> 第四关：梦想夭折
>
>
>

**00:18:52 - Saron Yitbarek**：

尽管有着破纪录的销售和来自媒体以及铁杆玩家的赞誉，但该公司还是存在一些严重问题。首先，Dreamcast 在日本的表现并不好。他们在一年前就推出了，但销售情况不佳。这让公司损失惨重。

**00:19:10 - Jeremy Parish**：

是的，在日本的发布我觉得太早了。硬件的生产过程并没有达到所需的成熟度和可靠性。因此，出现了一些缺陷和短缺，以及供应链问题。不过，更大的问题是，在日本推出的 Dreamcast 游戏并不多。我记得只有三个游戏。

**00:19:35 - Mineko Okamura**：

[一段 00:01:37 的外语]

在 Dreamcast 真正上市的时候，我们有一个给人们留下深刻印象的广告，这是由我们的董事会成员之一 Yukawa 先生主导的。它确实卖得很好，但后来很快就卖完了，实际上我们花了很多时间重新准备库存，这很不幸，因为人们要等很长时间，然后销量开始下降。

**00:20:11 - Saron Yitbarek**：

在美国上市后，生产问题依然存在。供应不足阻碍了销售。

**00:20:17 - Andrew Borman**：

为 Dreamcast 提供动力的 PowerVR 芯片短缺，这意味着他们无法制造足够的游戏机，即便人们想买也买不到。尽管这些游戏机的销量还不错，但没有足够的游戏机可以卖。

**00:20:38 - Saron Yitbarek**：

PowerVR 芯片带来了另一个问题。它使他们失去了一些主要游戏工作室的支持，尤其是 <ruby> 电子艺界 <rt>  Electronic Arts </rt></ruby>（EA）。EA 没有可以为 PowerVR 芯片编写代码的程序员团队，所以他们放弃了 Dreamcast。下面是 Jeremy Parish 的发言。

**00:20:56 - Jeremy Parish**：

我认为，最终真的对公司造成了严重伤害，因为 EA 在世嘉创世纪的成功中发挥了巨大作用，把他们的体育游戏如《<ruby> 麦登橄榄球 <rt>  Madden NFL </rt></ruby>》放到任何一个平台都是对该平台的巨大推动，因为每年都有数百万人购买这些游戏。

**00:21:16 - Saron Yitbarek**：

撇开硬件问题不谈，他们已经赢得了铁杆玩家的青睐，但普通玩家还不认可。世嘉的炒作期已经结束。Dreamcast 已经上市了，但新的一轮炒作开始了。这次轮到了索尼和 PlayStation 2。以下是 Andrew Borman 的发言。

**00:21:37 - Andrew Borman**：

索尼在宣传方面做得非常非常出色。通过这个炒作机器，人们已经为 PlayStation 2 做好了准备。而不幸的是，到了 2000 年 12 月的节假日，Dreamcast 那个平台已经不怎么畅销了。

**00:21:56 - Saron Yitbarek**：

世嘉想尽一切办法提高销量，但似乎收效甚微。他们付出巨大的经济成本，大幅降低了这款游戏机 199 美元的标价。他们在 2000 年推出了一个在线游戏门户网站 SegaNet。他们提供免费订阅以吸引更多用户，但该公司一直在亏钱。2001 年 1 月，世嘉宣布将停止生产他们的次世代游戏机。在推出 16 个月后，Dreamcast 结束了。最后一批游戏机每台售价 50 美元。当这一切结束时，世嘉只卖出了 910 多万台，甚至比它所取代的失败的世嘉土星还要少。

>
> **00:22:55 - 配音 3**：
>
>
> 第五关：梦想重生
>
>
>

**00:23:00 - Jeremy Parish**：

我很失望，因为我认为，世嘉有着悠久的历史，作为游戏行业的一个重要参与者，他们总是给他们创造的游戏带来一种特殊的理念。在我看来，Dreamcast 确实是他们有史以来最富有创造力的平台。从 Dreamcast 中涌现出的大量发明和创新的游戏创意，在这之前或之后都没有人这么做过。所以，是的，当他们离场时，给人一种真正的失落感。

**00:23:31 - Saron Yitbarek**：

在 Dreamcast 之后，世嘉完全放弃了游戏机。对 Dreamcast 的技术支持一直持续到 2007 年，之后 Dreamcast 的拥有者只能靠自己了。那么，当你家里的书架上放着一台已经停产、没人支持，但深受喜爱的游戏机时，你会怎么做？好吧，对一些 Dreamcast 的超级粉丝来说，这是一个“自己动手”（DIY）复兴的开始。

**00:24:00 - Andrew Borman**：

当说到自制游戏的时候，说到在一个旧游戏机上玩真正出色的游戏的能力时，Dreamcast 社区是一个非常固执的社区。

**00:24:12 - Saron Yitbarek**：

你看，对于很多超级粉丝来说，Dreamcast 游戏机从未真正死去。他们如此热爱它，而为自己和他人留下了它。作为一个社区，他们蓬勃发展。就像我们在第三集中谈到的自制电脑俱乐部一样，他们也把自己的社区称为自制社区，因为他们也在不停的鼓捣这些。他们从其他平台移植游戏，或者从头开始构建全新的游戏。所有的一切都是为了一台注定要丢进硬件坟场的机器。

**00:24:45 - Alex Handy**：

让我看看，我找到了《<ruby> 武装七号 <rt>  Armed 7 </rt></ruby>》、《<ruby> 寻找泰迪 <rt>  Finding Teddy </rt></ruby>》、《Unit Yuki》、《<ruby> 魔法口袋 <rt>  Magic Pockets </rt></ruby>》，还有《<ruby> 番茄超人 <rt>  Captain Tomaday </rt></ruby>》，这似乎是一个会飞的西红柿的游戏。我们有横向卷轴射击游戏、点击式冒险游戏、平台式游戏。你无法真正预测或理解人们为什么要做这些东西。这是一种用爱发电，它需要付出大量的工作，人们在其中做他们想做的事情，我们称之为“自制场景”。

**00:25:17 - Andrew Borman**：

我想指出的一个例子是 Bleemcast，它是一个用于 Dreamcast 的索尼 PlayStation 模拟器。因此，PlayStation 的独占游戏《<ruby> GT 赛车 2 <rt>  Gran Turismo 2 </rt></ruby>》现在也可以在 Dreamcast 上玩了。它不仅可以在 Dreamcast 上玩，而且看起来会更好。他们也为该系统开发了其他的模拟器，包括世嘉创世纪、任天堂 NES 模拟器。

**00:25:43 - Saron Yitbarek**：

之所以能做到这一点，一个重要原因是聪明的 Dreamcast 用户们早就发现该系统的反盗版保护措施非常容易绕过。当发现了这一点后，他们意识到他们可以让 Dreamcast 玩几乎任何一款经典游戏或独立游戏。

**00:26:06 - Luke Benstead**：

独立开发者甚至早在 2001 年就开始研究它，这种为它编写游戏和软件而不必越狱或做任何侵入性的事情的能力确实有帮助，因为它的门槛很低。所以，人们可以直接上网下载新的游戏和内容。

**00:26:25 - Saron Yitbarek**：

这位是 Luke Benstead。他是 Dreamcast 自制社区的一员。Luke 发现，人们正在设法将旧的 Dreamcasts 接入今天的现代互联网，这样他们就可以在线访问游戏了。

**00:26:40 - Luke Benstead**：

一直以来，人们仍然把他们的 Dreamcast 连接到互联网上，因为有一个叫做 PCDC 服务器的东西。人们曾经在他们的 Windows 个人电脑上，用 USB 调制解调器插入，也曾经把 Dreamcast 插入其中。如果他们在 Dreamcast 上拨号，在 PC 机上的适时运行合适的软件，这样就可以通过其进行路由。

**00:27:03 - Luke Benstead**：

我记得大约是在 2010 年，我上网买了一个 USB 调制解调器来试试这个。它就放在抽屉里，但我从没有真正抽出过时间去尝试。后来在 2015 年，我的第一个女儿刚刚出生，我正在休陪产假，而且我又刚刚买了一个树莓派，我突然意识到我可以把这些东西结合起来。

**00:27:28 - Saron Yitbarek**：

但在与社区分享他的树莓派解决方案之前，Luke 必须克服现代互联网的一个障碍。

**00:27:36 - Luke Benstead**：

PCDC 服务应用程序的问题是，虽然你可以让它运行起来，但很多游戏都无法运行，因为 Dreamcast 会寻找拨号音。当你在游戏中点击拨号连接时，很多游戏都希望有一个拨号音。很明显，如果你只是把它插进电脑里是没有拨号音的。所以当我开始考虑让这个树莓派运行 PCDC 服务应用程序时，我做的一件事就是下载拨号音的录音，并通过我用 Python 编写的软件把声音播放到调制解调器上。Dreamcast 会在电话那头听到这一点，并认为它是与一条真正的电话线相连的，于是它会拨号。这就是它开始的原因，DreamPi 的事情就是我在陪产假的时候摆弄了一下完成的。

**00:28:28 - Saron Yitbarek**：

一旦 Luke 解决了拨号音的问题，就面临着更多的挑战。他需要从社区里召集人手，以到达下一个关卡。

**00:28:39 - Luke Benstead**：

我开始写这个 Python 脚本，但是随着时间的推移，它变得越来越复杂，因为一个很好的例子是，如果你有美国版本的《<ruby> 雷神之锤 3 <rt>  Quake III </rt></ruby>》的话，它总是可以联网的。但如果你有像英国版本一样的版本，它会在让你连接之前，对一个在线服务器进行某种身份验证。所以 DreamPi 的一个副产品是试图对这个名为 Dreamarena 的认证服务器进行逆向工程，这样在英国的《雷神之锤 3》的玩家就可以拨号了。这导致了游戏联网的连锁反应，因为它吸引了一个叫 —— 我不知道怎么读他的网名，有点像 Shuouma —— 的人。他一直负责对 Dreamcast 连接的游戏服务器进行逆向工程。因为很明显，所有的服务器都关闭了。当他看到我在 Dreamarena 做的逆向工程时，他对 Dreamarena 进行了逆向工程。Starlancer 服务器是下一个，因为尽管该服务器仍然在线，但它有很多问题。最终，他对目前在线的所有游戏都进行了逆向工程。实际上还有第三个人参与其中，他的网络账号是 PCWizard13。他在社区里的时间比我还要长。他曾经组织每周的游戏聚会。因此，我开发了 DreamPi，Shuouma 开发了服务器，加上他组织了社区，这三者的组合，让这件事像滚雪球一样不断壮大。

**00:30:12 - Saron Yitbarek**：

DreamPi 软件是开源的，与社区分享，允许任何人为 Dreamcast 制作更多游戏或重建他们最喜欢的经典作品。

**00:30:23 - Luke Benstead**：

这个网站是 dreamcast.online，如果你访问它，你可以看到谁在线或者之前在线。你可以看到他们在玩什么游戏。从理论上讲，它可以一直运行下去，所有的东西都在那里，都是开放的。

**00:30:34 - Saron Yitbarek**：

世嘉的最后一款游戏机在推出又夭折的 20 年后，一小群忠实粉丝让 Dreamcast 的梦想永存。这款游戏机可能在商业上失败了，但这台灰白色的小机器所包含的创意，盒子里的思想，已经超前了它的时代。下面是 Mineko Okamura 的发言。

**00:31:02 - Mineko Okamura**：

有趣的是，这些游戏又回来了，这让我觉得 Dreamcast 也许出现的太早了。因为现在科技更发达的今天，人们也许可以充分享受 Dreamcast 游戏的未来。

**00:31:21 - Saron Yitbarek**：

世嘉可能已经在游戏机上输给了索尼、任天堂甚至微软的 Xbox。但就在世嘉在游戏机大战中成为大赢家的那一刻，他们的硬件助推了整个行业向前发展。这至少是 Dreamcast 广告活动的幕后策划人 Brian Bacino 的看法。

**00:31:42 - Brian Bacino**：

我认为那个时候，游戏化的时代可能在不知不觉中到来了。每个人都喜欢用这种或那种的方式玩游戏。如果你能想出一个能抓住他们好奇心的东西，让他们每天都能使用这种技术，他们就会玩。我认为这可能是这种认识的开端。

**00:32:15 - Saron Yitbarek**：

在过去的几周里，我们讨论了一些令人惊叹的硬件。但是在我们完全关闭这一季的大门之前，还有一件事。两周后，我们将和一位非常特别的代码英雄交谈，讲述他对我们节目中介绍的许多机器的体验。对于所有这些机器，微型计算机、大型机、个人计算机、软盘、掌上电脑、开源硬件、游戏机等等，请访问 [redhat.com/commandlineheroes](https://www.redhat.com/commandlineheroes%22redhat.com/commandlineheroes%22)。我是 Saron Yitbarek。下期之前，编码不止。

**附加剧集**

早在第二季中，我们就介绍了游戏和开源之间的联系。Warren Robinett 分享了他为<ruby> 雅达利 <rt>  Atari </rt></ruby>开发《<ruby> 冒险 <rt>  Adventure </rt></ruby>》。并偷偷地把第一个复活节彩蛋放了进去的经验。

>
> **什么是 LCTT SIG 和 LCTT LCRH SIG**
>
>
> LCTT SIG 是 LCTT <ruby> 特别兴趣小组 <rt>  Special Interest Group </rt></ruby>，LCTT SIG 是针对特定领域、特定内容的翻译小组，翻译组成员将遵循 LCTT 流程和规范，参与翻译，并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽（Red Hat）发起的 SIG，当前专注任务是《代码英雄》系列播客的脚本汉化，已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。
>
>
> 欢迎[加入 LCRH SIG](/article-12436-1.html) 一同参与贡献，并领取红帽（Red Hat）和我们联合颁发的专属贡献者证书。
>
>
>

---

via: <https://www.redhat.com/en/command-line-heroes/season-4/consoles>

作者：[Red Hat](https://www.redhat.com/en/command-line-heroes) 选题：[bestony](https://github.com/bestony) 译者：[windgeek](https://github.com/windgeek) 校对：[acyanbird](https://github.com/acyanbird), [wxy](https://github.com/wxy)

本文由 [LCRH](https://github.com/LCTT/LCRH) 原创编译，[Linux 中国](https://linux.cn/) 荣誉推出


硬核观察 #379 机械妖姬要到了 GPLv2 授权的源代码

Summary: 更多：• IBM 和 SCO 达成 1425 万美元的和解 • 苹果商店允许在应用外支付并不会有太大影响

道理我都懂，这源代码为什么这么大？你倒是给个视频地址啊。

其实有视频地址，但我知道你的眼睛无法看到了。

![](/data/attachment/album/202108/30/150750txth0xo6ey0h6ob8.jpg)

### 机械妖姬要到了 GPLv2 授权的源代码

![](/data/attachment/album/202108/30/150800ghompthq5k7tpcmh.jpg)

前两天我们报道过，深圳一家公司面对外国开发者要求其按照 GPLv2 许可证提供源代码时，让对方到其深圳办公室去取，并表示公司人员只说中文。这似乎听起来是搪塞之辞。网名为“机械妖姬”的 YouTube 网红不信邪，于是和这名外国开发者达成协议，替她去线下[索要](https://twitter.com/RealSexyCyborg/status/1428706989274583049)这份源代码。这个消息在国内发酵之后，引来了许多关注。后继，机械妖姬又[继续发布](https://twitter.com/RealSexyCyborg/status/1430905439345020940)了进一步进展的[视频](https://www.youtube.com/watch?v=Vj04MKykmnQ)。在视频中，机械妖姬说“因为我不能告诉他们我们不符合 GPL，我们中国人不是那样的。”经过良好沟通后，她拿到了这些源代码文件，并得到了外国开发者对双方的感谢。

>
> 从这件事，我觉得需要给机械妖姬点赞，也给这家名为 Umidigi 的公司做了正确的事情点赞。另外，说一句，这段视频值得一看。
>
>
>

### IBM 和 SCO 达成 1425 万美元的和解

![](/data/attachment/album/202108/30/150828ckwy86xp8vjauu6p.jpg)

2003 年，SCO 对 IBM 等 Linux 供应商[提出](https://en.wikipedia.org/wiki/SCO%E2%80%93Linux_disputes#SCO_v._IBM)一系列诉讼，指控由 IBM 等贡献与集成进入 Linux 核心的源代码中使用了它的 System V 源代码，违反了著作权。最近，早申请破产 SCO 的托管人与 IBM 于 8 月 26 日向特拉华州破产法庭递交了[和解协议](https://news.slashdot.org/story/21/08/28/0237243/after-18-years-scos-ibm-litigation-may-be-settled-for-145-million)，来解决双方在犹他州诉讼案所有剩余索赔，IBM 向托管人支付 1425 万美元。托管人认为和解最符合破产方和债权人的最佳利益，它认为即使打赢官司但赔偿金额未必高于和解金额，而且也有可能 IBM 会赢得诉讼或在反诉中获胜。

>
> 终于这块破胶布可以扯掉了。
>
>
>

### 苹果商店允许在应用外支付并不会有太大影响

![](/data/attachment/album/202108/30/150845yijr6ju3gr96vqxa.jpg)

之前我们报道过，苹果宣布和开发者达成诉讼和解，允许开发者在其 iOS 应用程序之外提供支付方式，从而免除通过苹果支付所付出的 30% 的“苹果税”。但如果真的想在应用内出售内容，[仍然](https://www.theverge.com/22645070/apple-app-store-policies-purchases-cut-fees-change-class-action?scrolla=5eb6d68b7fedc32c19ef33b4)要使用苹果的支付方式，因此也要向苹果支付分成——这依然是许多开发者的痛点所在。如今，应用内购和订阅就是苹果商店的主要支柱，最大创收来源都是免费游戏、流媒体服务和基于订阅的应用，依赖于苹果支付来购买和订阅。

>
> 看来之前是我天真了，苹果这样的公司怎么会放弃自己的主要利益呢。
>
>
>


Brave vs. Firefox：你的私人网络体验的终极浏览器选择

了两个都有。选择？

所以，最终谁赢了？选谁？

来自117.136.75.102的 Chrome Mobile 61.0|Android 8.0 用户

"正如我之前提到的，Brave 在阻止跟踪器和广告方面非常积极"。积极倒是积极，就是

《Brendan Eich透露默认屏蔽广告的浏览器Brave，用自己的广告替代被屏蔽的广告》

www[.]solidot.org/story?sid=46979

![](/data/attachment/album/202108/30/223133tqzkg4pjpwwb8u4g.jpg)

Web 浏览器经过多年的发展，从下载文件到访问成熟的 Web 应用程序，已经有了长足的发展。

对于很多用户来说，Web 浏览器是他们如今完成工作的唯一需要。

因此，选择合适的浏览器就成为了一项重要的任务，它可以帮助改善你多年来的工作流程。

### Brave vs. Firefox

Brave 和 Mozilla Firefox 是两个最受到关注隐私的用户和开源爱好者欢迎的 Web 浏览器。

考虑到两者都非常注重隐私和安全，让我们看看它们到底能提供什么，以帮助你决定应该选择哪一个。

以下是我所使用的比较指标：

### 用户界面

用户界面是使用浏览器时的工作流程和体验的最大区别。

当然，你会有你的个人偏好，但它看起来越容易使用、越轻快、越干净，就越好。

![Brave 浏览器](/data/attachment/album/202108/30/223144uaqklt2anvqzcnjj.jpg)

首先，Brave 与 Chrome 和微软 Edge 有着相似的外观和感受。它提供了一种简洁的体验，具有精简的 UI 元素，所有的基本选项都可以通过浏览器菜单访问。

它也提供了一个暗色主题。恰到好处的动画使得互动成为一种愉快的体验。

要定制它，你可以选择使用 Chrome Web 商店中的主题。

说到 Mozilla Firefox，多年来它经历了几次重大的重新设计，其最新的用户界面试图提供与 Chrome 更接近的体验。

![Firefox 浏览器](/data/attachment/album/202108/30/223145nw4olqgh1q4z0hqh.jpg)

Firefox 浏览器的设计看起来令人印象深刻，并提供了干净利落的用户体验。如果需要的话，你还可以选择一个暗色主题，此外还有其它几个主题可供下载使用。

这两个 Web 浏览器都能提供良好的用户体验。

如果你想要一个熟悉的体验，但又具有一丝独特之处，Mozilla Firefox 是一个不错的选择。

但是，如果你想获得更快捷的体验、更好的动画感受，Brave 更有优势。

### 性能

实际上，我发现 Brave 加载网页的速度更快，整体的用户体验感觉很轻快。

Firefox 浏览器倒不是非常慢，但它绝对感觉比 Brave 慢。

为了给你一些参考，我还利用 [Basemark](https://web.basemark.com) 运行了一个基准测试，看看事实上是否真的如此。

你可以使用其他的浏览器基准测试工具来测试一下，但我用 Basemark 进行了各种测试，所以我们在这篇文章中会用它。

![Firefox 基准得分](/data/attachment/album/202108/30/223145zt0i0epktciet3e8.png)

![Brave 基准得分](/data/attachment/album/202108/30/223145t6xuegwfuufxsbif.png)

Firefox 浏览器成功获得了 **630** 的得分，而 Brave 以大约 **792** 的得分取得了更好的成绩。

请注意，这些基准测试是在没有安装任何浏览器扩展程序的情况下，以默认的浏览器设置进行的。

当然，你的分数可能会有所不同，这取决于你在后台进行的工作和你系统的硬件配置。

这是我在 **i5-7400、16GB 内存和 GTX 1050ti GPU** 配置的桌面电脑上得到的结果。

一般来说，与大多数流行的浏览器相比，Brave 浏览器是一个快速的浏览器。

这两者都占用了相当大的系统资源，而且在一定程度上随着标签数量、访问的网页类型和使用的拦截扩展的种类而变化。

例如，Brave 在默认情况下会主动阻止广告，但 Firefox 在默认情况下不会阻止显示广告。而且，这也影响了系统资源的使用。

### 浏览器引擎

Firefox 浏览器在自己的 Gecko 引擎基础上，使用来自 [servo 研究项目](https://servo.org) 的组件来进行改进。

目前，它基本上是一个改进的 Gecko 引擎，其项目名称是随着 Firefox Quantum 的发布而推出的 “Quantum”。

另一方面，Brave 使用 Chromium 的引擎。

虽然两者都有足够的能力处理现代 Web 体验，但基于 Chromium 的引擎更受欢迎，Web 开发人员通常会在基于 Chrome 的浏览器上定制他们的网站以获得最佳体验。

另外，有些服务恰好只支持基于 Chrome 的浏览器。

### 广告 & 追踪器阻止功能

![](/data/attachment/album/202108/30/223146gczwtqj237win9zh.png)

正如我之前提到的，Brave 在阻止跟踪器和广告方面非常积极。默认情况下，它已经启用了屏蔽功能。

Firefox 浏览器也默认启用了增强的隐私保护功能，但并不阻止显示广告。

如果你想摆脱广告，你得选择火狐浏览器的 “严格隐私保护模式”。

也就是说，火狐浏览器执行了一些独特的跟踪保护技术，包括“全面 Cookie 保护”，可以为每个网站隔离 Cookie 并防止跨站 Cookie 跟踪。

![](/data/attachment/album/202108/30/223147x336ysilw3d3hisd.png)

这是在 [Firefox 86](https://news.itsfoss.com/firefox-86-release/) 中引入的技术，要使用它，你需要启用 “严格隐私保护模式”。

总的来说，Brave 可能看起来是一个更好的选择，而 Mozilla Firefox 提供了更好的隐私保护功能。

### 容器

当你访问 Facebook 时，Firefox 还提供了一种借助容器来隔离网站活动的方法。换句话说，它可以防止 Facebook 跟踪你的站外活动。

你还可以使用容器来组织你的标签，并在需要时分离会话。

Brave 没有提供任何类似的功能，但它本身可以阻止跨站追踪器和 cookie。

### 奖励

![](/data/attachment/album/202108/30/223148y5aktmf2z5nliaua.png)

与 Firefox 不同，Brave 通过屏蔽网络上的其他广告来提供自己的广告网络。

当你选择显示 Brave 的隐私友好型广告时，你会得到可以放到加密货币钱包里的通证奖励，而你可以用这些通证来回馈你喜欢的网站。

虽然这是摆脱主流广告的一个很好的商业策略，但对于不想要任何形式的广告的用户来说，这可能没有用。

因此，Brave 以奖励的形式提供了一个替代方案，即使你屏蔽了广告，也可以帮助网站发展。如果这是你欣赏的东西，Brave 将是你的一个好选择。

### 跨平台可用性

你会发现 Brave 和 Firefox 都有 Linux、Windows 和 macOS 版本，也有用于 iOS 和 Android 的移动应用程序。

对于 Linux 用户来说，Firefox 浏览器捆绑在大多数的 Linux 发行版中。而且，你也可以在软件中心里找到它。除此之外，还有一个 [Flatpak](https://itsfoss.com/what-is-flatpak/) 包可用。

Brave 不能通过默认的软件库和软件中心获得。因此，你需要按照官方的说明来添加私有仓库，然后 [把 Brave 安装在你的 Linux 发行版中](https://itsfoss.com/brave-web-browser/)。

### 同步

通过 Mozilla Firefox，你可以创建一个 Firefox 账户来跨平台同步你的所有数据。

![](/data/attachment/album/202108/30/223150vpzaggn9lbc1g98z.png)

Brave 也可以让你跨平台同步，但你需要能访问其中一个设备才行。

![](/data/attachment/album/202108/30/223151nbnynaaa00fgylld.png)

因此，Firefox 的同步更方便。

另外，你可以通过 Firefox 的账户访问它的“虚拟专用网络”、数据泄露监控器、电子邮件中继，以及密码管理器。

### 服务集成

从一开始 Firefox 就提供了更多的服务集成，包括 Pocket、“虚拟私有网络”、密码管理器，还有一些新产品，如 Firefox 中继。

如果你想通过你的浏览器访问这些服务，Firefox 将是你的方便选择。

虽然 Brave 确实提供了加密货币钱包，但它并不适合所有人。

![](/data/attachment/album/202108/30/223153w9yz9i1wj9ij9191.png)

同样，如果你喜欢使用 [Brave Search](https://itsfoss.com/brave-search-features/)，在使用 Brave 浏览器时，由于用户体验的原因，你可能体验会更顺滑。

### 可定制性 & 安全性

Firefox 浏览器在可定制性方面大放异彩。你可以通过众多选项来调整体验，也可以控制你的浏览器的隐私/安全。

自定义的能力使你可以让 Firefox 比 Brave 浏览器更安全。

而加固 Firefox 浏览器是一个我们将讨论的单独话题。略举一例，[Tor 浏览器](https://itsfoss.com/install-tar-browser-linux/) 只是一个定制的 Firefox 浏览器。

然而，这并不意味着 Brave 的安全性更低。总的来说，它是一个安全的浏览器，但你确实可以通过 Firefox 浏览器获得更多的选择。

### 扩展支持

毫无疑问，Chrome Web 商店提供了更多的扩展。

因此，如果你是一个使用大量扩展（或不断尝试新扩展）的人，Brave 明显比 Firefox 更有优势。

可能 Firefox 的扩展清单不是最大的，但它确实支持大多数的扩展。对于常见的使用情况，你很少能找到一个 Firefox 中没有的扩展。

### 你应该选择那个？

如果你希望尽量兼容现代的 Web 体验，并希望有更多的扩展，Brave 浏览器似乎更合适。

另一方面，Firefox 浏览器是日常浏览的绝佳选择，它具有业界首创的隐私功能，并为不懂技术的用户提供了方便的同步选项。

在选择它们中的任何一个时会有一些取舍。因此，你需要优先考虑你最想要的东西。

请在下面的评论中告诉我你的最终选择！

---

via: <https://itsfoss.com/brave-vs-firefox/>

作者：[Ankush Das](https://itsfoss.com/author/ankush/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


用这个开源工具在 Linux 上访问你的 iPhone

可是连上了也打不开呀，只有一堆文件夹，内容都看不到的。

>
> 通过使用 Libimobiledevice 从 Linux 与 iOS 设备进行通信。
>
>
>

![](/data/attachment/album/202108/31/092907bc26qep3ekc73czl.jpg "A person looking at a phone")

iPhone 和 iPad 绝不是开源的，但它们是流行的设备。许多拥有 iOS 备的人恰好也在使用大量的开源软件，包括 Linux。Windows 和 macOS 的用户可以通过使用苹果公司提供的软件与 iOS 设备通信，但苹果公司不支持 Linux 用户。开源程序员早在 2007 年（就在 iPhone 发布一年后）就以 Libimobiledevice（当时叫 libiphone）来拯救了人们，这是一个与 iOS 通信的跨平台解决方案。它可以在 Linux、Android、Arm 系统（如树莓派）、Windows、甚至 macOS 上运行。

Libimobiledevice 是用 C 语言编写的，使用原生协议与 iOS 设备上运行的服务进行通信。它不需要苹果公司的任何库，所以它完全是自由而开源的。

Libimobiledevice 是一个面向对象的 API，它捆绑了许多便于你使用的终端工具。该库支持苹果从最早到其最新的型号的 iOS 设备。这是多年来研究和开发的结果。该项目中的应用包括 `usbmuxd`、`ideviceinstaller`、`idevicerestore`、`ifuse`、`libusbmuxd`、`libplist`、`libirecovery` 和 `libideviceactivation`。

### 在 Linux 上安装 Libimobiledevice

在 Linux 上，你可能已经默认安装了 `libimobiledevice`。你可以通过你的软件包管理器或应用商店找到，或者通过运行项目中包含的一个命令：

```
$ ifuse --help

```

你可以用你的包管理器安装 `libimobiledevice`。例如，在 Fedora 或 CentOS 上：

```
$ sudo dnf install libimobiledevice ifuse usbmuxd

```

在 Debian 和 Ubuntu 上：

```
$ sudo apt install usbmuxd libimobiledevice6 libimobiledevice-utils

```

或者，你可以从源代码 [下载](https://github.com/libimobiledevice/libimobiledevice/) 并安装 `libimobiledevice`。

### 连接你的设备

当你安装了所需的软件包，将你的 iOS 设备连接到你的电脑。

为你的 iOS 设备建立一个目录作为挂载点。

```
$ mkdir ~/iPhone

```

接下来，挂载设备：

```
$ ifuse ~/iPhone

```

你的设备提示你，是否信任你用来访问它的电脑。

![iphone prompts to trust the computer](/data/attachment/album/202108/31/092918i3601p6z9r3i90gs.png)

*图 1：iPhone 提示你要信任该电脑。*

信任问题解决后，你会在桌面上看到新的图标。

![iphone icons appear on desktop](/data/attachment/album/202108/31/092919cx6dxclxu93cx19s.png)

*图 2：iPhone 的新图标出现在桌面上。*

点击 “iPhone” 图标，显示出你的 iPhone 的文件夹结构。

![iphone folder structure displayed](/data/attachment/album/202108/31/092919ric11gnzcsc0yisc.png)

*图 3：显示了 iPhone 的文件夹结构。*

我通常最常访问的文件夹是 `DCIM`，那里存放着我的 iPhone 照片。有时我在写文章时使用这些照片，有时有一些照片我想用 GIMP 等开源应用来增强。可以直接访问这些图片，而不是通过电子邮件把它们发给我自己，这是使用 `libimobiledevice` 工具的好处之一。我可以把这些文件夹中的任何一个复制到我的 Linux 电脑上。我也可以在 iPhone 上创建文件夹并删除它们。

### 发现更多

[Martin Szulecki](https://github.com/FunkyM) 是该项目的首席开发者。该项目正在寻找开发者加入他们的 [社区](https://libimobiledevice.org/#community)。Libimobiledevice 可以改变你使用外设的方式，而无论你在什么平台上。这是开源的又一次胜利，这意味着它是所有人的胜利。

---

via: <https://opensource.com/article/21/8/libimobiledevice-iphone-linux>

作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #380 Torvalds 认为 GPLv2 和公司的参与对 Linux 非常重要

Summary: 更多：• 谷歌使用 AI 生成高保真图像 • 研究发现 40% 的 GitHub Copilot 建议中存在安全漏洞

![](/data/attachment/album/202108/31/181054joqc6mf7az9rmmmq.jpg)

### Torvalds 认为 GPLv2 和公司的参与对 Linux 非常重要

![](/data/attachment/album/202108/31/181104qcqpp776apjpeiae.jpg)

Linux 创始人 Linus Torvalds 在最近的[一篇采访](https://www.zdnet.com/article/linus-torvalds-on-linuxs-30th-birthday/)中表示，他认为在 1992 年初 Linux 转向使用 GPLv2 许可证特别重要。他回忆说：“这不是最初的许可证，但我相信它是 Linux 变得如此广泛的一个重要原因。”此外，他还认为，“公司的参与是非常重要的，这可能听起来很明显，以至于老套和愚蠢，但开源社区的一些角落对任何商业参与都是相当消极的。”从最早期开始，Linux 就经历了来自大公司的“相当持续的”兴趣。

>
> 虽然 Linux 的成功有一定的时代幸运，但是至少可以说明 Linux 作对了几件事。
>
>
>

### 谷歌使用 AI 生成高保真图像

![](/data/attachment/album/202108/31/181123ppq3p1id7vc3qczu.jpg)

谷歌大脑的研究人员[分享](https://petapixel.com/2021/08/30/googles-new-ai-photo-upscaling-tech-is-jaw-dropping/)了他们在图像超级分辨率方面取得的新突破。通过其 SR3 和 CDM 方法，可以对输入的低分辨率图像生成高分辨率的图像，在提升人像和自然图像上效果良好。他们已经将该模型的性能推到了超分辨率和类条件的 ImageNet 生成基准的最先进水平。

>
> 以后可以从低画质照片和视频转成高画质了~
>
>
>

### 研究发现 40% 的 GitHub Copilot 建议中存在安全漏洞

![](/data/attachment/album/202108/31/181140ydadzid2cbv767dl.jpg)

研究人员为 Copilot 创建了 89 种不同的场景来推荐代码，产生了 1600 多个程序。研究人员在审查这些程序时[发现](https://www.techradar.com/news/github-autopilot-highly-likely-to-introduce-bugs-and-vulnerabilities-report-claims)，几乎 40% 的程序都有这样或那样的漏洞。由于 Copilot 借鉴了 GitHub 存储库中公开可用的代码，研究人员推测，生成的脆弱代码可能只是系统模仿存储库中的错误代码行为的结果。

>
> 所以，这就和差生抄作业一样，它也不知道抄的作业是不是对的。
>
>
>


elementary OS 6 Odin 评测：迟到的新版本，但也实至名归

不算稳定吧，光是mutter的glitch显示问题到现在也没有修复，而且邮件也是动不动卡死，flatpak版的邮件连密钥环问题都没解决。。。

而且eOS 6的默认安装器安装的grub也有问题，启动的grub文件放在了EFI，但是更新后的配置文件放在了BOOT目录。。。。默认安装的lvm也是用不起来的，到现在eOS开发上游还没搞定

好看归好看，实际用起来还是非常buggy的

不客气的说，等eOS 7发布了，就可以用eOS 6了

>
> 这篇 elementary OS 6 的评测将为你呈现该系统在旧款测试设备上的表现。
>
>
>

![](/data/attachment/album/202109/01/095116zk73wcc4g5clnvq8.jpg)

elementary OS 的粉丝们焦急等待 elementary OS 6 Odin 发布已经将近两年了。如此焦急的原因，主要在于早期版本 elementary OS 5.1 的内核和软件包在 2021 年来说过于陈旧。而且，这一旧版本基于 Ubuntu 18.04 LTS 构建。因此，用户都急切地等待着基于 Ubuntu 20.04 LTS 的全新版本 —— 最重要的是，Ubutnu 20.04 LTS 已经发布一年，接下来也将有下一个 LTS 版本发布。

你应该也明白的，过长的等待时间，很可能导致用户跳槽到其他发行版。

但即便如此，新版本终于还是 [在 8 月发布了](https://blog.elementary.io/elementary-os-6-odin-released/)，它在用户和粉丝群体很受欢迎。

于是，我在一周前为一台旧设备（我知道新设备的体验会更好）安装了 elementary OS 6 Odin，下面就是测评。

![elementary OS 6 Odin 的桌面](/data/attachment/album/202109/01/095126pd9b9509fe4ff7f5.jpg)

### elementary OS 6 Odin 测评

测试设备：

* CPU – Intel Core i3，4 GB 运行内存
* 硬盘 – SSD 固态硬盘
* 显卡 – Nvidia GeForce（340）

#### 安装

在这一版本中，elementary 团队针对他们自制的 elementary OS 安装器做了易用性优化。新安装器减少了安装前的准备步骤，虽然它还是需要依赖 GParted 进行分区操作（当然 GParted 本身是一款不错的工具）。

在前述测试设备中，安装过程大约花费了 10 分钟，没有任何报错。安装完之后，GRUB 也正常更新，没有任何意外。这是一个安装在老式 BIOS 上多引导系统。

#### 初见印象

如果你刚听说 elementary OS 和 Pantheon 桌面，或者从其他传统的菜单型桌面环境迁移过来，你可能需要一两天时间来适应这款桌面。当然，如果你已经是 elementary OS 的老用户的话，那么你将获得一致的体验，外加性能和外观的优化。

你应该可以察觉到一些明显可见的 [elementary OS 6 的新特性](https://www.debugpoint.com/2021/08/elementary-os-6/)，像是强调色、原生暗黑模式，以及一组不错的新壁纸。

#### 稳定性与性能

我已经使用 elementary OS 6 Odin 超过一周的时间。在日常使用后，我只能说，它很稳定，没有突然的崩溃和意外。其他（通过 `apt` 单独安装的）额外软件也运作正常，性能也没有降低。

在近乎闲置的情况下，CPU 使用率处在 5%-10% 之间，内存占用约为 900 MB。CPU / 内存的消耗主要分配在 Gala（Pantheon 的窗口管理器）、Wingpanel（顶栏）和应用中心。

![elementary OS 6 的系统性能](/data/attachment/album/202109/01/095126rv2xmpcz875sxhus.jpg)

考虑到系统的视觉效果，我认为这些占用数据也十分合理。不过，当你打开更多软件，例如 LibreOffice、Chrome、Kdenlive 之后，消耗的资源肯定会更多。

#### 应用程序与应用中心

elementary OS 的应用程序列表经过精选，几乎所有类型的软件都可以从应用中心获取，包括 Flatpak 应用。不过，elementary OS 默认并没有预装一些重要的应用程序，像是 Firefox、LibreOffice、Torrent 客户端、硬盘分区工具、照片编辑器之类 —— 这些重要的程序需要在安装系统后再自行安装。我认为预装软件这一块有很大的改进空间。

### 结束语

在这一周的测试中，我也多次遇到了一个 bug，Wi-Fi 有时会突然断开，不过这完全是上游 Ubuntu 20.04 的问题 —— 多年以来，它一直有奇怪的 Wi-Fi 问题。抛开这个问题，elementary OS 确实是一款稳定、优秀的 Linux 发行版。如果 elementary OS 有滚动更新的版本，也许会更好。因此，这是一款值得推荐的发行版，尤其适合那些从 macOS 迁移过来的人。

---

via: <https://www.debugpoint.com/2021/08/elementary-os-6-odin-review/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[imgradeone](https://github.com/imgradeone) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Linux 系统设置打印机

打印机对linux最友好的是HP，其次是EPSON

我的富士施乐S2110表示压力很大，EPSON 1300安装完毕，

>
> 如果系统没有自动检测到你的打印机，这篇文章教你如何在 Linux 系统手动添加打印机。
>
>
>

![](/data/attachment/album/202109/01/104541gvvxvriei677o76v.jpg "printing on Linux")

即使未来已来，<ruby> 电子墨水 <rt>  e-ink </rt></ruby>和 AR 技术可以现实应用，我们还是会用到打印机的。打印机制造商还不能做到让自己的专利打印机可以与各种计算机完全标准化传递信息，以至于我们需要各种打印机驱动程序，在任何操作系统上都是如此。电子电气工程师协会信息科学与技术处（IEEE-ISTO）下属的打印机工作组（PWG）和开放打印技术组织（[OpenPrinting.org](http://OpenPrinting.org)）长期合作致力于让人们可以（使用任何型号打印机）轻松打印。带来的便利就是，很多打印机可以不需要用户进行配置就可以自动被识别使用。

如果系统没有自动检测到你的打印机，你可以在这篇文章中找到如何在 Linux 系统手动添加打印机。文中假定你使用的是 GNOME 图形桌面系统，其设置流程同样适用于 KDE 或其他大多数桌面系统。

### 打印机驱动程序

在你尝试用打印机打印文件时，要先确认你的 Linux 系统上是不是已经安装了更新的打印机驱动程序。

可以尝试安装的打印机驱动程序有三大类：

* 作为安装包提供的，捆绑在你的 Linux 系统上的开源 [Gutenprint 驱动程序](http://gimp-print.sourceforge.net/)
* 打印机制造商提供的专用驱动程序
* 第三方开发提供的打印机驱动程序

开源打印机驱动程序库可以驱动 700 多种打印机，值得安装，这里面可能就有你的打印机的驱动，说不定可以自动设置好你的打印机（，你就可以使用它了）。

### 安装开源驱动程序包（库）

有些 Linux 发行版已经预装了开源打印机驱动程序包，如果没有，你可以用包管理器来安装。比如说，在 Fedora、CentOS、Magela 等类似发行版的 Linux 系统上，执行下面命令来安装：

```
$ sudo dnf install gutenprint

```

惠普（HP）系列的打印机，还需要安装惠普的 Linux 图形及打印系统软件包（HPLIP）。如在 Debian、Linux Mint 等类似的系统上，可以使用下面的命令：

```
$ sudo apt install hplip

```

### 安装制造商提供的驱动程序

很多时候因为打印机制造商使用了非标准的接口协议，这种情况开源打印机驱动程序就不能驱动打印机。另外的情况就是，开源驱动程序可以驱动打印机工作，但是会缺少供应商特有的某些性能。这些情况，你需要访问制造商的网站，找到适合你的打印机型号的 Linux 平台驱动。安装过程各异，仔细阅读安装指南逐步安装。

如果你的打印机根本不被厂商支持，你或许也只能尝试第三方提供的该型号打印机的驱动软件了。这类第三方驱动程序不是开源的，但大多数打印机的专用驱动程序也不是。如果你需要额外花费从供应商那里获取帮助服务才能安装好驱动并使用你的打印机，那是很心疼，或者你索性把这台打印机扔掉，至少你知道下次再也不会购买这个品牌的打印机了。

### 通用打印驱动系统（CUPS）

<ruby> 通用打印驱动系统 <rt>  Common Unix Printing System </rt></ruby>（CUPS）是由 Easy Software Products 公司于 1997 年开发的，2007 年被苹果公司收购。这是 Linux 平台打印的开源基础软件包，大多数现代发行版都为它提供了一个定制化的界面。得益于 CUPS 技术，你可以发现通过 USB 接口连接到电脑的打印机，甚至连接在同一网络的共享打印机。

一旦你安装了需要的驱动程序包，你就能手工添加你的打印机了。首先，把打印机连接到运行的电脑上，并打开打印机电源。然后从“活动”屏幕或者应用列表中找到并打开“打印机”设置。

![printer settings](/data/attachment/album/202109/01/104552urnl9ennubolotth.png "printer settings")

基于你已经安装的驱动包，你的 Linux 系统有可能自动检测识别到你的打印机型号，不需要额外的设置就可以使用你的打印机了。

![printer settings](/data/attachment/album/202109/01/104552f7101twi11jyoywq.png "printer settings")

一旦你在列表中找到你的打印机型号，设置使用这个驱动，恭喜你就可以在 Linux 系统上用它打印了。

（如果你的打印机没有被自动识别，）你需要自行添加打印机。在“打印机”设置界面，点击右上角的解锁按钮，输入管理用户密码，按钮转换成“添加打印机”按钮。

然后点击这个“添加打印机”按钮，电脑会搜索已经连接的本地打印机型号并匹配相应驱动程序。如果要添加网络共享打印机，在搜索框输入打印机或者其服务器机的 IP 地址。

![searching for a printer](/data/attachment/album/202109/01/104553op6vwmtiddadqc7w.png "searching for a printer")

选中你想添加的打印机型号，点击“添加”按钮把打印机驱动加入系统，就可以使用它了。

### 在 Linux 系统上打印

在 Linux 系统上打印很容易，不管你是在使用本地打印机还是网络打印机。如果你计划购买打印机，建议查看开放打印技术组织的（可支持打印机）数据库（[OpenPrinting.org](http://www.openprinting.org/printers/)），看看你想购买的打印机是不是有相应的开源驱动程序。如果你已经拥有一台打印机，你现在也知道怎样在你的 Linux 系统上使用你的打印机了。

---

via: <https://opensource.com/article/21/8/add-printer-linux>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[lujun9972](https://github.com/lujun9972) 译者：[fisherue](https://github.com/fisherue) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #381 Docker 桌面管理工具对大公司不再免费

Summary: 更多：• 因错误包含一些非自由的代码，GNU Linux-libre 重新发布 • 网络攻击者现在正悄悄地卖掉受害者的网络带宽

docker弄得越来越没意思了

![](/data/attachment/album/202109/01/164101nb4k1ka6bgjb2rkk.jpg)

### Docker 桌面管理工具对大公司不再免费

![](/data/attachment/album/202109/01/163848x47phcz0nh7pvp0h.jpg)

Docker 平台有许多组件，大部分都是开源的，但 Docker 桌面管理工具不是，它用于管理各种 Docker 组件和功能。Docker 公司将[限制](https://www.theregister.com/2021/08/31/docker_desktop_no_longer_free/)只让个人或小型企业可以免费使用其 Docker 桌面管理工具。现在要求拥有 250 名或以上员工，或年收入超过 1000 万美元的企业，必须付费使用它：分别是 5 美元/月的专业版和 7 美元/月的团队版订阅，以及新的 21 美元/月的商业版订阅。

>
> 这是 Docker 公司也在寻求可持续发展的道路。
>
>
>

### 因错误包含一些非自由的代码，GNU Linux-libre 重新发布

![](/data/attachment/album/202109/01/164023za20q30qfw7jq14w.jpg)

基于最近发布的 Linux 5.14 上游内核，今天 GNU Linux-libre 5.14-gnu 内核发布了。GNU Linux-libre 内核剥离了非自由的二进制固件、微代码二进制大对象和其他非自由软件组件。但是[事实证明](https://www.phoronix.com/scan.php?page=news_item&px=GNU-Linux-Libre-5.14)这个“100% 自由软件”的内核中错误地留下了一些非自由的内核代码，所以之前的 GNU Linux-libre 版本也不得不重新发布。

>
> 虽然剥离一些非自由组件会损失一些支持，但是总该有一个这样偏执于自由的内核。
>
>
>

### 网络攻击者现在正悄悄地卖掉受害者的网络带宽

![](/data/attachment/album/202109/01/163927v11hz4u9sisubb9q.jpg)

周二思科的[研究人员说](https://www.zdnet.com/article/cyberattackers-are-now-quietly-selling-off-their-victims-internet-bandwidth/)，“代理软件”正被网络犯罪分子用于非法目的，成为犯罪分子从受害者身上获取收入的又一途径。这种所谓的“代理软件”，也被称为互联网共享应用程序，允许用户为其他设备分享部分互联网连接带宽。这是一种合法服务，可以在每次有别的用户连接到它时就可以为他们提供收入。攻击者在受害者的电脑上安装这种软件，并在攻击者的账户下注册该软件，因此任何收入都会被发送到攻击者手中。

>
> 真是无孔不入啊。
>
>
>


Ulauncher：一个超级实用的 Linux 应用启动器

apt-get install gmrun

>
> Ulauncher 是一个快速应用启动器，支持扩展和快捷方式，帮助你在 Linux 中快速访问应用和文件。
>
>
>

应用启动器可以让你快速访问或打开一个应用，而无需在应用菜单图标上徘徊。

在默认情况下，我发现 Pop!\_OS 的应用启动器超级方便。但是，并不是每个 Linux 发行版都提供开箱即用的应用启动器。

幸运的是，有一个你可以在大多数流行的发行版中添加应用启动器的方案。

### Ulauncher：开源应用启动器

![](/data/attachment/album/202109/01/223959i21566f0h0f03qz3.png)

Ulauncher 是一个使用 Python 还有 GTK+ 构建的快速应用启动器。

它提供了相当数量的自定义和控制选项来进行调整。总的来说，你可以调整它的行为和体验以适应你的喜好。

让我来说一下你可以期待它的一些功能。

### Ulauncher 功能

Ulauncher 中的选项非常非常易于访问且易于定制。一些关键的亮点包括：

* 模糊搜索算法可以让你即使拼错了，也能找到应用
* 可以记住你在同一会话中最后搜索的应用
* 显示经常使用的应用（可选）
* 自定义颜色主题
* 预设颜色主题，包括一个黑暗主题
* 召唤启动器的快捷方式可以轻松定制
* 浏览文件和目录
* 支持扩展，以获得额外的功能（表情符号、天气、速度测试、笔记、密码管理器等）
* 浏览谷歌、维基百科和 Stack Overflow 等网站的快捷方式

它几乎提供了你在一个应用启动器中所期望的所有有用的能力，甚至更好。

### 如何在 Linux 中使用 Ulauncher？

默认情况下，首次从应用菜单中打开应用启动器后，你需要按 `Ctrl + Space` 打开应用启动器。

输入以搜索一个应用。如果你正在寻找一个文件或目录，输入以 `~` 或者 `/` 开始。

![](/data/attachment/album/202109/01/224000l99888hde78vz504.png)

有一些默认的快捷键，如 `g XYZ`，其中 “XYZ” 是你想在谷歌中搜索的搜索词。

![](/data/attachment/album/202109/01/224003m1lqztq09i9u1xxm.png)

同样，你可以通过 `wiki` 和 `so` 快捷键，直接在维基百科或 Stack Overflow 搜索。

在没有任何扩展的情况下，你也可以直接计算内容，并将结果直接复制到剪贴板。

![](/data/attachment/album/202109/01/224005fdrsy27s7riusyf1.png)

这在快速计算时应该很方便，不需要单独启动计算器应用。

你可以前往它的 [扩展页面](https://ext.ulauncher.io)，浏览有用的扩展，以及指导你如何使用它的截图。

要改变它的工作方式，启用显示经常使用的应用，并调整主题，请点击启动器右侧的齿轮图标。

![](/data/attachment/album/202109/01/224006h1xzoy71zosffxq5.png)

你可以把它设置为自动启动。但是，如果它在你的支持 Systemd 的发行版上不工作，你可以参考它的 GitHub 页面，把它添加到服务管理器中。

这些选项是非常直观，且易于定制，如下图所示。

![](/data/attachment/album/202109/01/224007axzwsb3o23nor2rb.png)

### 在 Linux 中安装 Ulauncher

Ulauncher 为基于 Debian 或 Ubuntu 的发行版提供了一个 deb 包。如果你是 Linux 新手，你可以了解一下 [如何安装 Deb 文件](https://itsfoss.com/install-deb-files-ubuntu/) 。

在这两种情况下，你也可以添加它的 PPA，并通过终端按照下面的命令来安装它：

```
sudo add-apt-repository ppa:agornostal/ulauncher
sudo apt update
sudo apt install ulauncher

```

你也可以在 [AUR](https://itsfoss.com/aur-arch-linux/) 中找到它，用于 Arch 和 Fedora 的默认仓库。

对于更多信息，你可以前往其官方网站或 [GitHub 页面](https://github.com/Ulauncher/Ulauncher/)。

* [Ulauncher](https://ulauncher.io)

Ulauncher 应该是任何 Linux 发行版中一个令人印象深刻的补充。特别是，如果你想要一个像 Pop!\_OS 提供的快速启动器的功能，这是一个值得考虑的奇妙选择。

你试过 Ulauncher了吗？欢迎你就如何帮助你快速完成工作分享你的想法。

---

via: <https://itsfoss.com/ulauncher/>

作者：[Ankush Das](https://itsfoss.com/author/ankush/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 Kubernetes 上部署一个深度学习模型

>
> 了解如何使用 Kubermatic Kubernetes 平台来部署、扩展与管理图像识别预测的深度学习模型。
>
>
>

![](/data/attachment/album/202109/01/233417ryy87hyza7jmgy33.jpg "Brain on a computer screen")

随着企业增加了对人工智能（AI）、机器学习（ML）与深度学习（DL）的使用，出现了一个关键问题：如何将机器学习的开发进行规模化与产业化？这些讨论经常聚焦于机器学习模型本身；然而，模型仅仅只是完整解决方案的其中一环。为了达到生产环境的应用和规模，模型的开发过程必须还包括一个可以说明开发前后关键活动以及可公用部署的可重复过程。

本文演示了如何使用 [Kubermatic Kubernetes 平台](https://www.loodse.com/products/kubermatic/) 对图像识别预测的深度学习模型进行部署、扩展与管理。

Kubermatic Kubernetes 平台是一个生产级的开源 Kubernetes 集群管理工具，提供灵活性和自动化，与机器学习/深度学习工作流程整合，具有完整的集群生命周期管理。

### 开始

这个例子部署了一个用于图像识别的深度学习模型。它使用了 [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) 数据集，包含了 60,000 张分属 10 个类别的 32x32 彩色图，同时使用了 [Apache MXNet](https://mxnet.apache.org/) 的 [Gluon](https://gluon.mxnet.io/) 与 NVIDIA GPU 进行加速计算。如果你希望使用 CIFAR-10 数据集的预训练模型，可以查阅其 [入门指南](https://gluon-cv.mxnet.io/build/examples_classification/demo_cifar10.html)。

使用训练集中的样本对模型训练 200 次，只要训练误差保持缓慢减少，就可以保证模型不会过拟合。下方图展示了训练的过程：

![深度学习模型训练 loss 图](/data/attachment/album/202109/01/233430j0jnjf92hfnr2iss.png "Deep learning model training plot")

训练结束后，必须保存模型训练所得到的参数，以便稍后可以加载它们：

```
file_name = "net.params"
net.save_parameters(file_name)

```

一旦你的模型训练好了，就可以用 Flask 服务器来封装它。下方的程序演示了如何接收请求中的一张图片作为参数，并在响应中返回模型的预测结果：

```
from gluoncv.model_zoo import get_model
import matplotlib.pyplot as plt
from mxnet import gluon, nd, image
from mxnet.gluon.data.vision import transforms
from gluoncv import utils
from PIL import Image
import io
import flask
app = flask.Flask(__name__)

@app.route("/predict",methods=["POST"])
def predict():
    if flask.request.method == "POST":
        if flask.request.files.get("img"):
           img = Image.open(io.BytesIO(flask.request.files["img"].read()))
            transform_fn = transforms.Compose([
            transforms.Resize(32),
            transforms.CenterCrop(32),
            transforms.ToTensor(),
            transforms.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010])])
            img = transform_fn(nd.array(img))
            net = get_model('cifar_resnet20_v1', classes=10)
            net.load_parameters('net.params')
            pred = net(img.expand_dims(axis=0))
            class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer',
                       'dog', 'frog', 'horse', 'ship', 'truck']
            ind = nd.argmax(pred, axis=1).astype('int')
            prediction = 'The input picture is classified as [%s], with probability %.3f.'%
                         (class_names[ind.asscalar()], nd.softmax(pred)[0][ind].asscalar())
    return prediction

if __name__ == '__main__':
   app.run(host='0.0.0.0')

```

### 容器化模型

在将模型部署到 Kubernetes 前，你需要先安装 Docker 并使用你的模型创建一个镜像。

1. 下载、安装并启动 Docker：

```
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo <https://download.docker.com/linux/centos/docker-ce.repo>
sudo yum install docker-ce
sudo systemctl start docker

```
2. 创建一个你用来管理代码与依赖的文件夹：

```
mkdir kubermatic-dl
cd kubermatic-dl

```
3. 创建 `requirements.txt` 文件管理代码运行时需要的所有依赖：

```
flask
gluoncv
matplotlib
mxnet
requests
Pillow

```
4. 创建 `Dockerfile`，Docker 将根据这个文件创建镜像:

```
FROM python:3.6
WORKDIR /app
COPY requirements.txt /app
RUN pip install -r ./requirements.txt
COPY app.py /app
CMD ["python", "app.py"]

```

这个 `Dockerfile` 主要可以分为三个部分。首先，Docker 会下载 Python 的基础镜像。然后，Docker 会使用 Python 的包管理工具 `pip` 安装 `requirements.txt` 记录的包。最后，Docker 会通过执行 `python app.py` 来运行你的脚本。
5. 构建 Docker 容器:

```
sudo docker build -t kubermatic-dl:latest .

```

这条命令使用 `kubermatic-dl` 镜像为你当前工作目录的代码创建了一个容器。
6. 使用

```
sudo docker run -d -p 5000:5000 kubermatic-dl

```

命令检查你的容器可以在你的主机上正常运行。
7. 使用

```
sudo docker ps -a

```

命令查看你本地容器的运行状态:

![查看容器的运行状态](/data/attachment/album/202109/01/233430nszyaz0pklym7jay.png "Checking the container's status")

### 将你的模型上传到 Docker Hub

在向 Kubernetes 上部署模型前，你的镜像首先需要是公开可用的。你可以通过将你的模型上传到 [Docker Hub](https://hub.docker.com/) 来将它公开。（如果你没有 Docker Hub 的账号，你需要先创建一个）

1. 在终端中登录 Docker Hub 账号：

```
sudo docker login

```
2. 给你的镜像打上标签，这样你的模型上传到 Docker Hub 后也能拥有版本信息：

```
sudo docker tag <your-image-id> <your-docker-hub-name>/<your-app-name>

sudo docker push <your-docker-hub-name>/<your-app-name>

```

![给镜像打上 tag](/data/attachment/album/202109/01/233430h5uahx4vevfhxxjf.png "Tagging the image")
3. 使用

```
sudo docker images

```

命令检查你的镜像的 ID。

### 部署你的模型到 Kubernetes 集群

1. 首先在 Kubermatic Kubernetes 平台创建一个项目, 然后根据 [快速开始](https://docs.kubermatic.com/kubermatic/v2.13/installation/install_kubermatic/_installer/) 创建一个 Kubernetes 集群。

![创建一个 Kubernetes 集群](/data/attachment/album/202109/01/233431qsg5vryf74zppyp7.png "Create a Kubernetes cluster")
2. 下载用于访问你的集群的 `kubeconfig`，将它放置在下载目录中，并记得设置合适的环境变量，使得你的环境能找到它：

![Kubernetes 集群示例](/data/attachment/album/202109/01/233431wyjdooviaf75135f.png "Kubernetes cluster example")
3. 使用 `kubectl` 命令检查集群信息，例如，需要检查 `kube-system` 是否在你的集群正常启动了就可以使用命令 `kubectl cluster-info`

![查看集群信息](/data/attachment/album/202109/01/233431u78i7ir88x485at4.png "Checking the cluster info")
4. 为了在集群中运行容器，你需要创建一个部署用的配置文件（`deployment.yaml`），再运行 `apply` 命令将其应用于集群中：

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubermatic-dl-deployment
spec:
  selector:
    matchLabels:
      app: kubermatic-dl
  replicas: 3
  template:
    metadata:
      labels:
        app: kubermatic-dl
    spec:
     containers:
     - name: kubermatic-dl
       image: kubermatic00/kubermatic-dl:latest
       imagePullPolicy: Always
       ports:
       - containerPort: 8080

```

```
kubectl apply -f deployment.yaml`

```
5. 为了将你的部署开放到公网环境，你需要一个能够给你的容器创建外部可达 IP 地址的服务：

```
kubectl expose deployment kubermatic-dl-deployment  --type=LoadBalancer --port 80 --target-port 5000`

```
6. 就快大功告成了！首先检查你布署的服务的状态，然后通过 IP 请求的你图像识别 API：

```
kubectl get service

```

![获取请求图像识别 API 的 IP 地址](/data/attachment/album/202109/01/233431e2v0f0n0v8ffwmnv.png "Get the IP address to call your image recognition API")
7. 最后根据你的外部 IP 使用以下两张图片对你的图像识别服务进行测试：

![马](/data/attachment/album/202109/01/233432r9655dyqhq666gzf.jpg "Horse")

![狗](/data/attachment/album/202109/01/233432x63iiam0fy2li665.jpg "Dog")

![测试 API](/data/attachment/album/202109/01/233432eiiihhililliri3i.png "Testing the API")

### 总结

在这篇教程中，你可以创建一个深度学习模型，并且使用 Flask 提供 [REST API](https://www.redhat.com/en/topics/api/what-is-a-rest-api) 服务。它介绍了如何将应用放在 Docker 容器中，如何将这个镜像上传到 Docker Hub 中，以及如何使用 Kubernetes 部署你的服务。只需几个简单的命令，你就可以使用 Kubermatic Kubernetes 平台部署该应用程序，并且开放服务给别人使用。

---

via: <https://opensource.com/article/20/9/deep-learning-model-kubernetes>

作者：[Chaimaa Zyani](https://opensource.com/users/chaimaa) 选题：[lujun9972](https://github.com/lujun9972) 译者：[chunibyo-wly](https://github.com/chunibyo-wly) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #382 约 60% 的访客屏蔽了谷歌分析

Summary: 更多：• 人类驾驶的汽车碾过一个自动送货机器人 • Cloudflare 将不在其下一代服务器内使用英特尔 CPU

intel不是捂着新技术不发布，是真的没有。

![](/data/attachment/album/202109/02/160927t1eyln7tx6nmq16t.jpg)

### 约 60% 的访客屏蔽了谷歌分析

![](/data/attachment/album/202109/02/160935rdynh30ff6h3ljnj.jpg)

很多浏览器和广告屏蔽扩展都会屏蔽谷歌分析的跟踪，使用它来记录网站访问可能不会收集到精确的访问数据。根据一项[研究](https://plausible.io/blog/google-analytics-adblockers-missing-data)，对谷歌分析的屏蔽情况如下：

* 按浏览器：Firefox 88.28%、Edge 71.58%、Chrome 50.42%、Safari 41.41%；
* 按设备：笔记本和桌面 68.2%、移动和平板 49.9%；
* 按操作系统：Linux 82.3%、Windows 74.4%、Mac 61.7%、Android 54%、iOS 41.5%；
* 整体来说，58% 的访客屏蔽了谷歌分析。

>
> 第三方统计由于其对隐私的侵犯，越来越多的被屏蔽，其可靠性也越来越差了。
>
>
>

### 人类驾驶的汽车碾过一个自动送货机器人

![](/data/attachment/album/202109/02/161003ytn76pssni9s9k44.jpg)

虽然围绕着具有自动驾驶功能的大型车辆的行人安全问题仍存在争议，但这一次角色互换了。一段披露的视频显示，一辆 Starship 送货机器人在经过过街人行道时被拐弯的汽车[碾压](https://www.theverge.com/2021/9/1/22652980/starship-delivery-robot-kentucky-car-accident)到了“脚脚”，受伤的机器人一瘸一拐的退回了人行道上。

>
> 可怜的小机器人。
>
>
>

### Cloudflare 将不在其下一代服务器内使用英特尔 CPU

![](/data/attachment/album/202109/02/161027vsxq84med8xbsbm8.jpg)

Cloudflare 自 2020 年中期以来一直在为第十一代服务器进行设计。他们[评估](https://www.theregister.com/2021/09/01/cloudflare_picks_amd_again/)了英特尔最新的 Ice Lake 至强处理器，认为，“虽然英特尔的芯片在原始性能方面能够与 AMD 竞争，但每台服务器的功耗却高出几百瓦。”此外，他们的测试显示，为其服务器配备 512GB 的内存并没有产生足够的性能提升，因此决定采用 384GB 的内存。

>
> 不知道英特尔对此怎么看，是否还要捂着新技术不发布？
>
>
>


Debian 和 Ubuntu：有什么不同？应该选择哪一个？

Summary: 它们两者是如此的相似，那么，它们两者之间有什么区别呢？

我选择 fedora

Debian 是一个真正的社区项目。此项目的一切都由其社区成员管理。

我也喜欢fedora。但Debian的社区血统确实很纯正。

我最早因为一切奇怪的原因xubuntu安装不上，就选择了debian 10 xfce入门

Ubuntu会不会有一天也步Centos的后尘？

我从Debian8和Debian9开始的，主要ubuntu桌面版Unity那时候太激进了，很多软件升级无法做到兼容，就转了Debian，升级平滑，而且稳定，甚少bug，主要都是常用软件例如输入法折腾了一阵子，不过现在都好了

Ubuntu是商业性质的，不可能像Centos，Centos是社区属性，只是父辈RedHat被Oracle收入囊中，商业属性硬吞社区，排除异己所导致今天的结果

Ubuntu强制安装的snap太烦人了，一大堆软件只提供snap版本，还是社区驱动的Debian舒服一点。

纯属扯淡，redhat是被IBM兼并。但新合并的公司的老总并不是原IBM的，而是来自红帽。没有企业支持的项目，不会活得很好，人做事先要吃饭的，不是喊着社区开源的口号就能当面包。BAT，京东华为的自家LINUX,全部是基于RHEL的克隆，而不是debian。

不多说Manjaro+Debian.........

它们两者是如此的相似，那么，它们两者之间有什么区别呢？

![](/data/attachment/album/202109/02/230706mpahrwpwjjm2jkpu.jpg)

在 Debian 和 Ubuntu 系统中，你都可以 [使用 apt-get 命令](https://itsfoss.com/apt-get-linux-guide/) 来管理应用。你也可以在这两个发行版中安装 DEB 安装包。很多时候，你会在这两个发行版中发现同样的包安装命令。

它们两者是如此的相似，那么，它们两者之间有什么区别呢？

Debian 和 Ubuntu 属于同一系列的发行版。Debian 是由 Ian Murdock 在 1993 年创建的最初的发行版。Ubuntu 是 Mark Shuttleworth 在 2004 年基于 Debian 创建的发行版。

### Ubuntu 基于 Debian：这意味着什么？

Linux 发行版虽然有数百个，但其中只有少数是从零开始的独立发行版。 [Debian](https://www.debian.org/)、Arch、Red Hat 是其中几个不派生于其它发行版的使用最广的发行版。

Ubuntu 源自 Debian。这意味着 Ubuntu 使用与 Debian 相同的 APT 包管理系统，并共享来自 Debian 库中的大量包和库。它建立在 Debian 基础架构上。

![Ubuntu uses Debian as base](/data/attachment/album/202109/02/230831qjp07kxj0p0x7vuv.png)

这就是大多数“衍生”发行版所做的。它们使用相同的包管理器，并与基础发行版共享包。但它们也做了一些改变，添加了一些自己的包。这就是 Ubuntu 和 Debian 的不同之处，尽管它是从 Debian 衍生而来的。

### Ubuntu 和 Debian 的不同之处

因此，Ubuntu 构建在 Debian 架构和基础设施上，也与 Debian 一样是用 .DEB 格式的软件包。

这意味着使用 Ubuntu 和使用 Debian 是一样的吗？并不完全如此。有很多因素可以用来区分两个不同的发行版。

让我逐一讨论这些因素来比较 Ubuntu 和 Debian。请记住，有些比较适用于桌面版本，而有些比较适用于服务器版本。

![](/data/attachment/album/202109/02/230831i53ac53oyk7x5aqx.png)

#### 1、发布周期

Ubuntu 有两种发布版本：LTS（长期支持）和常规版本。[Ubuntu LTS 版本](https://itsfoss.com/long-term-support-lts/) 每两年发布一次，并且会提供五年的支持。你可以选择升级到下一个可用的 LTS 版本。LTS 版本被认为更稳定。

还有一个非 LTS 版本，每六个月发布一次。这些版本仅仅提供九个月的支持，但是它们会有一些新的软件版本和功能。在当前的版本到达维护年限时，你应当升级到下一个 Ubuntu 版本。

所以基本上，你可以根据这些版本在稳定性和新特性之间进行选择。

另一方面，Debian 有三个不同的版本：稳定版、测试版和非稳定版。非稳定版是为了实际测试，应该避免使用。

测试版不是那么不稳定。它是用来为下一个稳定版做准备。有一些 Debian 用户更倾向于使用测试版来获取新的特性。

然后是稳定版。这是 Debian 的主要版本。Debian 稳定版可能没有最新的软件和功能，但在稳定性方面毋庸置疑。

每两年 Debian 会发布一个稳定版，并且会提供三年的支持。此后，你应当升级到下一个可用的稳定版。

#### 2、软件更新

![](/data/attachment/album/202109/02/230832m7rmrvxeax4v4qri.png)

Debian 更关注稳定性，这意味着它并不总是使用最新版本的软件。例如，最新的 Debian 11 用的 GNOME 版本为 3.38，并不是最新版的 GNOME 3.40。

对于 GIMP、LibreOffice 等其它软件也是如此。这是你必须对 Debian 做出的妥协。这就是“Debian stable = Debian stale”笑话在 Linux 社区流行的原因。

Ubuntu LTS 版本也关注稳定性。但是它们通常拥有较新版本的常见软件。

你应该注意，对于某些软件，从开发者的仓库安装也是一种选择。例如，如果你想要安装最新版的 Docker，你可以在 Debian 和 Ubuntu 中添加 Docker 仓库。

总体来说，相比较于 Ubuntu ，Debian 稳定版的软件版本会更旧。

#### 3、软件可用性

Debian 和 Ubuntu 都拥有一个巨大的软件仓库。然而，[Ubuntu 还有 PPA](https://itsfoss.com/ppa-guide/)（<ruby> 个人软件包存档 <rt>  Personal Package Archive </rt></ruby>）。通过 PPA，安装更新版本的软件或者获取最新版本的软件都将会变的更容易。

![](/data/attachment/album/202109/02/230834vq3slmjcpcl1p53l.jpg)

你可以在 Debian 中尝试使用 PPA，但是体验并不好。大多数时候你都会遇到问题。

#### 4、支持的平台

Ubuntu 可以在 64 位的 x86 和 ARM 平台上使用。它不再提供 32 位的镜像。

另一方面，Debian 支持 32 位和 64 位架构。除此之外，Debian 还支持 64 位 ARM（arm64）、ARM EABI（armel）、ARMv7（EABI hard-float ABI，armhf）、小端 MIPS（mipsel）、64 位小端 MIPS（mips64el）、64 位小端 PowerPC（ppc64el） 和 IBM System z（s390x）。

所以它也被称为 “<ruby> 通用操作系统 <rt>  universal operating system </rt></ruby>”。

#### 5、安装

[安装 Ubuntu](https://itsfoss.com/install-ubuntu/) 比安装 Debian 容易得多。我并不是在开玩笑。即使对于有经验的 Linux 用户，Debian 也可能令人困惑。

当你下载 Debian 的时候，它默认提供的是最小化镜像。此镜像没有非自由（非开源）的固件。如果你继续安装它，你就可能会发现你的网络适配器和其它硬件将无法识别。

有一个单独的包含固件的非自由镜像，但它是隐藏的，如果你不知道，你可能会大吃一惊。

![Getting non-free firmware is a pain in Debian](/data/attachment/album/202109/02/230834b4k2r09rk00rrp0k.png)

Ubuntu 在默认提供的镜像中包含专有驱动程序和固件时要宽容的多。

此外，Debian 安装程序看起来很旧，而 Ubuntu 安装程序看起来就比较现代化。Ubuntu 安装程序还可以识别磁盘上其它已安装的操作系统，并为你提供将 Ubuntu 与现有操作系统一起安装的选项（双引导）。但我在测试时并没有注意到 Debian 有此选项。

![Installing Ubuntu is smoother](/data/attachment/album/202109/02/230835jubk6kkh6ogk4j6h.png)

#### 6、开箱即用的硬件支持

就像之前提到的，Debian 主要关注 [FOSS](https://itsfoss.com/what-is-foss/)（自由和开源软件）。这意味着 Debian 提供的内核不包括专有驱动程序和固件。

这并不是说你无法使其工作，而是你必须添加/启动额外的存储库并手动安装。这可能令人沮丧，特别是对于初学者来说。

Ubuntu 并不完美，但在提供开箱即用的驱动程序和固件方面，它比 Debian 好得多。这意味着更少的麻烦和更完整的开箱即用体验。

#### 7、桌面环境选择

Ubuntu 默认使用定制的 GNOME 桌面环境。你可以在其上安装 [其它桌面环境](https://itsfoss.com/best-linux-desktop-environments/)，或者选择 [各种不同桌面风格的 Ubuntu](https://itsfoss.com/which-ubuntu-install/)，如 Kubuntu（使用 KDE 桌面）、Xubuntu（使用 Xfce 桌面）等。

Debian 也默认安装了 GNOME 桌面。但是它会让你在安装的过程中选择你要安装的桌面环境。

![](/data/attachment/album/202109/02/230837v8p1dln8zwypanud.png)

你还可以从其网站获取 [特定桌面环境的 ISO 镜像](https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/)。

#### 8、游戏性

由于 Stream 及其 Proton 项目，Linux 上的游戏总体上有所改善。尽管如此，游戏在很大程度上取决于硬件。

在硬件兼容性上，Ubuntu 比 Debian 在支持专有驱动程序方面要好。

并不是说在 Debian 中不能做到这一点，而是需要一些时间和精力来实现。

#### 9、性能

性能部分没有明显的“赢家”，无论是在服务器版本还是在桌面版本。 Debian 和 Ubuntu 作为桌面和服务器操作系统都很受欢迎。

性能取决于你系统的硬件和你所使用的软件组件。你可以在你的操作系统中调整和控制你的系统。

#### 10、社区和支持

Debian 是一个真正的社区项目。此项目的一切都由其社区成员管理。

Ubuntu 由 [Canonical](https://canonical.com/) 提供支持。然而，它并不是一个真正意义上的企业项目。它确实有一个社区，但任何事情的最终决定权都掌握在 Canonical 手中。

就支持而言，Ubuntu 和 Debian 都有专门的论坛，用户可以在其中寻求帮助和提出建议。

Canonical 还为其企业客户提供收费的专业支持。Debian 则没有这样的功能。

### 结论

Debian 和 Ubuntu 都是桌面或服务器操作系统的可靠选择。 APT 包管理器和 DEB 包对两者都是通用的，因此提供了一些相似的体验。

然而，Debian 仍然需要一定程度的专业知识，特别是在桌面方面。如果你是 Linux 新手，坚持使用 Ubuntu 将是你更好的选择。在我看来，你应该积累一些经验，熟悉了一般的 Linux，然后再尝试使用 Debian。

并不是说你不能从一开始就使用 Debian，但对于 Linux 初学者来说，这并不是一种很好的体验。

欢迎你对这场 Debian 与 Ubuntu 辩论发表意见。

---

via: <https://itsfoss.com/debian-vs-ubuntu/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[perfiffer](https://github.com/perfiffer) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


我们离不开的 Linux 内核模块

Summary: 开源爱好者们对他们所喜爱的 Linux 内核模块进行了评价。

开源爱好者们对他们所喜爱的 Linux 内核模块进行了评价。

>
> 开源爱好者们对他们所喜爱的 Linux 内核模块进行了评价。
>
>
>

![](/data/attachment/album/202109/03/065649hik5hjiiy3htj589.jpg "Linux keys on the keyboard for a desktop computer")

Linux 内核今年就要满 30 岁了! 如果你像我们一样对此特别重视，那么让我们本周用几个特别的文章来庆祝 Linux。

今天，我们先来看看来自社区对“**你不能没有哪个 Linux 内核模块？为什么？**”的回答，让我们听听这 10 位爱好者是怎么说的。

### #1

我猜一些内核开发者听到我的回答后会尖叫着跑开。不过，我还是在这里列出了两个最具争议性的模块：

* 第一个是 NVIDIA，因为我的工作笔记本和个人台式机上都有 NVIDIA 显卡。
* 另一个可能产生的仇恨较少。VMware 的 VMNET 和 VMMON 模块，以便能够运行 VMware Workstation。

— [Peter Czanik](https://opensource.com/users/czanik)

### #2

我最喜欢的是 [zram](https://en.wikipedia.org/wiki/Zram) 模块。它在内存中创建了一个压缩块设备，然后它可以作为交换分区使用。在内存有限的情况下（例如，在虚拟机上），还有如果你担心频繁的 I/O 操作会磨损你的 SSD 或者甚至更糟糕的基于闪存的存储，那么使用基于 zram 的交换分区是非常理想的。

— [Stephan Avenwedde](https://opensource.com/users/hansic99)

### #3

最有用的内核模块无疑是 snd-hda-intel，因为它支持大多数集成声卡。我可以一边听音乐，一边在 Linux 桌面上编码一个音频编曲器。

— [Joël Krähemann](https://opensource.com/users/joel2001k)

### #4

如果没有我用 Broadcom 文件生成的 kmod-wl，我的笔记本就没有价值了。我有时会收到关于内核污染的信息，但没有无线网络的笔记本电脑有什么用呢？

— [Gregory Pittman](https://opensource.com/users/greg-p)

### #5

我不能没有蓝牙。没有它，我的鼠标、键盘、扬声器和耳机除了用来挡住门板还有啥用？

— [Gary Smith](https://opensource.com/users/greptile)

### #6

我要冒昧地说 *全* 都是。 说真的，我们已经到了随机拿一块硬件，插入它，它就可以工作的地步。

* USB 串行适配器能正常工作
* 显卡可以使用（尽管可能不是最好的）
* 网卡正常工作
* 声卡正常工作

所有这些模块整体带来大量可以工作的驱动程序，令人印象深刻。我记得在过去那些糟糕的日子里，我们曾经大喊 xrandr 魔法字符串才能来使投影仪工作。而现在，是的，当设备基本不能正常工作时，才真的罕见。

如果我不得不把它归结为一个，那就是 raid6。

— [John 'Warthog9' Hawley](https://opensource.com/users/warthog9)

### #7

对于这个问题，我想回到 20 世纪 90 年代末。我是一家小公司的 Unix 系统管理员（兼任 IS 经理）。我们的磁带备份系统死了，由于“小公司”预算有限，我们没有急于更换或现场维修。所以我们必须得把它送去维修。

在那两个星期里，我们没有办法进行磁带备份。没有一个系统管理员愿意处于这种境地。

但后来我想起了读过的 [如何使用软盘磁带机](https://tldp.org/HOWTO/Ftape-HOWTO.html)，我们刚好有一台刚换下来的塔式电脑，它有一个软盘磁带机。

于是我用 Linux 重新安装了它，设置了 ftape 内核驱动模块，进行了一些备份/恢复测试，然后将我们最重要的备份运行到 QIC 磁带上。在这两个星期里，我们依靠 ftape 备份重要数据。

所以，对于那些让软盘磁带机在 1990 年代的 Linux 上工作的无名英雄，你真是太厉害了！

— [Jim Hall](https://opensource.com/users/jim-hall)

### #8

嗯，这很简单。是 kvm 内核模块。就个人而言，我无法想象在没有虚拟机的情况下完成日常工作。我愿意相信我们大多数人都是这样。kvm 模块在使 Linux 成为云战略的核心方面也发挥了很大作用。

— [Gaurav Kamathe](https://opensource.com/users/gkamathe)

### #9

对我来说，是 dm-crypt，它是用于 LUKS 的。参见：

* <https://www.redhat.com/sysadmin/disk-encryption-luks>
* <https://manpages.debian.org/unstable/cryptsetup-bin/cryptsetup.8.en.html>

知道别人无法看到你的磁盘上的内容是非常棒的，例如，如果你的笔记本丢失或被盗时。

— [Maximilian Kolb](https://opensource.com/users/kolb)

### #10

对于密码学基础，很难超越 crypto 模块和它的 C API，它是如此简洁明了。

在日常生活中，还有什么比蓝牙提供的即插即用更有价值的吗？

— [Marty Kalin](https://opensource.com/users/mkalindepauledu)

在评论中与我们分享。你的生活中不能没有什么 Linux 内核模块？

---

via: <https://opensource.com/article/21/8/linux-kernel-module>

作者：[Jen Wike Huger](https://opensource.com/users/jen-wike) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #383 Yahoo 再次成为 Yahoo

Summary: 更多：• DRAM 作为缓存对 Facebook 来说也太贵了 • 在 GitHub Copilot 不能使用的 1170 个词

![](/data/attachment/album/202109/03/174503svti6zv0tof7rk82.jpg)

### Yahoo 再次成为 Yahoo

![](/data/attachment/album/202109/03/174513jvvyvxvt7ttv7vvm.jpg)

Yahoo 和 AOL，即以前的 Verizon Media，已经正式被他们的新主人收购，并[改名为 “Yahoo”](https://www.theverge.com/2021/9/2/22653652/yahoo-aol-acquired-apollo-global-management-private-equity)。Verizon 是在 2015 年以 44 亿美元收购 AOL，在 2017 年以 45 亿美元收购雅虎的互联网资产。Verizon 在 5 月宣布将这两家公司出售给私募股权公司 Apollo，据说交易额为 50 亿美元，而这两家公司在其巅峰时期价值数千亿美元。

>
> 一代传奇雅虎，不知道是否能重新站起来。
>
>
>

### DRAM 作为缓存对 Facebook 来说也太贵了

![](/data/attachment/album/202109/03/174543tpjzzhhci8zc4hzj.jpg)

随着传统的动态随机存取存储器（DRAM）缓存变得越来越昂贵，Facebook 这样的公司正在探索非易失性存储器（NVM）驱动器等硬件选择，以增强其缓存系统。Facebook 创建了一个名为 [CacheLib](https://engineering.fb.com/2021/09/02/open-source/cachelib/) 的工具，并在 [GitHub](https://github.com/facebook/CacheLib) 上开源。它还发布了一个用于评估不同生产工作负载的缓存性能的基准工具 [CacheBench](https://github.com/facebookincubator/CacheLib/blob/main/BENCHMARKS.md)。CacheLib 已经在 Facebook 的 70 多个大型系统中得到了应用。

>
> 简单的说，就是内存太贵了，用比较便宜 SSD 补充一下。
>
>
>

### 在 GitHub Copilot 不能使用的 1170 个词

![](/data/attachment/album/202109/03/174554rg08iib308d86mtg.jpg)

据[研究](https://www.theregister.com/2021/09/02/github_copilot_banned_words_cracked/)，Copilot 配备了一个包含 1170 个单词的编码列表，以防止人工智能编程助手用攻击性词汇回应输入或生成输出。Copilot 的代码将用户提供给人工智能模型的文本提示内容和显示前的输出结果与这些词的哈希值进行比较。如果有匹配的内容，它就会进行干预。如果用户的代码包含任何存储的污言秽语，该软件也不会提出建议。

>
> 要防止 AI 瞎咧咧~
>
>
>


安装 elementary OS 6 “Odin” 后要做的 10 件事

>
> 一个精心准备的在安装 elementary OS 6 “Odin” 后要做的事情的列表。
>
>
>

![](/data/attachment/album/202109/04/081345bf9co7ot40szdytg.jpg)

在经过两年多的开发后 [elementary OS 6 “Odin”](https://www.debugpoint.com/2021/08/elementary-os-6/) 于不久前发布，此次版本更新在核心模块、 Pantheon 桌面、原生应用方面带来了一大批新特性。elementary OS 6 “Odin” 是基于 Ubuntu 20.04 LTS 的。

如果你完成了安装，你可能想要尝试通过一些特定的设置来使你的系统更加的个性化。这里描述的选项是通用的，在某些情况下可能对你没有用，但是我们觉得有必要列出一些基本的东西，让你有合适的方式来探索这个漂亮的 elementary OS。

### 安装完 elementary OS 6 “Odin” 后要做的事情

准备步骤：

首先确保你已经连上了互联网，你可以在顶部的通知区域查看可用的网络列表

#### 1、更改主机名

这可能不是你想做的第一件事。但是我不知道为什么在安装过程中没有给出更改主机名的选项。例如，见下图的终端提示， 这个主机名是 elementary OS 的默认硬件配置。在我看来这一点都不好。

![主机名修改之前](/data/attachment/album/202109/04/081435psp2q2wzw2gw2gwz.jpg)

打开终端并运行下列命令以更改主机名：

```
hostnamectl set-hostname your-new-hostname

```

示例：

![修改主机名](/data/attachment/album/202109/04/081436uyaypxz5p95i3y34.jpg)

![主机名修改之后](/data/attachment/album/202109/04/081436xv7fv5o8kkqrfyrr.jpg)

#### 2、升级你的系统

在安装任何 Linux 发行版后，你应该做的第一件事就是确保系统处于最新的软件包和安全更新状态。

你可以通过打开应用中心来检查或者安装更新。

或者打开终端运行下列命令：

```
sudo apt update
sudo apt upgrade

```

#### 3、安装 Pantheon Tweaks

Pantheon Tweaks 是 elementary OS 的必备应用。它提供了一些无法通过系统原生设置程序修改的额外的设置和配置选项，请打开终端并运行以下命令以安装 Pantheon Tweaks。注意：先前版本的 Tweak 工具叫做 elementary Tweaks，从 Odin 版本开始更名为 Pantheon Tweaks。

```
sudo apt install software-properties-common
sudo add-apt-repository -y ppa:philip.scott/pantheon-tweaks
sudo apt install -y pantheon-tweaks

```

安装后打开系统设置，你可以在那里找到 “<ruby> 调整 <rt>  Tweaks </rt></ruby>” 选项。

[这里](https://www.debugpoint.com/2021/07/elementary-tweaks-install/) 提供了更详细的安装指南（如果你需要了解更多信息）。

### 4、配置 Dock

Dock 是整个桌面的中心。老实说，Dock 中默认包含的应用并不常用，因此你可以通过以下步骤配置 Dock 中的项目。

* 移除：右键单击并取消 “<ruby> 在 Dock 中驻留 <rt>  Keep in Dock </rt></ruby>” 选项。
* 添加新的项目：单击顶部的应用程序。然后右键单击你想要放在 Dock 的应用图标。选择 “<ruby> 添加到 Dock <rt>  Add to Dock </rt></ruby>”。

在我看来，你应该至少把文件管理、截图工具、Firefox 、计算器，以及其他的一些应用添加到 Dock。然后移除 Dock 上那些你不需要的应用。

#### 5、更改外观

elementary OS 6 Odin 改进了桌面的整体外观，为整个桌面和应用程序提供了自带的强调色和原生的夜间模式，同时，系统自带了许多漂亮的壁纸。你可以通过 “应用 > 系统设置 > 桌面” 来定制壁纸、外观、面板和多任务视图。

![elementary OS 6 Odin 桌面设置界面](/data/attachment/album/202109/04/081437r22ofczuftz93d2b.jpg)

按照你希望的样子来配置你系统的外观。

你也可以基于日出和日落的时间来设置夜间模式。

#### 6、安装其他的应用

自带的应用中心非常适合这个系统，我发现它是 Linux 桌面最好的应用商店之一。然而，有时候需要安装没有预装的必要应用（大多数是知名的应用）。下面是个新系统推荐安装的软件列表。（说真的，为什么 LibreOffice 没有预装？）

* firefox
* gimp
* gedit
* inkscape
* obs-studio
* libreoffice

#### 7、一些针对笔记本电脑的省电贴士

有许多方法可以配置你的 elementary OS（或者一般的 Linux 桌面），以达到延长电池寿命的目的。记住，电池寿命取决于你的笔记本硬件，以及电池和笔记本的使用年限。所以，遵循下面的一些建议，最大限度的利用你的笔记本电池。

* 安装 [tlp](https://linrunner.de/tlp/)。`tlp` 是一个简单易用的命令行程序，用来帮你在 Linux 上延长电池寿命。你只需要安装它，默认情况下，它会处理好其他的设置。安装命令：

```
sudo add-apt-repository ppa:linrunner/tlp
sudo apt update
sudo apt-get install tlp
sudo tlp start

```
* 关闭蓝牙，默认情况下，蓝牙是开启状态。在需要的时候再启动它。
* 通过下面的命令安装 `thermald`。这个实用程序（实际是个守护进程）控制着你的 CPU 的 P-States 和 T-States 的温度以及 CPU 发热。

```
sudo apt install thermald

```
* 根据你的需要将亮度调到最小。

#### 8、安装磁盘实用程序

在很多情况下，你发现你需要格式化 USB 或者向 USB 中写入一些东西。默认情况下，系统没有安装任何相关的应用。你可以安装以下这些易用的应用。

* gnome-disk-utility
* gparted

#### 9、启用最大化和最小化选项

许多用户喜欢在窗口标题栏左边或者右边使用最大化、最小化的按钮，elementary OS 默认只提供关闭和恢复两个选项。这没什么问题，因为这就是它的设计理念。然而你可以通过使用 Pantheon Tweaks 来开启最大化和最小化按钮，具体的方式是：“调整 > 外观 > 窗口控制”。

![在 elementary OS 中启动最大化和最小化设置](/data/attachment/album/202109/04/081437z3y7prprkgkgrjoy.png)

#### 10、在 Odin 中学习新的多点触控手势

如果你是笔记本用户，并且使用 elementary OS “Odin”，那么你一定要看看这些超酷的新触控手势。三根手指向上滑动，就会平滑的打开多任务视图，展示打开的应用程序和工作空间。用三根手指向左或向右滑动，就能在动态工作空间之间流畅的切换，使任务之间的切换更快。

用两根手指也可以在原生应用中实现类似的功能。

### 结束语

我希望这篇安装 elementary OS 6 “Odin” 后要做的 10 件事能帮助到你，让你可以上手使用 elementary OS 6 “Odin”，尽管这些事情完全是用户的偏好，因此这些事情有可能适合你也有可能不适用于你，但总的来说，这些都是一般用户喜欢的预期调整。

如果你觉得有更多的东西应该添加到列表中，请在下面的评论中告诉我。

---

via: <https://www.debugpoint.com/2021/08/10-things-to-do-after-install-elementary-os-6/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[anine09](https://github.com/anine09) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Zulip：一个不错的开源的 Slack 替代品

>
> Zulip 是一个开源的协作平台，它把自己定位为一个更好的 Slack 替代品。让我们来了解一下。
>
>
>

![](/data/attachment/album/202109/04/083746lbheeynx13jmn3xn.jpg)

当涉及到你的工作时，消息和协作平台有很大的不同。

虽然有几个选择，但 Slack 是许多组织使用的一个流行选择。但是，可以自托管的 Slack 的开源替代方案如何呢？

Zulip 就是这样一个软件。

### Zulip：开源的协作消息应用

![](/data/attachment/album/202109/04/083751q5f4nc4o5c33cwnk.png)

如果你想多了解，我必须提到还有更多的 [Slack 开源替代品](https://itsfoss.com/open-source-slack-alternative/)。

但在这里，我重点介绍 Zulip。

Zulip 是一个自由而开源的消息应用，有付费托管选项和自托管的能力。

它旨在提供与 Slack 类似的体验，同时努力帮助你利用话题提高对话的有效性。

与 Slack 中的频道相比，Zulip 聊天添加了话题（类似标签），以快速过滤与你有关的对话。

### Zulip 的特点

![](/data/attachment/album/202109/04/083751flh8l5j818j8gby2.png)

你可以通过 Zulip 获得大部分的基本功能。这里列出主要的亮点，你可以发现：

* 支持 Markdown
* 频道的主题
* 支持拖放文件
* 代码块
* 集成 GitHub 来跟踪问题
* 支持电子邮件通知
* 自托管选项
* 信息编辑
* 集成 GIPHY
* 用 Zoom、Jitsi 或 BigBlueButton 进行视频通话

除了上述功能外，你可以预期得到你通常在 Slack 和其他方面得到的基本选项。

此外，如果你愿意，你还可以将它与 Matrix 和 IRC 整合。

![](/data/attachment/album/202109/04/083751yr3yltmwl6ttd8lr.png)

在我简短的测试使用中，其用户界面对于有效的沟通来说是足够好的。然而，我没能找到任何黑暗模式或改变主题的能力。

它看起来比 Slack 更简单直白，这样可以改善用户体验方面的问题。

### 在 Linux 中安装 Zulip

Zulip 在其官方网站上以 AppImage 文件的形式提供。如果你需要帮助，可以参考我们关于 [在 Linux 中使用 AppImage](https://itsfoss.com/use-appimage-linux/) 的指南。

它也有一个 Snap 包。所以，你可以在任何一个 Linux 发行版上使用它们中的任何一个。

你也可以使用 APT 通过终端为基于 Ubuntu/Debian 的发行版安装它。如果你想这样做，请看它的 [官方说明](https://zulip.com/help/desktop-app-install-guide)。

Zulip 可用于 Windows、Mac 和 Linux。你也应该发现它可用于 Android 和 iOS 手机。

* [Zulip](https://zulip.com/)

你可以在网络、桌面和智能手机上使用 Zulip，所以可以把它当做 Slack 的合适替代品。

你试过了吗？你用什么消息平台来进行工作协作？欢迎在评论中分享你的想法。

---

via: <https://itsfoss.com/zulip/>

作者：[Ankush Das](https://itsfoss.com/author/ankush/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #384 Firefox 和 Edge 正争夺浏览器市场第三名

Summary: 更多：• 美国法官裁定只有人类而非人工智能机器才能获得美国专利 • 苹果推迟了在 iOS 15 中推出 CSAM 检测的计划

正在体验Edge，似乎跟chrome一个样的

edge捆绑推送，装插件又不用翻墙，没得比。公司平台firefox版本不跟进还是上古版本，firefox没救了。不过家里用chromium的浏览器是默认，手动基乎是开firefox。为啥大多数人只接受一个浏览器？大部分人都限制自己一类工具只选其中一款，不像我这还有brave和minibrowser

我是Firefox老用户。2003年就在用它的前身。

我现在主力还是用edge，毕竟chrome的Dev Tool用得更习惯。

Firefox我也有用，主要还是浏览网页。

Firefox启动速度还是有点慢。

![](/data/attachment/album/202109/04/094519t826t3wt2621428w.jpg)

### Firefox 和 Edge 正争夺浏览器市场第三名

![](/data/attachment/album/202109/04/094529di39i498icj3kwik.jpg)

多年以来，Chrome 一直是全球最受欢迎的浏览器，而且地位日益巩固。而 Safari 也坐稳了第二名的位置。最近的一次的 [Statcounter 的报告](https://gs.statcounter.com/browser-market-share)显示，Chrome 以 64.92% 份额稳居榜首；Safari 以 18.77% 的份额占据第二名。而 Edge 为 3.56%，Firefox 3.54%，两者相差无几，正在争夺第三名。自从 Edge 转向基于 Chromium 的版本以来，它一直在上升，而 Firefox 浏览器近年来的用户数量却在急剧下降。不但如此，排在其后的三星浏览器 Samsung Internet 份额为 3.06%，相差也不多。

>
> 我们需要喊出“拯救 Firefox”的口号了么？
>
>
>

### 美国法官裁定只有人类而非人工智能机器才能获得美国专利

![](/data/attachment/album/202109/04/094550dizniig4h7i6rldr.jpg)

由萨里大学法律教授 Ryan Abbott 管理的人工发明者项目发起了一项全球倡议，以使计算机被列为发明者。美国弗吉尼亚州的美国地区法官[裁定](https://www.bloomberg.com/news/articles/2021-09-03/only-humans-not-ai-machines-can-get-a-u-s-patent-judge-rules)，美国联邦法律要求“个人”在专利申请中宣誓他或她是发明者，而字典和法律对“个人”的定义都是自然人。南非和澳大利亚的裁决支持了他的论点，尽管澳大利亚专利局正在对该国的裁决提出上诉。

>
> 我觉得，早晚有一天，人工智能会拥有更多乃至于平等的人类权利。
>
>
>

### 苹果推迟了在 iOS 15 中推出 CSAM 检测的计划

![](/data/attachment/album/202109/04/094603eogc3cicmrzrziiw.jpg)

对苹果新推出的 CSAM 的反馈在很大程度上是负面的。电子前沿基金会本周表示，它已经积累了超过 25000 个消费者的签名。除此之外，包括美国公民自由联盟在内的近 100 个政策和权利团体也呼吁苹果放弃推出该技术的计划。在周五上午的一份声明中，[苹果公司说](https://techcrunch.com/2021/09/03/apple-csam-detection-delayed/)，“根据客户、宣传团体、研究人员和其他方面的反馈，我们决定在未来几个月内花更多时间收集意见并进行改进，然后再发布这些极其重要的儿童安全功能。”

>
> 可能初衷是好的，但是技术的成熟度和对滥用的监督，可能更重要。
>
>
>


通过 ftrace 来分析 Linux 内核

Summary: 通过 ftrace 来了解 Linux 内核内部工作方式是一个好方法。

通过 ftrace 来了解 Linux 内核内部工作方式是一个好方法。

>
> 通过 `ftrace` 来了解 Linux 内核内部工作方式是一个好方法。
>
>
>

![](/data/attachment/album/202109/05/151954cb5z5rg7zqa9lbzu.jpg "Linux keys on the keyboard for a desktop computer")

操作系统的内核是最难以理解的软件之一。自从你的系统启动后，它会一直在后台运行。尽管每个用户都不与内核直接交互，但他们在内核的帮助下完成自己的计算任务。与内核的交互发生在调用系统调用或者用户日常使用的各种库或应用间接调用了系统调用。

在之前的文章里我介绍了如何使用 [strace](/article-11545-1.html) 来追踪系统调用。然而，使用 `strace` 时你的视野是有限的。它允许你查看特定参数的系统调用。并在工作完成后，看到其返回值或状态，以表明是成功还是失败。但是你无法知道内核在这段时间内发生了什么。除了系统调用外，还有很多其他活动内核中发生，而你却视而不见。

### ftrace 介绍

本文的旨在通过使用一个名为 `ftrace` 的机制来阐明追踪内核函数的一些情况。它使得任何 Linux 用户可以轻松地追踪内核，并且了解更多关于 Linux 内核内部如何工作。

`ftrace` 默认产生的输出往往是巨大的，因为内核总是忙碌的。为了节省空间，很多情况下我会通过截断来给出尽量小的输出。

我使用 Fedora 来演示下面的例子，但是它们应该在其他最新的 Linux 发行版上同样可以运行。

### 启用 ftrace

`ftrace` 现在已经是内核中的一部分了，你不再需要事先安装它了。也就是说，如果你在使用最近的 Linux 系统，那么 `ftrace` 是已经启用了的。为了验证 `ftrace` 是否可用，运行 `mount` 命令并查找 `tracefs`。如果你看到类似下面的输出，表示 `ftrace` 已经启用，你可以轻松地尝试本文中下面的例子。下面有些命令需要在 root 用户下使用（用 `sudo` 执行是不够的）。

```
# mount | grep tracefs
none on /sys/kernel/tracing type tracefs (rw,relatime,seclabel)

```

要想使用 `ftrace`，你首先需要进入上面 `mount` 命令中找到的特定目录中，在那个目录下运行文章中的其他命令。

```
# cd /sys/kernel/tracing

```

### 一般的工作流程

首先，你需要理解捕捉踪迹和获取输出的一般流程。如果你直接运行 `ftrace`，不会运行任何特定的 `ftrace` 命令。相反的，基本操作是通过标准 Linux 命令来写入或读取一些文件。

一般的步骤如下：

1. 通过写入一些特定文件来启用/结束追踪
2. 通过写入一些特定文件来设置/取消追踪时的过滤规则
3. 从文件中读取基于第 1 和 2 步的追踪输出
4. 从文件中清除早期输出或缓冲区
5. 缩小到你的特定用例（你要追踪的内核函数），重复 1、2、3、4 步

### 可用的追踪器类型

有多种不同的追踪器可供使用。之前提到，在运行任何命令前，你需要进入一个特定的目录下，因为需要的文件在这些目录下。我在我的例子中使用了相对路径（而不是绝对路径）。

你可以查看 `available_tracers` 文件内容来查看所有可用的追踪器类型。你可以看下面列出了几个。不需要担心这些：

```
$ pwd
/sys/kernel/tracing

$ sudo cat available_tracers
hwlat blk mmiotrace function_graph wakeup_dl wakeup_rt wakeup function nop

```

在所有输出的追踪器中，我会聚焦于下面三个特殊的：启用追踪的 `function` 和 `function_graph`，以及停止追踪的 `nop`。

### 确认当前的追踪器

通常情况默认的追踪器设定为 `nop`。即在特殊文件中 `current_tracer` 中的 “无操作”，这意味着追踪目前是关闭的：

```
$ pwd
/sys/kernel/tracing

$ sudo cat current_tracer
nop

```

### 查看追踪输出

在启用任何追踪功能之前，请你看一下保存追踪输出的文件。你可以用 [cat](https://opensource.com/article/19/2/getting-started-cat-command) 命令查看名为 `trace` 的文件的内容：

```
# cat trace

# tracer: nop
#
# entries-in-buffer/entries-written: 0/0   #P:8
#
#                                _-----=> irqs-off
#                               / _----=> need-resched
#                              | / _---=> hardirq/softirq
#                              || / _--=> preempt-depth
#                              ||| /     delay
#           TASK-PID     CPU#  ||||   TIMESTAMP  FUNCTION
#              | |         |   ||||      |         |

```

### 启用 function 追踪器

你可以通过向 `current_tracer` 文件写入 `function` 来启用第一个追踪器 `function`（文件原本内容为 `nop`，意味着追踪是关闭的）。把这个操作看成是启用追踪的一种方式：

```
$ pwd
/sys/kernel/tracing

$ sudo cat current_tracer
nop
$ echo function > current_tracer
$
$ cat current_tracer
function

```

### 查看 function 追踪器的更新追踪输出

现在你已启用追踪，是时候查看输出了。如果你查看 `trace` 文件内容，你将会看到许多被连续写入的内容。我通过管道只展示了文件内容的前 20 行。根据左边输出的标题，你可以看到在某个 CPU 上运行的任务和进程 ID。根据右边输出的内容，你可以看到具体的内核函数和其父函数。中间显示了时间戳信息：

```
# sudo cat trace | head -20

# tracer: function
#
# entries-in-buffer/entries-written: 409936/4276216   #P:8
#
#                                _-----=> irqs-off
#                               / _----=> need-resched
#                              | / _---=> hardirq/softirq
#                              || / _--=> preempt-depth
#                              ||| /     delay
#           TASK-PID     CPU#  ||||   TIMESTAMP  FUNCTION
#              | |         |   ||||      |         |
          <idle>-0       [000] d...  2088.841739: tsc_verify_tsc_adjust <-arch_cpu_idle_enter
          <idle>-0       [000] d...  2088.841739: local_touch_nmi <-do_idle
          <idle>-0       [000] d...  2088.841740: rcu_nocb_flush_deferred_wakeup <-do_idle
          <idle>-0       [000] d...  2088.841740: tick_check_broadcast_expired <-do_idle
          <idle>-0       [000] d...  2088.841740: cpuidle_get_cpu_driver <-do_idle
          <idle>-0       [000] d...  2088.841740: cpuidle_not_available <-do_idle
          <idle>-0       [000] d...  2088.841741: cpuidle_select <-do_idle
          <idle>-0       [000] d...  2088.841741: menu_select <-do_idle
          <idle>-0       [000] d...  2088.841741: cpuidle_governor_latency_req <-menu_select

```

请记住当追踪打开后，这意味着追踪结果会被一直连续写入直至你关闭追踪。

### 关闭追踪

关闭追踪是简单的。你只需要在 `current_tracer` 文件中用 `nop` 替换 `function` 追踪器即可：

```
$ sudo cat current_tracer
function

$ sudo echo nop > current_tracer

$ sudo cat current_tracer
nop

```

### 启用 function\_graph 追踪器

现在尝试第二个名为 `function_graph` 的追踪器。你可以使用和上面相同的步骤：在 `current_tracer` 文件中写入 `function_graph`：

```
$ sudo echo function_graph > current_tracer

$ sudo cat current_tracer
function_graph

```

### function\_tracer 追踪器的追踪输出

注意到目前 `trace` 文件的输出格式已经发生变化。现在，你可以看到 CPU ID 和内核函数的执行时长。接下来，一个花括号表示一个函数的开始，以及它内部调用了哪些其他函数：

```
# cat trace | head -20

# tracer: function_graph
#
# CPU  DURATION                  FUNCTION CALLS
# |     |   |                     |   |   |   |
 6)               |              n_tty_write() {
 6)               |                down_read() {
 6)               |                  __cond_resched() {
 6)   0.341 us    |                    rcu_all_qs();
 6)   1.057 us    |                  }
 6)   1.807 us    |                }
 6)   0.402 us    |                process_echoes();
 6)               |                add_wait_queue() {
 6)   0.391 us    |                  _raw_spin_lock_irqsave();
 6)   0.359 us    |                  _raw_spin_unlock_irqrestore();
 6)   1.757 us    |                }
 6)   0.350 us    |                tty_hung_up_p();
 6)               |                mutex_lock() {
 6)               |                  __cond_resched() {
 6)   0.404 us    |                    rcu_all_qs();
 6)   1.067 us    |                  }

```

### 启用追踪的设置来增加追踪的深度

你可以使用下面的步骤来调整追踪器以看到更深层次的函数调用。完成之后，你可以查看 `trace` 文件的内容并发现输出变得更加详细了。为了文章的可读性，这个例子的输出被省略了：

```
# cat max_graph_depth
0

# echo 1 > max_graph_depth ## or:
# echo 2 > max_graph_depth

# sudo cat trace

```

### 查找要追踪的函数

上面的步骤足以让你开始追踪。但是它产生的输出内容是巨大的，当你想试图找到自己感兴趣的内容时，往往会很困难。通常你更希望能够只追踪特定的函数，而忽略其他函数。但如果你不知道它们确切的名称，你怎么知道要追踪哪些进程？有一个文件可以帮助你解决这个问题 —— `available_filter_functions` 文件提供了一个可供追踪的函数列表：

```
$ sudo wc -l available_filter_functions
63165 available_filter_functions

```

### 查找一般的内核函数

现在试着搜索一个你所知道的简单内核函数。用户空间由 `malloc` 函数用来分配内存，而内核由 `kmalloc` 函数，它提供类似的功能。下面是所有与 `kmalloc` 相关的函数：

```
$ sudo grep kmalloc available_filter_functions
debug_kmalloc
mempool_kmalloc
kmalloc_slab
kmalloc_order
kmalloc_order_trace
kmalloc_fix_flags
kmalloc_large_node
__kmalloc
__kmalloc_track_caller
__kmalloc_node
__kmalloc_node_track_caller
[...]

```

### 查找内核模块或者驱动相关函数

在 `available_filter_functions` 文件的输出中，你可以看到一些以括号内文字结尾的行，例如下面的例子中的 `[kvm_intel]`。这些函数与当前加载的内核模块 `kvm_intel` 有关。你可以运行 `lsmod` 命令来验证：

```
$ sudo grep kvm available_filter_functions | tail
__pi_post_block [kvm_intel]
vmx_vcpu_pi_load [kvm_intel]
vmx_vcpu_pi_put [kvm_intel]
pi_pre_block [kvm_intel]
pi_post_block [kvm_intel]
pi_wakeup_handler [kvm_intel]
pi_has_pending_interrupt [kvm_intel]
pi_update_irte [kvm_intel]
vmx_dump_dtsel [kvm_intel]
vmx_dump_sel [kvm_intel]

$ lsmod  | grep -i kvm
kvm_intel             335872  0
kvm                   987136  1 kvm_intel
irqbypass              16384  1 kvm

```

### 仅追踪特定的函数

为了实现对特定函数或模式的追踪，你可以利用 `set_ftrace_filter` 文件来指定你要追踪上述输出中的哪些函数。这个文件也接受 `*` 模式，它可以扩展到包括具有给定模式的其他函数。作为一个例子，我在我的机器上使用 ext4 文件系统。我可以用下面的命令指定 ext4 的特定内核函数来追踪：

```
# mount | grep home
/dev/mapper/fedora-home on /home type ext4 (rw,relatime,seclabel)

# pwd
/sys/kernel/tracing

# cat set_ftrace_filter

#### all functions enabled ####
$
$ echo ext4_* > set_ftrace_filter
$
$ cat set_ftrace_filter
ext4_has_free_clusters
ext4_validate_block_bitmap
ext4_get_group_number
ext4_get_group_no_and_offset
ext4_get_group_desc
[...]

```

现在当你可以看到追踪输出时，你只能看到与内核函数有关的 `ext4` 函数，而你之前已经为其设置了一个过滤器。所有其他的输出都被忽略了：

```
# cat trace |head -20

## tracer: function
#
# entries-in-buffer/entries-written: 3871/3871   #P:8
#
#                                _-----=> irqs-off
#                               / _----=> need-resched
#                              | / _---=> hardirq/softirq
#                              || / _--=> preempt-depth
#                              ||| /     delay
#           TASK-PID     CPU#  ||||   TIMESTAMP  FUNCTION
#              | |         |   ||||      |         |
           cupsd-1066    [004] ....  3308.989545: ext4_file_getattr <-vfs_fstat
           cupsd-1066    [004] ....  3308.989547: ext4_getattr <-ext4_file_getattr
           cupsd-1066    [004] ....  3308.989552: ext4_file_getattr <-vfs_fstat
           cupsd-1066    [004] ....  3308.989553: ext4_getattr <-ext4_file_getattr
           cupsd-1066    [004] ....  3308.990097: ext4_file_open <-do_dentry_open
           cupsd-1066    [004] ....  3308.990111: ext4_file_getattr <-vfs_fstat
           cupsd-1066    [004] ....  3308.990111: ext4_getattr <-ext4_file_getattr
           cupsd-1066    [004] ....  3308.990122: ext4_llseek <-ksys_lseek
           cupsd-1066    [004] ....  3308.990130: ext4_file_read_iter <-new_sync_read

```

### 排除要被追踪的函数

你并不总是知道你想追踪什么，但是，你肯定知道你不想追踪什么。因此，有一个 `set_ftrace_notrace` —— 请注意其中的 “no”。你可以在这个文件中写下你想要的模式，并启用追踪。这样除了所提到的模式外，任何其他东西都会被追踪到。这通常有助于删除那些使我们的输出变得混乱的普通功能：

```
$ sudo cat set_ftrace_notrace
#### no functions disabled ####

```

### 具有目标性的追踪

到目前为止，你一直在追踪内核中发生的一切。但是，它无法帮助你追踪与某个特定命令有关的事件。为了达到这个目的，你可以按需打开和关闭跟踪，并且在它们之间，运行我们选择的命令，这样你就不会在跟踪输出中得到额外的输出。你可以通过向 `tracing_on` 写入 `1` 来启用跟踪，写 `0` 来关闭跟踪。

```
# cat tracing_on
0

# echo 1 > tracing_on

# cat tracing_on
1

### Run some specific command that we wish to trace here ###

# echo 0 > tracing_on

# cat tracing_on
0

```

### 追踪特定的 PID

如果你想追踪与正在运行的特定进程有关的活动，你可以将该 PID 写入一个名为 `set_ftrace_pid` 的文件，然后启用追踪。这样一来，追踪就只限于这个 PID，这在某些情况下是非常有帮助的。

```
$ sudo echo $PID > set_ftrace_pid

```

### 总结

`ftrace` 是一个了解 Linux 内核内部工作的很好方式。通过一些练习，你可以学会对 `ftrace` 进行调整以缩小搜索范围。要想更详细地了解 `ftrace` 和它的高级用法，请看 `ftrace` 的核心作者 Steven Rostedt 写的这些优秀文章。

* [调试 Linux 内核，第一部分](https://lwn.net/Articles/365835/)
* [调试 Linux 内核，第二部分](https://lwn.net/Articles/366796/)
* [调试 Linux 内核，第三部分](https://lwn.net/Articles/370423/)

---

via: <https://opensource.com/article/21/7/linux-kernel-ftrace>

作者：[Gaurav Kamathe](https://opensource.com/users/gkamathe) 选题：[lujun9972](https://github.com/lujun9972) 译者：[萌新阿岩](https://github.com/mengxinayan) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何使用 youtube-dl 只下载音频

Summary: 其实很简单。让我告诉你步骤。

其实很简单。让我告诉你步骤。

![](/data/attachment/album/202109/05/153110dkamc1kv0173ggc3.jpg)

[youtube-dl](https://github.com/ytdl-org/youtube-dl) 是一个多功能的命令行工具，用于从 YouTube 和许多其他网站下载视频。我用它来做我自己的 YouTube 视频的备份。

默认情况下，你会 [使用 youtube-dl 下载视频](https://itsfoss.com/download-youtube-linux/)。用 youtube-dl 只提取音频怎么样？ 其实很简单。让我告诉你步骤。

>
> **注意**
>
>
> 从网站下载视频可能违反他们的政策。这取决于你是否选择下载视频或音频。
>
>
>

### 使用 youtube-dl 只下载音频

请确保你已经在你的 Linux 发行版上安装了 `youtube-dl`。

```
sudo snap install youtube-dl

```

如果你只想从 YouTube 视频中下载音频，你可以使用 `youtube-dl` 的 `-x` 选项。这个提取音频的选项将视频文件转换为纯音频文件。

```
youtube-dl -x video_URL

```

该文件被保存在你运行 `youtube-dl` 命令的同一目录下。

这是我下载 Zorin OS 16 评论视频的画外音的示例：

```
youtube-dl -x https://www.youtube.com/watch?v=m_PmLG7HqbQ
[youtube] m_PmLG7HqbQ: Downloading webpage
[download] Destination: Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a
[download] 100% of 4.26MiB in 00:03
[ffmpeg] Correcting container in "Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a"
[ffmpeg] Post-process file Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a exists, skipping

```

你注意到音频格式了吗？它是 .m4a 格式。你可以把音频格式指定为你所选择的格式。

比如你想提取 MP3 格式的音频。你可以像这样使用它：

```
youtube-dl -x --audio-format mp3 video_URL

```

下面是我之前展示的同一个例子。你可以看到它 [使用 ffmpeg 转换](https://itsfoss.com/ffmpeg/) m4a 文件为 mp3：

```
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=m_PmLG7HqbQ
[youtube] m_PmLG7HqbQ: Downloading webpage
[download] Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a has already been downloaded
[download] 100% of 4.26MiB
[ffmpeg] Correcting container in "Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a"
[ffmpeg] Destination: Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.mp3
Deleting original file Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a (pass -k to keep)

```

### 以 MP3 格式下载整个 YouTube 播放列表

是的，你完全可以这样做。最主要的是要在这里得到播放列表的 URL。它通常是以下格式：

```
https://www.youtube.com/playlist?list=XXXXXXXXXXXXXXXXXXX

```

要获得一个播放列表的 URL，当播放列表显示在右边栏时，点击其名称。

![Click on the playlist title](/data/attachment/album/202109/05/153203ey4rms8zss5r4vzz.png)

它将带你到播放列表页面，你可以在这里复制 URL。

![Grab the playlist URL](/data/attachment/album/202109/05/153204rcqliukzjiy2x2cz.png)

现在你有了播放列表的 URL，你可以用它来下载 MP3 格式的音频文件，方法如下：

```
youtube-dl --extract-audio --audio-format mp3 -o "%(title)s.%(ext)s" playlist_URL

```

那个看起来很可怕的 `-o "%(title)s.%(ext)s"` 指定了输出文件（选项 `-o`），并指示它使用视频的标题和扩展名（本例为 mp3）来命名音频文件。

![](/data/attachment/album/202109/05/153206gkkraao6xqknqxxf.png)

我希望你觉得这个技巧对你有帮助。享受音频文件吧。

---

via: <https://itsfoss.com/youtube-dl-audio-only/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #385 Google 位居全球互联网访问量第一，有七家中国企业闯入前十

Summary: 更多：• Linux 内核的 CD-ROM 驱动代码有了新的维护者 • NTFS3 内核驱动将进入 Linux 5.15 内核

ntfs3从去年等到今年了，希望合并以后其他开源软件也能支持ntfs3，比如GParted

NTFS不是微软是吗？为什么是Paragon做驱动？

![](/data/attachment/album/202109/05/170910lr8dn6b551zbztb5.jpg)

### Google 位居全球互联网访问量第一，有七家中国企业闯入前十

![](/data/attachment/album/202109/05/171059c8yqi868zj8z7cfs.png)

最新的 Data Reportal 的 [7 月研究表明](https://datareportal.com/reports/digital-2021-global-overview-report)，据 Alexa 的数据，Google 成为全球访问量最大的网站，平均全球每个人每天都将花费 17 分钟访问 Google 网站。在全球网站访问量的排行榜中，国内共有 7 个网站闯入了前十名：天猫、QQ、百度、搜狐、淘宝、360 和京东。而 Amazon 位列 11 名，比国内这几家电商网站访问量要低。有一点需要注意的是，中国的网站的几乎所有流量都来自国内。这一数据清楚地表明了中国联网人口的增长速度有多快。

>
> 看起来我们的内循环也相当规模庞大。
>
>
>

### Linux 内核的 CD-ROM 驱动代码有了新的维护者

![](/data/attachment/album/202109/05/170949hqrbaatwbmwvsmzf.jpg)

在维护了 20 多年的 Linux CD-ROM 驱动代码之后，Jens Axboe 宣布他正在寻找一个人接管 CD-ROM 代码。作为早期参与 Linux 内核的开发者，除了 CD-ROM 驱动外，他还担任多个 Linux 子系统的维护者。不过，他现在没有太多的时间投入到这个工作中。在宣布该消息后，他推荐了另外一位内核维护者 Phillip Potter 来[接手](https://www.phoronix.com/scan.php?page=news_item&px=Linux-CD-ROM-New-Developer)该工作，这也是唯一位宣布有兴趣接管的人。

>
> 这种陈旧的驱动不断地耗费着内核维护者们的精力，但是似乎丢下不管也不合适。
>
>
>

### NTFS3 内核驱动将进入 Linux 5.15 内核

![](/data/attachment/album/202109/05/171003dvl39e3fzfg1p1gk.jpg)

去年，Paragon 软件公司宣布他们正在寻求将他们的 NTFS3 内核驱动程序主线化，此前，该驱动程序只用于商业。在过去的一年里，NTFS3 驱动经历了多轮审查，以提高代码质量。该驱动程序在许多方面都胜出了 Linux 内核之前的 NTFS 驱动，但是一直迟迟没有提出合并进主线，以至于 Linus Torvalds 主动发信呼吁提交到上游。周四晚上，Linus 再次在内核邮件列表上[发帖询问](http://lkml.iu.edu/hypermail/linux/kernel/2109.0/02428.html) NTFS3 的拉取请求是否会在这个周期提交。[作为回应](https://www.phoronix.com/scan.php?page=news_item&px=NTFS3-For-Linux-5.15)，Paragon 公司提交了该拉取请求。

>
> 很高兴一个商业驱动程序能进入到开源世界，这说明了企业对于开源模式的一种新的认识。
>
>
>


满足日常需求的应用（二）：办公套件

Summary: 本文将介绍一些你可以在 Fedora Linux 上使用的开源办公套件。

onlyoffice越来越好，多迭代几年就可以代替msoffice和libreoffice了

来自黑龙江哈尔滨的 Chrome Mobile 78.0|Android 10 用户

本文将介绍一些你可以在 Fedora Linux 上使用的开源办公套件。

![](/data/attachment/album/202109/05/232038fzvbi7cp2luiilzq.jpg)

今天，几乎每个家庭都有一台台式电脑或笔记本电脑。这是因为计算机已经成为一个非常重要的要求。此外，不管是为了工作还是学习，许多人需要创建电子版的文档和演示文稿。因此，办公套件是几乎所有计算机上的必备应用程序。本文将介绍一些你可以在 Fedora Linux 上使用的开源办公套件。这些软件你可能需要安装。如果你不熟悉如何在 Fedora Linux 中添加软件包，请参阅我之前的文章 [安装 Fedora 34 工作站后要做的事情](https://fedoramagazine.org/things-to-do-after-installing-fedora-34-workstation/)。下面是满足日常需求的办公套件类的应用程序列表。

### LibreOffice

LibreOffice 是 GNU/Linux 用户中最流行的办公套件。它的用户界面和用户体验类似于微软 Office。这使得 LibreOffice 对于那些刚刚从微软 Office 迁移过来的人来说很容易学习。LibreOffice 有完整的功能，可以满足你在文档和演示方面的工作需要。它由六个应用程序组成：Writer、Calc、Impress、Draw、Math 和 Base。

第一个应用程序是 Writer，用于创建各种类型的文档，如信件、传真、议程、会议记录等。它是一个全功能的文字处理和桌面出版工具。第二个应用程序是 Calc，它是一个电子表格程序，非常适合以表格形式呈现数据和记录数据。Calc 可以创建简单的表格或进行专业的数据分析。第三个应用程序是 Impress，它是一个易于使用的演示应用程序。你可以很容易地选择你在演示幻灯片中想要的功能，如文本、图像、表格、图表等。

![LibreOffice Writer](/data/attachment/album/202109/05/232038aa2i22r1l2qzv12r.png)

![LibreOffice Calc](/data/attachment/album/202109/05/232039luwcnwquneenngqn.png)

![LibreOffice Impress](/data/attachment/album/202109/05/232039tnoawb1bl48cbbbc.png)

前面提到的三个 LibreOffice 应用程序是创建文档和演示文稿中最常用的应用程序。然而，LibreOffice 提供的其他三个应用程序也非常有用。第一个是 Draw，它可以用来创建从简单到复杂的图纸和图表。下一个应用程序是 Math，它可以帮助我们做出完美格式的数学和科学公式。最后一个是 Base，这是一个用于处理数据库的应用程序。

![LibreOffice Draw](/data/attachment/album/202109/05/232040fujwcca606cc669a.png)

![LibreOffice Math](/data/attachment/album/202109/05/232040z9b9debef4s0baqf.png)

![LibreOffice Base](/data/attachment/album/202109/05/232041g99xxfbx94b9bhbg.png)

更多信息请见此链接：<https://www.libreoffice.org/>

### ONLYOFFICE

ONLYOFFICE 是一款与微软 Office 高度兼容的办公套件应用程序。因此，我们与使用微软 Office 的同事协作时就不必担心了，因为它可以读取各种文件格式，如 docx、xlsx 和 pptx。

ONLYOFFICE 提供了三种具有简洁和现代外观的应用程序。我们可以很容易地找到我们需要的功能和工具。虽然功能没有 LibreOffice 那么齐全，但也足以帮助我们创建良好的文档和演示文稿。

第一个应用程序是文档编辑器，它的功能与 LibreOffice 的 Writer 相同。它具有文字处理器所需的所有基本功能，如管理字体和样式、格式化文本、调整行距和段距、插入页眉和页脚、自定义页面布局和设置页边距。第二个应用程序是电子表格编辑器，它是一个用于处理数据并将其创建为表格格式的文件的应用程序。它是一个具有与 Calc 相同功能的应用程序。最后一个是演示文稿编辑器，它是一个演示文稿应用程序，其功能类似于 Impress。

不幸的是，ONLYOFFICE 在官方的 Fedora Linux 软件库中并没有提供。但是你仍然可以使用 Flatpak 或 Appimages 在 Fedora Linux 上安装它。

![ONLYOFFICE Documents Editor](/data/attachment/album/202109/05/232041dpmsui2pmlhcuasu.png)

![ONLYOFFICE Spreadsheets Editor](/data/attachment/album/202109/05/232042eyyvgkfsk6xgzzke.png)

![ONLYOFFICE Presentations Editor](/data/attachment/album/202109/05/232042n86fhefgj8b666ef.png)

更多信息请见此链接：<https://www.onlyoffice.com/desktop.aspx>

### Calligra

Calligra 是一个由 KDE 创建的办公套件。因此，这个应用程序实际上更适合于 KDE Plasma 桌面环境的用户。但它仍然可以在其他桌面环境中良好运行，例如使用 GNOME 的 Fedora 工作站。

Calligra 提供的几个应用程序的外观与 LibreOffice 或 ONLYOFFICE 略有不同。对于那些习惯于主流办公套件应用程序的人来说，可能需要一些适应。然而，Calligra 仍然是一个可靠的办公套件，足以支持我们的日常需求。

第一个应用程序是 Words，它是一个具有桌面出版功能的直观的文字处理器。它具有帮助我们进行文档创作的全面功能。第二个应用程序是 Sheets，它具有与 Calc 和电子表格编辑器相同的功能，是一个功能齐全的电子表格应用程序。第三个应用程序是 Stage，它可以帮助我们制作演示幻灯片。

![Calligra Words](/data/attachment/album/202109/05/232042g1gbz6s2mei6egjs.png)

![Calligra Sheets](/data/attachment/album/202109/05/232043o6btexa6t1l300y6.png)

![Calligra Stage](/data/attachment/album/202109/05/232043wz925o5vl523zit4.png)

这三个 Calligra 应用程序是创建文档和演示文稿最常用的应用程序。另外还有三个应用程序也非常有用。第一个是 Karbon，它可以用来创建从简单到复杂的图纸和图表。下一个应用程序是 Plan，这是一个项目管理应用程序，可以帮助管理具有多种资源的中等规模的项目。最后一个是 KEXI，它是一个可视化数据库应用程序的创建器。

![Calligra Karbon](/data/attachment/album/202109/05/232044uqp4v24x7uw17uv7.png)

![Calligra Plan](/data/attachment/album/202109/05/232044k7juiv3a32iqhuv1.png)

![Calligra Kexi](/data/attachment/album/202109/05/232045zk0mwt78mfkzmwwl.png)

更多信息请见此链接：<https://calligra.org/>

### 总结

这篇文章介绍了 3 个可以在 Fedora Linux 上使用的办公套件，以满足你的日常需要。如果你想拥有具有一套完整功能的办公套件，那么 LibreOffice 可能是正确的选择。如果想与微软 Office 有良好的兼容性，那么你可以选择 ONLYOFFICE。然而，如果你想要一个不同的用户界面和创建文档和演示文稿的体验，你可以试试 Calligra。希望这篇文章能帮助你选择合适的办公套件。如果你有使用这些应用程序的经验，请在评论中分享你的经验。

---

via: <https://fedoramagazine.org/apps-for-daily-needs-part-2-office-suites/>

作者：[Arman Arisman](https://fedoramagazine.org/author/armanwu/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


使用 ncurses 在你的 Linux 屏幕上定位文本

>
> 使用 ncurses 在 Linux 屏幕上的特定位置放置文本，可以带来更友好的用户界面体验。
>
>
>

![](/data/attachment/album/202109/06/085908qrdrrv5dru6pcucr.jpg "Person using a laptop")

大多数的 Linux 实用程序仅仅只在屏幕的底部滚动文本。如果你想在屏幕中放置你的文本，例如一个游戏或者一个数据展示，你可以试试 ncurses。

curses 是一个旧的 Unix 库，它可以在文本终端界面控制光标。curses 的名称就来自于术语 “<ruby> 光标控制 <rt>  cursor control </rt></ruby>”。多年以后，其他人编写了新的 curses 版本用来添加新的功能，新版本被叫做 “new curses” 或者 “ncurses”。你可以在每个流行的 Linux 发行版中找到 ncurses。尽管默认情况下可能未安装开发库、头文件和文档。例如，在 Fedora 上，你需要使用以下命令安装 `ncurses-devel` 包：

```
$ sudo dnf install ncurses-devel

```

### 在程序中使用 ncurses

要在屏幕上直接寻址，你首先需要初始化 `ncurses` 库。大部分程序会通过以下三行来做到这一点：

* `initscr()`：初始化窗口对象和 ncurses 代码，返回代表整个屏幕的窗口对象
* `cbreak()`：禁用缓冲并使键入的输入立即可用
* `noecho()`：关闭回显，因此用户输入不会显示在屏幕上

这些函数定义在 `curses.h` 头文件中，你需要在你的程序中通过以下方式将其包含进来：

```
#include <curses.h>

```

初始化终端后，你可以自由使用任何 ncurses 函数，我们将在示例程序中探讨其中的一些函数。

当你使用完 ncurses 并想返回到常规终端模式下时，使用 `endwin()` 重置一切。此命令可以重置任何屏幕颜色，将光标移动到屏幕的左下角，并使光标可见。通常在退出程序之前执行此操作。

### 在屏幕上寻址

关于 ncurses 首先需要知道的是屏幕的坐标分为行和列，左上角的是 `0,0` 点。ncurses 定义了两个全局变量来帮助你识别屏幕：`LINES` 是屏幕的行数，`COLS` 是屏幕的列数。屏幕右下角的位置是 `LINES-1,COLS-1`。

例如，如果你想要移动光标到第 10 行和第 30 列，你可以使用 `move()` 函数，移动到此坐标：

```
move(10, 30);

```

之后显示的任何文本都将从屏幕的该位置开始。要显示单个字符，请对单个字符使用 `addch(c)` 函数。要显示字符串，将对字符串使用 `addstr(s)` 函数。对于类似于 `printf` 的格式化输出，请使用带有常用选项的 `printw(fmt, ...)`。

移动到屏幕指定位置和显示文本是一件很常见的事情，ncurses 提供了同时执行这两项操作的快捷方式。`mvaddch(row, col, c)` 函数将在屏幕第 `row` 行，第 `col` 列的位置显示一个字符。而 `mvaddstr(row, col, s)` 函数将在屏幕第 `row` 行，第 `col` 列的位置显示一个字符串。举个更直接的例子，在程序中使用 `mvaddstr(10, 30, "Welcome to ncurses");` 函数将从屏幕的第 `10` 行和第 `30` 列开始显示文本 `Welcome to ncurses`。使用 `mvaddch(0, 0, '+')` 函数将在屏幕的左上角第 `0` 行和第 `0` 列处显示一个加号（`+`）。

在终端屏幕上绘制文本会对某些系统产生性能影响，尤其是在较旧的硬件终端上。因此 ncurses 允许你“堆叠”一堆文本以显示在屏幕上，然后使用 `refresh()` 函数使所有这些更改对用户可见。

让我们来看一个将以上所有内容整合在一起的简单示例：

```
#include <curses.h>

int
main()
{
  initscr();
  cbreak();
  noecho();

  mvaddch(0, 0, '+');
  mvaddch(LINES - 1, 0, '-');
  mvaddstr(10, 30, "press any key to quit");
  refresh();

  getch();

  endwin();
}

```

程序的开始初始化了一个终端窗口，然后在屏幕的左上角打印了一个加号，在左下角打印了一个减号，在第 `10` 行和第 `30` 列打印了 `press any key to quit` 文本。程序通过使用 `getch()` 函数接收了键盘输入的单个字符，接着，使用 `endwin()` 函数在程序完全退出前重置了终端。

`getch()` 是一个很有用的函数，你可以使用它来做很多事情。我经常使用它在我退出程序前用来暂停。与大多数 ncurses 函数一样，还有一个名为 `mvgetch(row, col)` 的 `getch()` 版本，用于在等待字符输入之前移动到屏幕位置的第 `row` 行，第 `col` 列。

### 使用 ncurses 编译

如果你尝试以通常的方式编译该示例程序，例如 `gcc pause.c`，你可能会从链接器中获得大量错误列表。那是因为 GNU C 编译器不会自动链接 `ncurses` 库。相反，你需要使用 `-l ncurses` 命令行选项加载它以进行链接。

```
$ gcc -o pause pause.c -lncurses

```

运行新程序将打印一条简单的 `press any key to quit`消息，该消息差不多位于屏幕中央：

![centered message in a program window](/data/attachment/album/202109/06/085925c09np4z6n54m1g4h.png)

*图 1：程序中居中的 “press any key to quit” 消息。*

### 使用 ncurses 构建更好的程序

探索 `ncurses` 库函数以了解在屏幕上显示文本的其它方法。你可以在 `ncurses` 的手册页中找到所有 `ncurses` 函数的列表。这给出了 ncurses 的一般概述，并提供了不同 `ncurses` 函数的类似表格的列表，并参考了包含完整详细信息的手册页。例如，在 `curs_printw(3X)` 手册页中描述了 `printw`，可以通过以下方式查看：

```
$ man 3x curs_printw

```

更简单点：

```
$ man curs_printw

```

使用 ncurses，你可以创建更多有趣的程序。通过在屏幕上的特定位置打印文本，你可以创建在终端中运行的游戏和高级实用程序。

---

via: <https://opensource.com/article/21/8/ncurses-linux>

作者：[Jim Hall](https://opensource.com/users/jim-hall) 选题：[lujun9972](https://github.com/lujun9972) 译者：[perfiffer](https://github.com/perfiffer) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #386 Sci-Hub 诞生十周年，将恢复上传新论文

Summary: 更多：• Linux 5.15 将默认将所有警告都视作编译错误 • 谷歌时钟闹钟因 Bug 未能响起致人失业

![](/data/attachment/album/202109/06/165322z2xvqkcrqxcxxycd.jpg)

### Sci-Hub 诞生十周年，将恢复上传新论文

![](/data/attachment/album/202109/06/165331gogk7rhvdlgr7akm.jpg)

有科学海盗湾之称的论文共享网站 Sci-Hub 诞生于 2011 年。Sci-Hub 基本上是 Elbakyan 一个人的项目，资金主要来自捐赠，现在依赖于比特币捐赠，每个月花在服务器上的开支大约数千美元。Sci-Hub 今年 7 月为了遵守印度法庭的命令而同意停止接收新的论文。Sci-Hub 现在表示论文上传的限制已经过期了，[将上传](https://twitter.com/ringo_ring/status/1434356217208623106) 2 百万篇新论文来庆祝十周年纪念日。Sci-Hub 目前提供的论文超过 8500 万篇。鉴于 Sci-Hub 日渐困难的处境，网友四个月前还自发[发起了拯救](https://www.reddit.com/r/DataHoarder/comments/nc27fv/rescue_mission_for_scihub_and_open_science_we_are/) Sci-Hub 和开放科学的行动。

>
> 究竟科学知识是开放领域的，还是属于出版商的？
>
>
>

### Linux 5.15 将默认将所有警告都视作编译错误

![](/data/attachment/album/202109/06/165357bqwymgpzqmwvjqog.jpg)

在近日的 Linux 5.15 内核合并中，Linus Torvalds 引入一项[重要更改](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151)，所有内核构建将默认启用 `-Werror` 编译器标记。该标记会将所有警告都视作编译错误，以迫使开发者提起重视并优先处理，否则将中断编译过程。此外，作为一个旁路出口，还添加了 Kconfig 开关 `WERROR`，若新版编译器引入了内核无法立即修复的新警告、或其它选择性问题，开发者可以通过这个开关来禁用该标记。

>
> 虽然很多编译警告都让人烦不胜烦，但是每一条警告其实都是一个隐患。
>
>
>

### 谷歌时钟闹钟因 Bug 未能响起致人失业

![](/data/attachment/album/202109/06/165415rxm3ncannekambmx.jpg)

几乎所有安卓手机都安装了的谷歌时钟应用，多年来一直存在一个严重的 Bug，导致大量用户都错过了预设时间，甚至导致一位用户错过了两个早上的课程，[失去了教学工作](https://www.androidauthority.com/google-clock-app-bug-2746394/)。该问题似乎从 2018 年一直持续到了现在，尽管愤怒的用户已经多年给了它 1 星差评，但是这个问题一直迟迟没有得到解决。在一个上万人的投票中，遇到该问题的用户超过了六成。

>
> 虽然这是个简单问题，但是似乎谷歌解决起来挺费劲。所以究竟是用户错觉还是软件 bug？
>
>
>


Linux 激荡 30 年，我们是否还需要一个新的 Linux 发行版？

Summary: 我的答案是，需要。而且，我们已经提交了一份正在不断丰满的蓝图。

用过一段时间欧拉，但是实际上手起来太像CentOS了。。。

找了半天资料，终于在官方的obs构建服务器上找到了CentOS的证明：

openEULER 20.03 SP1 LTS, based on CentOS 8 Stream snapshots

20.03LTS确确实实是基于CentOS8S的，而且实际上手后发现完全缺少所有的32位运行库。。。

SUSE不同于RHEL可不仅仅只是采用类似的包管理和文件系统布局。从启动运行到维护，都是用的自己的一套系统，比如启动服务用的是自己的displaymanager服务，有着自己的yast管理，深度定制化的网络服务（连NetworkManager修改代理都没办法通过第三方软件实现）

反

反观欧拉，除了软件包做了些许修改，我还真没发现有什么东西是欧拉特有的。。。相比较与OracleLinux(OL)，反而更像是欧拉和CentOS的关系，毕竟OL还是做过一些软件包的修改的（其实目前有点像Ubuntu和Debian的关系了）<br />
最后，也不要一味的吹欧拉，真的没意思。对于是不是CentOS也请不要回避，是什么它就是什么，要实事求是，不要过度神话。祝愿欧拉也能够越来越好，但是目前这个软件生态真的是太拉了，球球你更新一下32位软件库吧

是不是收了钱之类的，隔三差五就来吹一波华为

这倒不至于，主要是华为在国内开源方面几乎起到了主导作用，还是一家商业公司，给国内开源事业作贡献<br />
别动不动就说收钱，先事先了解一下这个圈子吧

只说开源界，华为一直被人说在Linux内核里刷kpi，起码它贡献的绝对数量在这里

来自四川宜宾的 Chrome Mobile 58.0|Android 8.1 用户

时间会说明一切

我怎么觉得 openEuler 和 CentOS 的关系更贴近 Ubuntu 和 Debian 的关系呢？

别说是现在，未来30年也不需要openEuler，欧拉 名字就很拉（挎）

欧拉的软文，鉴定完毕，别在这诱导用户了，学会创新而不是抄袭

这么多唱衰欧拉的,令人心寒.<br />
还有这么多不懂开源的,只觉得开源就是全部都是自研.

我的答案是，需要。而且，我们已经提交了一份正在不断丰满的蓝图。

![](/data/attachment/album/202109/06/195129r6cyid390q01pao6.jpg)

### 从黑客玩具到席卷互联网

今年是 Linux 诞生 30 周年，我还依稀记得我在好多年前第一次接触 Linux 时，它还只是一个小众而新奇的操作系统。二十多年前，那时候 Windows 95 还在流行，IBM 的 OS/2 尚能见到影子，而不起眼的 Linux 还只是黑客们的一个新奇玩具。

似乎转瞬间，Linux 已经席卷了整个互联网，而与之伴生的开源也成为了主流的软件和信息行业的时髦法则。从最初计算机诞生时的开源文化，到 IBM、微软和甲骨文等商业软件企业所奉行的闭源，再到包括 IBM、微软在内软件巨头转身拥抱开源和 Linux，历史仿佛又走了一个轮回。

我用的第一个 Linux 发行版是 Slackware Linux，这最早的 Linux 发行版之一，而且也是最长寿的 Linux 发行版之一，至今仍在持续发展。我还记得第一次安装它时，由于要做双引导，结果因为当时所使用的引导程序 LILO 不能引导超过 1024 柱面的分区，因而在安装后首次重启时就刷了满屏的 0101010……，甚至看到没有一行有用的错误信息。而那时，虽然 Google 已经诞生，但是我还尚不知道它，所以面对这种情况，让人不知所措。

就是这样的一个玩具一样的操作系统，30 年来，经过无数人的努力，已经诞生了数百个分属不同系列的 Linux 发行版，并拥有数万自由及开源软件，林林总总，几乎肯定可以满足你的任何需求。

### CentOS 大变局

作为一个从业互联网多年的技术人员，我几乎都是在使用 Linux 来作为软件基础设施。从早期的 RedHat Linux，到后来的 CentOS，它基本上是我用来部署服务器操作系统的不二选择。Linux 作为服务器操作系统，主要有两大系列：Debian/Ubuntu 系、CentOS/SUSE 系。不知道出于什么原因，国内在服务器端使用 CentOS、RHEL、SUSE 等红帽系的 Linux 发行版比较多。所以，无论是企业环境、云环境，还是系统运维工程师们，都对 CentOS 等红帽系的 Linux 青睐有加。

不过，意外总是在你意想不到的地方出现。

今年，作为 CentOS Linux 背后的支持者，红帽公司突然宣布，CentOS 将 [终止既定的维护计划](/article-12902-1.html)。 CentOS 8 原本计划维护 10 年， 一直支持到 2029 年 5 月 31 日，却将在今年年底停止支持。而它的上一个版本 CentOS 7 都能维护到 2024 年。

当然，我们理解红帽公司做出这样的决定的 [原因](/article-12945-1.html)，但是其后果就是，原本将产品建筑于具有 10 年维护期的 CentOS 8 的各个企业，纷纷发现他们面临一个严重的危机。这就是，当红帽不再提供免费的 CentOS 之后，其产品和服务底层的操作系统缺失了维护，将给其带来巨大的不确定性。

当然，也并不是没有解决方案。比如说，像 Facebook 这样的大组织，就可以基于 CentOS Stream 定制自己的 Linux 发行版来使用。又比如说，可以考虑购买/订阅红帽的 RHEL 商业服务。再比如说，可以迁移到 Debian/Ubuntu，乃至于 \*BSD 上。但是，对于广大中小企业来说，这些选择都存在一定的阻碍。

因此，也有人站出来，秉承 CentOS 原本的宗旨，继续发行和维护一个类似 CentOS 的 Linux 发行版，比如说 [Rocky Linux](https://rockylinux.org/)、[Alma Linux](https://almalinux.org/) 等等。虽然，目前这些替代品得到很多肯定，但是，就像被红帽收购之前的 CentOS 一样，谁也不知道这些替代品发行版及其支持服务能有多久。

还有更好的选择么？

我认为有。

其实，在 CentOS 停服之后，国内一些互联网大厂也纷纷考虑将自己原本自用的内部 Linux 发行版打造成公开可用的 Linux 发行版。但是，各家对此事的重视程度不同。我曾经开玩笑地点评过，有的是以战略的方式去打造，有的是按战术的方式去考虑，而有的可能只是以战斗级的规模去尝试。以上就知名不具了。我就说说，我对其中一个 Linux 发行版的认识吧，以及，为什么我认为它是一个更好的选择。

先揭晓我的答案，它就是**欧拉（openEuler）操作系统**。

### 为什么欧拉是更好的选择？

#### 欧拉可以更好的继承和兼容 CentOS 基础设施

欧拉最初发轫于华为内部的 Euler 操作系统，这是一个定制的 Linux 发行版。其采用和继承了红帽系的一些标志性技术，比如，它们都采用了相同的包管理系统（虽然据称欧拉也在考虑增加新的包管理系统），它们都采用了类似的文件系统布局和同一种安装程序等等。

因此，如果你现有的操作系统使用的是 CentOS ，那么迁移到 欧拉 还是比较轻松的，而且，欧拉还提供了专门的迁移向导程序。

>
> 旁注：**欧拉 是 CentOS 的下游发行版吗？**
>
>
> 可能社区存在一些认识误区，认为欧拉就是基于 CentOS Linux 衍生，并在此基础上定制的。**不是**。欧拉与 CentOS 的关系，类似于 openSUSE 和 CentOS 的关系，即采用类似的包管理系统和文件系统布局；而不是类似 Oracle Linux 和 CentOS 的关系，即替换和增补部分组件和内核的方式。
>
>
> 结论：**欧拉是一个沿袭了红帽系的技术和惯例，但是独立发展的 Linux 发行版。**
>
>
>

#### 牵一发而动全身，欧拉已经成为华为的技术基座

就像前面说的，市面上并不乏类似于 CentOS 的发行版，但是，并不能给人以充足的信心。我们知道，开发并维护一个 Linux 发行版，其投入非常大，而且持续的维护也很辛苦。这一点可以从其他几个主要 Linux 发行版的情况可以看出来，有的 Linux 发行版供应商几年来多次卖身、有的转向以云服务为重心、有的几年才能推出一个重大版本。

而据我了解，欧拉在推出伊始，就得到了华为的鼎力支持，不但投入了华为操作系统实验室的技术高手，而且在产品、资金、宣传和人员方面也不吝投入。或许你觉得这只是宣传，但我觉得有一些事例可见一斑：欧拉在推出不久就拥有了诸多下游发行版，比如 UOS（原深度 Linux）、麒麟，甚至连 SUSE 都基于欧拉推出了下游发行版。试想，如果这些发行版认为欧拉只是昙花一现的 KPI 项目，它们会押注欧拉吗？

既然如此，那我就对欧拉能得到持续而稳定的投入和支持拥有信心。所以，是否采用欧拉作为你的基础设施，想必你也有一个判断了吧？

#### 欧拉有丰富而庞大的支持社区和支持企业

说实话，作为一个浸淫 Linux 开源圈子多年的技术人，我这些年见惯了技术社区的起起落落。但是我从来没见过一个技术社区能如欧拉社区一样迅速崛起并壮大。2019 年底，华为正式开源了欧拉操作系统，邀请社区开发者共同来贡献。才仅仅一年半后，截止到 2021 年 9 月，[欧拉社区](https://www.openeuler.org/zh/) 就已经拥有了 14 万社区用户，6 千多名社区贡献者，8 千多款社区软件，91 个特别兴趣组（SIG）以及 9 个下游的商业发行版。不仅如此，欧拉还在操作系统之外，开源了虚拟化平台 StratoVirt、容器引擎 iSula 等重量级软件。

所以，有这么庞大的支持社区和这么多的生态企业，你觉得需要担心支持吗？

### 为什么我们还需要一个独立的 Linux 发行版？

我们可以看到，虽然现在的 Linux 发行版不少，但是真正能在企业级使用并不多。而以前，这些企业级的 Linux 操作系统往往是由国外的企业进行支持的。我们说，开源是无国界的，但是企业是有国界的，谁也不敢保证企业是否会受制于某个国家的法案而终止服务。因此，有一个国产的 Linux 发行版供应商至关重要。

这些年来，中国已经有一些 Linux 发行版供应商。如今，在国家的持续支持下，它们也得到了不同程度的发展。不过，相对于中国迅猛发展的信息技术基础设施，我们还需要更多、更有力的企业和社区的支持。此外，考虑到中国对芯片产业的迫切需求，我们也需要有一个符合中国发展的独立 Linux 发行版来更好的支持这些国产的芯片和指令集。

虽然在企业运维中或多或少会使用英语等外语，但是就国内普遍的运维群体而言，对英语的娴熟使用程度上尚有较大的欠缺，因此，这就需要有一个具有更熟悉的语言环境的本土技术社区，才能真正促进国内运维技术人群的发展。当然，这并不是说我们只采用中文，而是会在满足中文沟通和支持的基础上，立足国际化，让源于中国的 Linux 发行版走向世界。

而在这方面，欧拉已经做了一系列工作：

比如，对多种计算架构的支持。典型的，Linux 都会支持不同的技术架构，这包括 x86、ARM 等等。而国内诸多发力于处理器芯片的厂家也打造出了林林总总的不同特性的芯片，但是这些芯片要得到主流操作系统的支持，则需要更广泛的认可和漫长的时间。如今的欧拉不但可以完美的运行在华为自家的鲲鹏处理器上，更是可以支撑国内多家的 ARM 服务器。作为一个拥有多家下游商业发行版的 Linux 操作系统，如果能在欧拉上得到适配支持，无异于可以在更广泛的用户群体里提供对国产芯片的直接支持。

再比如，对新技术需求的支持。近些年各种新技术层出不穷，如云边端融合、以新的容器技术为代表的云原生计算等等。这些都迫切需要在操作系统层面得到支持，由操作系统提供一个创新的平台，才能够给这些新的技术突破提供成长的土壤。欧拉首先是一个 Linux 操作系统，但是它也是一个孵化新技术的“Apache 基金会”，在欧拉之上，已经有可以运行于多种边缘设备的容器引擎 iSula、相对 QEMU 资源占用减少了 80% 的 StratoVirt 等等新技术。

### 结语

回到我们最初的问题，30 年过去了，我们还需要一个新的 Linux 发行版吗？我的答案是，需要。而且，我们已经提交了一份正在不断丰满的蓝图。


用户必会的 20 个 Linux 基础命令

Summary: 无论新手老手，这 20 个 Linux 命令都能让你的操作更轻松。

无论新手老手，这 20 个 Linux 命令都能让你的操作更轻松。

>
> 无论新手老手，这 20 个 Linux 命令都能让你的操作更轻松。
>
>
>

![](/data/attachment/album/202109/07/082525n7amf7gejo16zaxx.jpg "Command line prompt")

在黝黑的终端窗口中输入命令，这样的方式对某些人群来说可能好像过时了，但对许多专业计算机人员来说，这几乎是计算机完成能够执行的所有任务的最有效、最简便和最清晰的方式。如今，一些项目将开源命令引入了 macOS 和 Windows 等非开放平台，因此终端命令不仅仅是针对 Linux 和 BSD 用户，更是与每个人都息息相关。你可能会惊讶地发现，在一台普通的 [POSIX](https://opensource.com/article/19/7/what-posix-richard-stallman-explains) 计算机上安装了数千个命令，当然，其中很多命令并不是真的有用，至少不是直接或经常性被使用。而其中的一部分命令虽然不是有效终端必须使用的命令，但相比其他命令而言使用频率较高，值得大家学习一下。

以下是终端用户最可能会使用的前 20 个命令：

### cd

在终端外，你可以单击图标从一个文件夹移动到另一个文件夹，但在终端中，你需要使用 `cd`。`cd` 命令代表<ruby> 变更目录 <rt>  change directory </rt></ruby>，是用户在 Linux 系统中移动的方式。这是 Linux 中从一个地方到另一个地方最快、最直接的路线。

例如，在桌面上，当你想从你的主目录（你保存所有文件夹的地方）移动到一个名为 `presentations` 的文件夹时，你首先要打开你的 `Documents` 文件夹，然后打开一个名叫 `work` 的文件夹，然后是 `projects` 文件夹，然后是 `conference` 文件夹，最后是 `presentations` 文件夹，里面存放的是 LibreOffice Impress 幻灯片。这个过程包含了很多次的双击操作。同时屏幕上还需要许多鼠标移动动作，这取决于新窗口出现的位置，以及大脑需要跟踪的许多路径点。许多人通过将 *所有文件* 都放在桌面上来避免这个看似微不足道的任务。

而终端用户只需键入以下内容即可避免此问题：

```
$ cd ~/Documents/work/projects/conference/presentations

```

一些有经验的终端用户甚至都懒得输入所有这些，而是使用 `Tab` 键自动完成单词填充。更甚者，有时你都不必依赖自动完成，而是改用通配符：

```
$ cd ~/Doc*/work/*/conf*/p*

```

### pwd

用 Buckaroo Banzai 的话来说：“无论你走到哪里，你就在那里。”

当你想弄清楚确切位置时，就可以使用 `pwd` 命令。`pwd` 代表<ruby> 打印工作目录 <rt>  print working directory </rt></ruby>，这正是它的作用。`--physical`（在某些情况时缩写为 `-P`）显示解析所有符号链接后的确切位置。

```
$ pwd
/home/tux/presentation

$ pwd --physical
/home/tux/Documents/work/projects/conference/presentations

```

### sed

流编辑器 `sed` 更广为人知的是一个强大的批量 *查找和替换* 命令，但它同时也是一个正当合理的文本编辑器。你可以通过阅读我的 [介绍性文章](https://opensource.com/article/20/12/sed) 来学习使用它，然后通过我的 [高级教程和备忘录](https://opensource.com/article/21/3/sed-cheat-sheet) 成为老手。

### grep

`grep` 命令使用很普遍，以至于经常被用作动词（例如 “我会对一些文件进行 grep”）和动名词（例如 “grep 一些输出”）。无论是查看日志文件还是解析其他命令的输出，它都是在 shell 中解析文本时的关键组件。这是忙碌的用户专注于特定信息的一种方式。考虑一下计算世界中的数据量，`grep` 命令的流行就见怪不怪了。你可以通过阅读我的 [介绍性文章](https://opensource.com/article/21/3/grep-cheat-sheet) 了解 `grep`，然后下载 [备忘录](https://opensource.com/downloads/grep-cheat-sheet) 学习。

### file

当你需要知道文件包含什么类型的数据时，请使用 `file` 命令：

```
$ file example.foo
example.foo: RIFF (little-endian) data, Web/P image [...]

$ file example.bar
example.bar: ELF 64-bit LSB executable, x86-64 [...]

```

当然，`file` 命令并不神奇。它只不过是根据文件如何标识自身而进行输出的，并且文件可能是错误的、损坏的或伪装的。使用 [hexdump](https://opensource.com/article/19/8/dig-binary-files-hexdump) 进行严格检查的方式确定性更强，但对于日常使用而言，`file` 命令非常方便。

### awk

`awk` 不仅仅是一个命令，它还是一种字面意义上的 [编程语言](https://opensource.com/article/21/1/learn-awk)。[点此下载我们的免费 Awk 电子书](https://opensource.com/article/20/9/awk-ebook) 进行学习，你可能会写出远超你想象的脚本。

### curl

`curl` 命令是用于终端的 [非交互式 Web 浏览器](https://opensource.com/article/20/5/curl-cheat-sheet)。它是面向 Web 和 API 开发人员的 [开发工具](https://www.redhat.com/sysadmin/use-curl-api)。它是一个复杂灵活的命令，但如果你想从你的终端顺利地与 Web 服务交互，该命令是很值得学习的。

下载我们免费的 [curl 备忘录](https://opensource.com/downloads/curl-command-cheat-sheet)，你可以从中学会 `curl` 的许多选项。

### ps

管理系统资源主要由内核负责，当你更喜欢或更需要手动管理时，可以使用 `ps` 命令。读者可以在我的 [使用 procps-ng 监控 Linux 系统](https://opensource.com/article/21/8/linux-procps-ng) 文章中了解 `ps`。

### cat

[cat 命令](https://opensource.com/article/19/2/getting-started-cat-command) 是<ruby> 连接 <rt>  concatenate </rt></ruby>的缩写，它曾因为能将若干小文件合并而显得非常有用，这些小文件可能是由于大小限制而（使用 `split` 命令）拆分的。如今，`cat` 主要是用来将文本文件的内容转储到终端中以供快速阅读，除非你为此专门去使用 `head`、`tail`、`more` 或 `less` 等命令。

尽管它的原始用途几乎已被弃用，并且其他几个命令也主要提供了其次要功能，但 `cat` 仍然是一个有用的工具。例如，它可以是复制（`cp`）命令的替代品：

```
$ cat myfile.ogg > /backups/myfile.ogg

```

它可以显示文件中不便观察的隐形字符。例如，使用 `--show-tabs` 选项，分割 [YAML](https://www.redhat.com/sysadmin/yaml-beginners) 的 `Tab` 字符就会显示为 `^I`：

```
$ cat --show-tabs my.yaml

---

- hosts: all
  tasks:
  - name: Make sure the current version of 'sysstat' is installed.
    dnf:
     name:
^I- sysstat
^I- httpd
^I- mariadb-server
     state: latest

```

它还可以用 `--show-nonprinting` 显示非打印字符，用 `--show-ends` 标记行尾，用 `--number` 提供行号，等等。

### find

`find` 命令可以用来查找文件，但它还有许多选项，这些选项可以帮助你通过各种过滤器和参数查找文件。读者可以从我的 [介绍性文章](https://opensource.com/article/21/8/find-files-and-directories-find) 中学习该命令的基础知识。

如果你一直想知道为什么最基本的、不起眼的 [ls 命令](https://opensource.com/article/19/7/master-ls-command)，不在本文列表中，那是因为 `find` 的灵活性。它不仅可以列表文件：

```
$ find .
./bar.txt
./baz.xml
./foo.txt
[...]

```

它还可以提供包含详细信息的长列表功能：

```
$ find . -ls
3014803  464 -rw-rw-r--   1 tux users  473385 Jul 26 07:25 ./foo.txt
3014837  900 -rwxrwxr-x   1 tux users  918217 Nov  6  2019 ./baz.xml
3026891  452 -rw-rw-r--   1 tux users  461354 Aug 10 13:41 ./foo.txt
[...]

```

这是一个技术问题，但也是很一个巧妙的技巧。

### tar

人们有时会引用 BSD 的 `tar` 语法来拿 Linux 命令开玩笑。尽管有这样的名声，但 `tar` 命令实际上非常直观。读者可以阅读我的 [如何解压缩 tar.gz 文件](https://opensource.com/article/17/7/how-unzip-targz-file) 文章，了解在需要时使用 `tar` 命令的简单知识。

### more、less 和 most

这些统称为分页命令。分页命令与 `cat` 类似，但前者会在屏幕底部暂停输出，直到你向下滚动查看更多内容。这些命令比较简单，但每个之间都有细微差别。用户是用箭头键还是空格键滚动？是必须手动退出，还是在显示的文件末尾自动退出？用户的首选搜索行为是什么样的？选择你最喜欢的分页命令并将其设置在 `.bashrc` 中吧！

### ssh 和 scp

OpenSSH 不仅有助于保护与远程系统的连接安全，还可以用于启用其他命令。例如，对于许多用户来说，有了 `.ssh` 目录，他们才能与 Git 存储库顺利交互、将更新发布到网站、登录云控制平台。

### mv

`mv` 命令有双重作用：它既可以 [移动文件](https://opensource.com/article/21/8/move-files-linux) 又可以 [重命名文件](https://opensource.com/article/21/8/rename-file-linux-terminal)。它有几个可用的保护措施，例如 `--interactive` 和 `--no-clobber` 选项避免破坏现有文件，`--backup` 命令确保数据在新位置验证之前被保留，以及 `--update` 选项确保旧版本不会替换新版本文件。

### sudo

当某个用户账户的用户名已知，且具有 *全部* 系统权限时，该用户很快就会成为黑客攻击的目标。`sudo` 命令消除了对字面上 `root` 用户的需求，从而优雅地移除了有关系统的重要信息。不过这还不是全部，使用 `sudo` 你还可以轻松地管理单个命令、用户和组的权限。你可以在选定的命令上启用无密码执行、记录用户会话、使用摘要验证来验证命令，[等等](https://opensource.com/article/19/10/know-about-sudo)。

### alias

使用 `alias` 命令将长命令变成易于记忆的快捷方式：

```
$ alias ls='ls --classify --almost-all --ignore-backups --color'

```

### clear

有时终端会显得很混乱，输入 `clear`（或在某些 shell 中按 `Ctrl+L`）后，你就能得到漂亮、刷新的屏幕了。

### setfacl

传统上，POSIX 文件权限由 `chown` 和 `chmod` 决定。然而，如今系统变得更加复杂，因此有一个灵活性更高的命令。`setfacl` 命令允许创建一个 [访问控制列表（ACL）](https://opensource.com/article/20/3/external-drives-linux)，可以配置任意用户所需权限，并可以为文件夹及其中创建的内容设置默认权限。

### netcat

可能需要使用 `netcat`（`nc`）的人不多，但这些使用它的人确离不开它。`nc` 命令是一个通用的网络连接工具。

它可以连接到一个端口，类似于 `telnet` 命令：

```
$ nc -u 192.168.0.12 80

```

它可以 ping 一个端口，类似于 `ping` 命令：

```
$ nc -zvn 192.168.0.12 25

```

它可以探测开放端口，类似于 `nmap` 命令：

```
$ nc -zv 192.168.0.12 25-80

```

以上仅是该命令的一小部分用途。

### 你自己构建的命令

在某种程度上，Linux 终端是一个创造性解决问题的平台。当你学习命令时，你也在学习可用于创建自己的命令的组块。我的 [shell 历史](https://opensource.com/article/18/6/history-command) 中的许多命令都是自己编写的 shell 脚本，从而实现了根据自己想要的工作方式定制工作流程。你为自己的效率和舒适度而设计的命令也可以作为 shell 中的基本命令。花些时间了解一些很棒的命令，然后试着构建自己的命令吧。当你构建出的命令非常好用时，把它开源，这样就可以与他人分享你的想法啦！

---

via: <https://opensource.com/article/21/9/essential-linux-commands>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[lujun9972](https://github.com/lujun9972) 译者：[unigeorge](https://github.com/unigeorge) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出