优雅地将资源从initramfs移交给用户空间

时间:2010-11-30 15:43:21

标签: linux resource-management

有些硬件设备需要用户空间支持,例如守护程序运行和处理内核空间不适合(太复杂或与策略相关)的交互部分。

一旦你到达用户空间,运行这样的守护进程很容易 - 你可以通过hotplug事件运行,并且不用太担心。

一旦initramfs出现,一切都突然分崩离析:如果守护进程是从initramfs运行的,那么它需要在执行切换到常规rootfs时继续运行,这特别困难,因为在switch_root或handm期间释放了initramfs从rootfs运行资源和状态到另一个自身副本。这两种解决方案看起来都不够优雅和黑客。

是否有明显的方法来管理我忽略的此类设备及其支持守护进程?

2 个答案:

答案 0 :(得分:0)

您是否需要此守护程序来安装真正的根设备?我想答案是肯定的,否则解决方案就是等待真正的根。

我的设备太复杂了需要守护进程才能工作,可能你可以在内核中完成部分工作,并通过sysfs属性处理策略? 我没有看到在安装需要守护进程才能工作的真正根目录时需要硬件的示例。设备发现适用,但您不需要设备守护程序才能实际工作。一个例子是受欢迎的。

另外,你真的需要切换root吗?您可以保留initramfs,并在/ usr /下安装完全功能系统所需的任何内容。这就是我对某些嵌入式系统所做的事情。

更新: mdev是udev的嵌入式替代品,它以两种模式运行:在扫描sysfs上添加设备,另一种是为hotplug事件运行。所以我猜你不需要“存储”hotplug事件,因为sysfs中仍然可以使用所有信息。所以解决方案就像:

  • 从initramfs运行udev
  • mount real root and switch root
  • 扫描sysfs(udev在启动时执行此操作吗?)
  • 正常操作(即等待hotplug事件)

答案 1 :(得分:0)

你有具体案例吗?其他发行版如何处理这个?

看看Fedora如何使用udev,它从initramfs启动它,让它做它的东西,以便可以挂载真正的root fs,然后在切换之前再次关闭它。