いつでも#NervesJP Advent Calendar 2020に代打できます
12月も終わりそうなので、NervesJP Slackで相談のうえ、代打しました。
@MickeyOoh さん、アレでしたら枠をお譲りしますのでご連絡くださいね〜
この記事は#NervesJP Advent Calendar 2020 9日目 です。
前日は、@kikuyuta 先生のBeagleBone Green 上の Elixir / Nerves で電力制御をする でした。
はじめに
- @ringo156 さんのNervesで画像処理がしたいを読みました
- その記事の中にコメントでこんなことを私が書きました
File.write!("/root/sample.jpg", Picam.next_frame)
で書き込めるかも?(他のファイルなら書き込んだことあります)
Nervesが1.7とか新しいやつなら、File.write!("/data/sample.jpg", Picam.next_frame)
- 根拠を示さんとなー ということで根拠を探す旅をしてきました
- ドキュメントのここです! ソースコードのここです! を示したかったのですが、結論から先に申しますと、近いところまで行った気はするのですがやや手前で失速しました
- 余談ですがRaspberry Pi にカメラをつないであんなことやこんなことをしてみたいとおもっていたのですが、どれを買えばいいのか迷っていたのでたいへん参考になりました
ドキュメント
-
Advanced Configuration -- Partitions
- Because the root filesystem is read-only, we also add a read/write partition by default, called app_data and mounted at /root (the root user's home directory).
- このへんの記述ですよね
- @pojiro さんの質問ではじまったelixir forum
-
https://github.com/nerves-project/nerves_system_br/blob/main/CHANGELOG.md#v1124
- コメントにて、@pojiro さんに教えていただきました!
- $\huge{Thanks!!!}$
私は、/root
配下にファイルを書き込んだ経験があります。
Nervesの1.7からは/data
だと(たぶん@pojiroさんから)聞きました。
依然として/root
は使えるそうでシンボリックリンクになっているとのことです。
/data
の旅
- いろいろ探しまわったつもりですけど私にはわかりませんでした
- わかりませんでしたでは淋しいので、たしかにそうなっているよをお示ししておきます
-
Nervesの1.7を使った
Hello, World
的なファームウェアを焼き込んで以下を実施しました
$ ssh nerves.local
iex> File.read_link("/data")
{:ok, "root"}
- File.read_link/1 関数に聞いてみたですよ
旅をしている途中でみつけたおもしろそうなもの
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暫定版)です。
引き続きお楽しみください。