簡體   English   中英

將資源從initramfs優美地移交給用戶空間

[英]Graceful handing over resources from initramfs to userspace

有些硬件設備需要用戶空間支持,例如守護程序運行和處理不適合內核空間(過於復雜或與策略相關)的交互部分。

到達用戶空間后,運行此類守護程序很容易-您可以由於熱插拔事件而運行它們,不必擔心。

一旦出現了initramfs,一切都會突然破裂:如果守護程序是從initramfs運行的,那么當執行切換到常規rootfs時,它需要保持運行,這特別困難,因為在switch_root期間釋放了initramfs或分發資源並狀態從rootfs運行到其自身的另一個副本。 兩種解決方案都顯得笨拙而笨拙。

有什么明顯的方法可以管理我忽略的此類設備及其支持的守護進程?

您是否需要該守護程序來掛載真正的根設備? 我想答案是肯定的,否則解決方案將是等待您的真實根源。

我的設備是如此復雜,它需要一個守護進程才能正常工作,也許您可​​以在內核中完成部分工作,並通過sysfs屬性處理策略? 我看不到安裝真正的根設備時需要插入硬件的示例,該設備需要守護程序才能工作。 設備發現適用,但是您不需要守護程序即可使設備實際工作。 一個例子將是受歡迎的。

另外,您真的需要切換root嗎? 您可以保留initramfs,並在/ usr /下掛載具有完整功能的系統所需的任何東西,這就是我對某些嵌入式系統所做的工作。

更新:mdev是udev的嵌入式替代產品,它以兩種模式運行:在掃描sysfs以添加設備時,另一種正在運行以進行熱插拔事件。 因此,我想您不需要“存儲”熱插拔事件,因為所有信息仍在sysfs中可用。 所以解決方案是這樣的:

  • 從initramfs運行udev
  • 掛載實根並切換根
  • 掃描sysfs(udev在啟動時會這樣做嗎?)
  • 正常運行(即等待熱插拔事件)

你有具體情況嗎? 其他發行版如何處理呢?

查看Fedora如何執行udev,它從initramfs啟動它,使其完成工作,以便可以掛載真正的根fs,然后在切換之前再次將其關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM