Go Wiki:Plan 9 上的 Go

介绍

一个实验性的 Go 移植版本可用于 来自贝尔实验室的 Plan 9 操作系统。

支持的架构

Go 的 Plan 9 移植版本适用于以下架构

支持的内核

当前的 Go 发行版已在以下内核上成功测试

要求

Plan 9 上的 Go 需要一个提供以下系统调用的内核

pread 系统调用需要一个修复程序,因此 pread 在读取文件时不会更新通道偏移量

TCP 连接控制文件必须处理“close”消息以优雅地关闭 TCP 连接,同时唤醒读取器

Fossil 需要一个修复程序以在 wstat 后递增 Qid.vers,因此截断后跟读取将返回新文件的原始内容而不是缓存的内容。

您将需要在 X.509 证书中支持 SHA-2 签名,以便您可以从托管在 GoogleSource、GitHub 等上的存储库下载源代码。

如果您在 Raspberry Pi 上运行 Plan 9,您将需要 Richard Miller 提供的最新 bcm 内核。

crypto/x509 包的 CA 证书需要安装在 /sys/lib/tls/ca.pem 中。您可以从 https://curl.haxx.se/ca/cacert.pem 下载它或从另一个系统复制它。

对于 9front,您可能需要为标准库测试配置环回地址

ip/ipconfig -P loopback /dev/null 127.1
ip/ipconfig -P loopback /dev/null ::1

安装

由于 Go 是用 Go 编写的,您可能希望使用 Go 1.4.3 自举 Go,它是用 C 编写的最新版本的 Go。

但是,由于 Go 1.4 运行时在 Plan 9 上还不够成熟,我们建议您使用另一个操作系统从 Go 的更近版本自举。

从 Plan 9 自举

首先,安装 Go 1.4

cd /tmp
git clone -b go1.4.3 https://go.googlesource.com/go go1.4
cd go1.4/src
hget http://9legacy.org/go/patch/syscall-exec.diff | ape/patch -p2
make.rc

如果您运行的是启用了 SMP 的机器,则需要 syscall-exec 修补程序。

然后,设置 GOROOT_BOOTSTRAP 环境变量

GOROOT_BOOTSTRAP=/tmp/go1.4

最后,安装最新版本的 Go

cd /tmp
git clone https://go.googlesource.com/go
cd go/src
all.rc
bind -a /tmp/go/bin /bin

Go 现在可以用了。

从另一个操作系统自举

首先,您必须按照 Go 安装说明 在此操作系统上安装 Go。

然后,您可以为 Plan 9 交叉编译 Go 工具链

cd $GOROOT/src
GOOS=plan9 GOARCH=386 ./bootstrap.bash

然后,自举工具链将在 ../../go-plan9-386-bootstrap.tbz 中可用。

最后,您可以将此存档解压缩到您的 Plan 9 机器上。

例如

cd /tmp
tar xzf go-plan9-386-bootstrap.tbz
bind -a /tmp/go-plan9-386-bootstrap/bin /bin

Go 现在可以用了。

您将能够使用此版本的 Go 自举将来的 Go 版本,方法是设置 GOROOT_BOOTSTRAP 环境变量

GOROOT_BOOTSTRAP=/tmp/go-plan9-386-bootstrap

从二进制文件自举

plan9/386 的 二进制包 可用。

此二进制包用于在 plan9/386 构建器上自举 Go。

cd /tmp
hget -o gobootstrap-plan9-386.tar.gz https://storage.googleapis.com/go-builder-data/gobootstrap-plan9-386.tar.gz
mkdir gobootstrap-plan9-386
cd  gobootstrap-plan9-386
tar xzf ../gobootstrap-plan9-386.tar.gz

您将能够使用此版本的 Go 二进制包自举 Go,方法是设置 GOROOT_BOOTSTRAP 环境变量

GOROOT_BOOTSTRAP=/tmp/gobootstrap-plan9-386

其他二进制包可 在此处此处 获得。

Git

Plan 9 上没有 Git。但是,一个 Git 包装器 可用作简单的 rc 脚本。它包含使用 go 工具所需的一切。

构建器

目前正在运行三个 Plan 9 构建器,并将结果报告给 Go 仪表板

状态

Go 的 Plan 9 移植版本被认为是实验性的,目前仍在开发中。在 Go 问题跟踪器 上有许多已知问题。

问题

Go 问题跟踪器 上目前有许多带有 OS-Plan9 标签的问题处于打开状态。

帮助

Go 的 Plan 9 移植版本是一个由社区驱动的移植版本。任何帮助改进 Plan 9 上的 Go 移植版本都将受到高度赞赏。

维护者

许多人对 Go 的 Plan 9 移植版本做出了贡献。自 2013 年 12 月起,Go 的 Plan 9 移植版本由 David du Colombier 维护。

花絮

Go 的许多部分都直接受到 Plan 9 系统的影响,因为 Go 的三位主要设计者中有两位曾在贝尔实验室工作过,参与过 Plan 9 的开发。其中一些联系包括


此内容是 Go Wiki 的一部分。