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

修改/重新加载现有Linux驱动程序的最快方法,linux,driver,Linux,Driver,我正在尝试了解USB Wi-Fi适配器的现有Linux Wi-Fi驱动程序。虽然我可以阅读C代码,但我也希望能够在驱动程序中的某些关键点插入调试/打印语句,以查看它在执行时的行为。在Linux系统上,修改驱动程序代码后,如何将其加载到内核中,以替换旧的驱动程序?有没有一种方法可以直接“热插拔替代”旧的驱动程序,或者比这更复杂 我打算在一个可消耗的虚拟机中执行此操作,因此我不担心弄乱原始驱动程序,因为它很重要 如果驱动程序被编译为一个模块,您只需添加调试打印输出,编译模块,rmmod原始模块,in

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


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

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

如果您想动态测试和编辑:

  • lsmod
    查找模块名称
  • rmmod
    it
  • 编辑源
  • 生成文件:
    obj-m:=module\u name.o
  • 重新编译(在Ubuntu上):
    make-C/usr/src/linux头文件-'uname-r'M='pwd'模块
  • insmod模块_name.ko
如果它是一个设备模块,您可能希望在/dev中对任何设备进行rm,然后执行
mknod
以重新生成它们(请参见mknod man),最后执行
chmod
以更正权限