Go Wiki:Go 於 Plan 9

簡介

Bell Labs 出品的 Go 實驗性移植可供 Plan 9 from Bell Labs 作業系統使用。

支援的架構

Plan 9 移植的 Go 可用於下列架構

支援的核

目前的 Go 發行版已在下列作業系統上成功測試

需求

Go on Plan 9 需要提供下列系統呼叫的核

需要修復 pread 呼叫系統,因此 pread 在讀取檔案時不會更新通道偏移

TCP 連線控制檔必須處理「關閉」訊息,以便在喚醒讀取器時優雅地關閉 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 編寫的,因此您可能想要使用 C 編寫的 Go 最新版本 Go 1.4.3 來啟動 Go。

但是,由於 Plan 9 上 Go 1.4 執行時間還不夠成熟,建議您使用其他作業系統從更新版本的 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 了。

您可以透過設定 GOROOT_BOOTSTRAP 環境變數來使用這個版本的 Go 來啟動之後的 Go 版本

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

您可以透過設定 GOROOT_BOOTSTRAP 環境變數來使用這個 Go 二進位套件來啟動 Go

GOROOT_BOOTSTRAP=/tmp/gobootstrap-plan9-386

其他二進位套件 在此處在此處 可以取得。

Git

Git 在 Plan 9 上並不可用。不過已提供一個 Git 封裝器,它是一個簡單的 rc 腳本。封裝器包含使用 go 工具所需的全部內容。

編譯器

目前有三個 Plan 9 編譯器正在執行,並將結果回報給 Go Dashboard

狀態

Plan 9 的 Go 埠點仍被視為實驗性質,且仍是進行式的開發。在 Go 錯誤追蹤器 上可以查看已知問題。

錯誤

Go 錯誤追蹤器 上,目前仍以 OS-Plan9 標籤標示著許多錯誤。

說明

Plan 9 的 Go 埠點是由社群推動的埠點。任何有助於改善 Plan 9 上 Go 埠點的協助都將備受讚賞。

維護者

許多人貢獻了 Plan 9 的 Go 埠點。自 2013 年 12 月以來,Plan 9 的 Go 埠點由 David du Colombier 維護。

瑣事

Go 的許多部分受到 Plan 9 系統的直接影響,因為其三名主要設計師中有兩位曾在貝爾實驗室研究 Plan 9。以下是其中一些關聯性


此內容是 Go Wiki 的一部分。