计划9的一周

2021-01-15 20:12:24

我花了2021年的第一周从贝尔实验室学习了一个名为Plan 9的操作系统。这是一种边缘操作系统,长期以来一直被其原始作者所抛弃。它也是导致其他地方灵感的原因。如果您使用了Go语言,/ proc,UTF-8或Docker,则使用了Plan 9设计的功能。本期将深入探讨操作系统内部和一些中等难度的计算机科学主题。如果不是那种东西,您可能要跳过。正常服务将很快恢复。

从The Dork Web上阅读故事的最佳方法是通过电子邮件。在下面注册以尝试。

本周的音乐来自杰斐逊飞机公司。按播放并继续阅读。屏幕截图来自各种Plan 9版本。模因来自互联网。蕾妮·法兰克(Renee French)吸引了格兰达(Glenda)计划9兔子。

Bell Labs的Plan 9是由许多负责Unix的人设计的操作系统。与其说是完整的操作系统,不如说是对思想的探索。计划9的大部分内容都融入了Google生态系统,Go语言,Windows和Linux。我想在一个安静的一周中每天花几个小时来学习计划9感兴趣的部分。

有几种Plan 9发行版。最知名的是Cat-v成员生产的9front。理查德·米勒(Richard Miller)的Plan9发行版是Raspberry Pi端口。此功能提供wifi支持和其他Pi特定功能。 Miller的分配也更接近原始计划9。

我从9Front开始,因为它看起来最活跃。 FQA弊大于利。如果您不喜欢手册中奇怪的纳粹死亡营图片作为视觉笑话,那么9Front可能不适合您。我想为FQA提交笔记,直到II了解附录L的内容。有3种类型的人会看到它-那些不会使用9Front的人,那些选择不会受到影响的人受到那些人的欢迎。我的关注与第三小组有关。纳粹死亡集中营的笑话作者是如此有礼貌,我替换了本期的所有9Front链接和屏幕截图。 9Front不欠我零钱。我没有欠该项目更多的关注。

我使用Richard Miller的Raspberry Pi Plan 9发行版重新实现了所有功能。因此,此处的屏幕截图并非总是与日期匹配。事实证明,即使您最老的Pi都可以探索Plan 9,这是种绝佳的体验。如果您没有,它将在Qemu工作。我尝试了其他发行版,但发现Miller's Pi发行版总体上最好。

在Raspberry Pi上安装Plan 9很容易。下载,解压缩并写入图像。键盘,3键鼠标,HDMI连接和以太网电缆将带给您更多乐趣。在启动之前,我将Pi卡的cmdline.txt更改为(一行)读取:

我注意到的第一件事是Raspberry Pi 3B的响应能力。尽管有怪癖,但它比Raspbian快了一个国家英里。 Quanstro的新手指南对于使用前30分钟非常有帮助。如果安装Plan 9,请确保随身携带。

不幸的是,只有我最年青的键盘可以正常工作,而且打字太恐怖了。我按照以下步骤通过Drawterm通过网络连接到我的Plan 9 CPU服务器。我大部分时间都在远程会话工具中使用,例如SSH,Tmux和VNC和RDP。 Drawterm与我已经习惯的感觉并没有太大不同。

我阅读了Devine Lu Linvega的Rio笔记,并按照Sigrid的一些文章介绍了有关应用补丁以启用OS主题的内容。由于这与计划9的实施十分接近,因此我将系统称为gentoo。我使用topng命令通过FTP服务器将屏幕缓冲文件转换为PNG,就好像它是本地文件一样。

力拓提供了Plan 9的GUI,该GUI依靠3键鼠标进行交互。 Shift键在中间按钮的内部起作用。这变得很乏味,因此请尝试单击滚轮。鼠标左键选择。中间按钮显示一个上下文菜单。鼠标右键列出了其他菜单选项。 Plan 9还具有鼠标和弦功能。这意味着可以按住几个按钮,例如钢琴和弦,以实现额外的功能。主要用于剪切和粘贴。

