システムの起動に最適なソリューションに苦労していますが、
何が「最適」かを判断するための基準を提供していません。
...組み込みデバイスの起動、シャットダウン、整合性監視を処理するシンプルで堅牢な方法は?
「シンプル」と「最良」があなたの基準なら、あなたが探しているものはすでに Linux OS に不可欠です。ランレベルの概念を使用します。起動時にランレベルが確立され、一連のプロセスを開始できます。別のランレベルへの変更は、一連のプロセスを停止し、一連のプロセスを開始します。別のランレベルであるシャットダウンでは、すべてのプロセスが終了します。
「整合性監視」の意味がわかりません。システム プロセスが終了した場合、そのように指定されていれば、「再生成」できます。proc疑似ファイルシステムを使用して、アクティブなプロセスを監視できます。おそらく、整合性監視の独自の概念を設計および実装することになるでしょう。
BusyBox は標準 (別名 SysV) のinitプロセスを簡素化しました。これはおそらく、組み込みプロセスが起動後に 1 回または常に実行されることを前提としています。cronまたはカスタム デーモンのいずれかが、イベント時にプロセスの起動を提供する必要があります。しかし、あなたは次のように主張します。
実行レベルの概念はありません。
そのため、フル機能の OS と同じ起動メカニズムを使用することはできません。
そうではありません。BusyBox は次のように宣言します。
BusyBox init は複数のランレベルをサポートしていません。/etc/inittab ファイルの runlevels フィールドは、BusyBox init によって完全に無視されます。
「複数」という言葉に注意してください。BusyBox のinitは、起動、シャットダウン、および再起動に相当するランレベルのプロセス制御を実行します。興味深いことに、BusyBox にはrunlevel
コマンドもあります。BusyBox が提供するよりも多くの「ランレベル」が必要な場合は、
ランレベルが必要な場合は、sysvinit を使用してください。
SysV initのソース コードは、ここから入手できます。BusyBox は完全に構成可能であり、そのバージョンのinitは簡単に置き換えることができます。
SysV initのミニ バージョンは、GPL の下で Axis Communications によって Etrax SoC 用にリリースされています。軸/etc/inittab
は次のとおりです。
# The runlevels used by axis are:
# 0 - Halt
# 1 - Single user mode
# 2 - Multiuser without network
# 3 - Full multiuser mode
# 4 - Upgrade
# 5 - unused
# 6 - Reboot
id:3:initdefault:
sh:1235:respawn:/bin/cttyhack /bin/sh
tnet:35:once:/usr/sbin/telnetd
# System initialization.
si::sysinit:/etc/init.d/rc sysinit
# The initscripts.
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Add your own stuff below
現在のソースは にdevboard-R2_20-distfiles.tar.gz
あり、バージョン 1.3.6 のinit.c
および initscript パッケージが含まれており、 Axis サイトでの登録が必要です。