2016-08-02 43 views
0

我遇到了一個問題,試圖讓wpa_supplicant在運行定製嵌入式Linux發行版的板上運行。一些調試後,事實證明,這是因爲域類型PF_PACKET沒有內核支持:是af_packet.ko應該自動加載?

drv->eapol_tx_sock = socket(PF_PACKET, SOCK_DGRAM, 0); 

這是由af_packet模塊支持和加載它事先解決了這一問題。我注意到它也有別名「pf-net-17」,看起來內核可以在運行時加載這個模塊,如果通過別名從用戶空間請求的話。我在另一個嵌入式Linux發行版中對此進行了測試,果然這似乎是這種情況。它在懇求者被召喚後被裝載。

有誰知道爲什麼這個功能不能在第一個設置中工作?也許我錯過了一個內核設置?

回答

0

主要有2個原因,爲什麼這個工作在另一個系統上,而不是您的主板:

  • 的PF_PACKET配置爲建在內核或不作爲模塊。
  • 的af_packet模塊是自動加載運行時,無論是作爲扶養到另一個模塊或模塊在系統啓動

被自動加載,我建議你閱讀本document關於模塊加載這是相當簡潔,但完整而精確。

解決您的問題的一種方法是確保您的目標系統運行depmod,以便在啓動時自動加載af_packet模塊,以更新您的構建的模塊依賴性。

另一個需要注意的地方是udev,根據內核檢測到的設備,這意味着load modules。也許這在您的系統中也丟失/錯誤配置。