masa.yamaguchi
2025年9月30日 15時57分
==========
製品型番:Aramadillo-610
ABOSバージョン:3.20.3-at.8
カーネルバージョン: 5.10.233
その他:ATDE9を使用
==========
ATDE9 にてalpine の環境( MakeFileを修正してc -> c++用プロジェクトに変更)で実行ファイル①を作成しました。
この実行ファイル①は、ネットワーク接続 (eth0/wlan0)状況を /tmpフォルダ配下に書くだけの単純な機能しか持ちません。
メモリ・容量の節約の為、この実行ファイル①を、コンテナは使用せず
armadillo base os 起動時に 直接実行①ファイルを起動するようにしたいです。
このような設定をするにはどうしたらよいかご教示頂きたいです。
(実行ファイル単独では armadillo base os 上 (alpine )で動作することは確認済みです。)
コメント
masa.yamaguchi
太田様
masa.yamaguchiです。
ご回答ありがとうございます。
1点だけ以下ご教示頂きたいことがございます。(一部言葉足らずのところがありすみません)
(Armadillo-X1, Armadillo-IoT G3/G3L: systemdでアプリを自動起動する方法(その1))
https://armadillo.atmark-techno.com/blog/6938/2865
/etc/local.d に置く方法は上記のsystemdを使用する方法と比べると、
細かい制御ができないけど、起動時に1回だけ実施するのに適しているということで宜しいでしょうか。
又、例えば実行ファイル①は周期的にネットワーク情報を取得しており、異常終了(おそらくしないと思いますが)したら
再起動したい場合は、上記systemdのURLを参考に対応する流れになりますでしょうか。
at_satoshi.ohta
太田です。
Armadillo Base OS の場合は systemd ではなく OpenRC を使用していますが、OpenRC で異常終了の時に再起動する方法は私が調べた限りでは見つけることはできませんでした。
/etc/local.d に配置する場合でも、例えば以下のような書き方で周期的にネットワーク情報を取得するようにできますが、異常終了した場合は再起動できません。
armadillo:~# cat /etc/local.d/ README testd.start armadillo:~# cat /etc/local.d/testd.start #!/bin/sh background_start() { while true do ネットワーク情報を取得する処理 sleep 5 done } background_start &
再起動するために、このスクリプトが起動していることを監視するスクリプトをまた別に用意することも考えられますが、案としてはあまり良くない気がします。
他の方法としては、/etc/inittab に
::respawn:/path/to/script
のように記述すると/path/to/scriptで指定したスクリプトのプロセスが終了すると再度実行します。
armadillo:~# persist_file -P /etc/inittab
を実行すると Armadillo Base OS のアップデートで更新されることはありませんが、同時に /etc/inittab に何かしらのアップデートがあった際も反映されませんのでご注意ください。
どうぞよろしくお願いいたします。
masa.yamaguchi
at_satoshi.ohta
2025年9月30日 16時34分
太田です。
Armadillo Base OS 上の /etc/local.d に配置するのはどうでしょうか?
マニュアルのこちらの節をご参照ください。
https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_ma…
どうぞよろしくお願いいたします。