按住鼠标按钮时出现菜单。放手选择一个选项。右键菜单的第一个选项是新的。选择后,您可以使用鼠标右键绘制终端窗口。

在终端窗口中,向左和向右键正常工作。向上和向下箭头键滚动窗口,而不是光标。鼠标左键设置光标位置。

各种Plan 9 comp-sci论文位于/ sys / docs下。最好使用page命令查看它们。这似乎是将PDF文件呈现为图像,或者至少不能选择文本。我读的第一篇论文是关于sam文本编辑器的。

sam文本编辑器是具有命令语言的文本编辑器。它与vi和ed共享概念,但实现方式却大不相同。当打开时,sam显示一个窗口,其中包含两个较小的空白窗口。按住鼠标右键并选择文本文件将更改指针。右键单击底部窗口,将文本置于底部,将sam命令行置于顶部。右键单击顶部可使文本填充窗口。

编辑体验就像更糟糕的Windows记事本。顶部窗口提供用于处理文本的命令行界面。例如,要保存,请输入“ w”(写)。要退出,请输入“ q”。在编写和命令窗口之间由鼠标驱动的上下文切换很痛苦。这并不是说山姆无法为您服务。只是不适合我。

在Plan 9上进行网络浏览有点像传递肾结石。计划9通过/ mnt / web上的webfs文件系统安装Web连接。 Pi发行版上的/sys/src/cmd/webfs/webget.c中有一个示例Web客户端。

听起来我一开始不喜欢计划9,但这不是事实。不错,只是不完整。探索WebFS值得迷失方向。我通过从wttr.in获取天气报告来进行探索。如果用户代理与curl匹配,则Wttr.in仅发送ANSI文本。我修改了webget.c示例,以设置匹配的用户代理,并在第一次提取数据。无需插座。

Plan 9的本机终端不符合ANSI。我使用vt命令模拟了符合ANSI标准的终端。未渲​​染ANSI字形。我敢肯定我可以做得更好,但是我对WebFS的工作比对前端输出更感兴趣。

大多数操作系统具有root用户或管理员用户。这通常带有一些特殊功能,例如原始套接字访问。在计划9中,主机所有者帐户(默认为“ glenda”)是普通用户。某些服务作为glenda运行,因此glenda用户对这些服务的访问权限有所提高。除此之外,我没有看到该帐户的特殊身份。

任何多用户系统都需要某种形式的身份验证机制。 Plan9具有用于长期秘密存储的加密存储(secstore)。 Factotum提供作为文件系统公开的运行时键值存储。 Plan9中的安全性很好地证明了这一点。

我使用ed25519 SSH密钥,但Plan 9仅支持RSA。在生成RSA密钥并将其复制到我的OpenBSD便携式计算机之后,我能够通过vt终端从Plan 9进行SSH输入。我使用基于密码的身份验证来访问其他地方新安装的Raspberry Pi。在不同的发行版中,SSH和factotum的使用期限表现不同。我没有调查原因。

Factotum是一个不可知的键/值元组存储,恰好对秘密有用。 Factotum通过文件系统向操作系统公开。结构类似于webfs文件系统。

手册页很棒。 UX很糟糕。不过,这是一个令人赞叹的概念。

通过wpa客户端,我意识到我经常提到预安装的源代码。对于仍在阅读的外行来说,这是非常不寻常的。 Plan 9的源代码具有很高的可读性,即使对于像我这样的糟糕编码人员也是如此。

计划9公开文件即一切模型的另一种方法是网络数据库(NDB)。它位于/ lib / ndb中,并通过/ net公开网络。与/ proc一样,/ net层次结构在某些方面与Linux相似。 / net层次结构是Plan9的网络通信接口。网络连接是通过此接口而不是传统的套接字来处理的。

网络数据库将网络配置设置存储在多个位置。这使用了出色的NDB平面文件数据库结构。用户使用/ bin / ndb下的工具查询NDB数据库。使NDB特别有趣的是它是一个通用的基于文本的数据库。加文·弗里伯恩(Gavin Freeborn)提供了有关使用ndb入门的精彩教程。由于plan9port,NDB也可用于非Plan 9系统。如果您使用Go语言或Google的云产品,则可能是在不知道的情况下使用了NDB。

