如何在Mac VM Fusion上安装和使用Plan 9

news2024/11/14 3:30:09

我在 Mac 上使用 VM Fusion 安装 Plan 9 的时候遇到了很多问题,官方文档和有些前两年的国外的一些博客并没有写清楚,甚至出现了“误导”的情况(有些情况变了)。所以来写本文帮助其他也遇到的问题的人。

如果你能看到这篇博客,说明你大概知道 Plan 9 是个什么系统,这里也不赘述,直接开始。

你可以按照步骤一步步来,重点部分我用小标题标出了。

下载和解压

下载链接是:https://9p.io/plan9/download/plan9.iso.bz2。

不过为了防止链接失效,还是列出 Plan 9 的官网:https://plan9.io/plan9/,页面如下:

请添加图片描述

在这里你能找到很多关于 Plan 9 的信息,虽然有些信息已经过时了,但是也能告诉你最开始 Plan 9 的开发者是怎么想的。

下载好之后,在终端使用bzip2命令解压(虽然 macOS 能识别出是一个压缩包,但是解压结果是空的):

bzip2 -d plan9.iso.bz2

然后得到一个大约 300MB 的 ISO 文件。

新建虚拟机

如果你了解如何新建虚拟机,那么请直接跳到“注意事项”部分。

首先点击新建虚拟机,然后拖入解压得到的plan9.iso文件,这时候页面如下:

请添加图片描述

然后在选择操作系统的时候,选择“其他-其他”,点击“继续”:

请添加图片描述

选择“传统 BIOS”,点击“继续”:

请添加图片描述

注意事项

接下来的内容请一定照做,是关键点。在下面这个界面的时候,请点击“自定设置”。 如果点击“继续”的话虚拟机会自动启动,还要关机再调整:
请添加图片描述

我给这个虚拟机起名为“Plan 9”:
请添加图片描述

然后再分别将硬盘和 CD/DVD(下图中框出) 从 IDE 改成 SCSI,如下:

请添加图片描述

修改完,请记得点击“应用”。
请添加图片描述

请添加图片描述
然后再根据个人需要调整配置,就可以启动了。

如果不将 IDE 修改成 SCSI,那么你的键盘输入内容在一些情况下会无效,导致引导失败,以及速度会慢很多。

引导界面

由于虚拟机的原因,只能使用文本引导界面。

启动虚拟机之后,界面如下,这时候我们输入1

请添加图片描述

然后接下来的内容请依次输入:

  1. yes,对 IDE 设备使用 DMA(虽然我们用的不是 IDE 吧,但是历史原因这里就是 IDE);
  2. ps2是鼠标,相信很多人还记得老电脑上的 PS2 接口吧;
  3. 1024x768x32表示分辨率是 1024x768(这个分辨率最稳,虽然可以自己定,但是太大了会进不了系统,换 vesa 也不行),色深为 32 位(Plan 9 支持 8、16、24、32 位)
  4. xga表示显示器是 XGA 接口的(和 IDE 一样是因为历史原因)
    请添加图片描述
    输入完会出现下面这样的界面:
    请添加图片描述

就是说遇到错误了,只能用文本交互界面。这时候我们需要手动输入inst/textonly(不能复制),然后按下回车键。

接下来解释一下这个情况,重点是图中下方的四五行:
请添加图片描述

  1. Preparing menu表示再生成下面的内容;
  2. The following unfinished tasks are ready to be done:表示下一个任务是什么(这里也就是下一步要做什么)。从第二个开始还会有已完成任务的部分。
  3. 重点是Task to do [xxxx]部分,这里的需要我们输入要做的任务,而中括号里的xxxx表示默认值,直接按回车键就是输入默认值。

所以这里我们直接一直按回车键即可,内容大致是在创建文件系统,列表里每个任务后面都有介绍,这里不赘述了。

如果你需要调整一些设置,还请仔细阅读每个任务

需要记忆一下

一直按回车,直到出现no default的情况,这个情况下按回车键也不会有操作,所以不用担心按过头了。

这里有个很重要的东西需要我们记忆一下,最好拍个照片或者用笔记一下,就是下图中红框里的内容,因为每个人的值可能会不一样:sd00表示 VM 生成的虚拟硬盘,而sd01则表示plan9.iso这个虚拟光驱。

请添加图片描述

这里问我们要把 Plan 9 放入哪个设备里,当然是虚拟硬盘里了。所以我们输入sd00

