Edited at

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

More than 3 years have passed since last update.

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

大まかな手順は,以下.


  1. 母艦の準備

  2. Edisonの初期設定

  3. EdisonのPython設定.

それじゃ,いってみよー!

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


母艦の準備


Debianのイメージをダウンロードしてくる.

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

ubilinuxから,Edison用のイメージをダウンロード.


母艦にdfu-utilをインストール.

各ディストリのパッケージマネージャからでいいと思います.aptでもyumでもMacPortsでもHomebrewでも,好きにしてください.

ただ,本家サイトは,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 するときに警告が出たので.ここを参考に, /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系の管理パスが抜け落ちるので,結局こうなった.

正直,この設定の仕方はスマートじゃないと自覚している.

あと, ~/.bashrcPYTHONPATH を,


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