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