1

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

一旦你到达用户空间,运行这样的守护进程就很容易——你可以作为热插拔事件的结果运行它们,不用太担心。

一旦 initramfs 出现,一切都会突然崩溃:如果守护程序是从 initramfs 运行的,那么它需要在执行切换到常规 rootfs 时继续运行,这特别困难,因为 initramfs 在 switch_root 期间被释放,或者分发资源和状态到自身的另一个副本,从 rootfs 运行。这两种解决方案似乎都不优雅和老套。

有没有明显的方法来管理我忽略的这些设备及其支持的守护进程?

4

2 回答 2

0

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

看看 Fedora 是如何进行 udev 的,它从 initramfs 启动它,让它完成它的工作,以便可以挂载真正的 root fs,然后在切换之前再次关闭它。

于 2010-11-30T16:45:19.533 回答
0

你需要这个守护进程来挂载你真正的根设备吗?我想答案是肯定的,否则解决方案就是等待你的真正根。

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

另外,你真的需要切换 root 吗?你可以保留你的 initramfs,并在 /usr/ 下挂载你需要的任何东西,这就是我对一些嵌入式系统所做的。

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

  • 从 initramfs 运行 udev
  • 挂载真实根并切换根
  • 扫描 sysfs(udev 在启动时会这样做吗?)
  • 正常操作(即等待热插拔事件)
于 2010-11-30T16:20:30.897 回答