由于硬盘是空的,所以找不到 master boot record(mbr,是用来启动系统的),会询问我们是否在这安装 mbr,输入y,如下:

请添加图片描述

然后再次确认,这里的方法和前面不一样,需要先输入w,再输入q来进入下一步。类似 Vi 里的:wq来保存退出,只不过分开写了。如下:

请添加图片描述

可以看到进入了下一步,这里还是直接按回车键,遇到了上面的情况就先wq,直到下一个没有默认值的情况,如下:

请添加图片描述

这里是让我们指出发行版放在哪里了,好在后面拷贝到硬盘。这里就需要搬出之前记得内容:硬盘是sd00,CD/DVD 是sd01

Plan 9 是放在 ISO 里的,所以输入/dev/sd01/data,这个根据自己的内容调整。

然后会出现以下内容,是让我们进到包含了发行版的具体目录。虽然这里有默认值,但是不要直接按回车,直接输入/即可(也就是当前目录下是)。虽然按回车也可以,进去直接输入exit退出即可。
请添加图片描述

接下来copydist部分按回车即可,等待几分钟让系统安装完毕:

请添加图片描述

然后继续按回车,直到下面这个没有默认值的情况:

请添加图片描述

这里是让选择启动方式,我们输入plan9,然后再输入y确定即可。

请添加图片描述

然后就按回车结束即可。出现下面的内容就可以关闭虚拟机啦:

请添加图片描述

在这里关机哦(注意不要选重启,):
请添加图片描述

进入系统前的准备

接下来不要按照官方文档或者一些教程中所说的,把 ISO 弹出或者 DVD/CD 断开。直接启动开机,这样就可以开始使用 Plan 9 了。如果你把 ISO 弹出或者 DVD/CD 断开,会显示找不到从哪启动,页面如下:

找不到从哪启动

遇到这种情况,点开“虚拟机-设置-启动磁盘”,选择“CD/DVD”,然后点击重新启动即可。

请添加图片描述

设置系统

每次进入系统都需要设置系统。

当页面如下的时候,按下回车。

请添加图片描述

然后会提示输入用户名(如下),这里需要输入glenda。千万别自定义用户名,因为 Glenda 是 Plan 9 的根用户,而 Glenda 的含义就是 Plan 9 的标志小兔子的名字:

Glenda

按下回车等一会就可以看到这样的一个界面:

请添加图片描述

最上面从左到右是系统信息、时间。第二行从左到右是终端和文本编辑器 acme。

简单使用

这里介绍一下 Plan 9 的简单使用,比如说新建窗口等基础使用方法。acme 等程序应用的使用方法就不在这里加长篇幅了。

Plan 9 使用的 Shell 是rc,一些编译器也与 Unix 不同,这些内容非常多,我会单开一篇博客,写完之后链接放在这里。

在使用 Plan 9 之前,首先要明白,Plan 9 是上世纪 80 年代诞生的图形化系统的一种(虽然首次亮相是 1992 年),所以不要抱着现在的图形化操作系统的逻辑先入为主,然后吐槽,因为有些 Plan 9 使用的操作逻辑现在的系统也有。此外,虽然和 Unix 师出同门,但是有很多地方是不一样的,反正就像论文中所说:“让 Unix 用户又陌生又喜欢”。

操作基础

Plan 9 将鼠标输入设备划分为左、中、右三个键,对应你手上的作左键、滑轮(滑轮是被点击的,Plan 9 没有滑轮的设计)、右键。需要注意的是,Plan 9 中,右键是“确认”的意思,这点与现代操作相反。

键盘输入和现在的设备一样。

下面通过新建和关闭窗口,顺道来介绍一下基础菜单。因为与现代任何操作系统不同的是,Plan 9 的图形化界面和文件系统关系不大。比如说 macOS 或 Windows 的主界面其实是文件系统中的一个目录,哪怕是划时代的 Mac OS 6.0.8(后面也会写相关博客介绍一下,同时期的对比能看出那段时间百家争鸣的场面)都是以文件系统为操作核心的。

新建和关闭窗口(基础菜单)

在界面的空白区域(灰色区域)右键按住(不能松开)会出现一个菜单,然后将光标拖拽到“New”上(右键还是不能松开),最后松开右键来选择“New”,会发现光标变化成一个圆加一个十字,这时候右键按住拖拽就可以勾勒出一个窗口。这个窗口只能是终端,其他程序需要通过终端打开。

