2013-04-27 22 views
-1

我需要做什麼將一個Linux內核模塊導入python,以便我可以在我想要構建的應用程序中使用它的功能。需要做些什麼才能在python中導入和使用Linux內核模塊?

我的目標是使用更好的移動Ad-Hoc網絡(B.A.T.M.A.N)內核模塊,該模塊自2.6版以來已包含在Linux內核中,用於包含Raspberry Pis的網狀網絡的路由目的。我將爲所有網絡編程使用Twisted。

+0

我認爲你需要構建一個python c擴展。 – User 2013-04-27 17:35:45

+1

-1:寫這個問題顯示了一些關於什麼內核模塊以及它們是如何使用的混淆。模塊通常在用戶空間啓動過程中使用「udev」從「rc」(啓動)腳本加載。您希望在設備探測過程中未配置的附加模塊可以加載到''/ etc/modules.d''中。請參閱'man modules.d''。從一個以root身份運行的Python腳本,你可以做一些類似於''call('「modprobe」,「my_module」])的模塊來加載模塊,但通常不是以root身份運行的好主意,除非你在運行並嵌入系統沒有用戶訪問。 – 2013-04-28 04:36:59

回答

2

您不想加載內核模塊。內核模塊具有許多非常奇怪的屬性(例如,如無操作,則在負載時取決於在處理器上替換一些指令被編譯。)

相反,它將簡單得多重新編譯代碼進入用戶空間庫,您可以從Python調用。

更簡單的是,您可以抓住BATMAN算法的「用戶空間」分支,稱爲batmand並使用它。 http://www.open-mesh.org/projects/open-mesh/wiki/BranchesExplained

0

觸發將該模塊加載到內核中。加載到用戶空間的過程可能是徒勞的。從理論上講,你可以使用內核模塊的源代碼在C語言中構建一個Python模塊,但是它仍然不能爲你提供例如硬件訪問,您也必須模擬/複製大部分內核基礎架構。聽起來不是一個好主意。

+0

所以基本上我應該編寫一個Shell腳本,該腳本將在系統上調用以將該模塊加載到內核中?那麼Python如何能夠使用它? – 2013-04-27 17:51:04

+0

你可以直接啓動modprobe或類似工具,不需要shell腳本。檢查子進程模塊。 – 2013-04-27 18:24:32

相關問題