Nervesで書き込める場所 (Elixir)


いつでも#NervesJP Advent Calendar 2020に代打できます
12月も終わりそうなので、NervesJP Slackで相談のうえ、代打しました。
@MickeyOoh さん、アレでしたら枠をお譲りしますのでご連絡くださいね〜
この記事は#NervesJP Advent Calendar 2020 9日目 です。
前日は、@kikuyuta 先生のBeagleBone Green 上の Elixir / Nerves で電力制御をする でした。

はじめに

File.write!("/root/sample.jpg", Picam.next_frame)
で書き込めるかも?(他のファイルなら書き込んだことあります)
Nerves1.7とか新しいやつなら、File.write!("/data/sample.jpg", Picam.next_frame)
  • 根拠を示さんとなー ということで根拠を探す旅をしてきました
  • ドキュメントのここです! ソースコードのここです! を示したかったのですが、結論から先に申しますと、近いところまで行った気はするのですがやや手前で失速しました
  • 余談ですがRaspberry Pi にカメラをつないであんなことやこんなことをしてみたいとおもっていたのですが、どれを買えばいいのか迷っていたのでたいへん参考になりました

ドキュメント

私は、/root配下にファイルを書き込んだ経験があります。
Nervesの1.7からは/dataだと(たぶん@pojiroさんから)聞きました。
依然として/rootは使えるそうでシンボリックリンクになっているとのことです。

/dataの旅

  • いろいろ探しまわったつもりですけど私にはわかりませんでした
  • わかりませんでしたでは淋しいので、たしかにそうなっているよをお示ししておきます
  • Nervesの1.7を使ったHello, World的なファームウェアを焼き込んで以下を実施しました
$ ssh nerves.local

iex> File.read_link("/data")
{:ok, "root"}

旅をしている途中でみつけたおもしろそうなもの

iex> Nerves.Runtime.KV.get_all()
%{
  "a.nerves_fw_application_part0_devpath" => "/dev/mmcblk0p3",
  "a.nerves_fw_application_part0_fstype" => "ext4",
  "a.nerves_fw_application_part0_target" => "/root",
  "a.nerves_fw_architecture" => "arm",
  "a.nerves_fw_author" => "The Nerves Team",
  "a.nerves_fw_description" => "",
  "a.nerves_fw_misc" => "",
  "a.nerves_fw_platform" => "rpi0",
  "a.nerves_fw_product" => "test_app",
  "a.nerves_fw_uuid" => "d9492bdb-94de-5288-425e-2de6928ef99c",
  "a.nerves_fw_vcs_identifier" => "",
  "a.nerves_fw_version" => "0.1.0",
  "b.nerves_fw_application_part0_devpath" => "/dev/mmcblk0p3",
  "b.nerves_fw_application_part0_fstype" => "ext4",
  "b.nerves_fw_application_part0_target" => "/root",
  "b.nerves_fw_architecture" => "arm",
  "b.nerves_fw_author" => "The Nerves Team",
  "b.nerves_fw_description" => "",
  "b.nerves_fw_misc" => "",
  "b.nerves_fw_platform" => "rpi0",
  "b.nerves_fw_product" => "test_app",
  "b.nerves_fw_uuid" => "4e08ad59-fa3c-5498-4a58-179b43cc1a25",
  "b.nerves_fw_vcs_identifier" => "",
  "b.nerves_fw_version" => "0.1.1",
  "nerves_fw_active" => "b",
  "nerves_fw_devpath" => "/dev/mmcblk0",
  "nerves_serial_number" => ""
}
  • mix uploadしたらAに焼くだ、Bに焼くだ英語で言っているとおもいますが、いまアクティブな方はBだよみたいなのがわかるようです
    • "nerves_fw_active" => "b"

Wrapping Up

  • 中途半端な感じですが、どなたかが完全版にしてくれるでしょう
  • うん、これは完全にNervesな記事ですね
  • Enjoy Elixir !!!
  • ありがとう! Qiita Advent Calendar 2020
  • $\huge{毎日が12月だったらいいのに!}$

明日は、@zacky1972先生のApple M1チップ搭載MacでNervesを動かす方法(2020.12.8暫定版)です。
引き続きお楽しみください。