ZynqberryでJupyter notebookを動かそう!
このチュートリアルでは、Zynqberryオリジナルスタータキットをご購入のお客様向けに、ZynqberryでJupyter notebookを動作させるための方法を紹介します。
Jupyterを使うと、WebブラウザでZynqberryにアクセスして、任意のPythonのコードを実行したりグラフや絵を描かせてその結果をWebブラウザ上で見ることができます。
「PythonがWeb上で動くZYNQ搭載のRasPi互換機」となります。
ダウンロード
まず、Zynqberry用 Ubuntu 14.04 with Jupyter & SDSoCをダウンロードします。
- zynqberry-ubuntu14-rich.img.gz New 2017/7/10 (1.6GB)
※Zynqberryオリジナルスタータキットのライセンスが必要です。
上のアーカイブファイルを解凍しWin32Disk Imagerツールを用いてimgファイルをSDカードに書き込みます。
この作業によりSDカードは消去されるのでご注意ください。
Python環境の切り替え
Ubuntu 14.04はデフォルトでPython 2.7.6が動作していますが、このバージョンは古く、いろいろな問題を引き起こします。しかしながら、システム全体の整合性のためPythonのバージョンを勝手に上げるわけにはいきません。
そこで、ローカルなPython 3.5.1上でJupyterが動作するようにインストールされています。
まず、コンソールで
# python -V
と入力してみてください。 Python 2.7.6と表示されるはずです。
そうしたら、以下のようにコマンドを与えます。
(1行ずつ与えるか、/etc/rc.localなどの起動スクリプトに書いてください)
# export PYENV_ROOT=$HOME/.pyenv
# export PATH=$PYENV_ROOT/bin:$PATH
# eval "$(pyenv init -)"
# pyenv global 3.5.1
# python -V
Python 3.5.1 と表示されれば成功です。Python 3.5.1に切り替わっています。
なお、pyenvというツールを使って環境を切り替えています。pyenvは/root/.pyenv/に構築されています。
Jupyterの起動
ルートでログインし、以下のコマンドを入力するとJupyter notebookが起動します。
# jupyter notebook --allow-root &
ブラウザでhttp://zynqberry:8080/にアクセスすると、Jupyter notebookにアクセスできます。
numpy pandas matplotlib seaborn scikit-learn plotlyがインストールされているので、綺麗なグラフなども描けます。
Jupyterのコンソールも使用できますが、何でもできてしますので、セキュリティホールになります。
十分にお気をつけください。
アクセス制限をかける
デフォルトのままではセキュリティが甘いので、パスワードを設定します。
まず、コンソールで
python -c "import IPython;print(IPython.lib.passwd())"
と打ち、その後、パスワードを入力します。
root@zynqberry:~# python -c "import IPython;print(IPython.lib.passwd())"
Enter password: hogehoge
Verify password: hogehoge
sha1:47a1eba72ea8:4d1d05370e67e056d6d964ad32cffafd67cfe902
このsha1:47a1eba72ea8:4d1d05370e67e056d6d964ad32cffafd67cfe902がハッシュされたパスワードです。
/root/.jupyter/jupyter_notebook_config.py を編集し、先頭にある
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8080
c.NotebookApp.token = ''
の最後の行を
c.NotebookApp.password = u'sha1:47a1eba72ea8:4d1d05370e67e056d6d964ad32cffafd67cfe902'
で置き換えます。
これで再びjupyter notebookを起動すればパスワードによるアクセス制限がかかるようになります。