【问题标题】:embedded linux startup and integrity monitor嵌入式 linux 启动和完整性监视器
【发布时间】:2012-09-06 03:29:03
【问题描述】:

也许这不是一个编程问题,即。有一个非编程的解决方案。 我正在开发使用嵌入式 linux 的第一代产品。 我正在努力寻找系统启动、关闭和完整性监控的最佳解决方案。目前有一个自制的解决方案,它是一段复杂的 c 代码,它启动其他进程,然后监控它们的健康状况以及其他几个不相关的功能。 有没有人对一种简单、健壮的方式来处理嵌入式设备的启动、关闭和完整性监控有什么建议? 发行版并不重要,它使用的是busybox,我可以添加我们需要的任何其他内容。 我正在寻找提示/智慧之言 - 或 rtfm 和一些指针,或将我指向其他地方。

谢谢。

【问题讨论】:

  • 您正在寻找的已经是 Linux 操作系统不可或缺的一部分。它使用 runlevels 的概念。在启动时,会建立一个运行级别,并且可以启动一组进程。对另一个运行级别的任何更改都会停止一组进程并启动一组进程。在作为运行级别的关闭时,所有进程都将终止。 proc 伪文件系统可用于监控活动进程。顺便说一句,“嵌入式 Linux”是一个可以运行工作站的全功能操作系统。它不是微内核。 Linux 的“嵌入式”版本不使用交换空间,因此不分页虚拟内存。
  • 另一个区别“嵌入式”的元素是busybox的使用。它没有运行级别的概念。因此我们无法使用与全功能操作系统相同的启动机制。

标签: c linux embedded init


【解决方案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 版本可以轻松替换。

Axis Communications 在 GPL 下为他们的 Etrax SoC 发布了一个迷你版的 SysVinit。轴/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的1.3.6版和initscript包,需要在Axis site注册。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 2023-01-27
      • 2012-05-21
      • 2015-05-08
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      相关资源
      最近更新 更多