从根本上说,命名空间是一种通过名称引用对象表面积的方法。听起来很抽象,所以让我备份一下。

尽管Plan 9具有世界观,但现实世界中并没有很多东西。网络就是网络。网站是网站。操作系统设计师必须选择应用程序如何与这些事物进行交互。在Plan 9文件系统中,事实上是交互介质。文件系统挂接被缝合在一起,称为“名称空间”。名称空间是外壳脚本形式的安装映射,而不是领土。仅仅因为您可以挂载某些东西并不意味着您可以访问其中的内容。

只需使用Shell脚本即可创建整个网络服务。这几乎无法解决任何可能的问题。将音频文件挂载到另一个大陆上的系统,然后可以直接播放音频。是否需要连接两个Plan 9系统,但只有一个具有网卡?通过串行导入联网的系统/ net层次结构,并借用网络连接。需要连接办公室吗?导入办公室桌面的/ net以获得即时隧道。本地调试和远程调试之间没有区别。您可以通过9p挂载远程/ proc文件系统,并使用本地调试器。

如果听起来有意思,请在/ sys / doc下的Plan 9中查看“命名空间的使用”。与Plan 9的所有核心论文一样,它的书写也很好。本文还详细介绍了构成所有内容的9p协议。

9P真是令人赞叹。本地资源和远程资源之间没有区别。只有那些挂载在名称空间中,而没有挂载。 9p可以将任何资源表示为可在世界任何地方共享的文件系统。

当我们在操作系统上打开文档时,我们希望它知道要打开哪个应用程序。 PDF应该在PDF查看器中打开。照片应在照片查看器中打开。但是计划9如何知道要打开什么?答案是惊人的。

管道使用基于文本的文件系统来管理访问文件时发生的情况。水管工可以检查文件名,源,目的地,内容并对其执行操作。规则如下:

乍一看可能并不令人印象深刻。结果是用户可以定义如何处理内容,而不是OS或应用程序供应商。当您将“文件中的所有内容”与“基于文件的基于行为的操作”混合在一起时会发生什么?魔法。文件的来源无关紧要。管道可以专门作用,也可以不管作用。

管道使所有文本都超文本。突出显示一个单词并将其发送给水管工。水管工根据规则行事。从交货通知电子邮件中选择包裹号。管道可以查询传递而无需离开您的邮件客户端。水暖就像类固醇上的文件关联。在这种情况下,类固醇本身也在类固醇上。

ACME通常被称为编辑器。实际上,它是一个结构化的文本用户界面。这介于tmux元素和孪生Textmode窗口管理器之间。乍一看看起来很令人困惑,但是有很好的想法。 ACME创建的窗口内部具有文本编辑功能。但这不仅仅是编辑。

鼠标按钮的工作方式与最初令人沮丧的计划9的其余部分不同。在使用Acme一段时间后,我希望Plan 9的其余部分都像这样。在下面的屏幕截图中,我有四个编辑窗格。通过在标题栏中键入完整位置并单击鼠标右键,可以在左上方窗格中打开文本文件。对,那是正确的。

我在编辑器中输入了“赢”一词,然后单击鼠标中键,这打开了左下角的窗口。 “ win”会在Acme中生成命令提示符。然后,我在NewCol上单击鼠标中键以创建右侧列。在新窗口中,键入“< astro”。我用中间按钮选择了文本。当我放开astro命令时,输出替换了文本。

还有很多东西,我什至不能在这里开始介绍。如果您想了解Acme纯粹的Black Magic Fuckery的更多信息,Russ Cox的视频非常棒。

当然,Acme还可以导出文件系统。这使应用程序可以与Acme的内容以及应用程序本身进行交互。应该可以在Acme中编辑以下脚本:

