2016-08-02 63 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。也许这在您的系统中也丢失/错误配置。

相关问题