2

おそらく、これはプログラミングの問題ではありません。非プログラミングソリューションがあります。組み込み Linux を使用した第 1 世代の製品に取り組んでいます。システムの起動、シャットダウン、および整合性監視のための最適なソリューションに苦労しています。現在、自作のソリューションがあります。これは、他のプロセスを起動し、それらの状態と他のいくつかの無関係な機能を監視する、単一の複雑な C コードです。組み込みデバイスの起動、シャットダウン、および整合性監視を処理するためのシンプルで堅牢な方法について、誰かアドバイスはありますか? ディストリビューションはそれほど重要ではありません。busybox を使用しているため、必要なものは何でも追加できます。ヒント/知恵の言葉を探しています-またはrtfmといくつかのポインター、またはどこか別の場所を指しています。

どうも。

4

2 に答える 2

1

システムの起動に最適なソリューションに苦労していますが、

何が「最適」かを判断するための基準を提供していません。

...組み込みデバイスの起動、シャットダウン、整合性監視を処理するシンプルで堅牢な方法は?

「シンプル」と「最良」があなたの基準なら、あなたが探しているものはすでに 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 サイトでの登録が必要です。

于 2012-09-13T22:07:37.703 に答える
1

社内バージョンに代わるプロセス モニターを探しているなら、私はPCD - Process Control Daemonを使用して大成功を収めました。

于 2012-09-14T00:34:13.250 に答える