2016-02-05 63 views
0

我在Linux內核可加載模塊上工作,我尋找正確的方式來配置它,以及在模塊加載/卸載時加載/存儲二進制數據的方式。該模塊需要在加載時讀取配置數據,但它可能會更改數據並在運行時保存它們。我在很多地方閱讀過,不推薦讀/寫文件,我也讀過sysfs可以用於這種目的。可以將二進制配置數據存儲在sysfs中?或存在更合適的解決方案?你能提供一些例子或文檔的鏈接,我可以找到一些關於如何通過模塊加載/保存持久配置的細節?Linux內核模塊,配置和持久狀態的概念

Peter

回答

0

可能有很多方法可以做到這一點。我想到的方式是在用戶空間中運行字符設備和腳本。您可以安排腳本加載您的模塊,然後將二進制數據寫入由模塊創建的字符設備文件。該腳本可以繼續循環讀取設備文件。當模塊想要導出新狀態時,它將取消阻止讀取。腳本然後複製出數據並重復。

+0

謝謝。它是netfilter模塊,它需要在沒有用戶空間應用程序幫助的情況下加載配置,並且如果可能的話,不需要額外的守護進程幫助。例如,某些網絡接口連接到機器和模塊來捕獲此事件並加載配置。所有這些都必須能夠以內核模式運行。 – StackPeter

1

也許你可以使用模塊中的固件接口。 它應該能夠裝載一個二進制文件,其中包括與request_firmware(..)

設置我覺得寫這個二進制文件的硬件不需要......?

+0

謝謝Schnudi,我確實知道這種方式,第一次看到request_firmware()函數。我發現這個:https://www.kernel.org/doc/Documentation/firmware_class/README,但我懷疑這樣使用,因爲在我們的例子中,它不是固件,而是配置文件。我工作的內核模塊不是硬件設備的驅動程序。產品安裝後不存在配置文件,但可以像文件系統中的普通文件一樣創建,也可以從其他機器導入。 – StackPeter

+0

經過一番調查後,我認爲這是從文件加載二進制配置的好方法。但我仍在尋找其他方法,並希望對其進行比較。 – StackPeter