如果要关闭一个窗口,同样在空白区域右键按住出现的菜单中,移动到“Delete”松开,然后右键点击这个窗口就可以关闭了。

新建和关闭窗口等流程如下(录的操作有点慢,体谅一下哈):

请添加图片描述

你可能会奇怪为什么要长按移动选择,再松开确认啊,这种操作前所未闻啊。

其实现在也有这种设计,或者说这种设计在当年其实蛮常见的。你可以在 macOS 中尝试一下,用多了发现在有些情况下还挺顺手的。如下:

macOS中拖拽选择操作

隐藏和再显示窗口

在 macOS 或 Windows 中,已经打开的程序会出现在 Dock 或者任务栏中,但是 Plan 9 并不是这样。Plan 9 打开的应用程序会全部出现在界面上。如果嫌乱要隐藏,那么就要使用菜单里的“Hide”来隐藏程序,就是最小化的概念。隐藏的程序会出现在右键长按出来的菜单里,如下:

隐藏和再显示窗口

打开一个应用程序

打开一个应用程序和 Unix 中一样,使用路径,或者直接使用在PATH 环境变量中存放的程序名,如下可以打开一个俄罗斯方块的小游戏:

请添加图片描述

好啦,这样就足够简单的探索 Plan 9 了,深入部分,比如用户系统、acme 的使用、各种编译器的使用我会陆续更新成新的博客的。

希望能帮到有需要的人~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/440007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

上传ChatGPT相关资源,瓜分¥5000元奖金池

一、活动时间 资源类型时间上传地址上传【ChatGPT的原理分析】资源4月17日-4月30日https://upload.csdn.net/creation/uploadResources?taskId643925fde212675bb64a3984&utm_sourceblog上传【Chatgpt的多种使用方法】资源4月15日-4月30日https://upload.csdn.net/creatio…

介绍NPOI 的颜色卡、名称以及索引

文章目录 前言 遍历NPOI颜色 前言 使用NPOI的颜色时,一些颜色类的名称很难想象出具体对应的颜色,所以有了下面的对照表,方便使用。 NPOI 颜色的索引范围是 8~64,超出范围无效。 色彩类名索引Index名称#000000HSSFColor.Black8黑色#ffffffH…

【C++ 一】C++ 入门、数据类型、运算符

