Armadilloフォーラム

[Armadillo-610] alpine 用の実行ファイルを作成して、armadillo base os で直接実行する方法

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です。

ご回答ありがとうございます。

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

2025年10月1日 9時51分

太田です。

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です。ご回答ありがとうございます。
「Armadillo Base OS のアップデートで更新されることはありませんが、同時に /etc/inittab に何かしらのアップデートがあった際も反映されませんのでご注意ください。」
本件上記の内容に留意して検討いたします。ご対応ありがとうございました。