embedded式Linux启动和完整性监视器

也许这不是一个编程问题,即。 有一个非编程解决scheme。 我正在使用embedded式Linux的第一代产品。 我正在为系统启动,关机和完整性监控提供最好的解决scheme。 目前有一个家庭式的解决scheme,这是一个单一的C代码块,启动其他进程,然后监视他们的健康以及其他一些不相关的function。 有没有人有一个简单而强大的方法来处理embedded式设备启动,closures和完整性监控的build议? 发行版并不重要,它使用busybox,我可以添加任何我们需要的东西。 我正在寻找智慧的提示/话语 – 或rtfm和一些指针,或指向我的其他地方。

谢谢。

我正在为系统启动而努力,

你没有提供任何标准来决定什么是“最好的”。

…一个简单而强大的方式来处理嵌入式设备的启动,关闭和完整性监控?

如果“简单”和“最好”是你的标准,那么你正在寻找的东西已经是Linux操作系统的组成部分。 它使用运行级别的概念。 在启动时,建立运行级别,并且可以启动一组进程。 对其他运行级别的任何更改都会停止一组进程并启动一组进程。 在关闭时,这是另一个运行级别,所有进程都被终止。

我不知道“诚信监控”是什么意思。 如果一个系统进程终止,那么它可以被“重新生成”,如果是这样指定的话。 proc伪文件系统可以用来监视活动进程。 您可能会设计和实施您自己的完整性监控概念。

BusyBox简化了标准(又名SysV) init进程,大概假设嵌入式进程运行一次或者在启动之后总是运行。 cron或自定义守护进程都必须提供进程启动事件。 但是你认为:

它没有运行水平的概念。
所以我们无法使用与全功能操作系统相同的启动机制。

不完全的。 BusyBox声明:

BusyBox init不支持多个运行级别。 BusyBox init完全忽略了/ etc / inittab文件的runlevels字段。

注意单词“多个”。 BusyBox的init将执行相当于启动,关闭和重新启动的运行级别的进程控制。 有趣的是,BusyBox甚至有一个runlevel命令! 如果你想比BusyBox提供更多的 “运行级别”,那么

如果你想运行级别,使用sysvinit。

SysV init的源代码可以在这里找到 。 BusyBox是完全可配置的,其版本的init可以很容易地被替换。

Axis Communications为其Etrax SoC在GPL下发布了一个小版本的SysV init 。 Axis的/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 ,其中包含init.c和initscript软件包的1.3.6版本,需要在Axis站点注册。

如果您正在寻找一个进程监视器来替换您的内部版本,我已经使用PCD – 进程控制守护进程取得了巨大的成功。