Intel Edison に Go をインストールする方法

Go はクロスコンパイルが簡単で、出来上がったバイナリの配布も簡単なので、わざわざ Edison 上で Go コンパイラを動かす必要もないのですが、、、
やってみたかったからやってみただけです。

Intel Edison Kit for Arduino

Intel Edison Kit for Arduino


大まかに分けて以下の3ステップでインストールを行います。
Edison 自体のセットアップは終わっているという人は 0. は飛ばして 1. からやってください。

0. Edison 自体のセットアップ
1. 依存パッケージのインストール
2. Go のインストール

0. Edison 自体のセットアップ

Edison のセットアップは、組み込み機器と考えるとかなりラクな方で、

公式サイト


スタートアップ Intel Edison - Qiita

Kindle 本 The Hands-on Intel Edison Manual Lab (English Edition)

The Hands-on Intel Edison Manual Lab (English Edition)

The Hands-on Intel Edison Manual Lab (English Edition)

あたりの手順にしたがってセットアップすれば特に難しいことはないと思います。

私の環境は Windows だったので、まずは PC にドライバをインストールして、USB ケーブル2本を Edison に接続(一本は電源供給+USBメモリのようなデバイスとして見るため、もう一本はUSBシリアルでコンソールにつなぐため)、最新版のファームウェアに更新します。

ファームウェアの更新方法はいたって簡単で、Edison と PC を USB で接続、Edison という名前の外付けドライブとして見えますのでそこに Intel のサイトからダウンロードしてきた最新版のファームを展開し、シリアルコンソールから

$ reboot ota

というコマンドを実行してしばらく待つのみです。

Edison が勝手に再起動したらファームが最新版になってるはずなので、同じくシリアルコンソールで

$ cat /etc/version
$ configure_edison --version

などで確認します。

最後に

$ configure_edison --setup

を実行して、ホスト名/root のパスワード/WiFi 接続 のセットアップを行います。

この時点で nodejs とか python とかが使える状態です。
PC から Edison に ssh で接続もできるはずです。
(名前解決に mDNS を使うので、Windows であれば iTunes をインストールする必要があるかもしれません。iTunes 本体は不要なのですが、一緒にインストールされる Bonjour が必要です。)

以下の作業は ssh 経由でもシリアルコンソールでもどちらで実施しても構わないと思います。

1. 依存パッケージのインストール

Go をソースからビルドしてインストールするには bash スクリプトを動かす必要があるのですが、bash はデフォルトでは Edison にインストールされていません。 (標準では ash というシェルがインストールされ使われているようです)
Edison には opkg というパッケージマネージャが用意されていますのでそれを用いてインストールします。

ということで、まずは opkg 自体をセットアップします。opkg コマンド自体は最初からインストールされていますが、opkg が参照するリポジトリの設定をする必要があります。
以下の2つのファイルを編集して(なければ作成して)以下のような内容にします。

/etc/opkg/base-feeds.conf

src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32

/etc/opkg/intel-iotdk.conf

src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic
src intel-all http://iotdk.intel.com/repos/1.1/iotdk/all
src intel-i586 http://iotdk.intel.com/repos/1.1/iotdk/i586
src intel-x86 http://iotdk.intel.com/repos/1.1/iotdk/x86

以下のコマンドを実行します。

$ opkg update
$ opkg upgrade
$ opkg install bash

2. Go をインストール

まず Go のソース(linux/386)をダウンロードします。
Edisonは / の空き容量が少ないため、空き容量の大きい /home 以下で作業を行う必要があります。
ダウンロード先もインストール先も /home 以下にする必要があります。(以下の例では /home/root にダウンロードして /home/root/go に展開・インストールされます)

$ cd /home/root
$ wget https://storage.googleapis.com/golang/go1.4.linux-386.tar.gz
$ tar xzf go1.4.linux-386.tar.gz

この記事を書いた時点では 1.4 が最新なので上記のファイル名になります。新しいバージョンがでたら新しいバージョンで適宜読み替えてください。

Go のビルドを行います。

$ cd go/src
$ ./make.bash

ビルドに成功したら、あとはパスを通して・・・

$ vi ~/.profile
export PATH=$PATH:~/go/bin
$ . .profile

go コマンドを実行します。

$ go version
go version go1.4 linux/386