「Elixirで組み込み向けの強靭なソフトウェアを作ろう」を謳うNervesを試してみた。
実機はRaspberry Pi2、デスクトップ環境はDebianを使用し、手順はGetting Startedにあるとおり進めてみた。
インストール
インストール周りはここに記載されているとおり。
必要パッケージのインストール
$ sudo aptitude install ssh-askpass
$ sudo aptitude install squashfs-tools
あとfwup
も必要だがdebianにはパッケージが用意されていないので、ここからdebianパッケージを拾ってきてインストールする。
$ sudo dpkg -i fwup_0.11.0_amd64.deb
Nervesのインストール
以下のコマンドを実行してNervesをインストールする。
$ mix archive.install https://github.com/nerves-project/archives/raw/master/nerves_bootstrap.ez
プロジェクト作成から起動まで
mix nerves.new
でプロジェクトを作成する。Raspberry Pi2なのでターゲットにはrpi2
を指定
$ mix nerves.new hello_nerves --target rpi2
$ cd hello_nerves
$ mix deps.get
$ mix compile
あとはマイクロSDカードに焼くだけ
$ mix firmware
$ mix firmware.burn
Use 7.4 GiB memory card found at /dev/sdf? [Yn] Y
100%
Elapsed time: 9.452s
HDMIケーブルをディスプレイに繋いで電源を入れれば、iex
が立ち上がってくる
なお、_images/rpi2/hello_nerves.fw
にあるイメージは20MB弱とかなり小さい。
シリアルポート接続
HDMI接続だとなにかと不便なのでシリアルポート接続にしてみる。手順はここ。
hello_nervesの直下にrootfs-additions/etc
ディレクトリを掘り、deps/rpi2/nerves_system_rpi2/rootfs-additions/etc/erlinit.config
をコピーしコンソール設定部分を以下のように変更する
#-c tty1
-c ttyAMA0
(2016/11/26: ttyS0
からttyAMA0
に修正)
そして上記ファイルを使用するよう設定ファイルに追記する
config :nerves, :firmware,
rootfs_additions: "rootfs-additions"
ビルドしてSDカードに焼く
$ mix compile
$ mix firmware
$ mix firmware.burn
TTL to USBケーブルでホストに接続し、以下のコマンドで接続できる
$ screen /dev/ttyUSB0 115200