嵌入式linux启动和完整性监视器

时间:2012-09-13 04:48:00

标签: c linux embedded init

也许这不是一个编程问题,即。有一个非编程解决方案。 我正在研究使用嵌入式Linux的第一代产品。 我正在努力寻找系统启动,关闭和完整性监控的最佳解决方案。目前有一种家庭酿造解决方案,它是一个单一的复杂的c代码,启动其他过程,然后监控他们的健康状况以及其他几个不相关的功能。 是否有人建议采用简单而强大的方式来处理嵌入式设备的启动,关闭和完整性监控? 发行版并不重要,它使用的是busybox,我可以添加任何我们需要的东西。 我正在寻找智慧的提示/单词 - 或rtfm和一些指针,或指向我的其他地方。

THX。

2 个答案:

答案 0 :(得分:1)

  

我正在努力寻找系统启动的最佳解决方案,

您尚未提供任何标准来决定什么是“最佳”。

  

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

如果“简单”和“最佳”是您的标准,那么您所寻找的内容已经成为Linux操作系统不可或缺的一部分。它使用了运行级别的概念。在启动时,建立运行级别,并且可以启动一组进程。对另一个运行级别的任何更改都将停止一组进程并启动一组进程。在关闭时,这是另一个运行级别,所有进程都将终止。

我不知道“完整性监控”是什么意思。如果系统进程终止,那么如果指定了它,则可以“重新生成”。 proc 伪文件系统可用于监视活动进程。你可能会有设计&实施自己的诚信监控概念。

BusyBox简化了标准(又称SysV) init 过程,可能假设嵌入式进程在启动后运行一次或始终运行。 cron 或自定义守护程序必须在事件上提供进程启动。但你认为:

  

它没有运行级别的概念   因此,我们无法使用与功能齐全的操作系统相同的启动机制。

不完全。 BusyBox声明:

  

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

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

  

如果您想要运行级别,请使用sysvinit。

SysV init 源代码可从here获得。 BusyBox是完全可配置的,其 init 的版本可以轻松替换。

SysV init 的迷你版本由Axis Communications根据其Etrax SoC在GPL下发布。轴/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 site注册。

答案 1 :(得分:1)

如果您正在寻找过程监控器来替换您的内部版本,我已经使用PCD - Process Control Daemon取得了巨大成功。