计划9有自己的C语言,与您可能熟悉的其他语言不同。有足够的陷阱使移植感到痛苦,但它距离一切从零开始就足够了。计划9按体系结构划分了编译器。它使用几乎随机编号的文件名进行编译器和链接器执行此操作。用C语言编写的编程计划9令人迷惑。这还不错,与我习惯的一切都非常不同。

虽然Acme具有惊人的功能,但也有很多烦人之处。滚动窗口而不是游标行为经常使我迷惑。没有语法突出显示。您可以使用Sam命令语言跳到特定的行号,但没有编号。在某些方面,Acme是可定制性的最终选择。您可以在其中编辑菜单栏的编辑器几乎是无限灵活的。在其他方面则不是。例如,除非您更改并重新编译源代码,否则您将无法使用Acme的标签处理功能。

然而,Acme的功能异常强大。您可以从中运行终端,使用page查看文档或使用web命令查看网页。甚至还有井字游戏。

C风味有时会吸引您。编译器的命名有点笨拙,但易于管理。在构建文件I / O,图形和窗口管理的块之后,事情变得更加容易。站在以前的旅行者的肩膀上,提供了极大的帮助。还有其他可用语言,当然还有rc脚本语言。拥有用于编写GUI应用程序的一致工具真是太好了。绘图基元使用起来很有趣。与我使用的大多数其他工具相比,GUI菜单管理非常理智。如果这是跨平台的GUI工具包,那么我肯定会尝试一下。

计划9与莫扎特的《安魂曲》一样,洋溢着光彩。这是操作系统的圣家族教堂。它的创造者很久以前就离开了,但人们仍在脚手架上继续建设。如果没什么,这是一个绝妙的主意,从未打算用于大众消费。这是操作系统的圣山。

这是生产级操作系统吗?一定不行。它笨拙,未完成,并且文件系统模型让人感觉一致但被迫。并非所有事情都需要完整。作为一种探索而不是一种产品,我认为计划9是成功的。计划9是Unix酷尔酸测试,由贝尔实验室的Merry Pranksters提供。

理查德·米勒(Richard Miller)的Plan 9 Pi发行版是让一两个抽屉式Raspberry Pi焕然一新的好方法。即使您只需要在一个潮湿的周末下午弄清楚它,它就会比您用其他方法所能做的更多。

乔纳森·布鲁(Jonathan Blow)的演讲不仅涉及文明崩溃。它深入到软件质量的下降和代际技术知识的丧失。这确实是一个值得关注的精彩演讲,并且可以解释为什么您的计算机如此缓慢。

Kartik Agaram正在开发任何人都可以审计的计算机。他花了整个2020年的时间在他的Mu计算机上工作,以使其成为现实。我印象深刻,他走了多远。 Oriol FerrerMesià一直在建造现代复古计算机终端。

费德拉(Phaedra)是我今年见过的最双子座的东西。 Öppen提供了一个55kb(正确的)Android Gemini客户端的盲目功能,该客户端一直运行到API1。唯一的限制是旧设备上的TLS。同样值得一提的是同一页面上的Ariane客户。

MVG经历了令人讨厌的Lenslok DRM,可能是第一个(也是最糟糕的)验证码。我记得小时候在ZX Spectrum游戏中翻转Lenslok。我绕过的Apple固件保护使用了类似80年代的技术水平。再加上零钱,是吗?

中央情报局已经发布了他们所有的不明飞行物文件。您可以从The Black Vault下载PDF的ISO,以及一些现在已经为文本建立索引的PDF。

从美国土著人的角度来看,长春花写了一些出色的歌曲。她从1981年起的话到今天同样如此。如果您愿意,我会推荐这张专辑的其余部分,从哥伦布出发,有6艘船飞往Ode到印度天鹅。最后,请引用大屠杀幸存者和纳粹猎人西蒙·维森塔尔(Simon Wiesenthal)的话:

希望您喜欢本期《 The Dork Web上的故事》。我会在两个星期后再来另一个问题。如果您希望在收件箱中注册,可以在下面注册。