修改/重新加载现有Linux驱动程序的最快方法

时间:2012-07-31 07:16:12

标签: linux driver

我正在尝试了解用于USB Wi-Fi适配器的现有Linux Wi-Fi驱动程序。虽然我可以读取C代码,但我还希望能够在驱动程序的某些关键位置插入调试/打印语句,以查看它在执行时的行为方式。在Linux系统上,在修改驱动程序代码之后,如何以一种替换旧驱动程序的方式将其加载到内核中?有没有办法将“热插拔替代”直接覆盖旧驱动程序,还是比它更复杂?

我打算在一个可扩展的虚拟机中执行此操作,因此我并不担心弄乱原始驱动程序,因为它的重要性。

2 个答案:

答案 0 :(得分:1)

如果将驱动程序编译为模块,您只需添加调试打印输出,编译模块,rmmod原始模块,insmod新模块并启动WLAN像往常一样连接。

答案 1 :(得分:0)

如果您想即时测试和编辑:

  • lsmod找到模块名称
  • rmmod
  • 编辑来源
  • 让你得到一个Makefile:obj-m := module_name.o
  • 重新编译(在Ubuntu上):make -C /usr/src/linux-headers-'uname -r' M='pwd' modules
  • insmod module_name.ko

如果它是设备模块,您可能想要在/ dev中使用任何设备,然后执行mknod重新创建它们(请参阅mknod man),最后再chmod来更正权限。