Intel GalileoでErlang/OTPを動かす
はじめに
昨年末からRaspberryPiやBeableBoard-XMでErlang/OTPアプリを動かしているのですが、Intelから出たGalileo上で動いたら素敵だなーと思ったので、さっそくGalileoを秋月で購入。Erlang/OTPをビルド・インストールしてみました。
ちなみに、Galileoで動いたら何が素敵かというと、ボード一枚でアナログ6量が取れるからです。
開発環境を準備
makeなど、Erlang/OTPのビルドに必要なあれこれが入ったYocto LinuxのSDKバージョンをダウンロードしてSDカードに保存します。
マイクロSDカードの準備
- SDカードをFAT32でフォーマット(Macなら、SDカードを差してFinderのメニューから「移動」→「ユーティリティ」→「ディスクユーティリティ」を起動
- SDカードを選んで、「消去」タブをクリック
- フォーマットに「MS-DOS(FAT32)」を選択して、名前を「GALILEO」に設定
- 消去を実行
- 下記のリンクから「Clanton_Full_SDK.7z」をダウンロード、解凍。
http://ccc.ntu.edu.tw/index.php/news/40
- 7zが無い場合は brewからインストール
$ brew install 7z
解凍
$ 7z x Clanton_Full_SDK.7z
できたClanton_Full_SDK/ ディレクトリと、さきほどフォーマットしたGALILEO( /Volumes/GALILEO/ )をrsyncで同期
$ rsync -avz Clanton_Full_SDK/ /Volumes/GALILEO/
一旦、Galileoの電源を落として、さきほどのマイクロSDカードを差し込んで電源ON。
起動はけっこう時間がかかる。SDカード横のLEDが光ったり消えたりしてる間は起動中です。
起動したらSSHでログインする(ユーザーはroot, パスワードはなし)。
$ ssh root@192.168.3.3 #IPアドレスは環境による
Erlang/OTPのビルド済みバイナリ
次の章でソースからビルドする方法を書いてますが、ビルドしたパッケージを下記においておきます。
/usr/local/erlang/R16B03-1 にインストールした者を単にtarで固めたものなので解凍してパスを通せば動くと思います。
Erlang/OTP R16B03-1
https://googledrive.com/host/0BxkTrmjB9NZ1dkVxX3ViLUlORk0/R16B03-1.tar.bz2
あとrebarを使う場合はgitとcurlが必要です。curlは前章のLinuxイメージ入れてれば入っているのですが、どうもまともに動かなかったのでソースからコンパイルしました。
これらもgalileo上でコンパイルしたものを置いておきます。展開すればそのまま使えるはず。
cURL 7.35
https://googledrive.com/host/0BxkTrmjB9NZ1dkVxX3ViLUlORk0/curl-7.35.tar.bz2
- /usr/bin/curl* を全て/usr/local/curl/7.35/bin 以下からシンボリンックリンクで置き換え。
- /usr/include/curl に /usr/local/curl/7.35/include/curl からシンボリンックリンクで置き換え。
- /usr/lib/libcurl* を /usr/local/curl/7.35/lib/libcurl* からのシンボリックリンクで置き換え。
- /etc/pki に /usr/local/curl/7.35/etc/pki からのシンボリックリンクを貼る。
最後に ~/.gitconfigに以下を追加
[http] sslCAinfo = /etc/pki/tls/certs/ca-bundle.crt
Git 1.9.0
https://googledrive.com/host/0BxkTrmjB9NZ1dkVxX3ViLUlORk0/git-1.9.0.tar.bz2
Erlang/OTPをソースからビルド・インストール
ここでは最新安定板のR16B03-1を入れる。
- ソースコードの取得( Erlang-users.jp )が近くて早いので使わせて頂く)
# mkdir src # cd src # wget http://download.basho.co.jp.cs-ap-e2.ycloud.jp/otp/download/otp_src_R16B03-1.tar.gz
解凍
# tar xvzf otp_src_R16B03-1.tar.gz
configure実行
# ./configure --prefix=/usr/local/erlang/R16B03-1 \ --disable-threads --enable-smp-support --enable-kernel-poll \ --disable-sctp --disable-hipe / --enable-m32-build --without-javac --with-ssl
ビルド、インストール
# make # make install
めちゃくちゃ時間がかかります。数時間はかかるので寝る前にビルド開始して、起きた頃に結果を見た方がいいかも。
上記cnofigureオプションだと /usr/local/erlang/R16B03-1 に入ります。
従って
export PATH=/usr/local/erlang/R16B03-1/bin:${PATH}
すれば使えます。
$ erl
Erlang R16B03-1 (erts-5.10.4) [source] [async-threads:10] [kernel-poll:false] Eshell V5.10.4 (abort with ^G) 1> 1 + 1. 2 2> spawn(fun() -> io:format("spawn!") end). spawn!<0.36.0> 3>
とりあえずは普通に使えそうです。