C 入门、数据类型、运算符 文章目录 C 入门、数据类型、运算符前言1 C 初识1.1 第一个C程序1.1.1 创建项目1.1.2 创建文件1.1.3 编写代码1.1.4 运行程序 1.2 注释1.3 变量1.4 常量1.5 关键字1.6 标识符命名规则 2 数据类型2.1 整型2.2 sizeof 关键字2.3 实型(浮点型…

【最详细最完整】windows 安装 Oracle Java环境

windows 安装Oracle Java环境 一、安装教程二、验证Java环境 前言:公司有个app的项目,我是打算使用uniapp来实现,那么调试是需要使用到java环境,所以我本地就得安装java环境,接着我找了好多文章发现没有相对完整的&…

在头部大厂做了13年云计算后,这次他想系统地聊聊FinOps!

随着企业上云战略的深入普及,越来越多的企业开始关注云成本优化。伴随着企业对IT资源的投入不断增加,企业迫切需要解决成本与效率,以及如何将云成本优化落到实处的问题。 FinOps是将财务和业务整合到一起的变革,可以帮助企业更好…

抖音数字人主播app

抖音数字人主播app是指一款利用计算机生成的虚拟数字人,在抖音平台上进行实时音视频传输和互动的应用程序。该软件可以让用户创建自己的虚拟数字人,并在抖音平台上进行实时互动和交流。 抖音数字人主播app通常需要包含以下功能: 3D建…

本地JAR打镜像,并启动

1.准备好jar,和Dokerfile文件。 2.使用命令打镜像 docker build -t wstest . 3. 查看镜像 4. 由于服务是两个端口。使用以下命令 5.优化怎么随着docker的开启而启动 docker run --restartalways -p 8089:8089 -p 8069:8069 wsserver docker run --restartalways -…

C++基础入门——语法详解篇(下)

文章目录 一、缺省参数 1、1 缺省参数的概念 1、2 缺省参数的分类 1、2、1 全部缺省 1、2、2 半缺省参数 二、引用 2、1 引用的概念 2、2 引用特征 2、3 引用的使用场景 2、3、1 引用做参数 2、3、2 常引用 2、3、3 引用做返回值 2、4 引用总结 三、内联函数 3、1 内联函数的引…

谷歌浏览器的跨域设置、配置、新老版本Chrome

文章目录 1、个人开发中的使用习惯2、老版本Chrome浏览器(版本号49之前)3、新版本Chrome浏览器(版本号49之后) 1、个人开发中的使用习惯 下载好谷歌浏览器以后,快捷方式一份放在桌面上,一份放在开始菜单栏,桌面的重命名为dev(可以随意命名)&a…

【09 cookie and session】

cookie and session 一、cookie1. 会话技术2. 什么是cookie3. cookie的属性4. cookie方法5. cookie添加和获取6. 需求案例7. cookie的细节 二、session1. HttpSession介绍2. HttpSession常用方法3. HttpSession获取4. HttpSession使用5. HttpSession使用细节 一、cookie cooki…

【MongoDB】什么是MongoDB?MongoDB有什么特点?MongoDB的适用场景?

什么是MongoDB数据库? MongoDB是一个开源、高性能、支持海里数据存储的文档型数据库。 MongoDB是一个高效的非关系型数据库(不支持表关系:只能操作单表) MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系…

postman安装

目录 下载、安装 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。 Postman原是Chrome浏览器的插件,可以模拟浏览器向后端服务器发起任何形式(如:get、post)的HTTP请求 使用Postman还可以在发起请求时,携带一些请求参数、请求头等信息…

debezium docker订阅oracle 11g

debezium 依赖于kafka,kafka依赖于zookeeper。 zookeeper实现了kafka消息的一致性,debezium 把订阅的数据推送到kafka dockerFile FROM debezium/connect:1.6 ENV KAFKA_CONNECT_JDBC_DIR$KAFKA_CONNECT_PLUGINS_DIR/kafka-connect-jdbc ENV INSTANT_C…

登陆拼多多获取整站实时商品详情数据,商品列表,商品优惠券,包括数据采集,清洗,分析,封装等过程,作为爬虫的课程。

前言 拼多多平台是一个众所周知的一个电商平台,基本上什么都能找到,而且价格比较优惠。 想业余做电商赚点小钱或买点东西,就需要对比平台上各个卖家的商品信息,所谓货比三家,为商品定一个合理的价位或淘一个合理&…

[Python基础] 学生管理系统(存储读取学生信息)

学生管理系统:应该算是语言语法学习过程中一个比较适合测试语法熟练度的代码案例了。 文章目录 思路main(入口函数)menu(菜单)Add(新增学生)Display()(显示学生)Find()&a…

::before和::after伪元素的用法案例

CSS3中伪类采用单冒号写法,伪元素采用双冒号写法。 伪类举例——:hover,:link,:active,:target。 伪元素举例——::before,::after,::first-letter,::first-line,::selection。 一、介绍 今天写网页时遇到一个问题,视口的背景中插入一个小图标的话&a…

Python进阶项目--只因博客(bootstrap+flask+mysql)

前言 1.全民制作人们大家好,我是练习时长两年半的个人练习生只因坤坤,喜欢唱,跳,rap,篮球,music......在今后的节目中,我还准备了很多我自己作词、作曲、编舞的原创作品,期待的话&am…

VirtualBox虚拟机后台运行

前言 在Windows下的VirtualBox运行如Linux的虚拟机时,并不需要图形化的界面,我们不必次次通过VirtualBox的官方界面进入,解决鼠标键盘定位等问题。可以通过Putty等软件使用SSH进行连接控制,但是官方界面并没有在后台运行选项。 需…

Nginx快速上手~

注:本文针对官网的快速入门教程进行一个中文的解释,以帮助英文阅读能力较差的学习者快速上手 参考官网连接Beginners Guide (nginx.org) Centos下的安装 sudo yum install yum-utils # 创建文件 vim /etc/yum.repos.d/nginx.repo # 输入以下内容 ####…

项目1实现登录功能方案设计第四版

需求 优化点:MySQL表常用功能模块实现方案 index页面home页面 需求 实现一个登录功能 实现的功能 注册(邮箱注册) 登录(邮箱密码) 重置密码 查看操作记录(登录, 注册, 重置密码, 登出. 都算操作) 登出 在第3版的基础上进行优化:\ 优化点: 接口设计 1. 发送注册验证码: 路径: PO…