Intel EdisonをDebian化して，scikit-learnとか入れる

Edisonをセンサーやアクチュエータを操作するマイコンのようにしか使わないのは，ちともったいない．EdisonはIoTの末端に位置するだけの存在じゃないんですよ，と．

大まかな手順は，以下．

1. 母艦の準備
2. Edisonの初期設定
3. EdisonのPython設定．

それじゃ，いってみよー！

**＊前回の記事とダブってるところが，かなりあります．**

# 母艦の準備
## Debianのイメージをダウンロードしてくる．

とりま，Yoctoのことは忘れましょう．さようならYocto・・，短い間だったけど楽しかった，君のことはきっと忘れない．もっとパッケージ数がそろったら帰ってくるよ．．

[ubilinux](http://www.emutexlabs.com/ubilinux)から，[Edison用のイメージ](http://www.emutexlabs.com/files/ubilinux/ubilinux-edison-ww44.5.tar.gz)をダウンロード．

## 母艦にdfu-utilをインストール．
各ディストリのパッケージマネージャからでいいと思います．aptでもyumでもMacPortsでもHomebrewでも，好きにしてください．
ただ，[本家サイト](http://dfu-util.gnumonks.org/)は，2014年11月7日現在の時点で落ちているみたいです．
あらら，困ったね．

## Edison実機に書き込み．
この時点では，まだEdisonを母艦に接続しないでください．

ダウンロードしてきたDebianのイメージtar.gzを解凍．展開されたtoFlashディレクトリの中に移動して，

*sudo flashall.sh* 

その後に，おもむろにEdisonを母艦に接続．
イメージの焼き込みが始まります． **5分以上かかる** ので，のんびり待ってください．書き込みが終わった後も，2回リブートする必要があるので， **ターミナルが戻って来た後も，2分くらいそのまま放置** してください．

# Edisonの初期設定
いつも通り，EdisonにscreenなりTeraTermなりでシリアル接続します． **Baudrateは115200** ．
ログインは **root/edison** ．

*cat /etc/debian_version*

とかすると，

*7.6*

と返ってくるのが嬉しいですね．

## 無線LANの設定

とりあえず，ネットワークにつないでパッケージのアップデートをしないと何も始まらないので，ワイヤレスLANの設定をします． **/etc/network/interfaces** を，適当に設定してください．
私の場合は，WPA2ネットワークでSSIDがTEMPでパスワードが1234なので，該当箇所を以下のように編集しました．
> iface wlan0 inet dhcp
>     # For WPA
>     wpa-scan-ssid 1  # ステルスの場合
>     wpa-ssid TEMP
>     wpa-psk 1234

編集が終わったら，

*ifup wlan0*

でwifiが起動できます．

割り振られたIPは，いつでも

*/sbin/ifconfig*

の **wlan0** の項目で確認できます．

ネットワークにきちんと参加できていることが確かめられたら，

*apt-get update*

で既存のパッケージ情報を更新しておきましょう．

## APTで必要なパッケージのインストール
*apt-get install sudo python-dev libgfortran3 subversion git*
*apt-get install libblas-dev liblapack-dev*

とりあえず，このくらいか．
この時点でgfortranをインストールできるので，とても楽（Yoctoと比べて・・）．

## ユーザーの作成
root権限で色々やるのは楽だけど，環境を壊したりしたら面倒なので．あと，後で説明する，ライブラリを/home以下へ逃がすため．
以下で， **alva** という名前のユーザーを作成して，パスワードの設定，sudo権限の付与までやります．

*useradd -m -g users -s /bin/bash alva*
*passwd alva*

*visudo*
以下のalvaの行を追記
> \# User privilege specification
> root    ALL=(ALL:ALL) ALL
> alva    ALL=(ALL:ALL) ALL

## /etc/hosts への追記
なんか **sudo** するときに警告が出たので．[ここ](http://qiita.com/ogomr/items/89e19829eb8cc08fcebb)を参考に， **/etc/hosts** に以下を追記した．

> 127.0.1.1	ubilinux




ここから先は，作成したalvaユーザーでやりましょうか．
rootアカウントをexitして，alvaアカウントで再ログインします．

# EdisonのPython設定
さて，これからEdisonに解析用のPythonパッケージをどしどし入れて行くわけですが，その前に．Edisonの __/__ 以下はあまり容量が割り振られていないため， __/home/__ 以下にツールやライブラリをインストールするように設定します．
### インストール先を/home以下に指定

**~/.bashrc** に以下を追記します．

> export PATH=~/.local/bin:$PATH
> export PYTHONPATH=~/.local/lib/python2.7/


入力後は，

*source ~/.bashrc*

で，設定を有効化．（あるいは再ログイン）

さらに． **~/.pydistutils.cfg** を作成して，中に

> [install]
> user=1

を入力．これでOK．

## pipで各種解析ツールのインストール
pythonのパッケージは最新のものを使いたいので，aptは使わない．あと，apt経由でpipをインストールしようとしたら，2.6系のpythonをインストールされそうになったので，こちらも自前で入れることにした．
まずは，
### setuptoolsのインストール
*wget https://bootstrap.pypa.io/ez_setup.py --no-check-certificate -O - | python*

### pipのインストール
*easy_install pip*

### 色々インストール
*pip install numpy scipy pandas scikit-learn PyBrain*

ここも3,4時間かかるので注意．
このとき，裏でヘンなことやると，システムのメモリが足りないとかで途中でビルドがコケる．放っておくこと．

### PYTHONPATHの設定をsudo後に引き継ぐ
**追記項目**
以上の変更を行うと， *sudo* ごしに~/.local/binにインストールしたツールにPATHが通ってなかったり，~/.local以下にインストールしたPythonライブラリが読んでこれなかったりしたので，以下の変更を入れた．

*sudo visudo*
secure_pathの項目にインストール先のPATHを追記．
env_keepにPYTHONPATHを設定．
> Defaults        secure_path="/home/alva/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
> Defaults        env_keep += "PYTHONPATH"

env_keep += "PATH,PYTHONPATH" とすると，今度は/sbin系の管理パスが抜け落ちるので，結局こうなった．
正直，この設定の仕方はスマートじゃないと自覚している．

あと， **~/.bashrc** の **PYTHONPATH** を，
> export PYTHONPATH=~/.local/lib/python2.7/:~/.local/lib/python2.7/site-packages/

と，site-packagesのほうも含めるようにしないと，importがうまくいかない場合があった．

## 共有ライブラリを/home以下のものを見に来るように設定
*sudo sh -c "echo $HOME/.local/lib > /etc/ld.so.conf.d/locallib.conf"*

*sudo ldconfig*